Problems with SD8686 SDIO on HTC Shift

Pierre Ossman drzeus at drzeus.cx
Mon Feb 2 14:22:11 EST 2009


On Sat, 24 Jan 2009 09:36:33 -0500
Dan Williams <dcbw at redhat.com> wrote:

> On Sat, 2009-01-24 at 12:53 +0100, Sven Barth wrote:
> > // I think this is about the SDIO Controller

Yup.

> > 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)

That's a new ID. Not even the vendor is known. I don't supposed you've
ripped the sucker apart and checked what's written on the chip?

> > 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

This seems to be a delightfully crappy controller. Standards are for
suckers ;)

> > // 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.

Hmm... the transfer isn't particularly odd when this happens. No idea
why it works during firmware transfer but not later.

There are a couple of things we can do:

1. Run this thing through mmc_test. It will run some tests on the
controller to see that it handles some common corner cases. You'll need
a storage card for this though.

Look for a file called "test" in sysfs for the device and echo
something into it. And make sure mmc_block isn't loaded. Test results
will be in dmesg.

2. Enable MMC_DEBUG and try to reinit the SDIO card. Perhaps we'll see
some more clue with a full dump.

Rgds
-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Make sure your server uses encryption
  for SMTP traffic and consider using PGP for end-to-end
  encryption.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://lists.infradead.org/pipermail/libertas-dev/attachments/20090202/ce244c1c/attachment.bin 


More information about the libertas-dev mailing list