Search:  
Gentoo Wiki

SD_and_MMC_card_readers

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related
Wikipedia has an article on:
Secure_Digital

Contents

Basic Setup

Kernel Setup

This is the basic setup for all devices:

Linux Kernel Configuration: At least a 2.6.17 kernel
Device Drivers  --->
    <*> MMC/SD card support  --->
        -*- MMC/SD card support
        <*>   MMC block device driver
        [*]     Use bounce buffer for simple hosts

Choose also one of the available drivers:

sdricoh_cs

The sdricoh_cs driver is designed to make function Ricoh Secure Digital and MMC Card Readers that announce themselves as Ricoh Bay1Controller pcmcia device. You need a working [[PC Card / PCMCIA|PC Card] setup for this driver. To install the driver all you need to do is:

# emerge -av sdricoh_cs

sdhci

Linux Kernel Configuration:
Device Drivers  --->
    <*> MMC/SD card support  --->
        <*>   Secure Digital Host Controller Interface support

(fixme)

tifm

Linux Kernel Configuration:
Device Drivers  --->
    [*] Misc devices  --->
        <*>   TI Flash Media interface support
        <*>     TI Flash Media PCI74xx/PCI76xx host adapter support
    <*> MMC/SD card support  --->
        <*>   TI Flash Media MMC/SD Interface support

tifm: sdhci method

If your notebook uses a TI card reader, the tifm_7xx1 and tifm_core drivers still don't work (as of kernel version 2.6.22) [My TI 5-in-1 Reader (PCIxx12 SD Host Controller) now works using the tifm_ modules under kernel 2.6.24]. There is an SDHCI mode that can be enabled that works with the sdhci driver; this works OK. To enable it, use lspci to get the address of the controller (it should show up as something like "Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller"), blacklist the tifm_* kernel modules, make sure the mmc_block kernel module gets loaded, and use setpci to put the controller in SDHCI mode:

File: /etc/modprobe.d/blacklist
...
tifm_7xx1
tifm_core
...
File: /etc/conf.d/local.start
 ...
 setpci -s 02:09.3 4c.b=02 # change the address to match your system
 ...
 

If the driver loads but you get no device try to compile it directly into the kernel. NOT as a module. -- For me it works if I load mmc_core & mmc_block manually in that order.

On some cardreaders, udev reports the device as not removable, thus causing hal to ignore the device. A workaround is to create a new udev-rule and mount the device manually:

File: /etc/udev/rules.d/10-mmc.rules
 # Mount and remove mmc partitions manually
 ACTION=="add" KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/usr/bin/pmount %k"
 ACTION=="remove" KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/usr/bin/pumount %k"
 

Read http://www.dau-sicher.de/pmwiki/Main/CardreaderWithUdev to learn how to automount the mmc-device with read/write-permissions to normal user (needs to be in floppy-group).

wbsd

Linux Kernel Configuration:
Device Drivers  --->
    <*> MMC/SD card support  --->
        <*>   Winbond W83L51xD SD/MMC Card Interface support

(fixme)

Check Setup

After rebooting and inserting a SD card you should have a device file like:

/dev/mmcblk0

And a partition on it:

/dev/mmcblk0p1

Software Setup

For mounting devices, see guide.

Retrieved from "http://www.gentoo-wiki.info/SD_and_MMC_card_readers"

Last modified: Sun, 03 Aug 2008 05:27:00 +0000 Hits: 40,458