Ndis SMC2835W (prism54) no go with 6.0-beta5 but ok with 5.4

Pim van Grol pvgrol at planet.nl
Tue Oct 4 13:43:30 PDT 2005


I have a laptop (IBM 390X) with a PCMCIA (cardbus) wlan card.
This is a version 1 SMC2835W (the full mac version) that uses the
Intersil 3890 chipset. Also known as prism gt.
This card has no native driver in FreeBSD.
Well, this may not be exactly true as someone (bfeldman?) used the
linux driver to create a freebsd driver (if_pff) but that will not
compile on 6.0 and I never tried it on 5.x I have to admit.

On FreeBSD 5.3, 5.4 it works with the ndis driver (project evil).
I used ndiscvt to convert the driver and the firmware and this works
quite nicely. From dmesg:

---------------------------------
Copyright (c) 1992-2005 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD 5.4-RELEASE #0: Sun May  8 10:21:06 UTC 2005
    root at harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
//skip
pci0: <bridge> at device 2.3 (no driver attached)
cbb0: <TI1251B PCI-CardBus Bridge> mem 0x10000000-0x10000fff irq 10 at device
3.0 on pci0
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
cbb1: <TI1251B PCI-CardBus Bridge> mem 0x20000000-0x20000fff irq 10 at device
3.1 on pci0
cardbus1: <CardBus bus> on cbb1
pccard1: <16-bit PCCard bus> on cbb1
//skip
cbb1: bad Vcc request. ctrl=0x33, status=0x30000b20
cbb_power: 3V
ndis0: <SMC2835W 2.4GHz 54 Mbps Wireless Cardbus Adapter> mem
0x88000000-0x88001fff irq 10 at device 0.0 on cardbus1
can't re-use a leaf (BusType)!
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 00:04:e2:99:99:99
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
ndis0: couldn't retrieve channel info: 28
ndis0: link up
---------------------------------

However, on 6.0 (tried b3 and b5) the driver will not load.
This is the Win XP driver (API 5.1) whereas on 5.4 the Win 2k driver
was used (API 5.0). On 6.0 the driver was converted with 'ndisgen'
(smc2835.sys, smc2835wnic.inf and firmware smc2835w.arm).

>From dmesg:
---------------------------------
FreeBSD 6.0-BETA5 #0: Mon Sep 19 00:12:45 UTC 2005
//skip
cbb0: <TI1251B PCI-CardBus Bridge> mem 0x10000000-0x10000fff irq 10 at device
3.0 on pci0
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
cbb1: <TI1251B PCI-CardBus Bridge> mem 0x20000000-0x20000fff irq 10 at device
3.1 on pci0
cardbus1: <CardBus bus> on cbb1
pccard1: <16-bit PCCard bus> on cbb1
//skip
cbb1: bad Vcc request. ctrl=0x33, status=0x30000b20
cbb_power: 3V
cardbus1: <network> at device 0.0 (no driver attached)
cbb1: bad Vcc request. ctrl=0x0, status=0x30000b69
cbb_power: 0V
---------------------------------

At this point I do a:
	# kldload if_ndis
	# kldload smc2835w_sys

dmesg:
---------------------------------
cbb1: cbb_power: 3V
cbb1: bad Vcc request. ctrl=0x33, status=0x30000b20
cbb_power: 3V
found-> vendor=0x1260, dev=0x3890, revid=0x01
        bus=4, slot=0, func=0
        class=02-80-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0000, statreg=0x0298, cachelnsz=8 (dwords)
        lattimer=0xa8 (5040 ns), mingnt=0x0a (2500 ns), maxlat=0x1c (7000 ns)
        intpin=a, irq=10
        powerspec 1  supports D0 D1 D2 D3  current D0
TUPLE: LINKTARGET [3]: 43 49 53
Product version: 5.0
Product name: Intersil | ISL3890 | - | - |
Manufacturer ID: 0b009038
Functions: Unknown(254), Multi-Functioned
TUPLE: Unknown(0x1c) [3]: 02 d9 02
cardbus1: Opening BAR: type=MEM, bar=10, len=2000
CIS reading done
cardbus1: Non-prefetchable memory at 88000000-88001fff
pci0: driver added
found-> vendor=0x8086, dev=0x7113, revid=0x03
        bus=0, slot=2, func=3
        class=06-80-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0003, statreg=0x0280, cachelnsz=0 (dwords)
        lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
pci0:2:3: reprobing on driver added
found-> vendor=0x11c1, dev=0x0449, revid=0x01
        bus=0, slot=6, func=0
        class=07-80-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0003, statreg=0x0290, cachelnsz=0 (dwords)
        lattimer=0x00 (0 ns), mingnt=0xfc (63000 ns), maxlat=0x0e (3500 ns)
        intpin=a, irq=11
        powerspec 2  supports D0 D2 D3  current D0
pci0:6:0: reprobing on driver added
pci0:6:0: Transition from D0 to D3
found-> vendor=0x125d, dev=0x1969, revid=0x02
        bus=0, slot=7, func=0
        class=04-01-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0001, statreg=0x0290, cachelnsz=0 (dwords)
        lattimer=0x40 (1920 ns), mingnt=0x02 (500 ns), maxlat=0x18 (6000 ns)
        intpin=a, irq=5
        powerspec 1  supports D0 D1 D2 D3  current D0
pci0:7:0: reprobing on driver added
pci0:7:0: Transition from D0 to D3
pci1: driver added
found-> vendor=0x10c8, dev=0x0005, revid=0x20
        bus=1, slot=0, func=0
        class=03-00-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0207, statreg=0x0290, cachelnsz=0 (dwords)
        lattimer=0x80 (3840 ns), mingnt=0x10 (4000 ns), maxlat=0xff (63750 ns)
        intpin=a, irq=10
        powerspec 1  supports D0 D1 D2 D3  current D0
pci1:0:0: reprobing on driver added
pci0: driver added
found-> vendor=0x8086, dev=0x7113, revid=0x03
        bus=0, slot=2, func=3
        class=06-80-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0003, statreg=0x0280, cachelnsz=0 (dwords)
        lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
pci0:2:3: reprobing on driver added
found-> vendor=0x11c1, dev=0x0449, revid=0x01
        bus=0, slot=6, func=0
        class=07-80-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0003, statreg=0x0290, cachelnsz=0 (dwords)
        lattimer=0x00 (0 ns), mingnt=0xfc (63000 ns), maxlat=0x0e (3500 ns)
        intpin=a, irq=11
        powerspec 2  supports D0 D2 D3  current D3
pci0:6:0: reprobing on driver added
pci0:6:0: Transition from D3 to D0
pci0:6:0: Transition from D0 to D3
found-> vendor=0x125d, dev=0x1969, revid=0x02
        bus=0, slot=7, func=0
        class=04-01-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0001, statreg=0x0290, cachelnsz=0 (dwords)
        lattimer=0x40 (1920 ns), mingnt=0x02 (500 ns), maxlat=0x18 (6000 ns)
        intpin=a, irq=5
        powerspec 1  supports D0 D1 D2 D3  current D3
pci0:7:0: reprobing on driver added
pci0:7:0: Transition from D3 to D0
pci0:7:0: Transition from D0 to D3
pci1: driver added
found-> vendor=0x10c8, dev=0x0005, revid=0x20
        bus=1, slot=0, func=0
        class=03-00-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0207, statreg=0x0290, cachelnsz=0 (dwords)
        lattimer=0x80 (3840 ns), mingnt=0x10 (4000 ns), maxlat=0xff (63750 ns)
        intpin=a, irq=10
        powerspec 1  supports D0 D1 D2 D3  current D0
pci1:0:0: reprobing on driver added
cbb1: cbb_power: 0V
cbb1: bad Vcc request. ctrl=0x0, status=0x30000b69
cbb_power: 0V
cbb1: cbb_power: 3V
cbb1: bad Vcc request. ctrl=0x33, status=0x30000b20
cbb_power: 3V
found-> vendor=0x1260, dev=0x3890, revid=0x01
        bus=4, slot=0, func=0
        class=02-80-00, hdrtype=0x00, mfdev=0
        cmdreg=0x0000, statreg=0x0298, cachelnsz=8 (dwords)
        lattimer=0xa8 (5040 ns), mingnt=0x0a (2500 ns), maxlat=0x1c (7000 ns)
        intpin=a, irq=10
        powerspec 1  supports D0 D1 D2 D3  current D0
TUPLE: LINKTARGET [3]: 43 49 53
Product version: 5.0
Product name: Intersil | ISL3890 | - | - |
Manufacturer ID: 0b009038
Functions: Unknown(254), Multi-Functioned
TUPLE: Unknown(0x1c) [3]: 02 d9 02
cardbus1: Opening BAR: type=MEM, bar=10, len=2000
CIS reading done
cardbus1: Non-prefetchable memory at 88000000-88001fff
ndis0: <SMC2835W 2.4GHz 54 Mbps Wireless Cardbus Adapter> mem
0x88000000-0x88001fff irq 10 at device 0.0 on cardbus1
ndis0: [MPSAFE]
can't re-use a leaf (BusType)!
ndis0: NDIS API version: 5.1
ndis0: NDIS ERROR: c000138a (unknown error)
ndis0: init handler failed
device_attach: ndis0 attach returned 6
---------------------------------

Does anyone have any hint, clue or solution ;-) ?

BR,

  Pim


More information about the freebsd-current mailing list