Re: Powering down 16-bit wi(4) PC Card is broken for me

From: Ruslan Ermilov <ru_at_freebsd.org>
Date: Wed, 28 Sep 2005 08:50:21 +0300
Hi Warner,

On Tue, Sep 27, 2005 at 09:46:08PM -0600, M. Warner Losh wrote:
> Ruslan,
> 
> Thanks for working with me offline.  I believe that the following
> should fix things up for you.  Can you try the following patch?
> 
No, it doesn't.  :-(

Like in the previous try, the slot becomes deaf once I eject the
16-bit PC Card.  Here's the relevant console log:

Injecting cardbus:

: Status is 0x30000920
: cbb0: card inserted: event=0x00000006, state=30000920
: cbb0: cbb_power: 3V
: rl0: <Edimax EP-4103DL CardBus> port 0x1000-0x10ff mem 0xd8000-0xd81ff irq 11 at device 0.0 on cardbus0
: miibus0: <MII bus> on rl0
: rlphy0: <RealTek internal media interface> on miibus0
: rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
: rl0: Ethernet address: 00:11:6b:50:03:82

Ejecting cardbus:

: Status is 0x30000186
: rlphy0: detached
: miibus0: detached
: rl0: detached
: cbb0: cbb_power: 0V

Injecting pccard:

: Status is 0x30000510
: cbb0: card inserted: event=0x00000000, state=30000510
: cbb_pcic_socket_enable:
: cbb0: cbb_power: 5V
: cbb_pcic_socket_enable:
: wi0: <Lucent Technologies WaveLAN/IEEE> at port 0x100-0x13f irq 11 function 0 config 1 on pccard0
: wi0: using Lucent Technologies, WaveLAN/IEEE
: wi0: Lucent Firmware: Station (6.6.1)
: wi0: Ethernet address: 00:02:2d:09:40:19

Ejecting pccard:

: Status is 0x30000116
: wi0: detached
: cbb_pcic_socket_disable

Note there's no "0V" indication now.  At this point, the slot becomes deaf.

> ==== //depot/user/imp/newcard/dev/pccbb/pccbb.c#125 (text+ko) ====
> 
> _at__at_ -1269,12 +1269,12 _at__at_
>  
>  	DPRINTF(("cbb_pcic_socket_disable\n"));
>  
> -	/* reset signal asserting... */
> -	exca_clrb(&sc->exca[0], EXCA_INTR, EXCA_INTR_RESET);
> +	/* Turn off the card's interrupt and leave it in reset */
> +	exca_putb(&sc->exca[0], EXCA_INTR, 0);
>  	tsleep(sc, PZERO, "cbbP1", hz / 100);
>  
>  	/* power down the socket */
> -	exca_clrb(&sc->exca[0], EXCA_PWRCTL, EXCA_PWRCTL_OE);
> +	exca_putb(&sc->exca[0], EXCA_PWRCTL, 0);
>  	cbb_power(brdev, CARD_OFF);
>  
>  	/* wait 300ms until power fails (Tpf). */


Cheers,
-- 
Ruslan Ermilov
ru_at_FreeBSD.org
FreeBSD committer

Received on Wed Sep 28 2005 - 03:52:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:44 UTC