Hello, I wrote:
diff --git a/include/linux/libata.h b/include/linux/libata.h
index ed3f26e..95fa9f6 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
[...]
enum ata_xfer_mask {
@@ -864,6 +868,8 @@ struct ata_timing {
unsigned short cyc8b; /* t0 for 8-bit I/O */
unsigned short active; /* t2 or tD */
unsigned short recover; /* t2i or tK */
+ unsigned short write_hold; /* t4 */
+ unsigned short read_holdz; /* t6z */
Sorry for failing to notice this before but t6z is again the
timing that the host can't control. Therefore I'm seeig no sense in
its addition.
The host cannot control t6z, but in some cases (like ours) it needs to
be aware of its value. We cannot start driving the bus for access to
other devices until the CF stops driving it. We need to know how long
to wait until it is safe to use the bus for other things.
Re-read the spec please, the timing you need is t9 and it's much
longer than t6 that your driver using instead.
OK, t6z is yet longer than t9 but putting it into the table seems
pointless anyway as it's fixed at 30 ns, at least for the standard 5 PIO modes
(and for other two modes 30 ns would be good anyway).
Though frankly speaking I don't quite understand your care for this
timing, if the ATA standard permits -CE deasserted and data bus being driven
to overlap. Remember that the minimum address setup time adds to that equation
too.
MBR, Sergei
|