-static inline int
-ar8216_id_chip(struct ar8216_priv *priv)
-{
- u32 val;
- u16 id;
- int i;
-
- priv->chip = UNKNOWN;
-
- val = ar8216_mii_read(priv, AR8216_REG_CTRL);
- if (val == ~0)
- return -ENODEV;
-
- id = val & (AR8216_CTRL_REVISION | AR8216_CTRL_VERSION);
- for (i = 0; i < AR8X16_PROBE_RETRIES; i++) {
- u16 t;
-
- val = ar8216_mii_read(priv, AR8216_REG_CTRL);
- if (val == ~0)
- return -ENODEV;
-
- t = val & (AR8216_CTRL_REVISION | AR8216_CTRL_VERSION);
- if (t != id)
- return -ENODEV;
- }
-
- switch (id) {
- case 0x0101:
- priv->chip = AR8216;
- break;
- case 0x0301:
- priv->chip = AR8236;
- break;
- case 0x1000:
- case 0x1001:
- priv->chip = AR8316;
- break;
- default:
- printk(KERN_DEBUG
- "ar8216: Unknown Atheros device [ver=%d, rev=%d, phy_id=%04x%04x]\n",
- (int)(id >> AR8216_CTRL_VERSION_S),
- (int)(id & AR8216_CTRL_REVISION),
- mdiobus_read(priv->phy->bus, priv->phy->addr, 2),
- mdiobus_read(priv->phy->bus, priv->phy->addr, 3));
-
- return -ENODEV;
- }
-
- return 0;
-}
-