Messages in this thread Patch in this message | | | Date | Wed, 10 Nov 1999 10:37:24 +0000 (GMT) | From | Tim Waugh <> | Subject | Patch to test: EPP (parport) |
| |
Hi guys,
Here is a patch against 2.3.27pre5 that is intended to make the EPP implementation in parport more closely match IEEE 1284. Could someone in a position to test it (using ppdev or whatever) please let me know if it makes things better or worse?
Thanks, Tim. */
Index: linux/drivers/parport/ieee1284_ops.c diff -u linux/drivers/parport/ieee1284_ops.c:1.1.1.3 linux/drivers/parport/ieee1284_ops.c:1.4 --- linux/drivers/parport/ieee1284_ops.c:1.1.1.3 Tue Nov 9 09:19:59 1999 +++ linux/drivers/parport/ieee1284_ops.c Mon Nov 8 17:04:56 1999 @@ -734,23 +734,29 @@ PARPORT_CONTROL_SELECT); port->ops->data_forward (port); for (; len > 0; len--, bp++) { + /* Event 62: Write data and strobe data */ parport_write_data (port, *bp); - - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, - PARPORT_STATUS_BUSY)) - break; - - /* Strobe data */ parport_frob_control (port, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD); - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, 0)) + /* Event 58 */ + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, 0, 10)) break; + /* Event 63 */ parport_frob_control (port, PARPORT_CONTROL_AUTOFD, 0); + + /* Event 60 */ + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, + PARPORT_STATUS_BUSY, 5)) + break; + ret++; } + /* Event 61 */ + parport_frob_control (port, PARPORT_CONTROL_STROBE, 0); + return ret; } @@ -765,23 +771,24 @@ parport_frob_control (port, PARPORT_CONTROL_STROBE | - PARPORT_CONTROL_AUTOFD | PARPORT_CONTROL_SELECT, 0); port->ops->data_reverse (port); for (; len > 0; len--, bp++) { - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, - PARPORT_STATUS_BUSY)) + parport_frob_control (port, PARPORT_CONTROL_AUTOFD, 0); + + /* Event 58 */ + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, + PARPORT_STATUS_BUSY, 10)) break; + *bp = parport_read_data (port); + parport_frob_control (port, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD); - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, 0)) + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, 0, 5)) break; - *bp = parport_read_data (port); - - parport_frob_control (port, PARPORT_CONTROL_AUTOFD, 0); ret++; } port->ops->data_forward (port); @@ -806,23 +813,25 @@ PARPORT_CONTROL_SELECT); port->ops->data_forward (port); for (; len > 0; len--, bp++) { + /* Write data and assert nAStrb. */ parport_write_data (port, *bp); - - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, - PARPORT_STATUS_BUSY)) - break; - - /* Strobe data */ parport_frob_control (port, PARPORT_CONTROL_SELECT, PARPORT_CONTROL_SELECT); - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, 0)) + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, + PARPORT_STATUS_BUSY, 10)) break; parport_frob_control (port, PARPORT_CONTROL_SELECT, 0); + + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, 0, 5)) + break; + ret++; } + parport_frob_control (port, PARPORT_CONTROL_STROBE, 0); + return ret; } @@ -837,23 +846,24 @@ parport_frob_control (port, PARPORT_CONTROL_STROBE | - PARPORT_CONTROL_SELECT | PARPORT_CONTROL_AUTOFD, 0); port->ops->data_reverse (port); for (; len > 0; len--, bp++) { - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, - PARPORT_STATUS_BUSY)) + parport_frob_control (port, PARPORT_CONTROL_SELECT, 0); + + /* Event 58 */ + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, + PARPORT_STATUS_BUSY, 10)) break; + *bp = parport_read_data (port); + parport_frob_control (port, PARPORT_CONTROL_SELECT, PARPORT_CONTROL_SELECT); - if (parport_wait_peripheral (port, PARPORT_STATUS_BUSY, 0)) + if (parport_poll_peripheral (port, PARPORT_STATUS_BUSY, 0, 5)) break; - *bp = parport_read_data (port); - - parport_frob_control (port, PARPORT_CONTROL_SELECT, 0); ret++; } port->ops->data_forward (port);
- 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/
| |