Problems with SD8686 SDIO on HTC Shift

Dan Williams dcbw at redhat.com
Mon Jan 26 10:07:59 EST 2009


On Sat, 2009-01-24 at 21:31 +0100, Sven Barth wrote:
> Hello Dan!
> 
> Thanks again for your answer.
> 
> Do you know where or how I could find out what workarounds my controller 

No; this is usually either known from hardware quirks, or people figure
it out by doing stuff like disabling 4-bit transfers and seeing if that
fixes the problem.

> needs to work well? And what do I need to rebuild the mmc/sdhci modules?

You'll need the kernel source for the SDIO stuff.

> Are they provided in a extra package like compat-wireless or do I need 
> the source of my kernel release? Can I only build the needed modules or 
> do I need to build the hole kernel?

You don't need to rebuild the entire kernel just to test; once you have
the kernel source and the kernel development headers installed, you can
just jump into the module directory in the kernel source, and do:

make -C /path/to/kernel/headers SUBDIRS=`pwd` modules

and it'll build only the modules in that directory.  For example, on
Fedora:

cd drivers/mmc/host
make -C /lib/modules/2.6.27.5-41.fc9.i686/build SUBDIRS=`pwd` modules

would build all the SDHC modules that are turned on in the kernel config
which my currently running kernel was built with.

> Hmm... just a thought: According to the page I mentioned in my first 
> mail the wifi did work in Ubuntu 8.04 which used kernel 2.6.24-16 till 
> 19 (again I used a wrong number in my first mail ^^). So the SDIO module 
> had to work, too. I will dig around in the source code of the module (I 
> downloaded the source from marvell) to find some useful information 
> about the SDIO controller. (So I think I answered my first question by 
> myself :) )

If it worked at one time, it may be a problem with the libertas driver,
but it would be good to know *exactly* what kernel, SDIO stack bits,
libertas driver, and libertas firmware it was working with.  That gives
us a baseline to figure out where things went wrong.

Dan

> 
> Regards,
> Sven
> 
> Dan Williams schrieb:
> > On Sat, 2009-01-24 at 12:53 +0100, Sven Barth wrote:
> >   
> >> Hello Dan!
> >>
> >> Thanks for your answer.
> >>
> >> Yes, I did indeed mean 2008. ^^
> >>
> >> The SDIO Controller seems to be a no-name one (at least if I found the 
> >> right one). I used "lspci -vvv"  and the output is attached.
> >> I also found some output about the SDIO controller in dmesg (see 
> >> attached file). Might the problems reported there be the source of the 
> >> timeout problems?
> >>     
> >
> > Certainly could be.  The controller has historically been the major
> > source of problems for people with the libertas driver so far.  The
> > kernel's SDIO stack is fairly clean and doesn't try to hack around bad
> > hardware a lot since it wasn't known quite how bad the hardware was at
> > the time it was written.  Some controllers actually do need PIO mode
> > instead of DMA mode, others can't actually do 4-bit transfers but claim
> > to be able to do so (which means they aren't actually spec compliant I
> > think), that sort of thing.  You may have to work around some of these
> > issues in the SDIO stack for your particular controller.
> >
> >   
> >> I also removed the part about TX_POWER from main.c, but now the module 
> >> hangs with CMD_MAC_CONTROL (0x0028) (another clue, that the source of 
> >> the problems is the SDIO controller?)
> >>     
> >
> > Yeah; it appears that the only command that actually works is
> > CMD_GET_HW_SPEC, all subsequent commands fail.  I know that the version
> > 8 firmware (which you're using as seen below) works fine with
> > CMD_MAC_CONTROL on Ricoh controllers, and others have had success with
> > it on other controllers too.  So I think at the moment, the controller
> > is suspect.
> >
> > Pierre: any thoughts on the stack messages and what might be going on
> > here?
> >
> > Dan
> >
> >   
> >> Thanks for your help.
> >>
> >> Regards,
> >> Sven
> >> plain text document attachment (dmesg-htc-shift-2)
> >> // I think this is about the SDIO Controller
> >> sdhci: Secure Digital Host Controller Interface driver
> >> sdhci: Copyright(c) Pierre Ossman
> >> sdhci-pci 0000:01:06.0: SDHCI controller found [1947:4743] (rev 9)
> >> sdhci-pci 0000:01:06.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20
> >> sdhci-pci 0000:01:06.0: Invalid iomem size. You may experience problems.
> >> input: PC Speaker as /class/input/input7
> >> mmc0: Unknown controller version (17). You may experience problems.
> >> sdhci-pci 0000:01:06.0: Will use DMA mode even though HW doesn't fully claim to support it.
> >> mmc0: SDHCI controller on PCI [0000:01:06.0] using DMA
> >> sdhci-pci 0000:01:06.0: Invalid iomem size. You may experience problems.
> >> mmc1: Unknown controller version (17). You may experience problems.
> >> sdhci-pci 0000:01:06.0: Will use DMA mode even though HW doesn't fully claim to support it.
> >> mmc1: SDHCI controller on PCI [0000:01:06.0] using DMA
> >>
> >> // without TX_POWER cmd
> >> libertas_sdio: Libertas SDIO driver
> >> libertas_sdio: Copyright Pierre Ossman
> >> libertas_sdio mmc1:0001:1: firmware: requesting sd8686_helper.bin
> >> libertas_sdio mmc1:0001:1: firmware: requesting sd8686.bin
> >> libertas: f3cbdcce, fw 8.70.8p1, cap 0x00000303
> >> libertas: command 0x0028 timed out
> >> libertas: requeueing command 0x0028 due to timeout (#1)
> >> libertas: command 0x0028 timed out
> >> libertas: requeueing command 0x0028 due to timeout (#2)
> >> libertas: command 0x0028 timed out
> >> libertas: requeueing command 0x0028 due to timeout (#3)
> >> mmc1: Timeout waiting for hardware interrupt.
> >> sdhci: ============== REGISTER DUMP ==============
> >> sdhci: Sys addr: 0x33c2f488 | Version:  0x00000111
> >> sdhci: Blk size: 0x00007010 | Blk cnt:  0x00000001
> >> sdhci: Argument: 0x92000010 | Trn mode: 0x00000003
> >> sdhci: Present:  0x01f70506 | Host ctl: 0x00000003
> >> sdhci: Power:    0x0000000f | Blk gap:  0x00000000
> >> sdhci: Wake-up:  0x00000000 | Clock:    0x00000007
> >> sdhci: Timeout:  0x0000000c | Int stat: 0x00000000
> >> sdhci: Int enab: 0x00ff01fb | Sig enab: 0x00ff01fb
> >> sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
> >> sdhci: Caps:     0x01e011a1 | Max curr: 0x00000080
> >> sdhci: ===========================================
> >> libertas: command 0x0028 timed out
> >> libertas: Excessive timeouts submitting command 0x0028
> >> // modprobe libertas_sdio keeps hanging after "excessive timeouts" till I press Ctrl+c
> >> // this comes after I canceled modprobe
> >> libertas: eth0: Marvell WLAN 802.11 adapter
> >> plain text document attachment (lspci-sd-host)
> >> 01:06.0 SD Host controller: Device 1947:4743 (rev 09)
> >> 	Subsystem: Device 2211:4433
> >> 	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 (250ns min, 3000ns max), Cache Line Size: 32 bytes
> >> 	Interrupt: pin A routed to IRQ 20
> >> 	Region 0: Memory at fe8ffc00 (32-bit, non-prefetchable) [size=512]
> >> 	Region 1: Memory at fe8ff800 (32-bit, non-prefetchable) [size=512]
> >> 	Capabilities: [80] #00 [0000]
> >> 	Kernel driver in use: sdhci-pci
> >> 	Kernel modules: sdhci-pci
> >>
> >> _______________________________________________
> >> libertas-dev mailing list
> >> libertas-dev at lists.infradead.org
> >> http://lists.infradead.org/mailman/listinfo/libertas-dev
> >>     
> >
> >
> >   
> 




More information about the libertas-dev mailing list