/linux-6.12.1/drivers/net/pcs/ |
D | pcs-xpcs-wx.c | 4 #include <linux/pcs/pcs-xpcs.h> 6 #include "pcs-xpcs.h" 49 static int txgbe_read_pma(struct dw_xpcs *xpcs, int reg) in txgbe_read_pma() argument 51 return xpcs_read(xpcs, MDIO_MMD_PMAPMD, TXGBE_PMA_MMD + reg); in txgbe_read_pma() 54 static int txgbe_write_pma(struct dw_xpcs *xpcs, int reg, u16 val) in txgbe_write_pma() argument 56 return xpcs_write(xpcs, MDIO_MMD_PMAPMD, TXGBE_PMA_MMD + reg, val); in txgbe_write_pma() 59 static void txgbe_pma_config_10gbaser(struct dw_xpcs *xpcs) in txgbe_pma_config_10gbaser() argument 63 txgbe_write_pma(xpcs, TXGBE_MPLLA_CTL0, 0x21); in txgbe_pma_config_10gbaser() 64 txgbe_write_pma(xpcs, TXGBE_MPLLA_CTL3, 0); in txgbe_pma_config_10gbaser() 65 val = txgbe_read_pma(xpcs, TXGBE_TX_GENCTL1); in txgbe_pma_config_10gbaser() [all …]
|
D | pcs-xpcs.c | 4 * Synopsys DesignWare XPCS helpers 11 #include <linux/pcs/pcs-xpcs.h> 17 #include "pcs-xpcs.h" 154 int (*pma_config)(struct dw_xpcs *xpcs); 179 int xpcs_get_an_mode(struct dw_xpcs *xpcs, phy_interface_t interface) in xpcs_get_an_mode() argument 183 compat = xpcs_find_compat(xpcs->desc, interface); in xpcs_get_an_mode() 206 int xpcs_read(struct dw_xpcs *xpcs, int dev, u32 reg) in xpcs_read() argument 208 return mdiodev_c45_read(xpcs->mdiodev, dev, reg); in xpcs_read() 211 int xpcs_write(struct dw_xpcs *xpcs, int dev, u32 reg, u16 val) in xpcs_write() argument 213 return mdiodev_c45_write(xpcs->mdiodev, dev, reg, val); in xpcs_write() [all …]
|
D | pcs-xpcs-nxp.c | 4 #include <linux/pcs/pcs-xpcs.h> 5 #include "pcs-xpcs.h" 72 int nxp_sja1105_sgmii_pma_config(struct dw_xpcs *xpcs) in nxp_sja1105_sgmii_pma_config() argument 74 return xpcs_write(xpcs, MDIO_MMD_VEND2, DW_VR_MII_DIG_CTRL2, in nxp_sja1105_sgmii_pma_config() 78 static int nxp_sja1110_pma_config(struct dw_xpcs *xpcs, in nxp_sja1110_pma_config() argument 89 ret = xpcs_write(xpcs, MDIO_MMD_VEND2, SJA1110_TXPLL_CTRL0, in nxp_sja1110_pma_config() 94 ret = xpcs_write(xpcs, MDIO_MMD_VEND2, SJA1110_TXPLL_CTRL1, in nxp_sja1110_pma_config() 100 ret = xpcs_write(xpcs, MDIO_MMD_VEND2, SJA1110_LANE_DRIVER1_0, in nxp_sja1110_pma_config() 107 ret = xpcs_write(xpcs, MDIO_MMD_VEND2, SJA1110_LANE_DRIVER2_0, val); in nxp_sja1110_pma_config() 113 ret = xpcs_write(xpcs, MDIO_MMD_VEND2, SJA1110_LANE_DRIVER2_1, val); in nxp_sja1110_pma_config() [all …]
|
D | pcs-xpcs.h | 4 * Synopsys DesignWare XPCS helpers 10 #include <linux/pcs/pcs-xpcs.h> 126 int xpcs_read(struct dw_xpcs *xpcs, int dev, u32 reg); 127 int xpcs_write(struct dw_xpcs *xpcs, int dev, u32 reg, u16 val); 128 int xpcs_read_vpcs(struct dw_xpcs *xpcs, int reg); 129 int xpcs_write_vpcs(struct dw_xpcs *xpcs, int reg, u16 val); 130 int nxp_sja1105_sgmii_pma_config(struct dw_xpcs *xpcs); 131 int nxp_sja1110_sgmii_pma_config(struct dw_xpcs *xpcs); 132 int nxp_sja1110_2500basex_pma_config(struct dw_xpcs *xpcs); 133 int txgbe_xpcs_switch_mode(struct dw_xpcs *xpcs, phy_interface_t interface);
|
D | pcs-xpcs-plat.c | 3 * Synopsys DesignWare XPCS platform device driver 15 #include <linux/pcs/pcs-xpcs.h> 22 #include "pcs-xpcs.h" 308 pxpcs->bus->name = "DW XPCS MCI/APB3"; in xpcs_plat_init_bus() 321 * the MDIO and MCI/APB3 IO interfaces utilized for the DW XPCS CSRs in xpcs_plat_init_bus() 343 /* There is a single memory-mapped DW XPCS device */ in xpcs_plat_init_dev() 354 /* Pass the data further so the DW XPCS driver core could use it */ in xpcs_plat_init_dev() 436 { .compatible = "snps,dw-xpcs", .data = &xpcs_generic }, 437 { .compatible = "snps,dw-xpcs-gen1-3g", .data = &xpcs_pma_gen1_3g }, 438 { .compatible = "snps,dw-xpcs-gen2-3g", .data = &xpcs_pma_gen2_3g }, [all …]
|
D | Makefile | 4 pcs_xpcs-$(CONFIG_PCS_XPCS) := pcs-xpcs.o pcs-xpcs-plat.o \ 5 pcs-xpcs-nxp.o pcs-xpcs-wx.o
|
D | Kconfig | 9 tristate "Synopsys DesignWare Ethernet XPCS" 13 DesignWare XPCS controllers.
|
/linux-6.12.1/drivers/net/ethernet/stmicro/stmmac/ |
D | dwmac-tegra.c | 24 void __iomem *xpcs; member 89 value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_STATUS); in tegra_mgbe_resume() 91 value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_HW_INIT_CTRL); in tegra_mgbe_resume() 93 writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_HW_INIT_CTRL); in tegra_mgbe_resume() 96 err = readl_poll_timeout(mgbe->xpcs + XPCS_WRAP_UPHY_HW_INIT_CTRL, value, in tegra_mgbe_resume() 118 value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL); in mgbe_uphy_lane_bringup_serdes_up() 120 writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL); in mgbe_uphy_lane_bringup_serdes_up() 122 value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL); in mgbe_uphy_lane_bringup_serdes_up() 124 writel(value, mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL); in mgbe_uphy_lane_bringup_serdes_up() 126 value = readl(mgbe->xpcs + XPCS_WRAP_UPHY_RX_CONTROL); in mgbe_uphy_lane_bringup_serdes_up() [all …]
|
D | stmmac_mdio.c | 501 struct dw_xpcs *xpcs = NULL; in stmmac_pcs_setup() local 513 xpcs = xpcs_create_fwnode(pcsnode, mode); in stmmac_pcs_setup() 515 ret = PTR_ERR_OR_ZERO(xpcs); in stmmac_pcs_setup() 519 xpcs = xpcs_create_mdiodev(priv->mii, addr, mode); in stmmac_pcs_setup() 520 ret = PTR_ERR_OR_ZERO(xpcs); in stmmac_pcs_setup() 526 return dev_err_probe(priv->device, ret, "No xPCS found\n"); in stmmac_pcs_setup() 528 priv->hw->xpcs = xpcs; in stmmac_pcs_setup() 540 if (!priv->hw->xpcs) in stmmac_pcs_clean() 543 xpcs_destroy(priv->hw->xpcs); in stmmac_pcs_clean() 544 priv->hw->xpcs = NULL; in stmmac_pcs_clean()
|
D | common.h | 18 #include <linux/pcs/pcs-xpcs.h> 595 struct dw_xpcs *xpcs; member
|
D | dwmac-intel.c | 451 * should always be an XPCS. The original code would always in intel_mgbe_select_pcs() 454 return &priv->hw->xpcs->pcs; in intel_mgbe_select_pcs() 604 /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */ in intel_mgbe_common_data()
|
D | stmmac_main.c | 487 if (priv->hw->xpcs) in stmmac_eee_init() 488 xpcs_config_eee(priv->hw->xpcs, in stmmac_eee_init() 500 if (priv->hw->xpcs) in stmmac_eee_init() 501 xpcs_config_eee(priv->hw->xpcs, in stmmac_eee_init() 1249 /* If we have an xpcs, it defines which PHY interfaces are supported. */ in stmmac_phy_setup() 1250 if (priv->hw->xpcs) in stmmac_phy_setup() 1251 xpcs_get_interfaces(priv->hw->xpcs, in stmmac_phy_setup() 3940 if ((!priv->hw->xpcs || in __stmmac_open() 3941 xpcs_get_an_mode(priv->hw->xpcs, mode) != DW_AN_C73)) { in __stmmac_open()
|
/linux-6.12.1/Documentation/devicetree/bindings/net/pcs/ |
D | snps,dw-xpcs.yaml | 4 $id: http://devicetree.org/schemas/net/pcs/snps,dw-xpcs.yaml# 22 by means of the APB3/MCI interfaces. In the later case the XPCS can be mapped 28 - description: Synopsys DesignWare XPCS with none or unknown PMA 29 const: snps,dw-xpcs 30 - description: Synopsys DesignWare XPCS with Consumer Gen1 3G PMA 31 const: snps,dw-xpcs-gen1-3g 32 - description: Synopsys DesignWare XPCS with Consumer Gen2 3G PMA 33 const: snps,dw-xpcs-gen2-3g 34 - description: Synopsys DesignWare XPCS with Consumer Gen2 6G PMA 35 const: snps,dw-xpcs-gen2-6g [all …]
|
/linux-6.12.1/include/linux/pcs/ |
D | pcs-xpcs.h | 4 * Synopsys DesignWare XPCS helpers 66 int xpcs_get_an_mode(struct dw_xpcs *xpcs, phy_interface_t interface); 69 int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface, 71 void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces); 72 int xpcs_config_eee(struct dw_xpcs *xpcs, int mult_fact_100ns, 78 void xpcs_destroy(struct dw_xpcs *xpcs);
|
/linux-6.12.1/drivers/net/dsa/sja1105/ |
D | sja1105_mdio.c | 4 #include <linux/pcs/pcs-xpcs.h> 403 struct dw_xpcs *xpcs; in sja1105_mdiobus_pcs_register() local 412 xpcs = xpcs_create_mdiodev(bus, port, priv->phy_mode[port]); in sja1105_mdiobus_pcs_register() 413 if (IS_ERR(xpcs)) { in sja1105_mdiobus_pcs_register() 414 rc = PTR_ERR(xpcs); in sja1105_mdiobus_pcs_register() 418 priv->xpcs[port] = xpcs; in sja1105_mdiobus_pcs_register() 427 if (!priv->xpcs[port]) in sja1105_mdiobus_pcs_register() 430 xpcs_destroy(priv->xpcs[port]); in sja1105_mdiobus_pcs_register() 431 priv->xpcs[port] = NULL; in sja1105_mdiobus_pcs_register() 449 if (!priv->xpcs[port]) in sja1105_mdiobus_pcs_unregister() [all …]
|
D | sja1105_main.c | 18 #include <linux/pcs/pcs-xpcs.h> 1359 struct dw_xpcs *xpcs = priv->xpcs[dp->index]; in sja1105_mac_select_pcs() local 1361 if (xpcs) in sja1105_mac_select_pcs() 1362 return &xpcs->pcs; in sja1105_mac_select_pcs() 1409 * sense, because that is done through the XPCS. We allow in sja1105_phylink_get_caps() 2320 if (priv->xpcs[i]) in sja1105_static_config_reload() 2377 struct dw_xpcs *xpcs = priv->xpcs[i]; in sja1105_static_config_reload() local 2384 if (!xpcs) in sja1105_static_config_reload() 2392 rc = xpcs_do_config(xpcs, priv->phy_mode[i], NULL, neg_mode); in sja1105_static_config_reload() 2408 xpcs_link_up(&xpcs->pcs, neg_mode, priv->phy_mode[i], in sja1105_static_config_reload()
|
D | sja1105.h | 281 struct dw_xpcs *xpcs[SJA1105_MAX_NUM_PORTS]; member
|
/linux-6.12.1/drivers/net/ethernet/wangxun/txgbe/ |
D | txgbe_phy.c | 13 #include <linux/pcs/pcs-xpcs.h> 125 struct dw_xpcs *xpcs; in txgbe_mdio_pcs_init() local 150 xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER); in txgbe_mdio_pcs_init() 151 if (IS_ERR(xpcs)) in txgbe_mdio_pcs_init() 152 return PTR_ERR(xpcs); in txgbe_mdio_pcs_init() 154 txgbe->xpcs = xpcs; in txgbe_mdio_pcs_init() 166 return &txgbe->xpcs->pcs; in txgbe_phylink_mac_select() 305 phylink_pcs_change(&txgbe->xpcs->pcs, up); in txgbe_link_irq_handler() 781 xpcs_destroy(txgbe->xpcs); in txgbe_init_phy() 801 xpcs_destroy(txgbe->xpcs); in txgbe_remove_phy()
|
D | txgbe_type.h | 332 struct dw_xpcs *xpcs; member
|
/linux-6.12.1/drivers/net/ethernet/amd/xgbe/ |
D | xgbe-pci.c | 268 dev_err(dev, "xpcs ioremap failed\n"); in xgbe_pci_probe() 305 dev_dbg(dev, "xpcs window def = %#010x\n", in xgbe_pci_probe() 307 dev_dbg(dev, "xpcs window sel = %#010x\n", in xgbe_pci_probe() 309 dev_dbg(dev, "xpcs window = %#010x\n", in xgbe_pci_probe() 311 dev_dbg(dev, "xpcs window size = %#010x\n", in xgbe_pci_probe() 313 dev_dbg(dev, "xpcs window mask = %#010x\n", in xgbe_pci_probe()
|
D | xgbe-platform.c | 326 dev_err(dev, "xpcs ioremap failed\n"); in xgbe_platform_probe() 422 /* Always have XGMAC and XPCS (auto-negotiation) interrupts */ in xgbe_platform_probe()
|
D | xgbe.h | 1066 /* XGMAC/XPCS related mmio registers */ 1068 void __iomem *xpcs_regs; /* XPCS MMD registers */ 1085 /* XPCS indirect addressing lock */
|
/linux-6.12.1/Documentation/devicetree/bindings/net/ |
D | nvidia,tegra234-mgbe.yaml | 24 - const: xpcs 121 reg-names = "hypervisor", "mac", "xpcs";
|
/linux-6.12.1/drivers/net/ethernet/marvell/mvpp2/ |
D | mvpp2_main.c | 1583 void __iomem *xpcs = priv->iface_base + MVPP22_XPCS_BASE(port->gop_id); in mvpp22_gop_init_10gkr() local 1586 val = readl(xpcs + MVPP22_XPCS_CFG0); in mvpp22_gop_init_10gkr() 1590 writel(val, xpcs + MVPP22_XPCS_CFG0); in mvpp22_gop_init_10gkr() 2196 void __iomem *mpcs, *xpcs; in mvpp22_pcs_reset_assert() local 2203 xpcs = priv->iface_base + MVPP22_XPCS_BASE(port->gop_id); in mvpp22_pcs_reset_assert() 2210 val = readl(xpcs + MVPP22_XPCS_CFG0); in mvpp22_pcs_reset_assert() 2211 writel(val & ~MVPP22_XPCS_CFG0_RESET_DIS, xpcs + MVPP22_XPCS_CFG0); in mvpp22_pcs_reset_assert() 2218 void __iomem *mpcs, *xpcs; in mvpp22_pcs_reset_deassert() local 2225 xpcs = priv->iface_base + MVPP22_XPCS_BASE(port->gop_id); in mvpp22_pcs_reset_deassert() 2238 val = readl(xpcs + MVPP22_XPCS_CFG0); in mvpp22_pcs_reset_deassert() [all …]
|
D | mvpp2.h | 598 /* XPCS registers.PPv2.2 and PPv2.3 */ 618 /* XPCS registers. PPv2.2 and PPv2.3 */
|