/* Init RDC MAC */ static int r6040_up(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; int ret; /* Initialise and alloc RX/TX buffers */ r6040_init_txbufs(dev); ret = r6040_alloc_rxbufs(dev); if (ret) return ret; /* improve performance (by RDC guys) */ r6040_phy_write(ioaddr, 30, 17, (r6040_phy_read(ioaddr, 30, 17) | 0x4000)); r6040_phy_write(ioaddr, 30, 17, ~((~r6040_phy_read(ioaddr, 30, 17)) | 0x2000)); r6040_phy_write(ioaddr, 0, 19, 0x0000); r6040_phy_write(ioaddr, 0, 30, 0x01F0); /* Initialize all MAC registers */ r6040_init_mac_regs(dev); phy_start(lp->phydev); return 0; }
static int r6040_mdiobus_write(struct mii_bus *bus, int phy_addr, int reg, u16 value) { struct net_device *dev = bus->priv; struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; return r6040_phy_write(ioaddr, phy_addr, reg, value); }