Tutorial for "drivers/mmc/*"?

Gabriel L. Somlo gsomlo at gmail.com
Thu Jan 7 15:54:19 EST 2021


I'm debugging a driver for a (fpga-based soft core) microSD card Linux
device, and the existing driver (in drivers/mmc/host/...) makes sense
at first sight, but, either due to shortcomings in the softcore
(Verilog by way of Migen) "hardware", or the actual Linux driver
itself, suffers from intermittent data transfer errors.

I find myself wishing I could get a top-down idea of how the Linux mmc
layer is put together, so I could examine the driver in question with
a critical eye, rather than my current approach, which is best described
as "blind-man attempts to comprehend an elephant by touching various
locations on its body, hoping the collected experiences will suddenly
come into focus and begin to make sense". :D

This latter approach gives me information that makes sense on first
sight, when taken uncritically, but doesn't help me figure out the
"unknown unknowns" :)

The alternative, of course, would be to read the actual source code in
"drivers/mmc/core/..." until I "know it by heart", and then look at my
(and a few other existing) drivers in "drivers/mmc/host/..." to try and
get an idea of what I'm missing.

I'll go with the latter if necessary, but would prefer a gentler
introduction to "drivers/mmc". Any (link, pointer to) a tutorial,
assuming one exists, would be MUCH appreciated!


More information about the Kernelnewbies mailing list