RFC: PCI SD host controller driver & mmc/mmcsd modules
improvements
Alex Keda
admin at lissyara.su
Sun Sep 28 11:01:32 UTC 2008
Alexander Motin пишет:
> Hi.
>
> 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:
> http://people.freebsd.org/~mav/sdhci/
>
> I will be grateful for any feedbacks, comments and support.
>
Thanks! It work =) I have Acer Aspire 5101
but, when I attempt unload module - system hangs
========= messages ======
Sep 28 14:25:24 acer kernel: sdhci0: <ENE CB712 SD> mem
0xd0210800-0xd02108ff irq 23 at device 4.2 on pci6
Sep 28 14:25:24 acer kernel: sdhci0: 1 slot(s) allocated
Sep 28 14:25:24 acer kernel: sdhci0: [ITHREAD]
Sep 28 14:25:24 acer kernel: mmc0: <MMC/SD bus> on sdhci0
Sep 28 14:25:24 acer kernel: mmc0: setting transfer rate to 33.000MHz
Sep 28 14:25:24 acer kernel: sdhci1: <ENE CB712 SD 2> at device 4.4 on pci6
Sep 28 14:25:24 acer kernel: sdhci1: 1 slot(s) allocated
Sep 28 14:25:24 acer kernel: sdhci1: [ITHREAD]
Sep 28 14:25:24 acer kernel: mmc1: <MMC/SD bus> on sdhci1
Sep 28 14:25:25 acer kernel: mmc1: SD card: 31129600 bytes
Sep 28 14:25:25 acer kernel: mmcsd0: 29MB <MMC/SD Memory Card> at mmc1
Sep 28 14:25:25 acer kernel: mmc1: setting transfer rate to 30.000MHz
Sep 28 14:25:25 acer kernel: mmc1: setting bus width to 4 bits
========== pciconf -lv =============
cbb0 at pci0:6:4:0: class=0x060700 card=0x009f1025 chip=0x14121524
rev=0x10 hdr=0x02
vendor = 'ENE Technology Inc'
device = 'CB-712/714 CardBus Controller'
class = bridge
subclass = PCI-CardBus
none1 at pci0:6:4:1: class=0x050100 card=0x009f1025 chip=0x05301524
rev=0x01 hdr=0x00
vendor = 'ENE Technology Inc'
device = 'CB-712/714/810 Memory Stick Card Reader'
class = memory
subclass = flash
sdhci0 at pci0:6:4:2: class=0x080501 card=0x009f1025 chip=0x05501524
rev=0x01 hdr=0x00
vendor = 'ENE Technology Inc'
device = 'CB-712/714/810 Secure Digital Card Reader'
class = base peripheral
none2 at pci0:6:4:3: class=0x050100 card=0x009f1025 chip=0x05201524
rev=0x01 hdr=0x00
vendor = 'ENE Technology Inc'
device = 'PCI SmartMedia / xD Card Reader Controller'
class = memory
subclass = flash
sdhci1 at pci0:6:4:4: class=0x050100 card=0x009f1025 chip=0x05511524
rev=0x01 hdr=0x00
vendor = 'ENE Technology Inc'
device = 'PCI SD/MMC Card Reader Controller'
class = memory
subclass = flash
acer$
============ uname -a ===========
FreeBSD acer.lissyara.int.otradno.ru 8.0-CURRENT FreeBSD 8.0-CURRENT #0:
Sat Sep 27 16:35:08 MSD 2008
lissyara at acer.lissyara.int.otradno.ru:/usr/obj/usr/src/sys/color-console
amd64
=========== kldstat ==========
acer$ kldstat
Id Refs Address Size Name
1 71 0xffffffff80100000 da1698 kernel (/boot/kernel/kernel)
2 2 0xffffffff80ea2000 759b8 sound.ko (/boot/kernel/sound.ko)
3 1 0xffffffff80f18000 21ae0 snd_hda.ko (/boot/kernel/snd_hda.ko)
4 1 0xffffffff80f3a000 2cf0 umodem.ko (/boot/kernel/umodem.ko)
5 1 0xffffffff80f3d000 6360 acpi_video.ko
(/boot/kernel/acpi_video.ko)
6 1 0xffffffff80f44000 5538 atapicam.ko (/boot/kernel/atapicam.ko)
7 1 0xffffffff80f4a000 2f58 acpi_aiboost.ko
(/boot/kernel/acpi_aiboost.ko)
8 1 0xffffffff80f4d000 3eb8 acpi_dock.ko
(/boot/kernel/acpi_dock.ko)
9 1 0xffffffff80f51000 6e20 ng_bt3c.ko (/boot/kernel/ng_bt3c.ko)
10 5 0xffffffff80f58000 15bf8 netgraph.ko (/boot/kernel/netgraph.ko)
11 1 0xffffffff80f6e000 39660 ng_btsocket.ko
(/boot/kernel/ng_btsocket.ko)
12 3 0xffffffff80fa8000 2da0 ng_bluetooth.ko
(/boot/kernel/ng_bluetooth.ko)
13 1 0xffffffff80fab000 bec8 ng_ubt.ko (/boot/kernel/ng_ubt.ko)
14 1 0xffffffff80fb7000 2938 ubtbcmfw.ko (/boot/kernel/ubtbcmfw.ko)
15 1 0xffffffff80fba000 17890 ng_l2cap.ko (/boot/kernel/ng_l2cap.ko)
16 1 0xffffffff80fd2000 3fc8 iicbb.ko (/boot/kernel/iicbb.ko)
17 2 0xffffffff80fd6000 3f48 iicbus.ko (/boot/kernel/iicbus.ko)
19 1 0xffffffff80ff1000 14db0 tmpfs.ko (/boot/kernel/tmpfs.ko)
20 1 0xffffffff81222000 a48c ipfw.ko (/boot/kernel/ipfw.ko)
21 1 0xffffffff8122d000 b8ba fuse.ko (/usr/local/modules/fuse.ko)
22 1 0xffffffff81239000 3652 vkbd.ko (/boot/kernel/vkbd.ko)
23 1 0xffffffff8123d000 754 rtc.ko (/usr/local/modules/rtc.ko)
24 1 0xffffffff8123e000 1ab19 linux.ko (/boot/kernel/linux.ko)
25 1 0xffffffff81259000 24fd3 radeon.ko (/boot/kernel/radeon.ko)
26 1 0xffffffff8127e000 10341 drm.ko (/boot/kernel/drm.ko)
27 1 0xffffffff8128f000 2a02 mmc.ko (/boot/modules/mmc.ko)
28 1 0xffffffff81292000 b97 mmcsd.ko (/boot/modules/mmcsd.ko)
29 1 0xffffffff81293000 2a28 sdhci.ko (/boot/modules/sdhci.ko)
More information about the freebsd-mobile
mailing list