nc6400 + SD-card reader

A hamarosan kijövő 7.2-ben végre elfogadható minőségűnek tűnő kártyaolvasó driver várható. Lelkesen rávetettem magam a 7.2-beta1-re, és jól elképedtem, mert persze semmit nem jelzett. De mivel elég sokat olvasgattam korábban anyázásokat TI kontrollerek ügyében a fejlesztőktől, nagyon azért nem lepődtem meg. De azért csak megírtam az egyik fejlesztő srácnak (Alexander Motin, mav@) a panaszaimat, ő pdig elég rendesen válaszolgatott. (Rögtön az elején jelezte, hogy a Texas neki nem ad doksit, mert nem valami nagy cég fejlesztője, próbáljak én szerezni egyet a laptop gyártójától.) Hol én találtam egy érdekes linket, hol ő. Ma küldött egy eléggé kriptikus leírásra vonatkozó linket, amiben Linux alatt mindenféle furmányos módon, a kontroller regisztereit turkálják a setpci paranccsal. No elkezdődött a próbálkozás. Nem mondhatnám, hogy kellemes meló volt, de (amikor egyik levelében már feladta), az egyik bit billentésével sikerült észrevetetni a rendszerrel, hogy betoltam egy kártyát. Ehhez képest már csak alig fél óra volt elérni, hogy a milliónyi debug üzenet között feltűnjön a várva várt üzenet arról, hogy ez a dög egy diszknek látszó tárgyat érzékel. Ehhez képest kész gyönyör, hogy ha kirántom, ettől nem esik hanyatt. Bámultos, hol tart már a tudomány! Az egyelőre érdekes, hogy ha a debug nincs bekapcsolva, akkor stabilan nem hajlandó észrevenni a kártyát, ellenben ha be van, akkor stabilan igen. Mivel a millió link egyikén pont egy linuxos drivert érintő, hosszabb inicializálási időt beállító fix szerepelt, van némi tippem arra, hogy itt is erről lehet szó. No de várjuk türelemmel, mire jut a fejlesztő az elküldött logokkal.

És persze a végére az ominózus csoda parancs:

setpci -s 02:06:2 4c=02

(Ennek van amúgy pciconf -fal FreeBSD-s saját változata, de egyszerűségi okokból én ezt használtam :-) Szóval ha valakinek ilyen kártyaolvasója volna: card=0x30ac103c chip=0x803c104c, akkor ezzel van esély némi életet lehelni bele. FreeBSD 7.2-beta1, és természetesen mmc, mmcsd és sdhci driverek betöltve.)

(Szerk1: most látom, hogy nem írtam be a FreeBSD-formát. Jól jöhet az még:

pciconf -w -b pci0:2:6:2 0x4c 02

- ez így azért jó, mert nem kell hozzá oprendszer eszközön kívül más hozzá.)

Szerk2:

Egy Compaq nw8440 laptopon (nehany FreeBSD-verzioval kesobb: 9.0) a dolog annyit valtozott, hogy nem pont ugyanaz a kartyaolvaso azonositoja (itt: card=0x30a3103c chip=0x803b104c), ellenben a modszer valtozatlanul szukseges (es elegseges) a kartyaolvaso eletrelehelesehez. Azaz:

/boot/loader.conf:
mmc_load="YES"
mmcsd_load="YES"
sdhci_load="YES"
hw.mmc.debug=255
hw.sdhci.debug=255

/etc/rc.local:
pciconf -w -b pci0:2:6:2 0x4c 02

(a pci0 kezdetu parameter helyere termeszetszeruleg azt az eszkozt kell irni, ami valahogy igy nez ki a pciconf -lv kimeneteben:
cbb0@pci0:2:6:0: class=0x060700 card=0x30ac103c chip=0x8039104c rev=0x00 hdr=0x02
vendor = 'Texas Instruments'
device = 'PCIxx12 Cardbus Controller'
class = bridge
subclass = PCI-CardBus
...
none0@pci0:2:6:2: class=0x018000 card=0x30ac103c chip=0x803b104c rev=0x00 hdr=0x00
vendor = 'Texas Instruments'
device = '5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)'
class = mass storage

Es a dolog megy. Persze lassan beletehetnek mar a driverbe azt a lassitast amit a debug uzenetek kiirasa okoz, illetve ennek a nyomorult bitnek a billentese is bekerulhetne.)