Revert "OMAP: HSMMC: Implement scatter-gather emulation"
Hi all,
Looks like Juha's MMC scatter-gather patch breaks at least overo when using 4 data lines. It seems to work when using only 1 data line. So I've reverted patch 038d0d2f64cc1f03bfaf1d5f22d9eacf33926a51 for now.
Any ideas? Maybe some timings issue?
Regards,
Tony
Quoted 4 lines · ext Tony Lindgren
Looks like Juha's MMC scatter-gather patch breaks at least overo when using 4 data lines. It seems to work when using only 1 data line.
Any ideas? Maybe some timings issue?
TI errata says there is a HW bug is multi-block reads causing data CRC errors when the MMC clock is stopped and restarted. This is now fixed in Omap 3430 es3.0.
Juha's patch increases the CRC errors when the FIFOs are more likely filled during channel callback interrupt. But the FIFOs can be and are stopped also without SG emulation when bus is busy.
On a test board with buggy HSMMC, the CRC error does not appear at all if I have no load on the bus. When I have full Linux system running with bells and whistles, the CRC error occurs with frequency of 0.4%.
Retrying multi-block read in case of data CRC seems effective and has never failed on the test board. The performance penalty of the retry is obviously minimal.
Juha's patch would need to be modified to be conditionally enabled only on es3.0 and used bounce buffer otherwise and teach mmc_blk_issue_rq() to do retry.
Jarkko Lavinen
Quoted 20 lines · Jarkko Lavinen
Quoted 4 lines · ext Tony Lindgren
Looks like Juha's MMC scatter-gather patch breaks at least overo when using 4 data lines. It seems to work when using only 1 data line.
Any ideas? Maybe some timings issue?
TI errata says there is a HW bug is multi-block reads causing data CRC errors when the MMC clock is stopped and restarted. This is now fixed in Omap 3430 es3.0.
Juha's patch increases the CRC errors when the FIFOs are more likely filled during channel callback interrupt. But the FIFOs can be and are stopped also without SG emulation when bus is busy.
On a test board with buggy HSMMC, the CRC error does not appear at all if I have no load on the bus. When I have full Linux system running with bells and whistles, the CRC error occurs with frequency of 0.4%.
Quoted 7 lines
Retrying multi-block read in case of data CRC seems effective and has never failed on the test board. The performance penalty of the retry is obviously minimal.
Juha's patch would need to be modified to be conditionally enabled only on es3.0 and used bounce buffer otherwise and teach
mmc_blk_issue_rq()to do retry.
Thanks for the info. Jarkko, do you mind putting together a omap mmc git branch against the mainline kernel once the hsmmc driver is integrated?
Once the hsmmc.c is in the mainline tree, I'd like to switch to the mainline version of drivers/mmc and then just keep merging in your mmc queue as needed.
That way you could then send the mmc patches via LKML to Pierre, and I could get out of the MMC loop ;)
Regards,
Tony