Thanks for doing this work.
Comments:
1) Patches #1 and #2 look OK.
2) Patch #3 needs to be split up into three patches:
a) rename variables (s/sector/block/),
b) reorganize read/write translation
c) add CHS support
Otherwise, patch #3 (content-wise) is OK.
3) In Promise's GPL'd driver for their SATA (w/ PATA) cards, they
unconditionally execute the INITIALIZE DEVICE PARAMETERS command. I
wonder if we should do the same.
4) I will apply patches #1 and #2 after I receive feedback on my
comments in item #3. I have not applied them yet, even though they are
acceptable.