Lines Matching defs:phydev

62 static int lxt970_ack_interrupt(struct phy_device *phydev)
66 err = phy_read(phydev, MII_BMSR);
71 err = phy_read(phydev, MII_LXT970_ISR);
79 static int lxt970_config_intr(struct phy_device *phydev)
83 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
84 err = lxt970_ack_interrupt(phydev);
88 err = phy_write(phydev, MII_LXT970_IER, MII_LXT970_IER_IEN);
90 err = phy_write(phydev, MII_LXT970_IER, 0);
94 err = lxt970_ack_interrupt(phydev);
100 static irqreturn_t lxt970_handle_interrupt(struct phy_device *phydev)
107 irq_status = phy_read(phydev, MII_BMSR);
109 phy_error(phydev);
113 irq_status = phy_read(phydev, MII_LXT970_ISR);
115 phy_error(phydev);
122 phy_trigger_machine(phydev);
127 static int lxt970_config_init(struct phy_device *phydev)
129 return phy_write(phydev, MII_LXT970_CONFIG, 0);
133 static int lxt971_ack_interrupt(struct phy_device *phydev)
135 int err = phy_read(phydev, MII_LXT971_ISR);
143 static int lxt971_config_intr(struct phy_device *phydev)
147 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
148 err = lxt971_ack_interrupt(phydev);
152 err = phy_write(phydev, MII_LXT971_IER, MII_LXT971_IER_IEN);
154 err = phy_write(phydev, MII_LXT971_IER, 0);
158 err = lxt971_ack_interrupt(phydev);
164 static irqreturn_t lxt971_handle_interrupt(struct phy_device *phydev)
168 irq_status = phy_read(phydev, MII_LXT971_ISR);
170 phy_error(phydev);
177 phy_trigger_machine(phydev);
187 static int lxt973a2_update_link(struct phy_device *phydev)
194 status = phy_read(phydev, MII_BMSR);
199 control = phy_read(phydev, MII_BMCR);
205 status = phy_read(phydev, MII_BMSR);
212 phydev->link = 0;
214 phydev->link = 1;
219 static int lxt973a2_read_status(struct phy_device *phydev)
226 err = lxt973a2_update_link(phydev);
230 if (AUTONEG_ENABLE == phydev->autoneg) {
233 adv = phy_read(phydev, MII_ADVERTISE);
239 lpa = phy_read(phydev, MII_LPA);
249 mii_lpa_to_linkmode_lpa_t(phydev->lp_advertising, lpa);
253 phydev->speed = SPEED_10;
254 phydev->duplex = DUPLEX_HALF;
255 phydev->pause = phydev->asym_pause = 0;
258 phydev->speed = SPEED_100;
261 phydev->duplex = DUPLEX_FULL;
264 phydev->duplex = DUPLEX_FULL;
267 phy_resolve_aneg_pause(phydev);
269 err = genphy_read_status_fixed(phydev);
273 phydev->pause = phydev->asym_pause = 0;
274 linkmode_zero(phydev->lp_advertising);
280 static int lxt973_probe(struct phy_device *phydev)
282 int val = phy_read(phydev, MII_LXT973_PCR);
289 val = phy_read(phydev, MII_BMCR);
292 phy_write(phydev, MII_BMCR, val);
294 phydev->priv = lxt973_probe;
295 phydev->port = PORT_FIBRE;
297 phydev->priv = NULL;
302 static int lxt973_config_aneg(struct phy_device *phydev)
305 return phydev->priv ? 0 : genphy_config_aneg(phydev);