SDIO driver
Ben Gray
ben.r.gray at gmail.com
Thu May 24 20:01:47 UTC 2012
Hi all,
I've being doing some work on hacking SDIO support into the kernel.
My changes build on top of the current MMC/MMCBR module. Expanding the
diagram from Warner Losh's pdf
(http://www.bsdcan.org/2007/schedule/attachments/23-freebsd-sd-warner-losh.pdf),
my hacks have the following logic layout
+------------+ +------------+
| ti_mmchs0 | | ti_mmchs1 |
+------------+ +------------+
| |
| |
+--------+ +--------+
| mmc0 | | mmc1 |
+--------+ +--------+
| |
+------+-----+ |
| | |
+---------+ +---------+ +---------+
| mmcsd0 | | mmcsd1 | | sdio0 |
+---------+ +---------+ +---------+
|
|
+------+-------+------- .... -----+
| | |
function#1 function#2 function#7
+----------+ +-----------+ +----------+
| wifi | | bluetooth | .... | whatever |
+----------+ +-----------+ +----------+
So my sdio module sits at the same level as the current mmcsd module
and uses the same interface to talk to the mmc0 module (notably
MMCBUS_WAIT_FOR_REQUEST). The sdio part does the card setup and CIS
scanning, then enables any child functions and probes for a suitable
child driver.
The problem with this approach is that currently a driver can target
only one logic function on the card - I don't know if any driver will
ever need to span more than one function. But perhaps a bigger problem
is that it doesn't support 'combo cards' (cards with both I/O and
standard SD memory). However supporting combo cards, I think, would
require a lot more changes to the current mmc/mmcsd drivers which I'm
reluctant to do.
Anyway I'm interested in whether anyone thinks this is useful in it's
current form? or whether the above limitations are too much of a
problem? If others are happy and would like it in the tree then perhaps
I can commit it to the armv6 branch for review?
Lastly the code is not quite complete as there are still corner cases
that need to be fixed, however in it's current form it works with a
basic wifi driver I've written for the Pandaboard (can load f/w, read
registers, etc).
Cheers,
Ben.
More information about the freebsd-arm
mailing list