Messages in this thread Patch in this message | | | Date | Wed, 20 Jan 1999 21:05:44 +0000 (GMT) | From | Tim Waugh <> | Subject | Parport patch |
| |
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/
| |