OK, I have it booting and able to play music and generally operate, by just disabling the sanity check for whether the ATA registers are writable/readable correctly. It looks like the SATA interface doesn't implement reading back of the four address registers properly, and this is not normally important in usage of parallel ATA devices that aren't cdrom drives, which is why the original firmware works.
It still doesn't work properly, though: writing to the drive in Rockbox mostly doesn't work. It manages to save its settings, playlist control files, etc, but initialising the database hangs when it tries to write the database to disk, and while reading the device over usb works fine, you can't write to it.
So, I'll need to look at it some more, but this is a good start
If you want to try this on your own device, comment out the call to check_registers() in firmware/drivers/ata.c and build; that was enough to get the one I have here to boot. But, don't expect it to work properly.