ixgbe/base: abstract out link read/write
[dpdk.git] / drivers / net / ixgbe / base / ixgbe_type.h
index daa4182..4dce2ac 100644 (file)
@@ -3857,22 +3857,30 @@ struct ixgbe_phy_operations {
        s32 (*read_i2c_eeprom)(struct ixgbe_hw *, u8 , u8 *);
        s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
        void (*i2c_bus_clear)(struct ixgbe_hw *);
-       s32 (*read_i2c_combined)(struct ixgbe_hw *, u8 addr, u16 reg, u16 *val);
-       s32 (*write_i2c_combined)(struct ixgbe_hw *, u8 addr, u16 reg, u16 val);
        s32 (*check_overtemp)(struct ixgbe_hw *);
        s32 (*set_phy_power)(struct ixgbe_hw *, bool on);
        s32 (*enter_lplu)(struct ixgbe_hw *);
        s32 (*handle_lasi)(struct ixgbe_hw *hw);
-       s32 (*read_i2c_combined_unlocked)(struct ixgbe_hw *, u8 addr, u16 reg,
-                                         u16 *value);
-       s32 (*write_i2c_combined_unlocked)(struct ixgbe_hw *, u8 addr, u16 reg,
-                                         u16 value);
        s32 (*read_i2c_byte_unlocked)(struct ixgbe_hw *, u8 offset, u8 addr,
                                      u8 *value);
        s32 (*write_i2c_byte_unlocked)(struct ixgbe_hw *, u8 offset, u8 addr,
                                       u8 value);
 };
 
+struct ixgbe_link_operations {
+       s32 (*read_link)(struct ixgbe_hw *, u8 addr, u16 reg, u16 *val);
+       s32 (*read_link_unlocked)(struct ixgbe_hw *, u8 addr, u16 reg,
+                                 u16 *val);
+       s32 (*write_link)(struct ixgbe_hw *, u8 addr, u16 reg, u16 val);
+       s32 (*write_link_unlocked)(struct ixgbe_hw *, u8 addr, u16 reg,
+                                  u16 val);
+};
+
+struct ixgbe_link_info {
+       struct ixgbe_link_operations ops;
+       u8 addr;
+};
+
 struct ixgbe_eeprom_info {
        struct ixgbe_eeprom_operations ops;
        enum ixgbe_eeprom_type type;
@@ -3979,6 +3987,7 @@ struct ixgbe_hw {
        struct ixgbe_addr_filter_info addr_ctrl;
        struct ixgbe_fc_info fc;
        struct ixgbe_phy_info phy;
+       struct ixgbe_link_info link;
        struct ixgbe_eeprom_info eeprom;
        struct ixgbe_bus_info bus;
        struct ixgbe_mbx_info mbx;