Add a delay in wdc.c following IDENTIFY

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Add a delay in wdc.c following IDENTIFY

Michael Durket
OpenBSD 3.8 GENERIC will not recognize my Plextor
PX-708A DVD recorder. In investigating this I discovered
the cause is that the 708A will not accept multiple
IDENTIFY_PACKET_DEVICE commands in rapid succession.

Multiple IDENTIFYs shouldn't occur, but do because
wdc_attach in sys/dev/ic/wdc.c does one IDENTIFY, and
the subsequent atapiscsi.c module does another IDENTIFY
on its attach rather than reading the existing IDENTIFY
data already stored by wdc.c.

By experiment, I determined that a 10ms delay in the
wdc_attach routine after the first IDENTIFY solved the
problem.

I'm not an expert on the ATA/ATAPI spec - I believe that
the problem is with the Plextor device, not the driver,
but I've seen enough messages in a Google search to know this
problem has occurred more than once with ATAPI devices and
OpenBSD, and I'm wondering if the maintainer of the wdc.c
code would consider adding such a delay (since there's already
code in that routine for a delay after a reset).