15{
DBGP(
"%s\n", __func__);
34{
DBGP(
"%s\n", __func__);
43 for (i = 0; i < 100; i++) {
58{
DBGP(
"%s\n", __func__);
60 u32 bhalf_otp, thalf_otp;
81 return ((thalf_otp & 0x0000ffff) << 16) | (bhalf_otp >> 16);
84#define PHY_BUSY_LOOPS 5000
87{
DBGP(
"%s\n", __func__);
206{
DBGP(
"%s\n", __func__);
210 DBGC(
tp->dev,
"Matching with: %x:%x\n",
tp->subsystem_vendor,
tp->subsystem_device);
214 tp->subsystem_vendor) &&
216 tp->subsystem_device))
223{
DBGP(
"%s\n", __func__);
273{
DBGP(
"%s\n", __func__);
305{
DBGP(
"%s\n", __func__);
313 if ((tmp32 & 0x1000) == 0)
324{
DBGP(
"%s\n", __func__);
326 static const u32 test_pat[4][6] = {
327 { 0x00005555, 0x00000005, 0x00002aaa, 0x0000000a, 0x00003456, 0x00000003 },
328 { 0x00002aaa, 0x0000000a, 0x00003333, 0x00000003, 0x0000789a, 0x00000005 },
329 { 0x00005a5a, 0x00000005, 0x00002a6a, 0x0000000a, 0x00001bcd, 0x00000003 },
330 { 0x00002a5a, 0x0000000a, 0x000033c3, 0x00000003, 0x00002ef1, 0x00000005 }
334 for (chan = 0; chan < 4; chan++) {
338 (chan * 0x2000) | 0x0200);
341 for (i = 0; i < 6; i++)
352 (chan * 0x2000) | 0x0200);
365 for (i = 0; i < 6; i += 2) {
376 if (
low != test_pat[chan][i] ||
377 high != test_pat[chan][i+1]) {
391{
DBGP(
"%s\n", __func__);
395 for (chan = 0; chan < 4; chan++) {
399 (chan * 0x2000) | 0x0200);
401 for (i = 0; i < 6; i++)
412{
DBGP(
"%s\n", __func__);
424{
DBGP(
"%s\n", __func__);
432#define TG3_PHY_AUXCTL_SMDSP_ENABLE(tp) \
433 tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \
434 MII_TG3_AUXCTL_ACTL_SMDSP_ENA | \
435 MII_TG3_AUXCTL_ACTL_TX_6DB)
437#define TG3_PHY_AUXCTL_SMDSP_DISABLE(tp) \
438 tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \
439 MII_TG3_AUXCTL_ACTL_TX_6DB);
442{
DBGP(
"%s\n", __func__);
444 u32 reg32, phy9_orig;
445 int retries, do_phy_reset, err;
511{
DBGP(
"%s\n", __func__);
549{
DBGP(
"%s\n", __func__);
563{
DBGP(
"%s\n", __func__);
605{
DBGP(
"%s\n", __func__);
623{
DBGP(
"%s\n", __func__);
628 DBGCP(&
tp->pdev->dev,
"%s\n", __func__);
739{
DBGP(
"%s\n", __func__);
741 u32 adv_reg, all_mask = 0;
755 if ((adv_reg & all_mask) != all_mask)
769 if ((tg3_ctrl & all_mask) != all_mask)
776{
DBGP(
"%s\n", __func__);
793{
DBGP(
"%s\n", __func__);
840{
DBGP(
"%s\n", __func__);
859#define ADVERTISED_Autoneg (1 << 6)
860#define ADVERTISED_Pause (1 << 13)
861#define ADVERTISED_TP (1 << 7)
862#define ADVERTISED_FIBRE (1 << 10)
864#define AUTONEG_ENABLE 0x01
867{
DBGP(
"%s\n", __func__);
885 tp->link_config.advertising = adv;
897{
DBGP(
"%s\n", __func__);
899 u32 hw_phy_id_1, hw_phy_id_2;
900 u32 hw_phy_id, hw_phy_id_masked;
922 hw_phy_id = (hw_phy_id_1 & 0xffff) << 10;
923 hw_phy_id |= (hw_phy_id_2 & 0xfc00) << 16;
924 hw_phy_id |= (hw_phy_id_2 & 0x03ff) << 0;
930 tp->phy_id = hw_phy_id;
948 DBGC(&
tp->pdev->dev,
"lookup by subsys failed\n");
990 tp->link_config.flowctrl);
1010{
DBGP(
"%s\n", __func__);
1013 DBGC(
tp->dev,
"link_changed\n");
1020{
DBGP(
"%s\n", __func__);
1068{
DBGP(
"%s\n", __func__);
1079 if (curadv != reqadv)
1091 if (curadv != reqadv) {
1102{
DBGP(
"%s\n", __func__);
1125{
DBGP(
"%s\n", __func__);
1128 u32 old_rx_mode =
tp->rx_mode;
1129 u32 old_tx_mode =
tp->tx_mode;
1146 if (old_rx_mode !=
tp->rx_mode)
1154 if (old_tx_mode !=
tp->tx_mode)
1159{
DBGP(
"%s\n", __func__);
1165 tp->link_config.advertising &=
1170 tp->link_config.flowctrl);
1191 tp->link_config.flowctrl);
1198{
DBGP(
"%s\n", __func__);
1214{
DBGP(
"%s\n", __func__);
1262{
DBGP(
"%s\n", __func__);
1265 DBGC(
tp->dev,
"Link is down\n");
1268 DBGC(
tp->dev,
"Link is up at %d Mbps, %s duplex\n",
1276 DBGC(
tp->dev,
"Flow control is %s for TX and %s for RX\n",
1283 DBGC(
tp->dev,
"EEE is %s\n",
1284 tp->setlpicnt ?
"enabled" :
"disabled");
1293#define ANEG_STATE_UNKNOWN 0
1294#define ANEG_STATE_AN_ENABLE 1
1295#define ANEG_STATE_RESTART_INIT 2
1296#define ANEG_STATE_RESTART 3
1297#define ANEG_STATE_DISABLE_LINK_OK 4
1298#define ANEG_STATE_ABILITY_DETECT_INIT 5
1299#define ANEG_STATE_ABILITY_DETECT 6
1300#define ANEG_STATE_ACK_DETECT_INIT 7
1301#define ANEG_STATE_ACK_DETECT 8
1302#define ANEG_STATE_COMPLETE_ACK_INIT 9
1303#define ANEG_STATE_COMPLETE_ACK 10
1304#define ANEG_STATE_IDLE_DETECT_INIT 11
1305#define ANEG_STATE_IDLE_DETECT 12
1306#define ANEG_STATE_LINK_OK 13
1307#define ANEG_STATE_NEXT_PAGE_WAIT_INIT 14
1308#define ANEG_STATE_NEXT_PAGE_WAIT 15
1311#define MR_AN_ENABLE 0x00000001
1312#define MR_RESTART_AN 0x00000002
1313#define MR_AN_COMPLETE 0x00000004
1314#define MR_PAGE_RX 0x00000008
1315#define MR_NP_LOADED 0x00000010
1316#define MR_TOGGLE_TX 0x00000020
1317#define MR_LP_ADV_FULL_DUPLEX 0x00000040
1318#define MR_LP_ADV_HALF_DUPLEX 0x00000080
1319#define MR_LP_ADV_SYM_PAUSE 0x00000100
1320#define MR_LP_ADV_ASYM_PAUSE 0x00000200
1321#define MR_LP_ADV_REMOTE_FAULT1 0x00000400
1322#define MR_LP_ADV_REMOTE_FAULT2 0x00000800
1323#define MR_LP_ADV_NEXT_PAGE 0x00001000
1324#define MR_TOGGLE_RX 0x00002000
1325#define MR_NP_RX 0x00004000
1327#define MR_LINK_OK 0x80000000
1337#define ANEG_CFG_NP 0x00000080
1338#define ANEG_CFG_ACK 0x00000040
1339#define ANEG_CFG_RF2 0x00000020
1340#define ANEG_CFG_RF1 0x00000010
1341#define ANEG_CFG_PS2 0x00000001
1342#define ANEG_CFG_PS1 0x00008000
1343#define ANEG_CFG_HD 0x00004000
1344#define ANEG_CFG_FD 0x00002000
1345#define ANEG_CFG_INVAL 0x00001f06
1350#define ANEG_TIMER_ENAB 2
1351#define ANEG_FAILED -1
1353#define ANEG_STATE_SETTLE_TIME 10000
1389 for (i = 0; i < 500; i++)
1412 for (i = 0; i < 15000; i++)
1424 int current_link_up;
1425 u32 sg_dig_ctrl, sg_dig_status;
1426 u32 serdes_cfg, expected_sg_dig_ctrl;
1427 int workaround, port_a;
1430 expected_sg_dig_ctrl = 0;
1433 current_link_up = 0;
1464 current_link_up = 1;
1478 if (sg_dig_ctrl != expected_sg_dig_ctrl) {
1480 tp->serdes_counter &&
1484 tp->serdes_counter--;
1485 current_link_up = 1;
1504 u32 local_adv = 0, remote_adv = 0;
1516 tp->link_config.rmt_adv =
1520 current_link_up = 1;
1521 tp->serdes_counter = 0;
1524 if (
tp->serdes_counter)
1525 tp->serdes_counter--;
1548 current_link_up = 1;
1551 tp->serdes_counter =
1554 goto restart_autoneg;
1563 return current_link_up;
1570 unsigned long delta;
1618 switch (ap->
state) {
1835 memset(&aninfo, 0,
sizeof(aninfo));
1840 while (++
tick < 195000) {
1853 *rxflags = aninfo.
flags;
1865 int current_link_up = 0;
1871 u32 txflags, rxflags;
1875 u32 local_adv = 0, remote_adv = 0;
1887 tp->link_config.rmt_adv =
1892 current_link_up = 1;
1894 for (i = 0; i < 30; i++) {
1907 if (!current_link_up &&
1910 current_link_up = 1;
1915 current_link_up = 1;
1925 return current_link_up;
1930 if (curr_link_up !=
tp->link_up) {
1961 u16 orig_active_speed;
1962 u8 orig_active_duplex;
1964 int current_link_up = force_reset;
1967 orig_pause_cfg =
tp->link_config.active_flowctrl;
1968 orig_active_speed =
tp->link_config.active_speed;
1969 orig_active_duplex =
tp->link_config.active_duplex;
2001 current_link_up = 0;
2002 tp->link_config.rmt_adv = 0;
2010 tp->hw_status->status =
2014 for (i = 0; i < 100; i++) {
2026 current_link_up = 0;
2028 tp->serdes_counter == 0) {
2036 if (current_link_up) {
2051 u32 now_pause_cfg =
tp->link_config.active_flowctrl;
2052 if (orig_pause_cfg != now_pause_cfg ||
2053 orig_active_speed !=
tp->link_config.active_speed ||
2054 orig_active_duplex !=
tp->link_config.active_duplex)
2067 int current_link_up = 0;
2068 u32 local_adv, remote_adv, sgsr;
2083 current_link_up = 1;
2106 goto fiber_setup_done;
2118 tp->link_config.rmt_adv = 0;
2166 if (new_bmcr != bmcr) {
2203 current_link_up = 1;
2217 common = local_adv & remote_adv;
2225 tp->link_config.rmt_adv =
2230 current_link_up = 0;
2236 if (current_link_up && current_duplex ==
DUPLEX_FULL)
2248 tp->link_config.active_speed = current_speed;
2249 tp->link_config.active_duplex = current_duplex;
2256{
DBGP(
"%s\n", __func__);
2258 int current_link_up;
2260 u32 lcl_adv, rmt_adv;
2309 for (i = 0; i < 1000; i++) {
2356 current_link_up = 0;
2364 if (!err && !(
val & (1 << 10))) {
2373 for (i = 0; i < 100; i++) {
2385 for (i = 0; i < 2000; i++) {
2397 for (i = 0; i < 200; i++) {
2401 if (bmcr && bmcr != 0x7fff)
2409 tp->link_config.active_speed = current_speed;
2410 tp->link_config.active_duplex = current_duplex;
2414 tp->link_config.advertising)) {
2417 current_link_up = 1;
2421 if (current_link_up == 1 &&
2427 if (current_link_up == 0) {
2433 current_link_up = 1;
2437 if (current_link_up == 1) {
2453 if (current_link_up == 1 &&
2478 current_link_up == 1 &&
2494 u16 oldlnkctl, newlnkctl;
2504 if (newlnkctl != oldlnkctl)
2511 if (current_link_up)
2522{
DBGP(
"%s\n", __func__);
#define NULL
NULL pointer (VOID *)
#define ADVERTISED_1000baseT_Full
#define ADVERTISED_Autoneg
#define ADVERTISED_100baseT_Half
#define ADVERTISED_100baseT_Full
#define ADVERTISED_10baseT_Full
#define ADVERTISED_1000baseT_Half
#define ADVERTISED_10baseT_Half
struct bofm_section_header done
static EFI_EVENT tick
Event used to wait for timer tick.
#define __unused
Declare a variable or data structure as unused.
#define EBUSY
Device or resource busy.
#define ENODEV
No such device.
struct ib_cm_common common
int pci_read_config_word(struct pci_device *pci, unsigned int where, uint16_t *value)
Read 16-bit word from PCI configuration space.
int pci_write_config_word(struct pci_device *pci, unsigned int where, uint16_t value)
Write 16-bit word to PCI configuration space.
void * memset(void *dest, int character, size_t len) __nonnull
Media Independent Interface constants.
#define ADVERTISE_1000XHALF
#define ADVERTISE_1000XPSE_ASYM
#define ADVERTISE_PAUSE_ASYM
#define LPA_1000XPAUSE_ASYM
#define ADVERTISE_1000HALF
#define ADVERTISE_100FULL
#define ADVERTISE_1000XPAUSE
#define ADVERTISE_1000FULL
#define ADVERTISE_100HALF
#define ADVERTISE_PAUSE_CAP
#define ADVERTISE_1000XFULL
uint32_t high
High 32 bits of address.
uint32_t low
Low 16 bits of address.
static unsigned int unsigned int reg
void netdev_link_down(struct net_device *netdev)
Mark network device as having link down.
static int netdev_link_ok(struct net_device *netdev)
Check link state of network device.
static void netdev_link_up(struct net_device *netdev)
Mark network device as having link up.
struct option_descriptor set[0]
#define PCI_FUNC(busdevfn)
#define MII_TG3_AUX_STAT_100FULL
#define TG3_OTP_RCOFF_SHIFT
#define TG3PCI_SUBDEVICE_ID_3COM_3C940BR01
#define MII_TG3_DSP_EXP97
#define TG3_PHYFLG_MII_SERDES
#define TX_LENGTHS_CNT_DWN_VAL_MSK
#define TG3_OTP_LPFDIS_SHIFT
#define MII_TG3_AUXCTL_MISC_FORCE_AMDIX
#define NIC_SRAM_FW_CMD_LEN_MBOX
#define TG3_PHYFLG_PHY_SERDES
#define HOSTCC_STAT_COAL_TICKS
#define SERDES_PARALLEL_DET_TIMEOUT
#define TG3_OTP_10BTAMP_SHIFT
#define TG3_PHY_ID_REV_MASK
#define TG3_OTP_HPFFLTR_MASK
#define TG3_OTP_RCOFF_MASK
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A9
#define TG3_OTP_HPFFLTR_SHIFT
#define MII_TG3_DSP_EXP75
#define MII_TG3_CTRL_AS_MASTER
#define MAC_STATUS_SIGNAL_DET
#define CPMU_CTRL_GPHY_10MB_RXONLY
#define TG3_OTP_VDAC_MASK
#define NIC_SRAM_FW_CMD_DATA_MBOX
#define MII_TG3_AUX_STAT_FULL
#define MAC_MODE_PORT_INT_LPBACK
#define SERDES_TG3_1000X_STATUS
#define MII_TG3_AUX_STAT_10HALF
#define LED_CTRL_TRAFFIC_OVERRIDE
#define SERDES_TG3_SPEED_100
#define SERDES_TG3_FULL_DUPLEX
#define TG3PCI_SUBDEVICE_ID_DELL_SLIM_MERLOT
#define TG3_PHYFLG_5704_A0_BUG
#define TG3_PHY_ID_BCM5411
#define OTP_MODE_OTP_THRU_GRC
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A6
#define MII_TG3_AUX_STAT_10FULL
#define MAC_MODE_PORT_MODE_MII
#define CHIPREV_ID_57765_A0
#define TG3PCI_SUBVENDOR_ID_IBM
#define TG3_PHY_REV_BCM5401_B0
#define TX_LENGTHS_IPG_CRS_SHIFT
#define MII_TG3_DSP_EXP8_AEDW
#define MAC_EVENT_LNKSTATE_CHANGED
#define MII_TG3_AUXCTL_SHDWSEL_MISCTEST
#define GET_ASIC_REV(CHIP_REV_ID)
#define TG3_PHYFLG_ADJUST_TRIM
#define OTP_ADDRESS_MAGIC2
#define MAC_MODE_PORT_MODE_TBI
#define tg3_flag(tp, flag)
#define MII_TG3_AUXCTL_MISC_RDSEL_SHIFT
#define MII_TG3_DSP_ADDRESS
#define TX_LENGTHS_SLOT_TIME_SHIFT
#define MII_TG3_DSP_CONTROL
#define MII_TG3_AUX_STAT_1000FULL
#define MAC_STATUS_SYNC_CHANGED
#define MII_TG3_MISC_SHDW
#define NIC_SRAM_FW_CMD_MBOX
static u32 mii_adv_to_ethtool_adv_x(u32 adv)
#define TG3_OTP_VDAC_SHIFT
#define SERDES_TG3_LINK_UP
#define LED_CTRL_MODE_PHY_2
#define MI_COM_PHY_ADDR_MASK
#define TG3PCI_SUBDEVICE_ID_COMPAQ_BANSHEE
#define TG3PCI_SUBDEVICE_ID_COMPAQ_NC7780_2
#define OTP_CTRL_OTP_CMD_INIT
#define MII_TG3_DSP_EXP8_REJ2MHz
#define SG_DIG_COMMON_SETUP
#define MII_TG3_DSP_EXP96
#define MII_TG3_FET_PTEST
#define MI_COM_REG_ADDR_MASK
#define OTP_STATUS_CMD_DONE
#define SG_DIG_ASYM_PAUSE
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A5
#define TG3_PHYFLG_ADC_BUG
#define SG_DIG_PARTNER_PAUSE_CAPABLE
#define CHIPREV_ID_5700_ALTIMA
#define MII_TG3_TEST1_TRIM_EN
#define LED_CTRL_MODE_PHY_1
#define MII_TG3_DSP_RW_PORT
#define TG3PCI_SUBDEVICE_ID_COMPAQ_NC7780
#define TG3_OTP_10BTAMP_MASK
#define MAC_MI_MODE_AUTO_POLL
#define TG3_OTP_HPFOVER_SHIFT
#define TG3_PHY_ID_BCM5401
#define TX_LENGTHS_IPG_SHIFT
#define OTP_CTRL_OTP_CMD_START
#define TG3PCI_DEVICE_TIGON3_5718
#define MII_TG3_AUXCTL_SHDWSEL_PWRCTL
#define TG3_PHYFLG_NO_ETH_WIRE_SPEED
#define MII_TG3_AUXCTL_MISC_WIRESPD_EN
#define TG3_OTP_ROFF_MASK
#define RX_MODE_FLOW_CTRL_ENABLE
#define TG3_CPMU_PHY_STRAP_IS_SERDES
#define TG3_PHYFLG_PARALLEL_DETECT
#define TX_LENGTHS_JMB_FRM_LEN_MSK
int tg3_readphy(struct tg3 *tp, int reg, u32 *val)
#define CPMU_LSPD_1000MB_MACCLK_12_5
#define MII_TG3_FET_SHDW_MISCCTRL_MDIX
#define TG3PCI_SUBDEVICE_ID_DELL_JAGUAR
#define TG3PCI_SUBVENDOR_ID_COMPAQ
#define CHIPREV_ID_5704_A1
#define TG3_PHYFLG_ANY_SERDES
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95700T6
#define MII_TG3_DSP_TAP1_AGCTGT_DFLT
#define GRC_MISC_CFG_EPHY_IDDQ
#define TG3_PHY_ID_BCM8002
#define MII_TG3_CTRL_ENABLE_AS_MASTER
#define TG3PCI_SUBDEVICE_ID_DELL_VIPER
#define TG3_CPMU_PHY_STRAP
#define NIC_SRAM_FIRMWARE_MBOX
#define LED_CTRL_LNKLED_OVERRIDE
#define MII_TG3_AUXCTL_MISC_WREN
#define TG3_PHYFLG_BER_BUG
#define tg3_flag_set(tp, flag)
static void tg3_generate_fw_event(struct tg3 *tp)
#define TG3PCI_SUBDEVICE_ID_COMPAQ_CHANGELING
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95703AX2
#define TG3_OTP_AGCTGT_SHIFT
#define MII_TG3_DSP_AADJ1CH3
#define SD_STATUS_UPDATED
#define TG3_PHY_ID_INVALID
#define TG3_PHYFLG_IS_FET
#define MII_TG3_CTRL_ADV_1000_HALF
#define TG3_KNOWN_PHY_ID(X)
#define TG3_OTP_ROFF_SHIFT
#define TG3PCI_SUBVENDOR_ID_DELL
#define LED_CTRL_1000MBPS_ON
void tg3_wait_for_event_ack(struct tg3 *tp)
#define TG3_OTP_HPFOVER_MASK
#define OTP_CTRL_OTP_CMD_READ
#define MAC_STATUS_CFG_CHANGED
#define SG_DIG_PARTNER_ASYM_PAUSE
#define TG3PCI_SUBDEVICE_ID_IBM_5703SAX2
#define TG3_PHYFLG_USE_MI_INTERRUPT
#define MAC_STATUS_RCVD_CFG
#define MAC_STATUS_MI_COMPLETION
#define TG3PCI_SUBDEVICE_ID_3COM_3C996SX
#define TG3_PHYFLG_CAPACITIVE_COUPLING
#define TG3PCI_SUBDEVICE_ID_DELL_MERLOT
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A12
#define SG_DIG_AUTONEG_COMPLETE
#define TG3PCI_SUBVENDOR_ID_3COM
#define MAC_MODE_SEND_CONFIGS
#define MAC_MODE_HALF_DUPLEX
#define MII_TG3_CTRL_ADV_1000_FULL
#define MII_TG3_AUX_STAT_1000HALF
#define TG3_OTP_AGCTGT_MASK
#define MII_TG3_AUXCTL_SHDWSEL_AUXCTL
#define MI_COM_PHY_ADDR_SHIFT
#define TG3_CPMU_LSPD_1000MB_CLK
#define MI_COM_REG_ADDR_SHIFT
#define PCIE_PWR_MGMT_L1_THRESH_MSK
#define OTP_ADDRESS_MAGIC1
#define TG3_OTP_LPFDIS_MASK
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95703AX1
#define TG3PCI_SUBDEVICE_ID_3COM_3C1000T
#define TG3PCI_SUBDEVICE_ID_3COM_3C996BT
#define MAC_STATUS_PCS_SYNCED
#define SERDES_TG3_SPEED_1000
#define CHIPREV_ID_5717_A0
#define TG3PCI_SUBVENDOR_ID_BROADCOM
#define DEFAULT_STAT_COAL_TICKS
#define TX_MODE_FLOW_CTRL_ENABLE
#define MII_TG3_FET_SHDW_MISCCTRL
#define MII_TG3_DSP_AADJ1CH3_ADCCKADJ
#define MII_TG3_EXT_CTRL_LNK3_LED_MODE
#define SG_DIG_USING_HW_AUTONEG
#define PCI_EXP_LNKCTL_CLKREQ_EN
#define PCIE_PWR_MGMT_THRESH
#define MII_TG3_INT_LINKCHG
#define NIC_SRAM_FIRMWARE_MBOX_MAGIC2
#define SERDES_AN_TIMEOUT_5714S
#define SG_DIG_SOFT_RESET
#define MAC_MODE_PORT_MODE_MASK
#define CHIPREV_ID_5704_A0
#define TG3PCI_SUBDEVICE_ID_3COM_3C996T
#define TG3PCI_SUBDEVICE_ID_COMPAQ_BANSHEE_2
#define MII_TG3_FET_SHADOW_EN
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701T1
#define TG3_PHYFLG_EEE_CAP
#define MAC_STATUS_LNKSTATE_CHANGED
void tg3_write_mem(struct tg3 *tp, u32 off, u32 val)
#define TG3_PHYFLG_10_100_ONLY
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A10
#define MII_TG3_AUX_STAT_100HALF
#define CPMU_LSPD_1000MB_MACCLK_MASK
#define TG3_PHY_ID_BCM5703
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701A7
#define MAC_MODE_PORT_MODE_GMII
#define MAC_MODE_LINK_POLARITY
#define MII_TG3_AUXCTL_SHDWSEL_MISC
#define MII_TG3_DSP_AADJ1CH0
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
#define SERDES_TG3_SGMII_MODE
static u32 ethtool_adv_to_mii_adv_x(u32 ethadv)
#define TG3_PHYFLG_JITTER_BUG
#define GET_CHIP_REV(CHIP_REV_ID)
#define MII_TG3_AUX_STAT_SPDMASK
#define CHIPREV_ID_5701_A0
#define SERDES_AN_TIMEOUT_5704S
#define TG3_PHY_ID_BCM5701
#define MII_TG3_AUX_STAT_100
#define TG3PCI_SUBDEVICE_ID_BROADCOM_95701T8
#define TG3PCI_DUAL_MAC_CTRL
#define CHIPREV_ID_5701_B0
#define TG3_BMCR_SPEED1000
#define TX_STATUS_LINK_UP
#define FWCMD_NICDRV_LINK_UPDATE
#define SD_STATUS_LINK_CHG
static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable)
static int tg3_phy_write_and_check_testpat(struct tg3 *tp, int *resetp)
#define ANEG_STATE_AN_ENABLE
static struct subsys_tbl_ent subsys_id_to_phy_id[]
static int tg3_setup_fiber_phy(struct tg3 *tp, int force_reset)
static u16 tg3_advert_flowctrl_1000T(u8 flow_ctrl)
#define ANEG_STATE_COMPLETE_ACK_INIT
#define ANEG_STATE_LINK_OK
int tg3_writephy(struct tg3 *tp, int reg, u32 val)
static void tg3_link_report(struct tg3 *tp)
#define ANEG_STATE_NEXT_PAGE_WAIT_INIT
static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask)
static void tg3_clear_mac_status(struct tg3 *tp)
static int tg3_fiber_aneg_smachine(struct tg3 *tp, struct tg3_fiber_aneginfo *ap)
#define ANEG_STATE_IDLE_DETECT
static void tg3_aux_stat_to_speed_duplex(struct tg3 *tp, u32 val, u16 *speed, u8 *duplex)
#define ANEG_STATE_RESTART_INIT
#define ANEG_STATE_COMPLETE_ACK
static void tg3_setup_flow_control(struct tg3 *tp, u32 lcladv, u32 rmtadv)
static void tg3_init_bcm8002(struct tg3 *tp)
static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset)
#define ANEG_STATE_RESTART
#define ANEG_STATE_ABILITY_DETECT_INIT
#define ANEG_STATE_IDLE_DETECT_INIT
#define MR_LP_ADV_FULL_DUPLEX
int tg3_phy_reset(struct tg3 *tp)
#define ANEG_STATE_DISABLE_LINK_OK
#define ANEG_STATE_ACK_DETECT_INIT
static int tg3_phydsp_write(struct tg3 *tp, u32 reg, u32 val)
#define TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)
#define ANEG_STATE_UNKNOWN
#define ANEG_STATE_NEXT_PAGE_WAIT
#define MR_LP_ADV_HALF_DUPLEX
int tg3_readphy(struct tg3 *tp, int reg, u32 *val)
static int tg3_phy_auxctl_write(struct tg3 *tp, int reg, u32 set)
#define MR_LP_ADV_REMOTE_FAULT1
static int tg3_adv_1000T_flowctrl_ok(struct tg3 *tp, u32 *lcladv, u32 *rmtadv)
static void tg3_ump_link_report(struct tg3 *tp)
#define MR_LP_ADV_REMOTE_FAULT2
#define MR_LP_ADV_NEXT_PAGE
static struct subsys_tbl_ent * tg3_lookup_by_subsys(struct tg3 *tp)
static void tg3_phy_apply_otp(struct tg3 *tp)
static u16 tg3_advert_flowctrl_1000X(u8 flow_ctrl)
static int tg3_setup_fiber_hw_autoneg(struct tg3 *tp, u32 mac_status)
static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)
static int tg3_bmcr_reset(struct tg3 *tp)
static int tg3_5700_link_polarity(struct tg3 *tp, u32 speed)
#define TG3_PHY_AUXCTL_SMDSP_DISABLE(tp)
static int tg3_issue_otp_command(struct tg3 *tp, u32 cmd)
static int tg3_phy_reset_5703_4_5(struct tg3 *tp)
static int tg3_wait_macro_done(struct tg3 *tp)
void tg3_mdio_init(struct tg3 *tp)
static int tg3_phy_reset_chanpat(struct tg3 *tp)
static void tg3_phy_copper_begin(struct tg3 *tp)
static void tg3_phy_set_wirespeed(struct tg3 *tp)
#define ANEG_STATE_ACK_DETECT
int tg3_setup_phy(struct tg3 *tp, int force_reset)
void tg3_poll_link(struct tg3 *tp)
static u8 tg3_resolve_flowctrl_1000X(u16 lcladv, u16 rmtadv)
int tg3_phy_probe(struct tg3 *tp)
#define MR_LP_ADV_SYM_PAUSE
#define MR_LP_ADV_ASYM_PAUSE
static int fiber_autoneg(struct tg3 *tp, u32 *txflags, u32 *rxflags)
static int tg3_test_and_report_link_chg(struct tg3 *tp, int curr_link_up)
static void tg3_phy_init_link_config(struct tg3 *tp)
#define ANEG_STATE_ABILITY_DETECT
u32 tg3_read_otp_phycfg(struct tg3 *tp)
int tg3_rx_prodring_init(struct tg3 *tp, struct tg3_rx_prodring_set *tpr);
static int tg3_setup_fiber_mii_phy(struct tg3 *tp, int force_reset)
static int tg3_phy_auxctl_read(struct tg3 *tp, int reg, u32 *val)
static int tg3_setup_fiber_by_hand(struct tg3 *tp, u32 mac_status)
#define ANEG_STATE_SETTLE_TIME
static int tg3_init_5401phy_dsp(struct tg3 *tp)
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
static struct tulip_private * tp