LINUX-BG   Адрес : http://www.linux-bg.org
Четци на карти на Texas Instruments
От: Мариян Маринов
Публикувана на: 18-06-2006
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=383550582
От повече от година съм собственик на лаптоп HP nx8220. Като цяло машината е много добра но за цялото време през което я имам не бях успял да накарам вграденият в него четец за карти да работи.

След доста търсене в интернет преди 6 месеца намерих проект който се занимаваше с направата на модул за ядрото на Линукс който да работи с този четец.

За съжаление този проект не е мръднал много за последните 6 месеца което ме накара да се поровя из интернет отново. По случайност попаднах на друг проект който работи над модул за работа със Secure Dicital Host Controlers (SDHC). С радост разбрах, че моят контролер може и да тръгне с този модул.

Докато четох документацията видях, че модулът вече е влязъл в основното дърво на ядрото на Линукс и се очаква да излезе със ядро 2.6.17. Тестовете които аз направих са с ядро 2.6.17-rc6. Ето настройките на ядрото, които трябва да направите за да можете да използвате вашият четец:
   Device Drivers -->
     MMC/SD Card Support -->
       [M] MMC Support
        M MMC block device driver
        M Secure Digital Host Controller Interface support  (EXPERIMENTAL) 
 
или директно в конфигурационният файл:
   CONFIG_MMC=m
   CONFIG_MMC_BLOCK=m
   CONFIG_MMC_SDHCI=m
 

Първото нещо което прави впечатление след зареждането на модула sdhci е, че няма създадени блокови устройства с които да се работи. Налага се на ръка да бъде зареден модулът mmc_block който вече ви създава устройствата с които можете да работите.

А второто нещо което прави адски неприятно впечатление е, че след вкарването на карта в четеца, машината въобще не отчита каквато и да била дейност.

Първоначално реших, че тъй като модулът е все още експериментален просто не работи с моят четец, но след още малко търсене из пощенският списък на проекта открих, че проблема е единствено и само на контролерите произведени от Texas Instruments(TI).

Когато дадете lspci изхода от командата включва нещо подобно на това:
02:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller
02:06.4 Class 0805: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller
02:06.5 Communication controller: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Smart Card Controller (SMC)

Откъдето ясно се вижда, че на машината има SD Controler и Flash Media Controler както и един CardBus Controler. Проблемът идва от това, че в документацията на PCIxx21 контролерите на TI никъде не е описано, че SD и FlashMedia контролерите не могат да работят едновременно. Стандартно FlashMedia контролерът е активиран и би трябвало през него да можете да се обръщате към SD/MMC картите в четеца. За съжаление обаче липсата на документация относно FlashMedia контролера спира проекта за разработка на модул за него.

Pierre Ossman обаче намира начин за излочването на FlashMedia контролера и след кратки тестове разбира, че автоматично след изключването му SD контролера се включва на негово място. Това по принцип е много грозен начин за работа с устройствата в компютърът ви защото се налага да се променят настройки установени от BIOS при началното инициализиране на машината. По принцип подобни операции са изключително опасни и нежелателни.

Все пак за да работи моят четец моят единствен шанс беше да си изключа FlashMedia контролера. Което става с изпълнението на следната команда:

# setpci -s 06.3 4c=0×22

След изпълнението на тази команда, вече спокойно може да се използва четеца с предварително заредени модулите sdhci и mmc_block.

Устройствата които ви се създават от модула mmc_block обикновено са тези:
   /dev/mmcblk0
   /dev/mmcblk0p1
 

<< *buntu файлови хранилища | Модулна поддръжка на XFS за RHEL и дериватите му >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.17 usr + 0.03 sys = 0.20 CPU)