While I’m here, I might as well mention a completely unrelated thing I’ve been doing.
In the last couple of weeks, Pierre Ossman has got his SDHCI driver into very good shape and he’s about to submit it for kernel inclusion. SDHCI is a mostly undocumented, but very real, standard for SD card controllers which is becoming increasingly common in laptops these days. I honestly thought the SD slot on my laptop would be the last thing to ever get a Linux driver but Pierre proved me wrong, and in style – the windows driver has no support for regular MMC cards even though the hardware has no physical or electrical problem dealing with them. Naturally, the Linux driver supports them just fine. And that brings me to what I’ve been doing:
The latest MMC spec (4.1) defines a new type of card with 7 extra pins for doing wide data transfers at up to 8 bits at a time. It’s a little odd to see in this age of serial buses, but I gess the MMC clock speed is still sufficiently low that bus width is not a limiting factor yet. It also defines an intermediate mode that conforms to the SD clock speed and 4 bit transfers; this is specifically designed to work with SD hardware. The only catch is that the software protocol to activate this transfer mode is different from the one that SD cards use, so you don’t get it for free.
So, I dug around and found sufficient documentation online to describe how to activate the high speed and wide bus modes of mmc v4 (While mmc is an open standard, you still need to pay to get a copy of the actual spec). So, I have a proof of concept patch that turns on the SD compatible transfer mode and allows me to use mmc v4 cards in my laptop so that they’re as fast as SD cards; you obviously need dedicated hardware to use the fastest v4 modes.
While my patch does the right thing to turn the mode on, it skips the very elaborate sanity checking mechanism that it used to verify that the controller can handle the higher speeds and bus widths – so it’s certainly not fit for submission yet, but I intend to work on it. In the mean time, brave souls can find my patch here. The changes are at the mmc subsystem layer, so they’ll work with any supported SD controller, but there are only a couple of these.