scripts: convert devel config helper as simple file
[dpdk.git] / lib / librte_eal / linuxapp / kni / ethtool / igb / e1000_phy.h
index 16518ad..5387c5e 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
 
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2012 Intel Corporation.
+  Copyright(c) 2007-2013 Intel Corporation.
 
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
@@ -69,13 +69,11 @@ s32  e1000_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 *data);
 s32  e1000_read_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 *data);
 s32  e1000_set_d3_lplu_state_generic(struct e1000_hw *hw, bool active);
 s32  e1000_setup_copper_link_generic(struct e1000_hw *hw);
-s32  e1000_wait_autoneg_generic(struct e1000_hw *hw);
 s32  e1000_write_kmrn_reg_generic(struct e1000_hw *hw, u32 offset, u16 data);
 s32  e1000_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 data);
 s32  e1000_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data);
 s32  e1000_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 data);
 s32  e1000_write_phy_reg_m88(struct e1000_hw *hw, u32 offset, u16 data);
-s32  e1000_phy_reset_dsp(struct e1000_hw *hw);
 s32  e1000_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
                                u32 usec_interval, bool *success);
 s32  e1000_phy_init_script_igp3(struct e1000_hw *hw);
@@ -96,6 +94,12 @@ s32  e1000_check_polarity_82577(struct e1000_hw *hw);
 s32  e1000_get_phy_info_82577(struct e1000_hw *hw);
 s32  e1000_phy_force_speed_duplex_82577(struct e1000_hw *hw);
 s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
+s32  e1000_write_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 data);
+s32  e1000_read_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 *data);
+s32 e1000_read_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 *data);
+s32 e1000_write_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 data,
+                            bool line_override);
+bool e1000_is_mphy_ready(struct e1000_hw *hw);
 
 #define E1000_MAX_PHY_ADDR             8
 
@@ -104,20 +108,29 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 #define IGP01E1000_PHY_PORT_STATUS     0x11 /* Status */
 #define IGP01E1000_PHY_PORT_CTRL       0x12 /* Control */
 #define IGP01E1000_PHY_LINK_HEALTH     0x13 /* PHY Link Health */
-#define IGP01E1000_GMII_FIFO           0x14 /* GMII FIFO */
-#define IGP01E1000_PHY_CHANNEL_QUALITY 0x15 /* PHY Channel Quality */
 #define IGP02E1000_PHY_POWER_MGMT      0x19 /* Power Management */
 #define IGP01E1000_PHY_PAGE_SELECT     0x1F /* Page Select */
 #define BM_PHY_PAGE_SELECT             22   /* Page Select for BM */
 #define IGP_PAGE_SHIFT                 5
 #define PHY_REG_MASK                   0x1F
 
+/* GS40G - I210 PHY defines */
+#define GS40G_PAGE_SELECT              0x16
+#define GS40G_PAGE_SHIFT               16
+#define GS40G_OFFSET_MASK              0xFFFF
+#define GS40G_PAGE_2                   0x20000
+#define GS40G_MAC_REG2                 0x15
+#define GS40G_MAC_LB                   0x4140
+#define GS40G_MAC_SPEED_1G             0X0006
+#define GS40G_COPPER_SPEC              0x0010
+#define GS40G_CS_POWER_DOWN            0x0002
+
 #define HV_INTC_FC_PAGE_START          768
 #define I82578_ADDR_REG                        29
 #define I82577_ADDR_REG                        16
 #define I82577_CFG_REG                 22
 #define I82577_CFG_ASSERT_CRS_ON_TX    (1 << 15)
-#define I82577_CFG_ENABLE_DOWNSHIFT    (3 << 10) /* auto downshift 100/10 */
+#define I82577_CFG_ENABLE_DOWNSHIFT    (3 << 10) /* auto downshift */
 #define I82577_CTRL_REG                        23
 
 /* 82577 specific PHY registers */
@@ -131,11 +144,11 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 #define I82577_PHY_STATUS2_MDIX                        0x0800
 #define I82577_PHY_STATUS2_SPEED_MASK          0x0300
 #define I82577_PHY_STATUS2_SPEED_1000MBPS      0x0200
-#define I82577_PHY_STATUS2_SPEED_100MBPS       0x0100
 
 /* I82577 PHY Control 2 */
-#define I82577_PHY_CTRL2_AUTO_MDIX             0x0400
-#define I82577_PHY_CTRL2_FORCE_MDI_MDIX                0x0200
+#define I82577_PHY_CTRL2_MANUAL_MDIX           0x0200
+#define I82577_PHY_CTRL2_AUTO_MDI_MDIX         0x0400
+#define I82577_PHY_CTRL2_MDIX_CFG_MASK         0x0600
 
 /* I82577 PHY Diagnostics Status */
 #define I82577_DSTATUS_CABLE_LENGTH            0x03FC
@@ -146,6 +159,13 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 #define E1000_82580_PM_SPD             0x0001 /* Smart Power Down */
 #define E1000_82580_PM_D0_LPLU         0x0002 /* For D0a states */
 #define E1000_82580_PM_D3_LPLU         0x0004 /* For all other states */
+#define E1000_82580_PM_GO_LINKD                0x0020 /* Go Link Disconnect */
+
+#define E1000_MPHY_DIS_ACCESS          0x80000000 /* disable_access bit */
+#define E1000_MPHY_ENA_ACCESS          0x40000000 /* enable_access bit */
+#define E1000_MPHY_BUSY                        0x00010000 /* busy bit */
+#define E1000_MPHY_ADDRESS_FNC_OVERRIDE        0x20000000 /* fnc_override bit */
+#define E1000_MPHY_ADDRESS_MASK                0x0000FFFF /* address mask */
 
 #define IGP01E1000_PHY_PCS_INIT_REG    0x00B4
 #define IGP01E1000_PHY_POLARITY_MASK   0x0078
@@ -155,10 +175,6 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 
 #define IGP01E1000_PSCFR_SMART_SPEED   0x0080
 
-/* Enable flexible speed on link-up */
-#define IGP01E1000_GMII_FLEX_SPD       0x0010
-#define IGP01E1000_GMII_SPD            0x0020 /* Enable SPD */
-
 #define IGP02E1000_PM_SPD              0x0001 /* Smart Power Down */
 #define IGP02E1000_PM_D0_LPLU          0x0002 /* For D0a states */
 #define IGP02E1000_PM_D3_LPLU          0x0004 /* For all other states */
@@ -176,13 +192,10 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 #define IGP02E1000_PHY_AGC_C           0x14B1
 #define IGP02E1000_PHY_AGC_D           0x18B1
 
-#define IGP02E1000_AGC_LENGTH_SHIFT    9   /* Course - 15:13, Fine - 12:9 */
+#define IGP02E1000_AGC_LENGTH_SHIFT    9   /* Course=15:13, Fine=12:9 */
 #define IGP02E1000_AGC_LENGTH_MASK     0x7F
 #define IGP02E1000_AGC_RANGE           15
 
-#define IGP03E1000_PHY_MISC_CTRL       0x1B
-#define IGP03E1000_PHY_MISC_DUPLEX_MANUAL_SET  0x1000 /* Manually Set Duplex */
-
 #define E1000_CABLE_LENGTH_UNDEFINED   0xFF
 
 #define E1000_KMRNCTRLSTA_OFFSET       0x001F0000
@@ -195,8 +208,8 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 #define E1000_KMRNCTRLSTA_DIAG_NELPBK  0x1000 /* Nearend Loopback mode */
 
 #define IFE_PHY_EXTENDED_STATUS_CONTROL        0x10
-#define IFE_PHY_SPECIAL_CONTROL                0x11 /* 100BaseTx PHY Special Control */
-#define IFE_PHY_SPECIAL_CONTROL_LED    0x1B /* PHY Special and LED Control */
+#define IFE_PHY_SPECIAL_CONTROL                0x11 /* 100BaseTx PHY Special Ctrl */
+#define IFE_PHY_SPECIAL_CONTROL_LED    0x1B /* PHY Special and LED Ctrl */
 #define IFE_PHY_MDIX_CONTROL           0x1C /* MDI/MDI-X Control */
 
 /* IFE PHY Extended Status Control */
@@ -205,7 +218,6 @@ s32  e1000_get_cable_length_82577(struct e1000_hw *hw);
 /* IFE PHY Special Control */
 #define IFE_PSC_AUTO_POLARITY_DISABLE  0x0010
 #define IFE_PSC_FORCE_POLARITY         0x0020
-#define IFE_PSC_DISABLE_DYNAMIC_POWER_DOWN     0x0100
 
 /* IFE PHY Special Control and LED Control */
 #define IFE_PSCL_PROBE_MODE            0x0020