int                     link_on;
        u8                      mdix_ctrl;
 
-       u32                     devid;
+       u32                     chipid;
+       u32                     chiprev;
        struct mii_bus          *mdiobus;
 };
 
         */
        ret = lan78xx_read_reg(dev, HW_CFG, &val);
        saved = val;
-       if ((dev->devid & ID_REV_CHIP_ID_MASK_) == 0x78000000) {
+       if (dev->chipid == ID_REV_CHIP_ID_7800_) {
                val &= ~(HW_CFG_LED1_EN_ | HW_CFG_LED0_EN_);
                ret = lan78xx_write_reg(dev, HW_CFG, val);
        }
 
        retval = 0;
 exit:
-       if ((dev->devid & ID_REV_CHIP_ID_MASK_) == 0x78000000)
+       if (dev->chipid == ID_REV_CHIP_ID_7800_)
                ret = lan78xx_write_reg(dev, HW_CFG, saved);
 
        return retval;
         */
        ret = lan78xx_read_reg(dev, HW_CFG, &val);
        saved = val;
-       if ((dev->devid & ID_REV_CHIP_ID_MASK_) == 0x78000000) {
+       if (dev->chipid == ID_REV_CHIP_ID_7800_) {
                val &= ~(HW_CFG_LED1_EN_ | HW_CFG_LED0_EN_);
                ret = lan78xx_write_reg(dev, HW_CFG, val);
        }
 
        retval = 0;
 exit:
-       if ((dev->devid & ID_REV_CHIP_ID_MASK_) == 0x78000000)
+       if (dev->chipid == ID_REV_CHIP_ID_7800_)
                ret = lan78xx_write_reg(dev, HW_CFG, saved);
 
        return retval;
        snprintf(dev->mdiobus->id, MII_BUS_ID_SIZE, "usb-%03d:%03d",
                 dev->udev->bus->busnum, dev->udev->devnum);
 
-       switch (dev->devid & ID_REV_CHIP_ID_MASK_) {
-       case 0x78000000:
-       case 0x78500000:
+       switch (dev->chipid) {
+       case ID_REV_CHIP_ID_7800_:
+       case ID_REV_CHIP_ID_7850_:
                /* set to internal PHY id */
                dev->mdiobus->phy_mask = ~(1 << 1);
                break;
 
        /* save DEVID for later usage */
        ret = lan78xx_read_reg(dev, ID_REV, &buf);
-       dev->devid = buf;
+       dev->chipid = (buf & ID_REV_CHIP_ID_MASK_) >> 16;
+       dev->chiprev = buf & ID_REV_CHIP_REV_MASK_;
 
        /* Respond to the IN token with a NAK */
        ret = lan78xx_read_reg(dev, USB_CFG0, &buf);