Ignore:
Timestamp:
2010-04-09T14:06:17+02:00 (6 years ago)
Author:
juhosg
Message:

backfire: generic: make chip detection more reliable in the AR8216 driver (backport of r20753)

Fixes broken ethernet on the Planex MZK-W04NU/W300NH boards.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/ar8216.c

    r20723 r20762  
    3434/* size of the vlan table */ 
    3535#define AR8X16_MAX_VLANS        128 
     36#define AR8X16_PROBE_RETRIES    10 
    3637 
    3738struct ar8216_priv { 
     
    120121        u32 val; 
    121122        u16 id; 
     123        int i; 
     124 
    122125        val = ar8216_mii_read(priv, AR8216_REG_CTRL); 
     126        if (val == ~0) 
     127                return UNKNOWN; 
     128 
    123129        id = val & (AR8216_CTRL_REVISION | AR8216_CTRL_VERSION); 
     130        for (i = 0; i < AR8X16_PROBE_RETRIES; i++) { 
     131                u16 t; 
     132 
     133                val = ar8216_mii_read(priv, AR8216_REG_CTRL); 
     134                if (val == ~0) 
     135                        return UNKNOWN; 
     136 
     137                t = val & (AR8216_CTRL_REVISION | AR8216_CTRL_VERSION); 
     138                if (t != id) 
     139                        return UNKNOWN; 
     140        } 
     141 
    124142        switch (id) { 
    125143        case 0x0101: 
     
    737755{ 
    738756        struct ar8216_priv priv; 
     757        u16 chip; 
    739758 
    740759        priv.phy = pdev; 
    741         if (ar8216_id_chip(&priv) == UNKNOWN) { 
     760        chip = ar8216_id_chip(&priv); 
     761        if (chip == UNKNOWN) 
    742762                return -ENODEV; 
    743         } 
     763 
    744764        return 0; 
    745765} 
Note: See TracChangeset for help on using the changeset viewer.