Skip to contentSkip to conversation

Cardbus suspend/resume of 3ccfe575bt card fails

DISCUSSION Russell King 2 participants 2 messages Aug 6, 2003

lore
Share & tools
lore
#0 lore raw

Hi akpm,

Yes, I should've reported this sooner.

2.4 and 2.6 kernels exhibit the same problem - upon resume, the card indicates that it has a 10base link to the hub, but the hub indicates it has a 100base link. No traffic is possible.

Unplugging and replugging the card restores the link correctly (100base).

The following is from 2.6.0-test2:

0000:05:00.0: 3Com PCI 3CCFE575BT Cyclone CardBus at 0x1800. Vers LK1.1.19

Before suspend, mii-diag reports:

Basic registers of MII PHY #0: 3000 282d 0300 e54b 00a1 45e1 0001 0000.
The autonegotiated capability is 00a0.
The autonegotiated media type is 100baseTx.
Basic mode control register 0x3000: Auto-negotiation enabled.
You have link beat, and everything is working OK.
Your link partner advertised 45e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD 10baseT, w/ 802.3X flow control.
End of basic transceiver information.

After resume, it reports:

Basic registers of MII PHY #0: ffff ffff ffff ffff ffff ffff ffff ffff.
No MII transceiver present!.

I suspect this may be caused by the device not being restored correctly:

05:00.0 Class 0200: 10b7:5157 (rev 01)

        Subsystem: 10b7:5b57
        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: I/O ports at 1800 [disabled] [size=128]
        Region 1: [virtual] Memory at 10c00000 (32-bit, non-prefetchable) [disabled] [size=128]
        Region 2: [virtual] Memory at 10c00080 (32-bit, non-prefetchable) [disabled] [size=128]
        Expansion ROM at 10800000 [disabled] [size=128K]
        Capabilities: [50] 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-

It looks like 3c59x only saves the PCI config space and restores it if you have WOL enabled - this is obviously wrong if you're suspending/ resuming a CardBus device.

Signature · 2 lines
Russell King ([email protected])                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html
#1 lore raw
Quoted 4 lines · Russell King

It looks like 3c59x only saves the PCI config space and restores it if
you have WOL enabled - this is obviously wrong if you're suspending/ resuming a CardBus device.

yup. I always meant to turn on the 3c59x PM code as soon as 2.5 started, but forgot. It happened only last week.

Current -linus should get it right. I have a card round here somewhere and will check it over.