RFC: PCI SD host controller driver & mmc/mmcsd modules improvements

Alexander Motin mav at FreeBSD.org
Sat Sep 27 20:43:07 UTC 2008


I would like to present initial revision of my generic PCI SD Host 
Controller driver (sdhci). It support PCI devices with class 8 and 
subclass 5 according to SD Host Controller Specification. With some 
limitations it successfully works on my Acer TM6292 notebook with ENE 
CB714 card reader.

Things that are working now:
  - PIO mode single and multiple block read and write,
  - 1 and 4 bits bus width support.

In PIO mode with 4GB SD card on 30MHz 4bit bus I have reached about 
3.5MB/s (limited by CPU) linear read and 7MB/s (limited by card) linear 
write. Small blocks read/write performance limited by card.

Things that are not working yet:
  - DMA modes (code is written, but as my controller looks like has 
broken DMA I have no ability to debug it),
  - card insert/remove detection (need more thinking), you should reload 
mmc module to rescan cards,
  - SDHC and MMC cards (have no such cards now to debug that code), only 
standard capacity SD Memory cards up to 4GB size are supported now,
  - high speed (double rate) bus mode (need more thinking and DMA support).

Also to get such results I have improved existing mmc and mmcsd drivers 
a bit. mmc driver got:
  - 4 bit bus width support,
  - write protection switch support,
  - cards with more then 2GB capacity support.
mmcsd driver got:
  - multiple block read and write support,
  - cards with more then 2GB capacity support,
  - I/O error reporting,
  - write protection switch support.

Latest patches against 8-CURRENT (should also fit 7-STABLE) may be found at:

I will be grateful for any feedbacks, comments and support.

Alexander Motin

More information about the freebsd-current mailing list