Parport patch

Tim Waugh (tim@cyberelk.demon.co.uk)
Wed, 20 Jan 1999 21:05:44 +0000 (GMT)


This patch from Carsten Gross makes lp status readback a little more
robust.

Tim.
*/

diff -durN /big/linux-2.2.0-pre8/drivers/misc/parport_ieee1284.c linux/drivers/misc/parport_ieee1284.c
--- /big/linux-2.2.0-pre8/drivers/misc/parport_ieee1284.c Sat Oct 31 18:17:22 1998
+++ linux/drivers/misc/parport_ieee1284.c Wed Jan 20 20:01:27 1999
@@ -47,8 +47,12 @@
*/
int parport_ieee1284_nibble_mode_ok(struct parport *port, unsigned char mode)
{
+ /* make sure it's a valid state, set nStrobe & nAutoFeed high */
+ parport_write_control(port, (parport_read_control(port) \
+ & ~1 ) & ~2);
+ udelay(1);
parport_write_data(port, mode);
- udelay(500);
+ udelay(1);
/* nSelectIn high, nAutoFd low */
parport_write_control(port, (parport_read_control(port) & ~8) | 2);
if (parport_wait_peripheral(port, 0x78, 0x38)) {
@@ -58,11 +62,12 @@
}
/* nStrobe low */
parport_write_control(port, parport_read_control(port) | 1);
- udelay(5); /* Strobe wait */
- /* nStrobe high */
- parport_write_control(port, parport_read_control(port) & ~1);
- udelay(5);
- /* nAutoFd low */
- parport_write_control(port, parport_read_control(port) & ~2);
- return (parport_wait_peripheral(port, 0x20, 0))?2:1;
+ udelay(1); /* Strobe wait */
+ /* nStrobe high, nAutoFeed low, last step before transferring
+ * reverse data */
+ parport_write_control(port, (parport_read_control(port) \
+ & ~1) & ~2);
+ udelay(1);
+ /* Data available? */
+ return (parport_wait_peripheral(port, 0x20, 0))?1:2;
}
diff -durN /big/linux-2.2.0-pre8/drivers/pnp/parport_probe.c linux/drivers/pnp/parport_probe.c
--- /big/linux-2.2.0-pre8/drivers/pnp/parport_probe.c Fri Dec 18 17:46:06 1998
+++ linux/drivers/pnp/parport_probe.c Wed Jan 20 20:03:16 1999
@@ -105,13 +105,13 @@
parport_claim_or_block(dev);

switch (parport_ieee1284_nibble_mode_ok(port, 4)) {
- case 1:
+ case 2:
current->state=TASK_INTERRUPTIBLE;
/* HACK: wait 10ms because printer seems to ack wrong */
schedule_timeout((HZ+99)/100);
result = read_polled(port, buffer, len);
break;
- case 0:
+ default:
result = -EIO;
break;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/