Lines Matching defs:phydev

87 	struct phy_device *phydev;
108 static int tja11xx_check(struct phy_device *phydev, u8 reg, u16 mask, u16 set)
112 return phy_read_poll_timeout(phydev, reg, val, (val & mask) == set,
116 static int phy_modify_check(struct phy_device *phydev, u8 reg,
121 ret = phy_modify(phydev, reg, mask, set);
125 return tja11xx_check(phydev, reg, mask, set);
128 static int tja11xx_enable_reg_write(struct phy_device *phydev)
130 return phy_set_bits(phydev, MII_ECTRL, MII_ECTRL_CONFIG_EN);
133 static int tja11xx_enable_link_control(struct phy_device *phydev)
135 return phy_set_bits(phydev, MII_ECTRL, MII_ECTRL_LINK_CONTROL);
138 static int tja11xx_disable_link_control(struct phy_device *phydev)
140 return phy_clear_bits(phydev, MII_ECTRL, MII_ECTRL_LINK_CONTROL);
143 static int tja11xx_wakeup(struct phy_device *phydev)
147 ret = phy_read(phydev, MII_ECTRL);
155 ret = phy_set_bits(phydev, MII_ECTRL, MII_ECTRL_WAKE_REQUEST);
159 ret = phy_clear_bits(phydev, MII_ECTRL, MII_ECTRL_WAKE_REQUEST);
164 ret = phy_modify_check(phydev, MII_ECTRL,
170 ret = phy_modify(phydev, MII_ECTRL, MII_ECTRL_POWER_MODE_MASK,
175 ret = phy_modify_check(phydev, MII_GENSTAT,
181 return tja11xx_enable_link_control(phydev);
189 static int tja11xx_soft_reset(struct phy_device *phydev)
193 ret = tja11xx_enable_reg_write(phydev);
197 return genphy_soft_reset(phydev);
200 static int tja11xx_config_aneg_cable_test(struct phy_device *phydev)
205 if (phydev->link)
208 if (!phydev->drv->cable_test_start ||
209 !phydev->drv->cable_test_get_status)
212 ret = ethnl_cable_test_alloc(phydev, ETHTOOL_MSG_CABLE_TEST_NTF);
216 ret = phydev->drv->cable_test_start(phydev);
223 ret = phydev->drv->cable_test_get_status(phydev, &finished);
228 ethnl_cable_test_finished(phydev);
233 static int tja11xx_config_aneg(struct phy_device *phydev)
238 switch (phydev->master_slave_set) {
248 phydev_warn(phydev, "Unsupported Master/Slave mode\n");
252 changed = phy_modify_changed(phydev, MII_CFG1, MII_CFG1_MASTER_SLAVE, ctl);
257 ret = tja11xx_config_aneg_cable_test(phydev);
261 return __genphy_config_aneg(phydev, changed);
264 static int tja11xx_get_interface_mode(struct phy_device *phydev)
266 struct tja11xx_priv *priv = phydev->priv;
269 switch (phydev->interface) {
289 static int tja11xx_config_init(struct phy_device *phydev)
294 ret = tja11xx_enable_reg_write(phydev);
298 phydev->autoneg = AUTONEG_DISABLE;
299 phydev->speed = SPEED_100;
300 phydev->duplex = DUPLEX_FULL;
302 switch (phydev->phy_id & PHY_ID_MASK) {
310 ret = tja11xx_get_interface_mode(phydev);
315 ret = phy_modify(phydev, MII_CFG1, reg_mask, reg_val);
321 ret = tja11xx_get_interface_mode(phydev);
326 ret = phy_modify(phydev, MII_CFG1, reg_mask, reg_val);
331 ret = phy_set_bits(phydev, MII_COMMCFG, MII_COMMCFG_AUTO_OP);
339 ret = phy_clear_bits(phydev, MII_CFG1, MII_CFG1_SLEEP_CONFIRM);
343 ret = phy_modify(phydev, MII_CFG2, MII_CFG2_SLEEP_REQUEST_TO,
348 ret = tja11xx_wakeup(phydev);
353 ret = phy_read(phydev, MII_INTSRC);
360 static int tja11xx_read_status(struct phy_device *phydev)
364 phydev->master_slave_get = MASTER_SLAVE_CFG_UNKNOWN;
365 phydev->master_slave_state = MASTER_SLAVE_STATE_UNSUPPORTED;
367 ret = genphy_update_link(phydev);
371 ret = phy_read(phydev, MII_CFG1);
376 phydev->master_slave_get = MASTER_SLAVE_CFG_MASTER_FORCE;
378 phydev->master_slave_get = MASTER_SLAVE_CFG_SLAVE_FORCE;
380 if (phydev->link) {
381 ret = phy_read(phydev, MII_COMMSTAT);
386 phydev->link = 0;
392 static int tja11xx_get_sqi(struct phy_device *phydev)
396 ret = phy_read(phydev, MII_COMMSTAT);
403 static int tja11xx_get_sqi_max(struct phy_device *phydev)
408 static int tja11xx_get_sset_count(struct phy_device *phydev)
413 static void tja11xx_get_strings(struct phy_device *phydev, u8 *data)
423 static void tja11xx_get_stats(struct phy_device *phydev,
429 ret = phy_read(phydev, tja11xx_hw_stats[i].reg);
443 struct phy_device *phydev = dev_get_drvdata(dev);
447 ret = phy_read(phydev, MII_INTSRC);
456 ret = phy_read(phydev, MII_INTSRC);
496 static int tja11xx_hwmon_register(struct phy_device *phydev,
499 struct device *dev = &phydev->mdio.dev;
507 phydev,
514 static int tja11xx_parse_dt(struct phy_device *phydev)
516 struct device_node *node = phydev->mdio.dev.of_node;
517 struct tja11xx_priv *priv = phydev->priv;
528 static int tja11xx_probe(struct phy_device *phydev)
530 struct device *dev = &phydev->mdio.dev;
538 priv->phydev = phydev;
539 phydev->priv = priv;
541 ret = tja11xx_parse_dt(phydev);
545 return tja11xx_hwmon_register(phydev, priv);
552 struct phy_device *phydev_phy0 = priv->phydev;
609 static int tja1102_p0_probe(struct phy_device *phydev)
611 struct device *dev = &phydev->mdio.dev;
619 priv->phydev = phydev;
622 ret = tja11xx_hwmon_register(phydev, priv);
631 static int tja1102_match_phy_device(struct phy_device *phydev, bool port0)
635 if ((phydev->phy_id & PHY_ID_MASK) != PHY_ID_TJA1102)
638 ret = phy_read(phydev, MII_PHYSID2);
651 static int tja1102_p0_match_phy_device(struct phy_device *phydev)
653 return tja1102_match_phy_device(phydev, true);
656 static int tja1102_p1_match_phy_device(struct phy_device *phydev)
658 return tja1102_match_phy_device(phydev, false);
661 static int tja11xx_ack_interrupt(struct phy_device *phydev)
665 ret = phy_read(phydev, MII_INTSRC);
670 static int tja11xx_config_intr(struct phy_device *phydev)
675 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
676 err = tja11xx_ack_interrupt(phydev);
682 err = phy_write(phydev, MII_INTEN, value);
684 err = phy_write(phydev, MII_INTEN, value);
688 err = tja11xx_ack_interrupt(phydev);
694 static irqreturn_t tja11xx_handle_interrupt(struct phy_device *phydev)
696 struct device *dev = &phydev->mdio.dev;
699 irq_status = phy_read(phydev, MII_INTSRC);
701 phy_error(phydev);
713 phy_trigger_machine(phydev);
718 static int tja11xx_cable_test_start(struct phy_device *phydev)
722 ret = phy_clear_bits(phydev, MII_COMMCFG, MII_COMMCFG_AUTO_OP);
726 ret = tja11xx_wakeup(phydev);
730 ret = tja11xx_disable_link_control(phydev);
734 return phy_set_bits(phydev, MII_ECTRL, MII_ECTRL_CABLE_TEST);
767 static int tja11xx_cable_test_report(struct phy_device *phydev)
771 ret = phy_read(phydev, MII_EXTSTAT);
775 ethnl_cable_test_result(phydev, ETHTOOL_A_CABLE_PAIR_A,
781 static int tja11xx_cable_test_get_status(struct phy_device *phydev,
788 ret = phy_read(phydev, MII_ECTRL);
795 ret = phy_set_bits(phydev, MII_COMMCFG, MII_COMMCFG_AUTO_OP);
799 return tja11xx_cable_test_report(phydev);