Lines Matching full:mac
12 #define HBG_MAC_GET_PRIV(mac) ((struct hbg_priv *)(mac)->mdio_bus->priv) argument
13 #define HBG_MII_BUS_GET_MAC(bus) (&((struct hbg_priv *)(bus)->priv)->mac)
25 static void hbg_mdio_set_command(struct hbg_mac *mac, u32 cmd) in hbg_mdio_set_command() argument
27 hbg_reg_write(HBG_MAC_GET_PRIV(mac), HBG_REG_MDIO_COMMAND_ADDR, cmd); in hbg_mdio_set_command()
30 static void hbg_mdio_get_command(struct hbg_mac *mac, u32 *cmd) in hbg_mdio_get_command() argument
32 *cmd = hbg_reg_read(HBG_MAC_GET_PRIV(mac), HBG_REG_MDIO_COMMAND_ADDR); in hbg_mdio_get_command()
35 static void hbg_mdio_set_wdata_reg(struct hbg_mac *mac, u16 wdata_value) in hbg_mdio_set_wdata_reg() argument
37 hbg_reg_write_field(HBG_MAC_GET_PRIV(mac), HBG_REG_MDIO_WDATA_ADDR, in hbg_mdio_set_wdata_reg()
41 static u32 hbg_mdio_get_rdata_reg(struct hbg_mac *mac) in hbg_mdio_get_rdata_reg() argument
43 return hbg_reg_read_field(HBG_MAC_GET_PRIV(mac), in hbg_mdio_get_rdata_reg()
48 static int hbg_mdio_wait_ready(struct hbg_mac *mac) in hbg_mdio_wait_ready() argument
50 struct hbg_priv *priv = HBG_MAC_GET_PRIV(mac); in hbg_mdio_wait_ready()
62 static int hbg_mdio_cmd_send(struct hbg_mac *mac, u32 prt_addr, u32 dev_addr, in hbg_mdio_cmd_send() argument
67 hbg_mdio_get_command(mac, &cmd); in hbg_mdio_cmd_send()
76 hbg_mdio_set_command(mac, cmd); in hbg_mdio_cmd_send()
79 return hbg_mdio_wait_ready(mac); in hbg_mdio_cmd_send()
84 struct hbg_mac *mac = HBG_MII_BUS_GET_MAC(bus); in hbg_mdio_read22() local
87 ret = hbg_mdio_cmd_send(mac, phy_addr, regnum, HBG_MDIO_C22_MODE, in hbg_mdio_read22()
92 return hbg_mdio_get_rdata_reg(mac); in hbg_mdio_read22()
98 struct hbg_mac *mac = HBG_MII_BUS_GET_MAC(bus); in hbg_mdio_write22() local
100 hbg_mdio_set_wdata_reg(mac, val); in hbg_mdio_write22()
101 return hbg_mdio_cmd_send(mac, phy_addr, regnum, HBG_MDIO_C22_MODE, in hbg_mdio_write22()
108 struct hbg_mac *mac = &priv->mac; in hbg_mdio_init_hw() local
119 hbg_mdio_set_command(mac, cmd); in hbg_mdio_init_hw()
124 struct phy_device *phydev = priv->mac.phydev; in hbg_flowctrl_cfg()
128 if (!priv->mac.pause_autoneg) in hbg_flowctrl_cfg()
142 dev_err(dev, "failed to fix the MAC link status\n"); in hbg_fix_np_link_fail()
147 if (!priv->mac.phydev->link) in hbg_fix_np_link_fail()
151 dev_err(dev, "failed to link between MAC and PHY, try to fix...\n"); in hbg_fix_np_link_fail()
169 if (phydev->link != priv->mac.link_status) { in hbg_phy_adjust_link()
185 priv->mac.speed = speed; in hbg_phy_adjust_link()
186 priv->mac.duplex = phydev->duplex; in hbg_phy_adjust_link()
187 priv->mac.autoneg = phydev->autoneg; in hbg_phy_adjust_link()
192 priv->mac.link_status = phydev->link; in hbg_phy_adjust_link()
204 struct phy_device *phydev = priv->mac.phydev; in hbg_phy_connect()
226 phy_start(priv->mac.phydev); in hbg_phy_start()
231 phy_stop(priv->mac.phydev); in hbg_phy_stop()
263 priv->mac.phydev = phydev; in hbg_fixed_phy_init()
270 struct hbg_mac *mac = &priv->mac; in hbg_mdio_init() local
275 mac->phy_addr = priv->dev_specs.phy_addr; in hbg_mdio_init()
276 if (mac->phy_addr == HBG_NO_PHY) in hbg_mdio_init()
286 mdio_bus->phy_mask = ~(1 << mac->phy_addr); in hbg_mdio_init()
288 mac->mdio_bus = mdio_bus; in hbg_mdio_init()
298 phydev = mdiobus_get_phy(mdio_bus, mac->phy_addr); in hbg_mdio_init()
303 mac->phydev = phydev; in hbg_mdio_init()