Hi all,

I'm working on a eMMC/SD driver for our Thunder ARMv8 SoCs by porting the MIPS driver I wrote earlier but I'm running into some issues and have some comments.

First of all, our SoC performs a number of high-level operations in hardware which are not supported by the U-Boot model. The biggest issue is how we handle data transfers. We do not support sending CMD12 to stop a transmission and instead rely on CMD23 for multi-sector transfers. The mmc_read_blocks/mmc_write_blocks functions don't work with our hardware. For our Octeon SoC I basically had to replicate everything in mmc.c for our SoC and replace all of the functionality. I am wondering if this is considered acceptable because our hardware just does not fit the U-Boot MMC driver model very well. I also ran into a lot of issues with sd_send_op_cond/mmc_send_op_cond. Our SoC hardware also automatically handles things like polling the status. It would be nice if most or all of the functions inside mmc.c could be overridden by the driver.

Also, our MMC controller shows up as a PCI device but the single PCI device can handle up to four MMC slots using the same registers. The probe support does not allow for this. There can be multiple PCI devices as well in our NUMA configurations, with one PCI device per SoC.


Aaron Williams
Software Engineer
Cavium, Inc.
(408) 943-7198  (510) 789-8988 (cell)

U-Boot mailing list

Reply via email to