Problems with SD8686 SDIO on HTC Shift

Sven Barth svenmauren at vr-web.de
Fri Jan 23 16:11:41 EST 2009


Hello together!

I'm currently trying to get Linux running on my HTC Shift (a UMPC with 
an Intel CPU). It has a Marvell SD8686 wifi module connected with SDIO. 
I'm currently using Arch Linux with Kernel 2.6.28, compat-wireless from 
01/16/2006 and the firmware from linux-firmware git. Every time I 
modprobe the libertas modules I get a timeout when the command 0x001e 
(CMD_802_11_RF_TX_POWER) should be send to the wifi-module. After 
"excessive timeouts" the module "coredumps" (part of dmesg from modprobe 
of libertas till end is attached). This problem happens with both 
firmware versions (v8 & v9) from linux-firmware.

According to this guide 
http://pof.eslack.org/blog/2008/04/14/linux-on-htc-shift/ the wifi 
module was at least working with the old driver, which was used around 
kernel 2.6.19 (Kubuntu 8.04).

It would be really nice to get wifi up and running, cause without it, I 
can't really use Linux in every day life on the Shift (so I'd have to 
stick with power-consumingVista ;) ).

Thank you in advance for your help and support.

Regards,
Sven Barth
-------------- next part --------------
mmc1: new SDIO card at address 0001
lib80211: common routines for IEEE802.11 drivers
lib80211_crypt: registered algorithm 'NULL'
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: f3961cc6, fw 9.70.3p18, cap 0x00000303
libertas: command 0x001e timed out
libertas: requeueing command 0x001e due to timeout (#1)
libertas: command 0x001e timed out
libertas: requeueing command 0x001e due to timeout (#2)
libertas: command 0x001e timed out
libertas: requeueing command 0x001e due to timeout (#3)
mmc1: Timeout waiting for hardware interrupt.
sdhci: ============== REGISTER DUMP ==============
sdhci: Sys addr: 0x3385c6e8 | Version:  0x00000111
sdhci: Blk size: 0x00007014 | Blk cnt:  0x00000001
sdhci: Argument: 0x92000014 | 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 0x001e timed out
libertas: Excessive timeouts submitting command 0x001e
libertas: PREP_CMD: command 0x001e failed: -110
------------[ cut here ]------------
kernel BUG at mm/slub.c:2743!
invalid opcode: 0000 [#1] PREEMPT SMP 
last sysfs file: /sys/class/power_supply/BAT0/charge_full
Modules linked in: libertas_sdio(+) libertas lib80211 mmc_block i915 drm ipv6 fuse uvcvideo compat_ioctl32 videodev v4l1_compat psmouse i2c_i801 pcspkr iTCO_wdt iTCO_vendor_support i2c_core serio_raw sdhci_pci sdhci sg mmc_core video output uhci_hcd ehci_hcd usbcore intel_agp agpgart thermal snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device evdev processor fan joydev button battery ac htcpen snd_hda_intel snd_hwdep snd_pcm_oss snd_pcm snd_timer snd_page_alloc snd_mixer_oss snd soundcore rtc_cmos rtc_core rtc_lib ext3 jbd mbcache sd_mod ata_piix ata_generic pata_acpi libata scsi_mod

Pid: 16540, comm: modprobe Not tainted (2.6.28-ARCH #1) Shift
EIP: 0060:[<c018efaa>] EFLAGS: 00010246 CPU: 0
EIP is at kfree+0xda/0xe0
EAX: 40040000 EBX: f39c0500 ECX: 00000058 EDX: c1673800
ESI: f39c0500 EDI: 00000000 EBP: 00000000 ESP: f3961d00
 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
Process modprobe (pid: 16540, ti=f3960000 task=f6a36800 task.ti=f3960000)
Stack:
 00000000 c017132d f3980000 f39c0500 00000000 00000000 f86266ac f3961d60
 f8626f8c f3961d5c 00000038 00000010 f390af44 f3961d50 f68e0600 00000000
 f82ef99c f8a9fc90 f6a3e000 00000000 f39630c0 00000000 00000000 0000000b
Call Trace:
 [<c017132d>] put_page+0x5d/0x110
 [<f86266ac>] if_sdio_probe+0x58c/0x870 [libertas_sdio]
 [<f823746f>] sdio_bus_probe+0x9f/0xc0 [mmc_core]
 [<c027e756>] driver_probe_device+0x86/0x1a0
 [<c011ff45>] default_spin_lock_flags+0x5/0x10
 [<c032bdce>] _spin_lock_irqsave+0x3e/0x60
 [<c027e8f9>] __driver_attach+0x89/0x90
 [<f8237370>] sdio_bus_remove+0x0/0x60 [mmc_core]
 [<c027e084>] bus_for_each_dev+0x44/0x70
 [<f8237370>] sdio_bus_remove+0x0/0x60 [mmc_core]
 [<c027e5e6>] driver_attach+0x16/0x20
 [<c027e870>] __driver_attach+0x0/0x90
 [<c027da17>] bus_add_driver+0x1a7/0x220
 [<f8237370>] sdio_bus_remove+0x0/0x60 [mmc_core]
 [<c027ea8c>] driver_register+0x5c/0x130
 [<c0329112>] printk+0x17/0x1d
 [<f827e000>] if_sdio_init_module+0x0/0x28 [libertas_sdio]
 [<c0101126>] do_one_initcall+0x36/0x1c0
 [<c0182630>] __vunmap+0xb0/0xe0
 [<c0158337>] load_module+0x1577/0x1950
 [<f8237d80>] sdio_writeb+0x0/0x50 [mmc_core]
 [<c015885b>] sys_init_module+0x8b/0x1b0
 [<c0103f13>] sysenter_do_call+0x12/0x33
Code: 8b 01 8b 51 0c 89 04 93 89 19 eb c2 f6 c4 60 74 1a 8b 5c 24 08 89 d0 8b 74 24 0c 8b 7c 24 10 8b 6c 24 14 83 c4 18 e9 26 23 fe ff <0f> 0b eb fe 66 90 83 e8 60 e9 18 ff ff ff 90 8d b4 26 00 00 00 
EIP: [<c018efaa>] kfree+0xda/0xe0 SS:ESP 0068:f3961d00
---[ end trace f44bcfd847cbebcd ]---


More information about the libertas-dev mailing list