MII PHY problem

William Montgomery william@opinicus.com
Tue May 11 13:16:45 1999


I am having trouble getting reliable 10BaseT and 100BaseTX connections.
using the following h/w & s/w:
   Slackware Linux 2.0.34 on Pentium Pro
   tulip.c:v0.91 4/14/99  (as a loadable module)
   Dec/Intel 21142 with MicroLinear 100BaseTX MII transceiver ML6692 
   NetGear 10/100 10port Ethernet switch

I can only get 10BaseT when I set options=12 and never 100BaseTX no 
matter which MII setting I use.  I am familiar with writing and
debugging device drivers but only have experience with simple I/O
cards (A/D, D/A, digital I/O, serial).  I would like to help find
and fix this problem but am at a loss as to how to get started.
I have read through the last years worth of mail archives and havent
found any clues.

The /proc/pci shows the following:

PCI devices found:
  Bus  0, device  14, function  0:
    VGA compatible controller: Cirrus Logic GD 5446 (rev 0).
      Medium devsel.  IRQ 255.  
      Prefetchable 32 bit memory at 0xfd000000.
  Bus  0, device  11, function  0:
    Ethernet controller: DEC DC21142 (rev 17).
      Medium devsel.  Fast back-to-back capable.  IRQ 15.  Master Capable.  Latency=64.  Min Gnt=20.Max Lat=40.
      I/O at 0xe800.
      Non-prefetchable 32 bit memory at 0xffaf6f00.
  Bus  0, device  10, function  0:
    SCSI storage controller: Adaptec AIC-7880U (rev 0).
      Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master Capable.  Latency=64.  Min Gnt=8.Max Lat=8.
      I/O at 0xec00.
      Non-prefetchable 32 bit memory at 0xffaf7000.
   .
   .
   .

When the tulip driver is loaded with options at default the tulip-diag
shows the following:

tulip-diag.c:v1.10 4/12/99 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Index #1: Found a Digital DS21143 Tulip adapter at 0xe800.
Digital DS21143 Tulip chip registers at 0xe800:
  ffa04800 ffffffff ffffffff 00fff028 00fff228 f8000102 bf8e0000 fbfe0000
  00000000 fffd83ff ffffffff fffe0000 000000c4 ffff0000 ffff0000 8ff30000
 Port selection is 100mbps-SYM/PCS 100baseTx scrambler, half-duplex.
 Transmit stopped, Receive stopped, half-duplex.
  The Rx process state is 'Stopped'.
  The Tx process state is 'Stopped'.
  The transmit threshold is 128.
EEPROM contents:
  0000 0000 0000 0000 0000 0000 0000 0000
  00e1 0103 2000 0038 4206 1e00 0000 0800
  8c04 4002 ec01 7f3f 0008 08ab 0001 028c
  0144 3dec 087f ab00 0108 8c00 4102 ec09
  0705 0008 08ab 0001 0391 0200 08ab 0001
  0000 8060 0001 0040 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 2f66
 ID CRC 0xe1 (vs. 0xe1), complete CRC 990b405e.
Ethernet MAC Station Address 00:20:38:00:06:42.
EEPROM transceiver/media description for the Digital DS21143 Tulip chip.
Leaf node at offset 30, default media type 0800 (Autosense).
 4 transceiver description blocks:
  Media 10baseT, block type 2, length 12.
   Serial transceiver for 10baseT (media type 64).
    CSR13 ec01  CSR14 7f3f  CSR15 0008.
    GP pin direction 08ab  GP pin data 0001.
  Media 10baseT-Full Duplex, block type 2, length 12.
   Serial transceiver for 10baseT-Full Duplex (media type 68).
    CSR13 ec01  CSR14 7f3d  CSR15 0008.
    GP pin direction 08ab  GP pin data 0001.
  Media 10base2, block type 2, length 12.
   Serial transceiver for 10base2 (media type 65).
    CSR13 ec09  CSR14 0705  CSR15 0008.
    GP pin direction 08ab  GP pin data 0001.
  Media MII, block type 3, length 17.
   MII interface PHY 0 (media type 11).
   21143 MII initialization sequence is 2 words: 08ab 0001.
   21143 MII reset sequence is 0 words:.
    Media capabilities are 6000, advertising 0181.
    Full-duplex map 4000, Threshold map 0000.
    No MII interrupt.
  21140 Non-MII transceiver with media 0 (10baseT).
   CSR12 control port setting 00, command 00 00.
   Media detection by looking for a 1 on bit 0 of the CSR12 control port.
  21140 Non-MII transceiver with media 0 (10baseT).
   CSR12 control port setting 00, command 00 00.
   Media detection by looking for a 1 on bit 0 of the CSR12 control port.
  21140 Non-MII transceiver with media 0 (10baseT).
   CSR12 control port setting 00, command 00 00.
   Media detection by looking for a 1 on bit 0 of the CSR12 control port.
 MII PHY found at address 0, status 0x782d.
 MII PHY #0 transceiver registers:
   3400 782d ffff ffff 01e1 0021 0000 ffff
   ffff ffff ffff ffff ffff ffff ffff ffff
   ffff ffff ffff ffff ffff ffff ffff ffff
   ffff ffff ffff ffff ffff ffff ffff 9400.
 Basic mode control register 0x3400: Auto-negotiation enabled.
  Transceiver isolated from the MII!
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 This transceiver has no vendor identification.
 I'm advertising 01e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 0021: 10baseT.
   Negotiation did not complete.
  Internal autonegotiation state is 'Autonegotiation disabled'.


I did notice one email with a similar "Transceiver isolated" message,
and tried "tulip-diag -m -F 100baseTX" as suggested but to no avail.
I also saw that MII PHY at address 0 is bad and probably causes the
isolated message.

I can get 10baseT when I load as follows: insmod tulip debug=2 options=12,
but I'm not sure if this even uses the MII PHY chip.  Any help in getting
this working would be appreciated.

Regards,

William