static int cortina_probe(struct phy_device *phydev) { u32 phy_id = 0; int id_lsb = 0, id_msb = 0; /* Read device id from phy registers. */ id_lsb = cortina_read_reg(phydev, VILLA_GLOBAL_CHIP_ID_LSB); if (id_lsb < 0) return -ENXIO; phy_id = id_lsb << 16; id_msb = cortina_read_reg(phydev, VILLA_GLOBAL_CHIP_ID_MSB); if (id_msb < 0) return -ENXIO; phy_id |= id_msb; /* Make sure the device tree binding matched the driver with the * right device. */ if (phy_id != phydev->drv->phy_id) { phydev_err(phydev, "Error matching phy with %s driver\n", phydev->drv->name); return -ENODEV; } return 0; }
static int bcm87xx_did_interrupt(struct phy_device *phydev) { int reg; reg = phy_read(phydev, BCM87XX_LASI_STATUS); if (reg < 0) { phydev_err(phydev, "Error: Read of BCM87XX_LASI_STATUS failed: %d\n", reg); return 0; } return (reg & 1) != 0; }
static void aqr107_get_stats(struct phy_device *phydev, struct ethtool_stats *stats, u64 *data) { struct aqr107_priv *priv = phydev->priv; u64 val; int i; for (i = 0; i < AQR107_SGMII_STAT_SZ; i++) { val = aqr107_get_stat(phydev, i); if (val == U64_MAX) phydev_err(phydev, "Reading HW Statistics failed for %s\n", aqr107_hw_stats[i].name); else priv->sgmii_stats[i] += val; data[i] = priv->sgmii_stats[i]; } }