Lines Matching refs:phydev
54 static u8 ns_exp_read(struct phy_device *phydev, u16 reg) in ns_exp_read() argument
56 phy_write(phydev, NS_EXP_MEM_ADD, reg); in ns_exp_read()
57 return phy_read(phydev, NS_EXP_MEM_DATA); in ns_exp_read()
60 static void ns_exp_write(struct phy_device *phydev, u16 reg, u8 data) in ns_exp_write() argument
62 phy_write(phydev, NS_EXP_MEM_ADD, reg); in ns_exp_write()
63 phy_write(phydev, NS_EXP_MEM_DATA, data); in ns_exp_write()
66 static int ns_config_intr(struct phy_device *phydev) in ns_config_intr() argument
70 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) in ns_config_intr()
71 err = phy_write(phydev, DP83865_INT_MASK, in ns_config_intr()
74 err = phy_write(phydev, DP83865_INT_MASK, 0); in ns_config_intr()
79 static int ns_ack_interrupt(struct phy_device *phydev) in ns_ack_interrupt() argument
81 int ret = phy_read(phydev, DP83865_INT_STATUS); in ns_ack_interrupt()
87 ret = phy_write(phydev, DP83865_INT_CLEAR, ret & ~0x7); in ns_ack_interrupt()
92 static void ns_giga_speed_fallback(struct phy_device *phydev, int mode) in ns_giga_speed_fallback() argument
94 int bmcr = phy_read(phydev, MII_BMCR); in ns_giga_speed_fallback()
96 phy_write(phydev, MII_BMCR, (bmcr | BMCR_PDOWN)); in ns_giga_speed_fallback()
99 phy_write(phydev, NS_EXP_MEM_CTL, 0); in ns_giga_speed_fallback()
100 phy_write(phydev, NS_EXP_MEM_ADD, 0x1C0); in ns_giga_speed_fallback()
101 phy_write(phydev, NS_EXP_MEM_DATA, 0x0008); in ns_giga_speed_fallback()
102 phy_write(phydev, MII_BMCR, (bmcr & ~BMCR_PDOWN)); in ns_giga_speed_fallback()
103 phy_write(phydev, LED_CTRL_REG, mode); in ns_giga_speed_fallback()
106 static void ns_10_base_t_hdx_loopack(struct phy_device *phydev, int disable) in ns_10_base_t_hdx_loopack() argument
111 ns_exp_write(phydev, 0x1c0, in ns_10_base_t_hdx_loopack()
112 ns_exp_read(phydev, 0x1c0) | lb_dis); in ns_10_base_t_hdx_loopack()
114 ns_exp_write(phydev, 0x1c0, in ns_10_base_t_hdx_loopack()
115 ns_exp_read(phydev, 0x1c0) & ~lb_dis); in ns_10_base_t_hdx_loopack()
118 (ns_exp_read(phydev, 0x1c0) & lb_dis) ? "off" : "on"); in ns_10_base_t_hdx_loopack()
121 static int ns_config_init(struct phy_device *phydev) in ns_config_init() argument
123 ns_giga_speed_fallback(phydev, ALL_FALLBACK_ON); in ns_config_init()
126 ns_10_base_t_hdx_loopack(phydev, hdx_loopback_off); in ns_config_init()
127 return ns_ack_interrupt(phydev); in ns_config_init()