Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Aug 2009 10:32:38 +0200 (CEST)
From:      ales-76@seznam.cz
To:        freebsd-mobile@freebsd.org
Cc:        mav@FreeBSD.org
Subject:   Re: mmc does not work on HP NC6220
Message-ID:  <609.854-25342-1874605541-1250757158@seznam.cz>
In-Reply-To: <4A8AE2CB.6000904@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
And one more thing for those brave... I have googled a little and found=
 a hack that should reroute the SD slot from FlashMedia to SD controlle=
r. You can find the solution here: http://list.drzeus.cx/pipermail/sdhc=
i-devel/2005-November/000036.html Pierre Ossman writes that:

"SD/MMC control can be at _either_ the flash controller, or the SD host=
, not both. The control for this is in a PCI register on the
flash controller called MMC_SD_DIS and is documented as disabling MMC/S=
D support in the flash media controller... the SD host controller takes=
 over at that point... A register in PCI space needs to be changed. A r=
egister that is configured by the eeprom in the laptop.

So how to do it then... First we need to know the current value of the
reg. It is in subfunction 3 at offset 4C:

40: 00 00 00 00 01 00 02 7e 00 00 00 00 20 00 00 00
                                        ^^

The bit we want to set is bit 2. So we change the above to 22.

$ setpci -s 06.3 4c=3D0x22" 

This is obvisouly for Linux, but it should work on any system, except t=
hat on FreeBSD one would use pciconf instead of setpci. Haven't tried m=
yself just yet, but I will during the weekend.

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 19:21:29
> ----------------------------------------
> 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
> 
> 
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?609.854-25342-1874605541-1250757158>