[U-Boot] MMC driver questions

Aaron Williams Aaron.Williams at caviumnetworks.com
Thu Oct 13 08:23:04 CEST 2016


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
-- 

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



More information about the U-Boot mailing list