int hieth_mdio_write( struct hieth_mdio_local *ld, int phy_addr, int regnum, int val) { int ret = 0; hieth_assert((!(phy_addr & (~0x1F))) && (!(regnum & (~0x1F)))); hieth_trace(4, "phy_addr = %d, regnum = %d", phy_addr, regnum); local_lock(ld); if (!wait_mdio_ready(ld)) { hieth_error("mdio busy"); ret = -1; goto error_exit; } mdio_phywrite(ld, phy_addr, regnum, val); error_exit: local_unlock(ld); return val; }
static int higmac_mdio_write(struct higmac_mdio_local *ld, char *devname, unsigned char phy, unsigned char reg, unsigned short val) { if (!wait_mdio_ready(ld)) return -1; higmac_trace(2, "mdio write phy:%x, reg:%x = %x\n", phy, reg, val); mdio_set_phywrite_val(ld, val); mdio_phywrite(ld, phy, reg); return 0; }