Lines Matching full:pf
10 static void enetc_set_si_hw_addr(struct enetc_pf *pf, int si, in enetc_set_si_hw_addr() argument
13 struct enetc_hw *hw = &pf->si->hw; in enetc_set_si_hw_addr()
15 pf->ops->set_si_primary_mac(hw, si, mac_addr); in enetc_set_si_hw_addr()
18 static void enetc_get_si_hw_addr(struct enetc_pf *pf, int si, u8 *mac_addr) in enetc_get_si_hw_addr() argument
20 struct enetc_hw *hw = &pf->si->hw; in enetc_get_si_hw_addr()
22 pf->ops->get_si_primary_mac(hw, si, mac_addr); in enetc_get_si_hw_addr()
28 struct enetc_pf *pf = enetc_si_priv(priv->si); in enetc_pf_set_mac_addr() local
35 enetc_set_si_hw_addr(pf, 0, saddr->sa_data); in enetc_pf_set_mac_addr()
41 static int enetc_setup_mac_address(struct device_node *np, struct enetc_pf *pf, in enetc_setup_mac_address() argument
44 struct device *dev = &pf->si->pdev->dev; in enetc_setup_mac_address()
57 enetc_get_si_hw_addr(pf, si, mac_addr); in enetc_setup_mac_address()
66 enetc_set_si_hw_addr(pf, si, mac_addr); in enetc_setup_mac_address()
71 int enetc_setup_mac_addresses(struct device_node *np, struct enetc_pf *pf) in enetc_setup_mac_addresses() argument
75 /* The PF might take its MAC from the device tree */ in enetc_setup_mac_addresses()
76 err = enetc_setup_mac_address(np, pf, 0); in enetc_setup_mac_addresses()
80 for (i = 0; i < pf->total_vfs; i++) { in enetc_setup_mac_addresses()
81 err = enetc_setup_mac_address(NULL, pf, i + 1); in enetc_setup_mac_addresses()
94 struct enetc_pf *pf = enetc_si_priv(si); in enetc_pf_netdev_setup() local
144 if (si->hw_features & ENETC_SI_F_PSFP && pf->ops->enable_psfp && in enetc_pf_netdev_setup()
145 !pf->ops->enable_psfp(priv)) { in enetc_pf_netdev_setup()
157 static int enetc_mdio_probe(struct enetc_pf *pf, struct device_node *np) in enetc_mdio_probe() argument
159 struct device *dev = &pf->si->pdev->dev; in enetc_mdio_probe()
175 mdio_priv->hw = &pf->si->hw; in enetc_mdio_probe()
183 pf->mdio = bus; in enetc_mdio_probe()
188 static void enetc_mdio_remove(struct enetc_pf *pf) in enetc_mdio_remove() argument
190 if (pf->mdio) in enetc_mdio_remove()
191 mdiobus_unregister(pf->mdio); in enetc_mdio_remove()
194 static int enetc_imdio_create(struct enetc_pf *pf) in enetc_imdio_create() argument
196 struct device *dev = &pf->si->pdev->dev; in enetc_imdio_create()
202 if (!pf->ops->create_pcs) { in enetc_imdio_create()
220 mdio_priv->hw = &pf->si->hw; in enetc_imdio_create()
230 phylink_pcs = pf->ops->create_pcs(pf, bus); in enetc_imdio_create()
237 pf->imdio = bus; in enetc_imdio_create()
238 pf->pcs = phylink_pcs; in enetc_imdio_create()
249 static void enetc_imdio_remove(struct enetc_pf *pf) in enetc_imdio_remove() argument
251 if (pf->pcs && pf->ops->destroy_pcs) in enetc_imdio_remove()
252 pf->ops->destroy_pcs(pf->pcs); in enetc_imdio_remove()
254 if (pf->imdio) { in enetc_imdio_remove()
255 mdiobus_unregister(pf->imdio); in enetc_imdio_remove()
256 mdiobus_free(pf->imdio); in enetc_imdio_remove()
260 static bool enetc_port_has_pcs(struct enetc_pf *pf) in enetc_port_has_pcs() argument
262 return (pf->if_mode == PHY_INTERFACE_MODE_SGMII || in enetc_port_has_pcs()
263 pf->if_mode == PHY_INTERFACE_MODE_1000BASEX || in enetc_port_has_pcs()
264 pf->if_mode == PHY_INTERFACE_MODE_2500BASEX || in enetc_port_has_pcs()
265 pf->if_mode == PHY_INTERFACE_MODE_USXGMII); in enetc_port_has_pcs()
268 int enetc_mdiobus_create(struct enetc_pf *pf, struct device_node *node) in enetc_mdiobus_create() argument
275 err = enetc_mdio_probe(pf, mdio_np); in enetc_mdiobus_create()
282 if (enetc_port_has_pcs(pf)) { in enetc_mdiobus_create()
283 err = enetc_imdio_create(pf); in enetc_mdiobus_create()
285 enetc_mdio_remove(pf); in enetc_mdiobus_create()
294 void enetc_mdiobus_destroy(struct enetc_pf *pf) in enetc_mdiobus_destroy() argument
296 enetc_mdio_remove(pf); in enetc_mdiobus_destroy()
297 enetc_imdio_remove(pf); in enetc_mdiobus_destroy()
304 struct enetc_pf *pf = enetc_si_priv(priv->si); in enetc_phylink_create() local
308 pf->phylink_config.dev = &priv->ndev->dev; in enetc_phylink_create()
309 pf->phylink_config.type = PHYLINK_NETDEV; in enetc_phylink_create()
310 pf->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | in enetc_phylink_create()
314 pf->phylink_config.supported_interfaces); in enetc_phylink_create()
316 pf->phylink_config.supported_interfaces); in enetc_phylink_create()
318 pf->phylink_config.supported_interfaces); in enetc_phylink_create()
320 pf->phylink_config.supported_interfaces); in enetc_phylink_create()
322 pf->phylink_config.supported_interfaces); in enetc_phylink_create()
323 phy_interface_set_rgmii(pf->phylink_config.supported_interfaces); in enetc_phylink_create()
325 phylink = phylink_create(&pf->phylink_config, of_fwnode_handle(node), in enetc_phylink_create()
326 pf->if_mode, ops); in enetc_phylink_create()
344 MODULE_DESCRIPTION("NXP ENETC PF common functionality driver");