Thank You for your continued support and contributions!
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.
The communication with the SSD is completely unreliable no matter what I do, it seems; data are corrupted randomly and writing rarely works, and even the basic identifying information about the SSD such as the model name is corrupted randomly when read :/I need to do some more experiments, but it's really not obvious what the issue is here.
Well, that works, it seems. Left it on PIO 4, and changed the timing to the one from pio80mhz[4] (0x3131) and lo and behold check_registers now passes and nothing is corrupted any more. Do we have any idea what the timing value actually means here? I could change it to 0x3131 for everyone but it seems like we should maybe copy the OF better and use the one that matches the PIO mode we are using?
Well, that works, it seems. Left it on PIO 4, and changed the timing to the one from pio80mhz[4] (0x3131) and lo and behold check_registers now passes and nothing is corrupted any more.
Do we have any idea what the timing value actually means here? I could change it to 0x3131 for everyone but it seems like we should maybe copy the OF better and use the one that matches the PIO mode we are using?
OK, I'll go ahead and do it like that.However, while Rockbox appears to work correctly including both reading and writing files, plugging in USB hangs the device immediately. I'm not sure if this is related or not, I'll need to experiment more :/
Page created in 0.071 seconds with 16 queries.