Date: Thu, 24 May 2012 14:23:22 -0600 From: Warner Losh <imp@bsdimp.com> To: Ben Gray <ben.r.gray@gmail.com> Cc: freebsd-arm@freebsd.org Subject: Re: SDIO driver Message-ID: <DF2759B4-8969-4BBB-B790-582A9350A21E@bsdimp.com> In-Reply-To: <4FBE93A7.7050502@gmail.com>
index | next in thread | previous in thread | raw e-mail
On May 24, 2012, at 2:01 PM, Ben Gray wrote: > 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. I think this is one layer too low in the tree. This is bus code, and should be in the mmc bus. sdio drivers can then attach, and multiple functions can attach multiple drivers more easily. > 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. Yes. That's one of many problems, since SD I/O cards also need some additional stuff in the enumeration, which may be tricky to reliably do in the lower layers like you've done. In addition, there would need to be some bus/bridge interfaces because some mmc/sd controllers can't do SD I/O transactions. > 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? I'd be interested in taking a look. > 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). Which wifi card? Warnerhelp
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DF2759B4-8969-4BBB-B790-582A9350A21E>
