Lines Matching refs:efx

51 static int ef4_mdio_check_mmd(struct ef4_nic *efx, int mmd)  in ef4_mdio_check_mmd()  argument
57 status = ef4_mdio_read(efx, mmd, MDIO_STAT2); in ef4_mdio_check_mmd()
59 netif_err(efx, hw, efx->net_dev, in ef4_mdio_check_mmd()
72 int ef4_mdio_wait_reset_mmds(struct ef4_nic *efx, unsigned int mmd_mask) in ef4_mdio_wait_reset_mmds() argument
86 stat = ef4_mdio_read(efx, mmd, MDIO_CTRL1); in ef4_mdio_wait_reset_mmds()
88 netif_err(efx, hw, efx->net_dev, in ef4_mdio_wait_reset_mmds()
105 netif_err(efx, hw, efx->net_dev, in ef4_mdio_wait_reset_mmds()
113 int ef4_mdio_check_mmds(struct ef4_nic *efx, unsigned int mmd_mask) in ef4_mdio_check_mmds() argument
125 devs1 = ef4_mdio_read(efx, probe_mmd, MDIO_DEVS1); in ef4_mdio_check_mmds()
126 devs2 = ef4_mdio_read(efx, probe_mmd, MDIO_DEVS2); in ef4_mdio_check_mmds()
128 netif_err(efx, hw, efx->net_dev, in ef4_mdio_check_mmds()
134 netif_err(efx, hw, efx->net_dev, in ef4_mdio_check_mmds()
139 netif_vdbg(efx, hw, efx->net_dev, "Devices present: %x\n", devices); in ef4_mdio_check_mmds()
143 if ((mmd_mask & 1) && ef4_mdio_check_mmd(efx, mmd)) in ef4_mdio_check_mmds()
152 bool ef4_mdio_links_ok(struct ef4_nic *efx, unsigned int mmd_mask) in ef4_mdio_links_ok() argument
156 if (LOOPBACK_INTERNAL(efx)) in ef4_mdio_links_ok()
158 else if (LOOPBACK_MASK(efx) & LOOPBACKS_WS) in ef4_mdio_links_ok()
160 else if (ef4_phy_mode_disabled(efx->phy_mode)) in ef4_mdio_links_ok()
162 else if (efx->loopback_mode == LOOPBACK_PHYXS) in ef4_mdio_links_ok()
167 else if (efx->loopback_mode == LOOPBACK_PCS) in ef4_mdio_links_ok()
171 else if (efx->loopback_mode == LOOPBACK_PMAPMD) in ef4_mdio_links_ok()
175 return mdio45_links_ok(&efx->mdio, mmd_mask); in ef4_mdio_links_ok()
178 void ef4_mdio_transmit_disable(struct ef4_nic *efx) in ef4_mdio_transmit_disable() argument
180 ef4_mdio_set_flag(efx, MDIO_MMD_PMAPMD, in ef4_mdio_transmit_disable()
182 efx->phy_mode & PHY_MODE_TX_DISABLED); in ef4_mdio_transmit_disable()
185 void ef4_mdio_phy_reconfigure(struct ef4_nic *efx) in ef4_mdio_phy_reconfigure() argument
187 ef4_mdio_set_flag(efx, MDIO_MMD_PMAPMD, in ef4_mdio_phy_reconfigure()
189 efx->loopback_mode == LOOPBACK_PMAPMD); in ef4_mdio_phy_reconfigure()
190 ef4_mdio_set_flag(efx, MDIO_MMD_PCS, in ef4_mdio_phy_reconfigure()
192 efx->loopback_mode == LOOPBACK_PCS); in ef4_mdio_phy_reconfigure()
193 ef4_mdio_set_flag(efx, MDIO_MMD_PHYXS, in ef4_mdio_phy_reconfigure()
195 efx->loopback_mode == LOOPBACK_PHYXS_WS); in ef4_mdio_phy_reconfigure()
198 static void ef4_mdio_set_mmd_lpower(struct ef4_nic *efx, in ef4_mdio_set_mmd_lpower() argument
201 int stat = ef4_mdio_read(efx, mmd, MDIO_STAT1); in ef4_mdio_set_mmd_lpower()
203 netif_vdbg(efx, drv, efx->net_dev, "Setting low power mode for MMD %d to %d\n", in ef4_mdio_set_mmd_lpower()
207 ef4_mdio_set_flag(efx, mmd, MDIO_CTRL1, in ef4_mdio_set_mmd_lpower()
212 void ef4_mdio_set_mmds_lpower(struct ef4_nic *efx, in ef4_mdio_set_mmds_lpower() argument
219 ef4_mdio_set_mmd_lpower(efx, low_power, mmd); in ef4_mdio_set_mmds_lpower()
230 int ef4_mdio_set_link_ksettings(struct ef4_nic *efx, in ef4_mdio_set_link_ksettings() argument
239 efx->phy_op->get_link_ksettings(efx, &prev); in ef4_mdio_set_link_ksettings()
264 ef4_link_set_advertising(efx, advertising | ADVERTISED_Autoneg); in ef4_mdio_set_link_ksettings()
265 ef4_mdio_an_reconfigure(efx); in ef4_mdio_set_link_ksettings()
273 void ef4_mdio_an_reconfigure(struct ef4_nic *efx) in ef4_mdio_an_reconfigure() argument
277 WARN_ON(!(efx->mdio.mmds & MDIO_DEVS_AN)); in ef4_mdio_an_reconfigure()
281 if (efx->link_advertising & ADVERTISED_Pause) in ef4_mdio_an_reconfigure()
283 if (efx->link_advertising & ADVERTISED_Asym_Pause) in ef4_mdio_an_reconfigure()
285 ef4_mdio_write(efx, MDIO_MMD_AN, MDIO_AN_ADVERTISE, reg); in ef4_mdio_an_reconfigure()
288 efx->phy_op->set_npage_adv(efx, efx->link_advertising); in ef4_mdio_an_reconfigure()
291 reg = ef4_mdio_read(efx, MDIO_MMD_AN, MDIO_CTRL1); in ef4_mdio_an_reconfigure()
293 ef4_mdio_write(efx, MDIO_MMD_AN, MDIO_CTRL1, reg); in ef4_mdio_an_reconfigure()
296 u8 ef4_mdio_get_pause(struct ef4_nic *efx) in ef4_mdio_get_pause() argument
300 if (!(efx->wanted_fc & EF4_FC_AUTO)) in ef4_mdio_get_pause()
301 return efx->wanted_fc; in ef4_mdio_get_pause()
303 WARN_ON(!(efx->mdio.mmds & MDIO_DEVS_AN)); in ef4_mdio_get_pause()
306 mii_advertise_flowctrl(efx->wanted_fc), in ef4_mdio_get_pause()
307 ef4_mdio_read(efx, MDIO_MMD_AN, MDIO_AN_LPA)); in ef4_mdio_get_pause()
310 int ef4_mdio_test_alive(struct ef4_nic *efx) in ef4_mdio_test_alive() argument
313 int devad = __ffs(efx->mdio.mmds); in ef4_mdio_test_alive()
316 mutex_lock(&efx->mac_lock); in ef4_mdio_test_alive()
318 physid1 = ef4_mdio_read(efx, devad, MDIO_DEVID1); in ef4_mdio_test_alive()
319 physid2 = ef4_mdio_read(efx, devad, MDIO_DEVID2); in ef4_mdio_test_alive()
323 netif_err(efx, hw, efx->net_dev, in ef4_mdio_test_alive()
324 "no MDIO PHY present with ID %d\n", efx->mdio.prtad); in ef4_mdio_test_alive()
327 rc = ef4_mdio_check_mmds(efx, efx->mdio.mmds); in ef4_mdio_test_alive()
330 mutex_unlock(&efx->mac_lock); in ef4_mdio_test_alive()