[Prism54-users] Firmware upload fails on Soekris board with ZCOM XG-600

Vanja Hrustic vanja@pobox.com
Wed, 21 Apr 2004 23:31:20 +0200


I am trying to make Mini-PCI card (Zcom XG-601, recognized as XG-601 by
prism54 driver) work on embedded system.

System is Soekris 4511, with Mini-PCI slot. Linux is booting (and running)
from Compact Flash card, and is put together by me; basucally, just kernel
(2.4.26 + hostap/preemptive patches), busybox, uclibc (plus wireless-tools
and some additional stuff, nothing system related).

Prism54 driver is from prism54-cvs-latest.tar.bz2 (downloaded on
21-Apr-2004).

Output of lspci -vvv shows:

00:10.0 Network controller: Intersil Corporation Intersil ISL3890 [Prism
GT/Prism Duette] (rev 01)
        Subsystem: Unknown device 17cf:0014
        Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at a0002000 (32-bit, non-prefetchable) [size=8K]
        Capabilities: [dc] Power Management version 1
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

I have /etc/hotplug directory, with firmware.agent in it. /sbin/hotplug is
taken from RedHat 9 system (I've installed quite few PrismGT based cards
on it, so hotplug script is okay). Firmware is 1.0.4.3, and saved as
/usr/lib/hotplug/firmware/isl3890

Kernel is compiled with neccesary support for hotplug, etc.

"modprobe firmware_class" loads the module fine.

"modprobe prism54" displays:

Loaded prism54 driver, version 1.1

But when I try to assign an IP address to the eth2 interface (prism54
card, in this case), I see the following:

remove_proc_entry: 00:10.0/loading busy, count=1
remove_proc_entry: firmware/00:10.0 busy, count=1
de_put: deferred delete of loading
de_put: deferred delete of 00:10.0

>From what I could find, seems like "de_put:" lines are generated from
linux/fs/proc/inode.c, while "remove_proc_entry:" lines come from
linux/fs/proc/generic.c - I have no idea why/how they showed up, but I
presume developers will know :)

"iwconfig eth2" shows:

/sbin # iwconfig eth2
eth2: timeout waiting for mgmt response
eth2      no wireless extensions.

Just for fun of it, I did "cat /proc/net/wireless", and got:

/proc/net # cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               |
Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc |
beacon | 16
  eth2: 0000    0     0     0        0      0      0      0      0       
0
/proc/net # eth2: timeout waiting for mgmt response
eth2: timeout waiting for mgmt response
eth2: mgmt tx queue is still full
eth2: mgmt tx queue is still full
eth2: mgmt tx queue is still full

So, I am not sure if firmware was uploaded or not.

The relevant part from dmesg output:

Loaded prism54 driver, version 1.1
eth2: prism54 driver detected card model: XG-600
eth2: islpci_open()
eth2: resetting device...
eth2: uploading firmware...
remove_proc_entry: 00:10.0/loading busy, count=1
remove_proc_entry: firmware/00:10.0 busy, count=1
de_put: deferred delete of loading
de_put: deferred delete of 00:10.0
eth2: firmware uploaded done, now triggering reset...
eth2: timeout waiting for mgmt response 100, triggering device
eth2: timeout waiting for mgmt response
eth2: timeout waiting for mgmt response 100, triggering device
eth2: timeout waiting for mgmt response
eth2: timeout waiting for mgmt response 100, triggering device
eth2: timeout waiting for mgmt response
eth2: timeout waiting for mgmt response 100, triggering device
eth2: timeout waiting for mgmt response
eth2: mgmt tx queue is still full
eth2: mgmt tx queue is still full
eth2: mgmt tx queue is still full
/proc/net # 

Any pointers on how to solve/investigate this, or how to get more
'sensible debugging' output is much appreciated :)

Vanja