mmc does not work on HP NC6220

Alexander Motin mav at FreeBSD.org
Tue Aug 18 18:21:25 UTC 2009


ales-76 at seznam.cz wrote:
> The mmc does not seem to work on my HP NC6220 notebook. I have the mmc, mmcsd and sdhci compiled as modules, all the modules get loaded properly. The system is FreeBSD 7.2, i386, specifically configured and compiled for this machine. If i set hw.mmc.debug=1 and hw.sdhci.debug=1 I see following in dmesg:
> 
> Aug 17 22:00:36 malka kernel: sdhci0: <TI XX21/XX11 SD> mem 0xd0104000-0xd01040ff,0xd0105000-0xd01050ff,0xd0106000-0xd01060ff irq 22 at device 6.4 on pci2
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: 16MHz 4bits 3.3V DMA
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: ============== REGISTER DUMP ==============
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Sys addr: 0x00000000 | Version:  0x00008400
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Blk size: 0x00000000 | Blk cnt:  0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Argument: 0x00000000 | Trn mode: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Present:  0x00020000 | Host ctl: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Power:    0x00000000 | Blk gap:  0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Wake-up:  0x00000000 | Clock:    0x00000002
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Timeout:  0x00000000 | Int stat: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Int enab: 0x01ff00fb | Sig enab: 0x01ff00fb
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: AC12 err: 0x00000000 | Slot int: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: Caps:     0x01821090 | Max curr: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot0: ===========================================
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: 16MHz 4bits 3.3V DMA
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: ============== REGISTER DUMP ==============
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Sys addr: 0x00000000 | Version:  0x00008400
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Blk size: 0x00000000 | Blk cnt:  0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Argument: 0x00000000 | Trn mode: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Present:  0x00020000 | Host ctl: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Power:    0x00000000 | Blk gap:  0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Wake-up:  0x00000000 | Clock:    0x00000002
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Timeout:  0x00000000 | Int stat: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Int enab: 0x01ff00fb | Sig enab: 0x01ff00fb
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: AC12 err: 0x00000000 | Slot int: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: Caps:     0x01821090 | Max curr: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot1: ===========================================
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: 24MHz 4bits 3.3V DMA
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: ============== REGISTER DUMP ==============
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Sys addr: 0x00000000 | Version:  0x00008400
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Blk size: 0x00000000 | Blk cnt:  0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Argument: 0x00000000 | Trn mode: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Present:  0x000a0000 | Host ctl: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Power:    0x00000000 | Blk gap:  0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Wake-up:  0x00000000 | Clock:    0x00000002
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Timeout:  0x00000000 | Int stat: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Int enab: 0x01ff00fb | Sig enab: 0x01ff00fb
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: AC12 err: 0x00000000 | Slot int: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: Caps:     0x01821898 | Max curr: 0x00000000
> Aug 17 22:00:36 malka kernel: sdhci0-slot2: ===========================================
> Aug 17 22:00:36 malka kernel: sdhci0: 3 slot(s) allocated
> Aug 17 22:00:36 malka kernel: sdhci0: [ITHREAD]
> 
> That is form sdhci, mmc does not say anything at all. If I put a SD card inside the slot nothing happens - no message in dmesg, no device created in /dev. Seems that the mmc does not recognize the hw.
> 
> Lspci output is there:
> 
> 02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller
> 	Subsystem: Hewlett-Packard Company Device 0944
> 	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> 	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> 	Latency: 64 (1750ns min, 1000ns max), Cache Line Size: 64 bytes
> 	Interrupt: pin B routed to IRQ 19
> 	Region 0: Memory at d0102000 (32-bit, non-prefetchable)
> 	Capabilities: [44] Power Management version 2
> 		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
> 		Status: D3 PME-Enable- DSel=0 DScale=0 PME-
> 
> 02:06.4 SD Host controller: Texas Instruments PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
> 	Subsystem: Hewlett-Packard Company Device 0944
> 	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> 	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> 	Latency: 64 (1750ns min, 1000ns max), Cache Line Size: 64 bytes
> 	Interrupt: pin C routed to IRQ 22
> 	Region 0: Memory at d0104000 (32-bit, non-prefetchable)
> 	Region 1: Memory at d0105000 (32-bit, non-prefetchable)
> 	Region 2: Memory at d0106000 (32-bit, non-prefetchable)
> 	Capabilities: [80] Power Management version 2
> 		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
> 		Status: D0 PME-Enable- DSel=0 DScale=0 PME-
> 
> According to the entries in the driver the TI chipset is supported. I know the hardware is not broken, because it worked flawlessly under Linux. I have tried to play with hw.pci.do_power_resume and hw.pci_do_power_nodriver, but to no avail. Have I forgot something? Are there any dependencies that are not forced during compile time? I include full dmesg, lspci and kldstat.

TI chips have two incompatible controllers, supporting same card types. 
Lack of activity on card insertion may mean that BIOS routes SD slot to 
the FlashMedia, but not to the SD Controller. Linus either works via 
FlashMedia Controller, as driver was made there, or it somehow reroutes 
slot to the SD controller. I have no hardware to work on first part and 
both hardware and specifications for the second. You may try Google to 
find description of hack required for second solution, but it doesn't 
works in some unknown cases.

-- 
Alexander Motin


More information about the freebsd-mobile mailing list