Hi all,

I've been implementing various peices of missing passthru functionality (for
future review and submission) and I hit a bump, so I'm wondering what you
all think.

For implementing various missing cdb protocols, I'm attempting to merge them
into the normal libata protocols.  So for instance I have a
ATA_PROT_RETURN_RESPONSE (cdb "Return Response Information") and
ATA_PROT_SOFT_RESET (cdb "Soft reset").  This worked well until I needed to
restore xfer modes after the soft reset.

Since the soft reset can reset various volatile settings (pio xfer, dma
xfer, etc), they should get restored before another normal libata command
has a chance to procede.  I thought of simply using ata_setxfer right after
doing the soft reset, but the problem is that doing this invovles launching
a new queued command (inside ata_dev_set_xfermode) from within a queued
command (the original ATA_PROT_SOFT_RESET).  I also thought about
translating the soft reset cdb into 2 sequential queued commands, but the
code path for creating / translating queued commands seems to want a 1-1
relationship between cdb and command.

So anyone have ideas / is there a better way to do this?  There doesn't seem
to be a trivial way to solve this so I figured I'd ask what people wanted as
the solution.

(Note that this same issue will come up with doing the cdb "Hard Reset")

Thanks,
Tim Thelin

-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to