Lines Matching +full:rx +full:- +full:internal +full:- +full:delay +full:- +full:ps

1 // SPDX-License-Identifier: GPL-2.0+
9 #include <linux/delay.h>
66 * The bit-fields are the same as specified by IEEE for EEE.
113 /* RGMII internal delay settings for rx and tx for ADIN1300 */
135 * struct adin_cfg_reg_map - map a config value to aregister value
164 * struct adin_clause45_mmd_map - map to convert Clause 45 regs to Clause 22
203 * struct adin_priv - ADIN PHY driver private data
219 return -EINVAL; in adin_lookup_reg_value()
227 struct device *dev = &phydev->mdio.dev; in adin_get_reg_value()
261 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || in adin_config_rgmii_mode()
262 phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) { in adin_config_rgmii_mode()
265 val = adin_get_reg_value(phydev, "adi,rx-internal-delay-ps", in adin_config_rgmii_mode()
274 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || in adin_config_rgmii_mode()
275 phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) { in adin_config_rgmii_mode()
278 val = adin_get_reg_value(phydev, "adi,tx-internal-delay-ps", in adin_config_rgmii_mode()
296 if (phydev->interface != PHY_INTERFACE_MODE_RMII) in adin_config_rmii_mode()
307 val = adin_get_reg_value(phydev, "adi,fifo-depth-bits", in adin_config_rmii_mode()
348 return -E2BIG; in adin_set_downshift()
402 return -EINVAL; in adin_set_edpd()
413 switch (tuna->id) { in adin_get_tunable()
419 return -EOPNOTSUPP; in adin_get_tunable()
426 switch (tuna->id) { in adin_set_tunable()
432 return -EOPNOTSUPP; in adin_set_tunable()
440 phydev->mdix_ctrl = ETH_TP_MDI_AUTO; in adin_config_init()
459 phy_modes(phydev->interface)); in adin_config_init()
476 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { in adin_phy_config_intr()
524 if (m->devad == devad && m->cl45_regnum == cl45_regnum) in adin_cl45_to_adin_reg()
525 return m->adin_regnum; in adin_cl45_to_adin_reg()
532 return -EINVAL; in adin_cl45_to_adin_reg()
537 struct mii_bus *bus = phydev->mdio.bus; in adin_read_mmd()
538 int phy_addr = phydev->mdio.addr; in adin_read_mmd()
557 struct mii_bus *bus = phydev->mdio.bus; in adin_write_mmd()
558 int phy_addr = phydev->mdio.addr; in adin_write_mmd()
581 switch (phydev->mdix_ctrl) { in adin_config_mdix()
591 return -EINVAL; in adin_config_mdix()
646 phydev->mdix = ETH_TP_MDI_X; in adin_mdix_update()
648 phydev->mdix = ETH_TP_MDI; in adin_mdix_update()
654 * When Auto-MDI is enabled, the ADIN1300_MAN_MDIX_EN bit implies in adin_mdix_update()
664 phydev->mdix = ETH_TP_MDI_X; in adin_mdix_update()
666 phydev->mdix = ETH_TP_MDI; in adin_mdix_update()
686 /* The reset bit is self-clearing, set it and wait */ in adin_soft_reset()
723 ret = phy_read_mmd(phydev, MDIO_MMD_VEND1, stat->reg1); in adin_read_mmd_stat_regs()
729 if (stat->reg2 == 0) in adin_read_mmd_stat_regs()
732 ret = phy_read_mmd(phydev, MDIO_MMD_VEND1, stat->reg2); in adin_read_mmd_stat_regs()
745 struct adin_priv *priv = phydev->priv; in adin_get_stat()
749 if (stat->reg1 > 0x1f) { in adin_get_stat()
754 ret = phy_read(phydev, stat->reg1); in adin_get_stat()
760 priv->stats[i] += val; in adin_get_stat()
762 return priv->stats[i]; in adin_get_stat()
770 /* latch copies of all the frame-checker counters */ in adin_get_stats()
781 struct device *dev = &phydev->mdio.dev; in adin_probe()
786 return -ENOMEM; in adin_probe()
788 phydev->priv = priv; in adin_probe()