Support and General Use > Hardware

256GB mSATA SSD for iPod 5g/5.5g - possible with current release of Rockbox?

<< < (6/13) > >>

DMinor:

--- Quote from: torne on May 08, 2013, 05:35:32 PM ---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?

--- End quote ---
You are the man Torne, and thanks for the great news. Words can't express my appreciation for what you (and the entire RB team) have been doing for so many RB lovers including myself.

dreamlayers:

--- Quote from: torne on May 08, 2013, 05:35:32 PM ---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. :)

--- End quote ---

Great! It's nice to know you got that working.


--- Quote from: torne on May 08, 2013, 05:35:32 PM ---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?

--- End quote ---

This is based on iPod 5G startup code in flash. I think these are timing values for PIO modes 0 through 4, based on how the function using them is written.  The OF first uses value 0 and then after setting PIO mode 4 via the set feature command switches to value 4 (0x3131).  For mwdma and udma, the OF actually checks what the drive supports and sets values based on that, but no detection is performed for PIO.

Support for PIO 3 and 4 can be detected from identify device info and Rockbox does detect them and set 2, 3 or 4 appropriately. This could be used by defining ATA_SET_PIO_TIMING and implementing ata_set_pio_timings with IDE0_PRI_TIMING0 = pio80mhz[mode]. I think it's unlikely that any drives not supporting PIO 4 would be encountered, but this might as well be used since the supporting code is already present. In ata_device_init, IDE0_PRI_TIMING0 = pio80mhz[0] should be used to match the OF. Using the 80 MHz value for PIO0 at a lower CPU frequency is probably fine.

I think this would be a good thing, because of how various adapter boards are popular now and problems like this will come up again. I suspect 0x10 violates the spec but works with most storage devices because the signal path is so short.  The performance decrease is small even with PIO, and now most reads are done via DMA.

torne:
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 :/

DMinor:

--- Quote from: torne on May 09, 2013, 06:18:00 AM ---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 :/

--- End quote ---

By the way, have you tried using an external amp with the ipod? Would a LOD cable hang the device also?

torne:
Posted a patch for this here: http://gerrit.rockbox.org/r/#/c/469/

There's an ipodvideo test build of this available here if anyone wants to try: http://whitefang.wolfpuppy.org.uk/temp/rockbox-piotimings.zip - if you try this let me know how it works. On the device I have this is not 100% functional yet; it boots and plays audio but test_disk hangs and USB behaves badly.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version