Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2009 18:04:30 +0200 (CEST)
From:      ales-76@seznam.cz
To:        =?us-ascii?Q?Alexander=20Motin?= <mav@FreeBSD.org>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: mmc does not work on HP NC6220
Message-ID:  <529.760-10303-5478473-1251043470@seznam.cz>
In-Reply-To: <4A8AE2CB.6000904@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello,

I have tried the hack and it works. By changing the one register value =
in pci config space of the FlashMedia one can reroute the card slot to =
the SD controller. The config of the controller after the manipulation =
looks like this:

02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated F=
lashMedia Controller
=09Subsystem: Hewlett-Packard Company Device 0944
=09Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- =
Stepping- SERR- FastB2B- DisINTx-
=09Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dmedium >TAbort- <=
TAbort- <MAbort- >SERR- <PERR- INTx-
=09Latency: 64 (1750ns min, 1000ns max), Cache Line Size: 64 bytes
=09Interrupt: pin B routed to IRQ 19
=09Region 0: Memory at d0102000 (32-bit, non-prefetchable)
=09Capabilities: [44] Power Management version 2
=09=09Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=3D0mA PME(D0+,D1+,D2+,D3ho=
t+,D3cold-)
=09=09Status: D3 PME-Enable- DSel=3D0 DScale=3D0 PME-
00: 4c 10 33 80 06 00 10 02 00 00 80 01 10 40 80 00
10: 00 20 10 d0 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 44 09
30: 00 00 00 00 44 00 00 00 00 00 00 00 13 02 07 04
40: 00 00 00 00 01 00 02 7e 03 00 00 00 22 00 00 00
50: 3c 10 44 09 05 01 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

The process of the reconfiguration is easy:

setpci -s 06.3 4c=3D0x22

My instistence on pciutils is due to my Linux background, pciconf can d=
o the trick as well:

pciconf -w pci0:2:6:3 76 34

You can check the result with:

lspci -s 02:6.3 -vvvxxx

or

pciconf -r pci0:2:6:3 76

Then I was able to see mmcsd0 device in /dev and mount the file system =
on it. The dmesg shows:

Aug 23 16:35:25 malka kernel: sdhci0: <TI XX21/XX11 SD> mem 0xd0104000-=
0xd01040ff,0xd0105000-0xd01050ff,0xd0106000-0xd01060ff irq 22 at device=
 6.4 on pci2
Aug 23 16:35:25 malka kernel: sdhci0: 3 slot(s) allocated
Aug 23 16:35:25 malka kernel: sdhci0: [ITHREAD]
Aug 23 16:35:51 malka kernel: sdhci0-slot2: Card inserted
Aug 23 16:35:51 malka kernel: mmc0: <MMC/SD bus> on sdhci0
Aug 23 16:35:51 malka kernel: mmc0: Probing bus
Aug 23 16:35:51 malka kernel: mmc0: SD 2.0 interface conditions: OK
Aug 23 16:35:51 malka kernel: mmc0: SD probe: OK (OCR: 0x00ff8000)
Aug 23 16:35:51 malka kernel: mmc0: Current OCR: 0x00ff8000
Aug 23 16:35:51 malka kernel: mmc0: Probing cards
Aug 23 16:35:51 malka kernel: mmc0: New card detected (CID 02544d534430=
324732a8fbcd99007a00)
Aug 23 16:35:51 malka kernel: mmc0: Card at relative address 63806 adde=
d:
Aug 23 16:35:51 malka kernel: mmc0:  card: SD (0x2/0x544d/"SD02G" rev 3=
.2 m/d 10.2007 s/n 00000000)
Aug 23 16:35:51 malka kernel: mmc0:  bus: 4bit, 50MHz, high speed timin=
g
Aug 23 16:35:51 malka kernel: mmc0:  memory: 3932160 blocks, erase sect=
or 8192 blocks
Aug 23 16:35:51 malka kernel: mmc0: setting transfer rate to 24.000MHz
Aug 23 16:35:51 malka kernel: mmcsd0: 1920MB <SD Memory Card> at mmc0 2=
4MHz/4bit
Aug 23 16:35:51 malka kernel: mmc0: setting bus width to 4 bits

And after removal:

Aug 23 16:38:56 malka kernel: sdhci0-slot2: Card removed
Aug 23 16:38:56 malka kernel: mmc0: detached

Alexander, do you think you can incorporate this hack into the sdhci dr=
iver? At least as an option, like hw.sdhci.ti_hack or something. Well, =
I understand that driver poking in config space of a device that does n=
ot belong to it is not very elegant, but it should not do any harm, at =
least until there is a working FlashMedia driver. I also understand tha=
t if it works for me does not necessarily mean it will work for everybo=
dy, but as an option and with some safety checks it would be worthwhile=
.

Ales Blaha

> ------------ P=F9vodn=ED zpr=E1va ------------
> Od: Alexander Motin <mav@FreeBSD.org>
> P=F8edm=ECt: Re: mmc does not work on HP NC6220
> Datum: 18.8.2009 20:21:48
> ----------------------------------------
> ales-76@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. T=
he system
> is FreeBSD 7.2, i386, specifically configured and compiled for this m=
achine. If
> i set hw.mmc.debug=3D1 and hw.sdhci.debug=3D1 I see following in dmes=
g:
> > 
> > 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: =3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D REGISTER DUMP
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > 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:
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > Aug 17 22:00:36 malka kernel: sdhci0-slot1: 16MHz 4bits 3.3V DMA
> > Aug 17 22:00:36 malka kernel: sdhci0-slot1: =3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D REGISTER DUMP
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > 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:
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > Aug 17 22:00:36 malka kernel: sdhci0-slot2: 24MHz 4bits 3.3V DMA
> > Aug 17 22:00:36 malka kernel: sdhci0-slot2: =3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D REGISTER DUMP
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > 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:
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > 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 crea=
ted in
> /dev. Seems that the mmc does not recognize the hw.
> > 
> > Lspci output is there:
> > 
> > 02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrat=
ed
> FlashMedia Controller
> > =09Subsystem: Hewlett-Packard Company Device 0944
> > =09Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParE=
rr- Stepping-
> SERR- FastB2B- DisINTx-
> > =09Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dmedium >TAbor=
t- <TAbort-
> <MAbort- >SERR- <PERR- INTx-
> > =09Latency: 64 (1750ns min, 1000ns max), Cache Line Size: 64 bytes
> > =09Interrupt: pin B routed to IRQ 19
> > =09Region 0: Memory at d0102000 (32-bit, non-prefetchable)
> > =09Capabilities: [44] Power Management version 2
> > =09=09Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=3D0mA PME(D0+,D1+,D2+,=
D3hot+,D3cold-)
> > =09=09Status: D3 PME-Enable- DSel=3D0 DScale=3D0 PME-
> > 
> > 02:06.4 SD Host controller: Texas Instruments
> PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
> > =09Subsystem: Hewlett-Packard Company Device 0944
> > =09Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParE=
rr- Stepping-
> SERR- FastB2B- DisINTx+
> > =09Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=3Dmedium >TAbor=
t- <TAbort-
> <MAbort- >SERR- <PERR- INTx-
> > =09Latency: 64 (1750ns min, 1000ns max), Cache Line Size: 64 bytes
> > =09Interrupt: pin C routed to IRQ 22
> > =09Region 0: Memory at d0104000 (32-bit, non-prefetchable)
> > =09Region 1: Memory at d0105000 (32-bit, non-prefetchable)
> > =09Region 2: Memory at d0106000 (32-bit, non-prefetchable)
> > =09Capabilities: [80] Power Management version 2
> > =09=09Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=3D0mA PME(D0+,D1+,D2+,=
D3hot+,D3cold-)
> > =09=09Status: D0 PME-Enable- DSel=3D0 DScale=3D0 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 h=
ave 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 n=
ot forced
> during compile time? I include full dmesg, lspci and kldstat.
> 
> TI chips have two incompatible controllers, supporting same card type=
s. 
> 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 rerout=
es 
> slot to the SD controller. I have no hardware to work on first part a=
nd 
> both hardware and specifications for the second. You may try Google t=
o 
> find description of hack required for second solution, but it doesn't=
 
> works in some unknown cases.
> 
> -- 
> Alexander Motin
> _______________________________________________
> freebsd-mobile@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
> To unsubscribe, send any mail to "freebsd-mobile-unsubscribe@freebsd.=
org"
> 
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?529.760-10303-5478473-1251043470>