14 {
DBGP(
"%s\n", __func__);
33 {
DBGP(
"%s\n", __func__);
42 for (i = 0; i < 100; i++) {
57 {
DBGP(
"%s\n", __func__);
59 u32 bhalf_otp, thalf_otp;
80 return ((thalf_otp & 0x0000ffff) << 16) | (bhalf_otp >> 16);
83 #define PHY_BUSY_LOOPS 5000 86 {
DBGP(
"%s\n", __func__);
205 {
DBGP(
"%s\n", __func__);
209 DBGC(
tp->dev,
"Matching with: %x:%x\n",
tp->subsystem_vendor,
tp->subsystem_device);
213 tp->subsystem_vendor) &&
215 tp->subsystem_device))
222 {
DBGP(
"%s\n", __func__);
272 {
DBGP(
"%s\n", __func__);
304 {
DBGP(
"%s\n", __func__);
312 if ((tmp32 & 0x1000) == 0)
323 {
DBGP(
"%s\n", __func__);
325 static const u32 test_pat[4][6] = {
326 { 0x00005555, 0x00000005, 0x00002aaa, 0x0000000a, 0x00003456, 0x00000003 },
327 { 0x00002aaa, 0x0000000a, 0x00003333, 0x00000003, 0x0000789a, 0x00000005 },
328 { 0x00005a5a, 0x00000005, 0x00002a6a, 0x0000000a, 0x00001bcd, 0x00000003 },
329 { 0x00002a5a, 0x0000000a, 0x000033c3, 0x00000003, 0x00002ef1, 0x00000005 }
333 for (chan = 0; chan < 4; chan++) {
337 (chan * 0x2000) | 0x0200);
340 for (i = 0; i < 6; i++)
351 (chan * 0x2000) | 0x0200);
364 for (i = 0; i < 6; i += 2) {
375 if (
low != test_pat[chan][i] ||
376 high != test_pat[chan][i+1]) {
390 {
DBGP(
"%s\n", __func__);
394 for (chan = 0; chan < 4; chan++) {
398 (chan * 0x2000) | 0x0200);
400 for (i = 0; i < 6; i++)
411 {
DBGP(
"%s\n", __func__);
423 {
DBGP(
"%s\n", __func__);
431 #define TG3_PHY_AUXCTL_SMDSP_ENABLE(tp) \ 432 tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \ 433 MII_TG3_AUXCTL_ACTL_SMDSP_ENA | \ 434 MII_TG3_AUXCTL_ACTL_TX_6DB) 436 #define TG3_PHY_AUXCTL_SMDSP_DISABLE(tp) \ 437 tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \ 438 MII_TG3_AUXCTL_ACTL_TX_6DB); 441 {
DBGP(
"%s\n", __func__);
443 u32 reg32, phy9_orig;
444 int retries, do_phy_reset, err;
510 {
DBGP(
"%s\n", __func__);
548 {
DBGP(
"%s\n", __func__);
562 {
DBGP(
"%s\n", __func__);
604 {
DBGP(
"%s\n", __func__);
622 {
DBGP(
"%s\n", __func__);
627 DBGCP(&
tp->pdev->dev,
"%s\n", __func__);
738 {
DBGP(
"%s\n", __func__);
740 u32 adv_reg, all_mask = 0;
754 if ((adv_reg & all_mask) != all_mask)
768 if ((tg3_ctrl & all_mask) != all_mask)
775 {
DBGP(
"%s\n", __func__);
792 {
DBGP(
"%s\n", __func__);
839 {
DBGP(
"%s\n", __func__);
858 #define ADVERTISED_Autoneg (1 << 6) 859 #define ADVERTISED_Pause (1 << 13) 860 #define ADVERTISED_TP (1 << 7) 861 #define ADVERTISED_FIBRE (1 << 10) 863 #define AUTONEG_ENABLE 0x01 866 {
DBGP(
"%s\n", __func__);
896 {
DBGP(
"%s\n", __func__);
898 u32 hw_phy_id_1, hw_phy_id_2;
899 u32 hw_phy_id, hw_phy_id_masked;
921 hw_phy_id = (hw_phy_id_1 & 0xffff) << 10;
922 hw_phy_id |= (hw_phy_id_2 & 0xfc00) << 16;
923 hw_phy_id |= (hw_phy_id_2 & 0x03ff) << 0;
929 tp->phy_id = hw_phy_id;
947 DBGC(&
tp->pdev->dev,
"lookup by subsys failed\n");
989 tp->link_config.flowctrl);
1009 {
DBGP(
"%s\n", __func__);
1012 DBGC(
tp->dev,
"link_changed\n");
1019 {
DBGP(
"%s\n", __func__);
1067 {
DBGP(
"%s\n", __func__);
1078 if (curadv != reqadv)
1090 if (curadv != reqadv) {
1101 {
DBGP(
"%s\n", __func__);
1124 {
DBGP(
"%s\n", __func__);
1127 u32 old_rx_mode =
tp->rx_mode;
1128 u32 old_tx_mode =
tp->tx_mode;
1145 if (old_rx_mode !=
tp->rx_mode)
1153 if (old_tx_mode !=
tp->tx_mode)
1158 {
DBGP(
"%s\n", __func__);
1169 tp->link_config.flowctrl);
1190 tp->link_config.flowctrl);
1197 {
DBGP(
"%s\n", __func__);
1213 {
DBGP(
"%s\n", __func__);
1261 {
DBGP(
"%s\n", __func__);
1264 DBGC(
tp->dev,
"Link is down\n");
1267 DBGC(
tp->dev,
"Link is up at %d Mbps, %s duplex\n",
1275 DBGC(
tp->dev,
"Flow control is %s for TX and %s for RX\n",
1282 DBGC(
tp->dev,
"EEE is %s\n",
1283 tp->setlpicnt ?
"enabled" :
"disabled");
1292 #define ANEG_STATE_UNKNOWN 0 1293 #define ANEG_STATE_AN_ENABLE 1 1294 #define ANEG_STATE_RESTART_INIT 2 1295 #define ANEG_STATE_RESTART 3 1296 #define ANEG_STATE_DISABLE_LINK_OK 4 1297 #define ANEG_STATE_ABILITY_DETECT_INIT 5 1298 #define ANEG_STATE_ABILITY_DETECT 6 1299 #define ANEG_STATE_ACK_DETECT_INIT 7 1300 #define ANEG_STATE_ACK_DETECT 8 1301 #define ANEG_STATE_COMPLETE_ACK_INIT 9 1302 #define ANEG_STATE_COMPLETE_ACK 10 1303 #define ANEG_STATE_IDLE_DETECT_INIT 11 1304 #define ANEG_STATE_IDLE_DETECT 12 1305 #define ANEG_STATE_LINK_OK 13 1306 #define ANEG_STATE_NEXT_PAGE_WAIT_INIT 14 1307 #define ANEG_STATE_NEXT_PAGE_WAIT 15 1310 #define MR_AN_ENABLE 0x00000001 1311 #define MR_RESTART_AN 0x00000002 1312 #define MR_AN_COMPLETE 0x00000004 1313 #define MR_PAGE_RX 0x00000008 1314 #define MR_NP_LOADED 0x00000010 1315 #define MR_TOGGLE_TX 0x00000020 1316 #define MR_LP_ADV_FULL_DUPLEX 0x00000040 1317 #define MR_LP_ADV_HALF_DUPLEX 0x00000080 1318 #define MR_LP_ADV_SYM_PAUSE 0x00000100 1319 #define MR_LP_ADV_ASYM_PAUSE 0x00000200 1320 #define MR_LP_ADV_REMOTE_FAULT1 0x00000400 1321 #define MR_LP_ADV_REMOTE_FAULT2 0x00000800 1322 #define MR_LP_ADV_NEXT_PAGE 0x00001000 1323 #define MR_TOGGLE_RX 0x00002000 1324 #define MR_NP_RX 0x00004000 1326 #define MR_LINK_OK 0x80000000 1336 #define ANEG_CFG_NP 0x00000080 1337 #define ANEG_CFG_ACK 0x00000040 1338 #define ANEG_CFG_RF2 0x00000020 1339 #define ANEG_CFG_RF1 0x00000010 1340 #define ANEG_CFG_PS2 0x00000001 1341 #define ANEG_CFG_PS1 0x00008000 1342 #define ANEG_CFG_HD 0x00004000 1343 #define ANEG_CFG_FD 0x00002000 1344 #define ANEG_CFG_INVAL 0x00001f06 1349 #define ANEG_TIMER_ENAB 2 1350 #define ANEG_FAILED -1 1352 #define ANEG_STATE_SETTLE_TIME 10000 1388 for (i = 0; i < 500; i++)
1411 for (i = 0; i < 15000; i++)
1423 int current_link_up;
1424 u32 sg_dig_ctrl, sg_dig_status;
1425 u32 serdes_cfg, expected_sg_dig_ctrl;
1426 int workaround, port_a;
1429 expected_sg_dig_ctrl = 0;
1432 current_link_up = 0;
1463 current_link_up = 1;
1477 if (sg_dig_ctrl != expected_sg_dig_ctrl) {
1479 tp->serdes_counter &&
1483 tp->serdes_counter--;
1484 current_link_up = 1;
1503 u32 local_adv = 0, remote_adv = 0;
1515 tp->link_config.rmt_adv =
1519 current_link_up = 1;
1520 tp->serdes_counter = 0;
1523 if (
tp->serdes_counter)
1524 tp->serdes_counter--;
1547 current_link_up = 1;
1550 tp->serdes_counter =
1553 goto restart_autoneg;
1562 return current_link_up;
1569 unsigned long delta;
1617 switch (ap->
state) {
1834 memset(&aninfo, 0,
sizeof(aninfo));
1839 while (++
tick < 195000) {
1852 *rxflags = aninfo.
flags;
1864 int current_link_up = 0;
1870 u32 txflags, rxflags;
1874 u32 local_adv = 0, remote_adv = 0;
1886 tp->link_config.rmt_adv =
1891 current_link_up = 1;
1893 for (i = 0; i < 30; i++) {
1906 if (!current_link_up &&
1909 current_link_up = 1;
1914 current_link_up = 1;
1924 return current_link_up;
1929 if (curr_link_up !=
tp->link_up) {
1960 u16 orig_active_speed;
1961 u8 orig_active_duplex;
1963 int current_link_up = force_reset;
1966 orig_pause_cfg =
tp->link_config.active_flowctrl;
1967 orig_active_speed =
tp->link_config.active_speed;
1968 orig_active_duplex =
tp->link_config.active_duplex;
2000 current_link_up = 0;
2001 tp->link_config.rmt_adv = 0;
2009 tp->hw_status->status =
2013 for (i = 0; i < 100; i++) {
2025 current_link_up = 0;
2027 tp->serdes_counter == 0) {
2035 if (current_link_up) {
2050 u32 now_pause_cfg =
tp->link_config.active_flowctrl;
2051 if (orig_pause_cfg != now_pause_cfg ||
2052 orig_active_speed !=
tp->link_config.active_speed ||
2053 orig_active_duplex !=
tp->link_config.active_duplex)
2066 int current_link_up = 0;
2067 u32 local_adv, remote_adv, sgsr;
2082 current_link_up = 1;
2105 goto fiber_setup_done;
2117 tp->link_config.rmt_adv = 0;
2165 if (new_bmcr != bmcr) {
2202 current_link_up = 1;
2216 common = local_adv & remote_adv;
2224 tp->link_config.rmt_adv =
2229 current_link_up = 0;
2235 if (current_link_up && current_duplex ==
DUPLEX_FULL)
2247 tp->link_config.active_speed = current_speed;
2248 tp->link_config.active_duplex = current_duplex;
2255 {
DBGP(
"%s\n", __func__);
2257 int current_link_up;
2259 u32 lcl_adv, rmt_adv;
2308 for (i = 0; i < 1000; i++) {
2355 current_link_up = 0;
2363 if (!err && !(
val & (1 << 10))) {
2372 for (i = 0; i < 100; i++) {
2384 for (i = 0; i < 2000; i++) {
2396 for (i = 0; i < 200; i++) {
2400 if (bmcr && bmcr != 0x7fff)
2408 tp->link_config.active_speed = current_speed;
2409 tp->link_config.active_duplex = current_duplex;
2416 current_link_up = 1;
2420 if (current_link_up == 1 &&
2426 if (current_link_up == 0) {
2432 current_link_up = 1;
2436 if (current_link_up == 1) {
2452 if (current_link_up == 1 &&
2477 current_link_up == 1 &&
2493 u16 oldlnkctl, newlnkctl;
2503 if (newlnkctl != oldlnkctl)
2510 if (current_link_up)
2521 {
DBGP(
"%s\n", __func__);
#define ADVERTISED_Autoneg
int tg3_readphy(struct tg3 *tp, int reg, u32 *val)
#define TG3_PHYFLG_5704_A0_BUG
#define PCI_FUNC(busdevfn)
#define TX_LENGTHS_IPG_SHIFT
#define MAC_MODE_SEND_CONFIGS
#define TG3_PHYFLG_USE_MI_INTERRUPT
static void tg3_generate_fw_event(struct tg3 *tp)
#define MII_TG3_AUX_STAT_100FULL
#define ANEG_STATE_AN_ENABLE
#define TG3_OTP_LPFDIS_MASK
#define ANEG_STATE_UNKNOWN
#define TG3PCI_SUBVENDOR_ID_COMPAQ
#define TG3_PHYFLG_BER_BUG
static u8 mii_resolve_flowctrl_fdx(u16 lcladv, u16 rmtadv)
mii_resolve_flowctrl_fdx @lcladv: value of MII ADVERTISE register @rmtadv: value of MII LPA register
uint32_t low
Low 16 bits of address.
#define MII_TG3_AUXCTL_MISC_WREN
static void tg3_phy_copper_begin(struct tg3 *tp)
#define MII_TG3_FET_SHDW_MISCCTRL
#define SERDES_TG3_LINK_UP
#define ADVERTISE_1000FULL
static u8 tg3_resolve_flowctrl_1000X(u16 lcladv, u16 rmtadv)
#define EBUSY
Device or resource busy.
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A5
#define TG3PCI_SUBDEVICE_ID_IBM_5703SAX2
static unsigned int unsigned int reg
#define ADVERTISE_1000XPAUSE
#define MII_TG3_DSP_EXP97
static struct subsys_tbl_ent * tg3_lookup_by_subsys(struct tg3 *tp)
static void tg3_link_report(struct tg3 *tp)
static int tg3_phy_reset_5703_4_5(struct tg3 *tp)
#define TG3_OTP_10BTAMP_SHIFT
#define TG3_CPMU_PHY_STRAP
#define OTP_CTRL_OTP_CMD_READ
struct option_descriptor set[0]
#define TG3PCI_SUBDEVICE_ID_3COM_3C996SX
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95703AX2
#define MII_TG3_CTRL_ADV_1000_FULL
#define TG3_OTP_HPFFLTR_SHIFT
static int tg3_issue_otp_command(struct tg3 *tp, u32 cmd)
#define MI_COM_REG_ADDR_MASK
static void tg3_clear_mac_status(struct tg3 *tp)
#define TG3_OTP_RCOFF_SHIFT
#define MR_LP_ADV_SYM_PAUSE
static EFI_EVENT tick
Event used to wait for timer tick.
static struct subsys_tbl_ent subsys_id_to_phy_id[]
#define TG3_PHY_ID_BCM5411
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701T1
#define PCIE_PWR_MGMT_L1_THRESH_MSK
#define ADVERTISED_100baseT_Half
int pci_write_config_word(struct pci_device *pci, unsigned int where, uint16_t value)
Write 16-bit word to PCI configuration space.
#define MAC_STATUS_RCVD_CFG
#define SERDES_TG3_SPEED_100
#define TG3_PHYFLG_10_100_ONLY
static void tg3_ump_link_report(struct tg3 *tp)
#define CPMU_LSPD_1000MB_MACCLK_12_5
#define TG3PCI_SUBDEVICE_ID_DELL_SLIM_MERLOT
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95703AX1
#define TG3PCI_SUBDEVICE_ID_DELL_MERLOT
#define CHIPREV_ID_5701_B0
#define MAC_MODE_PORT_MODE_MASK
static int tg3_phy_auxctl_write(struct tg3 *tp, int reg, u32 set)
#define NIC_SRAM_FW_CMD_MBOX
#define TG3_PHY_ID_REV_MASK
#define MI_COM_PHY_ADDR_SHIFT
#define MAC_STATUS_MI_COMPLETION
#define MII_TG3_AUXCTL_MISC_WIRESPD_EN
void tg3_poll_link(struct tg3 *tp)
#define ADVERTISE_100FULL
#define MII_TG3_DSP_RW_PORT
#define SERDES_TG3_SGMII_MODE
#define MII_TG3_AUXCTL_SHDWSEL_MISC
#define TG3PCI_SUBDEVICE_ID_COMPAQ_BANSHEE_2
#define TG3_CPMU_PHY_STRAP_IS_SERDES
#define SERDES_TG3_SPEED_1000
#define MII_TG3_AUXCTL_MISC_FORCE_AMDIX
int pci_read_config_word(struct pci_device *pci, unsigned int where, uint16_t *value)
Read 16-bit word from PCI configuration space.
#define OTP_CTRL_OTP_CMD_INIT
void netdev_link_down(struct net_device *netdev)
Mark network device as having link down.
#define SERDES_AN_TIMEOUT_5714S
#define SG_DIG_AUTONEG_COMPLETE
#define MAC_MODE_LINK_POLARITY
static u16 tg3_advert_flowctrl_1000X(u8 flow_ctrl)
#define TG3PCI_DEVICE_TIGON3_5718
static int tg3_adv_1000T_flowctrl_ok(struct tg3 *tp, u32 *lcladv, u32 *rmtadv)
#define MII_TG3_AUX_STAT_10FULL
#define MAC_STATUS_CFG_CHANGED
#define TG3PCI_SUBDEVICE_ID_COMPAQ_CHANGELING
#define TX_LENGTHS_JMB_FRM_LEN_MSK
#define TG3_OTP_HPFFLTR_MASK
#define SG_DIG_SOFT_RESET
#define TG3PCI_DUAL_MAC_CTRL
#define LED_CTRL_TRAFFIC_OVERRIDE
static int tg3_phy_reset_chanpat(struct tg3 *tp)
#define TG3PCI_SUBDEVICE_ID_3COM_3C996T
#define MII_TG3_FET_SHADOW_EN
#define SG_DIG_PARTNER_PAUSE_CAPABLE
#define MAC_MODE_PORT_MODE_TBI
#define CHIPREV_ID_5704_A1
#define TG3_OTP_ROFF_MASK
#define MII_TG3_DSP_EXP75
#define GET_ASIC_REV(CHIP_REV_ID)
static int tg3_setup_fiber_mii_phy(struct tg3 *tp, int force_reset)
#define CHIPREV_ID_57765_A0
#define MII_TG3_AUX_STAT_SPDMASK
#define ANEG_STATE_NEXT_PAGE_WAIT
static int tg3_phydsp_write(struct tg3 *tp, u32 reg, u32 val)
#define CPMU_CTRL_GPHY_10MB_RXONLY
#define MAC_STATUS_SIGNAL_DET
int tg3_setup_phy(struct tg3 *tp, int force_reset)
#define TX_LENGTHS_CNT_DWN_VAL_MSK
#define TX_STATUS_LINK_UP
#define TG3_PHYFLG_PHY_SERDES
#define ANEG_STATE_IDLE_DETECT_INIT
#define ADVERTISED_1000baseT_Half
static int tg3_fiber_aneg_smachine(struct tg3 *tp, struct tg3_fiber_aneginfo *ap)
#define TG3_PHYFLG_MII_SERDES
#define TG3_PHY_REV_BCM5401_B0
#define MII_TG3_INT_LINKCHG
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A10
#define TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)
#define TG3PCI_SUBDEVICE_ID_COMPAQ_NC7780_2
#define MII_TG3_TEST1_TRIM_EN
#define TX_MODE_FLOW_CTRL_ENABLE
#define MII_TG3_FET_SHDW_MISCCTRL_MDIX
static void tg3_setup_flow_control(struct tg3 *tp, u32 lcladv, u32 rmtadv)
#define TG3_PHYFLG_CAPACITIVE_COUPLING
#define ADVERTISE_1000XHALF
#define TG3_PHYFLG_ANY_SERDES
static int fiber_autoneg(struct tg3 *tp, u32 *txflags, u32 *rxflags)
#define TG3_OTP_LPFDIS_SHIFT
int tg3_phy_reset(struct tg3 *tp)
#define MII_TG3_AUX_STAT_100HALF
static void tg3_phy_init_link_config(struct tg3 *tp)
static u32 mii_adv_to_ethtool_adv_x(u32 adv)
#define TG3_PHY_ID_BCM5701
#define TG3_PHYFLG_IS_FET
#define TG3PCI_SUBDEVICE_ID_COMPAQ_BANSHEE
#define LPA_1000XPAUSE_ASYM
#define TG3PCI_SUBDEVICE_ID_3COM_3C1000T
#define TG3_PHY_ID_BCM8002
#define TG3_OTP_VDAC_MASK
#define MII_TG3_CTRL_ENABLE_AS_MASTER
#define TG3_OTP_VDAC_SHIFT
#define TG3_OTP_HPFOVER_SHIFT
#define tg3_flag_set(tp, flag)
#define MAC_STATUS_SYNC_CHANGED
#define TX_LENGTHS_SLOT_TIME_SHIFT
#define TG3PCI_SUBDEVICE_ID_COMPAQ_NC7780
#define MR_LP_ADV_REMOTE_FAULT1
#define NIC_SRAM_FW_CMD_DATA_MBOX
static u16 tg3_advert_flowctrl_1000T(u8 flow_ctrl)
#define __unused
Declare a variable or data structure as unused.
static void netdev_link_up(struct net_device *netdev)
Mark network device as having link up.
#define SERDES_AN_TIMEOUT_5704S
#define NIC_SRAM_FW_CMD_LEN_MBOX
#define RX_MODE_FLOW_CTRL_ENABLE
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
static int netdev_link_ok(struct net_device *netdev)
Check link state of network device.
#define TG3PCI_SUBDEVICE_ID_DELL_VIPER
#define TG3_PHYFLG_ADC_BUG
static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)
#define LED_CTRL_MODE_PHY_1
#define MII_TG3_AUX_STAT_1000HALF
static int tg3_init_5401phy_dsp(struct tg3 *tp)
static u32 ethtool_adv_to_mii_adv_x(u32 ethadv)
#define TG3PCI_SUBDEVICE_ID_3COM_3C996BT
static struct tulip_private * tp
#define MII_TG3_AUXCTL_MISC_RDSEL_SHIFT
#define MII_TG3_DSP_EXP8_REJ2MHz
#define TG3PCI_SUBDEVICE_ID_3COM_3C940BR01
#define TG3PCI_SUBDEVICE_ID_DELL_JAGUAR
static int tg3_bmcr_reset(struct tg3 *tp)
#define MII_TG3_DSP_AADJ1CH0
#define MII_TG3_DSP_EXP8_AEDW
#define TG3_PHYFLG_ADJUST_TRIM
#define ADVERTISE_1000XPSE_ASYM
#define SD_STATUS_LINK_CHG
static int tg3_setup_fiber_hw_autoneg(struct tg3 *tp, u32 mac_status)
uint32_t high
High 32 bits of address.
static void tg3_init_bcm8002(struct tg3 *tp)
#define FWCMD_NICDRV_LINK_UPDATE
#define MAC_MODE_PORT_INT_LPBACK
#define OTP_ADDRESS_MAGIC1
#define ANEG_STATE_ABILITY_DETECT_INIT
#define MII_TG3_MISC_SHDW
#define MAC_MODE_PORT_MODE_MII
#define SG_DIG_ASYM_PAUSE
#define ADVERTISE_PAUSE_ASYM
#define TG3_OTP_HPFOVER_MASK
#define ANEG_STATE_IDLE_DETECT
#define tg3_flag(tp, flag)
#define MII_TG3_DSP_EXP96
#define LED_CTRL_LNKLED_OVERRIDE
#define TG3_PHY_ID_INVALID
#define GRC_MISC_CFG_EPHY_IDDQ
#define MII_TG3_FET_PTEST
static int tg3_test_and_report_link_chg(struct tg3 *tp, int curr_link_up)
#define LED_CTRL_1000MBPS_ON
#define MII_TG3_AUX_STAT_FULL
#define MII_TG3_AUXCTL_SHDWSEL_MISCTEST
#define CHIPREV_ID_5700_ALTIMA
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701T8
#define MAC_MODE_PORT_MODE_GMII
#define MAC_EVENT_LNKSTATE_CHANGED
#define TG3_OTP_AGCTGT_MASK
#define TG3_PHY_AUXCTL_SMDSP_DISABLE(tp)
#define MII_TG3_DSP_AADJ1CH3
#define ENODEV
No such device.
#define MI_COM_REG_ADDR_SHIFT
#define SERDES_PARALLEL_DET_TIMEOUT
#define MAC_MODE_HALF_DUPLEX
#define SERDES_TG3_1000X_STATUS
#define SG_DIG_USING_HW_AUTONEG
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A7
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A6
#define MII_TG3_DSP_TAP1_AGCTGT_DFLT
#define SERDES_TG3_FULL_DUPLEX
#define ADVERTISE_1000HALF
#define OTP_MODE_OTP_THRU_GRC
#define TG3_OTP_10BTAMP_MASK
struct ib_cm_common common
#define MII_TG3_EXT_CTRL_LNK3_LED_MODE
static int tg3_5700_link_polarity(struct tg3 *tp, u32 speed)
static void tg3_phy_apply_otp(struct tg3 *tp)
#define LED_CTRL_MODE_PHY_2
#define MR_LP_ADV_ASYM_PAUSE
static int tg3_phy_auxctl_read(struct tg3 *tp, int reg, u32 *val)
#define MAC_STATUS_PCS_SYNCED
#define MII_TG3_AUX_STAT_10HALF
#define ANEG_STATE_SETTLE_TIME
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700T6
#define TG3_OTP_RCOFF_MASK
#define MAC_MI_MODE_AUTO_POLL
#define MII_TG3_CTRL_ADV_1000_HALF
#define HOSTCC_STAT_COAL_TICKS
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A12
int tg3_writephy(struct tg3 *tp, int reg, u32 val)
#define OTP_CTRL_OTP_CMD_START
#define ANEG_STATE_NEXT_PAGE_WAIT_INIT
#define MI_COM_PHY_ADDR_MASK
#define CPMU_LSPD_1000MB_MACCLK_MASK
#define CHIPREV_ID_5701_A0
#define SD_STATUS_UPDATED
#define MII_TG3_DSP_ADDRESS
#define TG3_CPMU_LSPD_1000MB_CLK
#define OTP_ADDRESS_MAGIC2
void tg3_write_mem(struct tg3 *tp, u32 off, u32 val)
static void tg3_phy_set_wirespeed(struct tg3 *tp)
#define MII_TG3_AUXCTL_SHDWSEL_PWRCTL
int tg3_phy_probe(struct tg3 *tp)
Media Independent Interface constants.
#define MR_LP_ADV_HALF_DUPLEX
#define TG3_PHYFLG_EEE_CAP
#define TG3_PHYFLG_JITTER_BUG
#define NIC_SRAM_FIRMWARE_MBOX_MAGIC2
#define SG_DIG_PARTNER_ASYM_PAUSE
static int tg3_setup_fiber_phy(struct tg3 *tp, int force_reset)
#define ANEG_STATE_COMPLETE_ACK
#define ANEG_STATE_RESTART_INIT
#define ADVERTISED_10baseT_Full
#define SG_DIG_COMMON_SETUP
#define ANEG_STATE_RESTART
#define TG3_OTP_AGCTGT_SHIFT
#define TG3_PHY_ID_BCM5703
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A9
static int tg3_phy_write_and_check_testpat(struct tg3 *tp, int *resetp)
#define MII_TG3_AUX_STAT_1000FULL
#define MII_TG3_DSP_CONTROL
#define TG3_OTP_ROFF_SHIFT
#define MII_TG3_DSP_AADJ1CH3_ADCCKADJ
#define ANEG_STATE_COMPLETE_ACK_INIT
#define ANEG_STATE_ACK_DETECT
#define ADVERTISE_PAUSE_CAP
#define TG3PCI_SUBVENDOR_ID_DELL
static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset)
#define MII_TG3_AUX_STAT_100
#define ADVERTISE_100HALF
#define GET_CHIP_REV(CHIP_REV_ID)
#define TG3_BMCR_SPEED1000
#define CHIPREV_ID_5704_A0
static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable)
static void tg3_aux_stat_to_speed_duplex(struct tg3 *tp, u32 val, u16 *speed, u8 *duplex)
#define CHIPREV_ID_5717_A0
#define MR_LP_ADV_NEXT_PAGE
#define PCIE_PWR_MGMT_THRESH
#define ANEG_STATE_DISABLE_LINK_OK
static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask)
#define MR_LP_ADV_FULL_DUPLEX
#define TX_LENGTHS_IPG_CRS_SHIFT
#define ANEG_STATE_ACK_DETECT_INIT
#define MAC_STATUS_LNKSTATE_CHANGED
#define DEFAULT_STAT_COAL_TICKS
#define TG3PCI_SUBVENDOR_ID_3COM
#define ADVERTISED_1000baseT_Full
void tg3_mdio_init(struct tg3 *tp)
#define ANEG_STATE_ABILITY_DETECT
#define TG3_PHYFLG_PARALLEL_DETECT
#define NULL
NULL pointer (VOID *)
u32 tg3_read_otp_phycfg(struct tg3 *tp)
int tg3_rx_prodring_init(struct tg3 *tp, struct tg3_rx_prodring_set *tpr);
#define ADVERTISED_100baseT_Full
static int tg3_wait_macro_done(struct tg3 *tp)
#define PCI_EXP_LNKCTL_CLKREQ_EN
#define TG3PCI_SUBVENDOR_ID_BROADCOM
#define MII_TG3_CTRL_AS_MASTER
struct bofm_section_header done
#define ADVERTISED_10baseT_Half
#define OTP_STATUS_CMD_DONE
#define MII_TG3_AUXCTL_SHDWSEL_AUXCTL
#define TG3_PHY_ID_BCM5401
#define TG3_PHYFLG_NO_ETH_WIRE_SPEED
#define NIC_SRAM_FIRMWARE_MBOX
#define TG3PCI_SUBVENDOR_ID_IBM
#define ADVERTISE_1000XFULL
#define MR_LP_ADV_REMOTE_FAULT2
void tg3_wait_for_event_ack(struct tg3 *tp)
void * memset(void *dest, int character, size_t len) __nonnull
static int tg3_setup_fiber_by_hand(struct tg3 *tp, u32 mac_status)
#define ANEG_STATE_LINK_OK
#define TG3_KNOWN_PHY_ID(X)