|
@@ -4675,6 +4675,78 @@ phy_write_end:
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * i40e_write_phy_register
|
|
|
+ * @hw: pointer to the HW structure
|
|
|
+ * @page: registers page number
|
|
|
+ * @reg: register address in the page
|
|
|
+ * @phy_adr: PHY address on MDIO interface
|
|
|
+ * @value: PHY register value
|
|
|
+ *
|
|
|
+ * Writes value to specified PHY register
|
|
|
+ **/
|
|
|
+i40e_status i40e_write_phy_register(struct i40e_hw *hw,
|
|
|
+ u8 page, u16 reg, u8 phy_addr, u16 value)
|
|
|
+{
|
|
|
+ i40e_status status;
|
|
|
+
|
|
|
+ switch (hw->device_id) {
|
|
|
+ case I40E_DEV_ID_1G_BASE_T_X722:
|
|
|
+ status = i40e_write_phy_register_clause22(hw, reg, phy_addr,
|
|
|
+ value);
|
|
|
+ break;
|
|
|
+ case I40E_DEV_ID_10G_BASE_T:
|
|
|
+ case I40E_DEV_ID_10G_BASE_T4:
|
|
|
+ case I40E_DEV_ID_10G_BASE_T_X722:
|
|
|
+ case I40E_DEV_ID_25G_B:
|
|
|
+ case I40E_DEV_ID_25G_SFP28:
|
|
|
+ status = i40e_write_phy_register_clause45(hw, page, reg,
|
|
|
+ phy_addr, value);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ status = I40E_ERR_UNKNOWN_PHY;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return status;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * i40e_read_phy_register
|
|
|
+ * @hw: pointer to the HW structure
|
|
|
+ * @page: registers page number
|
|
|
+ * @reg: register address in the page
|
|
|
+ * @phy_adr: PHY address on MDIO interface
|
|
|
+ * @value: PHY register value
|
|
|
+ *
|
|
|
+ * Reads specified PHY register value
|
|
|
+ **/
|
|
|
+i40e_status i40e_read_phy_register(struct i40e_hw *hw,
|
|
|
+ u8 page, u16 reg, u8 phy_addr, u16 *value)
|
|
|
+{
|
|
|
+ i40e_status status;
|
|
|
+
|
|
|
+ switch (hw->device_id) {
|
|
|
+ case I40E_DEV_ID_1G_BASE_T_X722:
|
|
|
+ status = i40e_read_phy_register_clause22(hw, reg, phy_addr,
|
|
|
+ value);
|
|
|
+ break;
|
|
|
+ case I40E_DEV_ID_10G_BASE_T:
|
|
|
+ case I40E_DEV_ID_10G_BASE_T4:
|
|
|
+ case I40E_DEV_ID_10G_BASE_T_X722:
|
|
|
+ case I40E_DEV_ID_25G_B:
|
|
|
+ case I40E_DEV_ID_25G_SFP28:
|
|
|
+ status = i40e_read_phy_register_clause45(hw, page, reg,
|
|
|
+ phy_addr, value);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ status = I40E_ERR_UNKNOWN_PHY;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return status;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* i40e_get_phy_address
|
|
|
* @hw: pointer to the HW structure
|