#define GG82563_PAGE_SHIFT 5
#define GG82563_REG(page, reg) \
(((page) << GG82563_PAGE_SHIFT) | ((reg) & MII_ADDRMASK))
#define GG82563_MIN_ALT_REG 30
#define GG82563_MAX_MULTI_PAGE_REG 0xF
#define GG82563_PHY_SPEC_CTRL GG82563_REG(0, 16)
#define GG82563_PSCR_DISABLE_JABBER 0x0001
#define GG82563_PSCR_POLARITY_REVERSAL_DISABLE 0x0002
#define GG82563_PSCR_POWER_DOWN 0x0004
#define GG82563_PSCR_COPPER_TRANSMITER_DISABLE 0x0008
#define GG82563_PSCR_CROSSOVER_MODE_MASK 0x0060
#define GG82563_PSCR_CROSSOVER_MODE_MDI 0x0000
#define GG82563_PSCR_CROSSOVER_MODE_MDIX 0x0020
#define GG82563_PSCR_CROSSOVER_MODE_AUTO 0x0060
#define GG82563_PSCR_ENABLE_EXTENDED_DISTANCE 0x0080
#define GG82563_PSCR_ENERGY_DETECT_MASK 0x0300
#define GG82563_PSCR_ENERGY_DETECT_OFF 0x0000
#define GG82563_PSCR_ENERGY_DETECT_RX 0x0200
#define GG82563_PSCR_ENERGY_DETECT_RX_TM 0x0300
#define GG82563_PSCR_FORCE_LINK_GOOD 0x0400
#define GG82563_PSCR_DOWNSHIFT_ENABLE 0x0800
#define GG82563_PSCR_DOWNSHIFT_COUNTER_MASK 0x7000
#define GG82563_PSCR_DOWNSHIFT_COUNTER_SHIFT 12
#define GG82563_PHY_SPEC_STATUS GG82563_REG(0, 17)
#define GG82563_PSSR_JABBER 0x0001
#define GG82563_PSSR_POLARITY 0x0002
#define GG82563_PSSR_LINK 0x0008
#define GG82563_PSSR_ENERGY_DETECT 0x0010
#define GG82563_PSSR_DOWNSHIFT 0x0020
#define GG82563_PSSR_CROSSOVER_STATUS 0x0040
#define GG82563_PSSR_RX_PAUSE_ENABLED 0x0100
#define GG82563_PSSR_TX_PAUSE_ENABLED 0x0200
#define GG82563_PSSR_LINK_UP 0x0400
#define GG82563_PSSR_SPEED_DUPLEX_RESOLVED 0x0800
#define GG82563_PSSR_PAGE_RECEIVED 0x1000
#define GG82563_PSSR_DUPLEX 0x2000
#define GG82563_PSSR_SPEED_MASK 0xC000
#define GG82563_PSSR_SPEED_10MBPS 0x0000
#define GG82563_PSSR_SPEED_100MBPS 0x4000
#define GG82563_PSSR_SPEED_1000MBPS 0x8000
#define GG82563_PHY_INT_ENABLE \
GG82563_REG(0, 18)
#define GG82563_PHY_SPEC_STATUS_2 GG82563_REG(0, 19)
#define GG82563_PSSR2_JABBER 0x0001
#define GG82563_PSSR2_POLARITY_CHANGED 0x0002
#define GG82563_PSSR2_ENERGY_DETECT_CHANGED 0x0010
#define GG82563_PSSR2_DOWNSHIFT_INTERRUPT 0x0020
#define GG82563_PSSR2_MDI_CROSSOVER_CHANGE 0x0040
#define GG82563_PSSR2_FALSE_CARRIER 0x0100
#define GG82563_PSSR2_SYMBOL_ERROR 0x0200
#define GG82563_PSSR2_LINK_STATUS_CHANGED 0x0400
#define GG82563_PSSR2_AUTO_NEG_COMPLETED 0x0800
#define GG82563_PSSR2_PAGE_RECEIVED 0x1000
#define GG82563_PSSR2_DUPLEX_CHANGED 0x2000
#define GG82563_PSSR2_SPEED_CHANGED 0x4000
#define GG82563_PSSR2_AUTO_NEG_ERROR 0x8000
#define GG82563_PHY_RX_ERR_CNTR GG82563_REG(0, 21)
#define GG82563_PHY_PAGE_SELECT GG82563_REG(0, 22)
#define GG82563_PHY_SPEC_CTRL_2 GG82563_REG(0, 26)
#define GG82563_PSCR2_10BT_POLARITY_FORCE 0x0002
#define GG82563_PSCR2_1000MB_TEST_SELECT_MASK 0x000C
#define GG82563_PSCR2_1000MB_TEST_SELECT_NORMAL 0x0000
#define GG82563_PSCR2_1000MB_TEST_SELECT_112NS 0x0008
#define GG82563_PSCR2_1000MB_TEST_SELECT_16NS 0x000C
#define GG82563_PSCR2_REVERSE_AUTO_NEG 0x2000
#define GG82563_PSCR2_1000BT_DISABLE 0x4000
#define GG82563_PSCR2_TRANSMITER_TYPE_MASK 0x8000
#define GG82563_PSCR2_TRANSMITTER_TYPE_CLASS_B 0x0000
#define GG82563_PSCR2_TRANSMITTER_TYPE_CLASS_A 0x8000
#define GG82563_PHY_PAGE_SELECT_ALT GG82563_REG(0, 29)
#define GG82563_PHY_TEST_CLK_CTRL GG82563_REG(0, 30)
#define GG82563_PHY_MAC_SPEC_CTRL GG82563_REG(2, 21)
#define GG82563_MSCR_TX_CLK_MASK 0x0007
#define GG82563_MSCR_TX_CLK_10MBPS_2_5MHZ 0x0004
#define GG82563_MSCR_TX_CLK_100MBPS_25MHZ 0x0005
#define GG82563_MSCR_TX_CLK_1000MBPS_2_5MHZ 0x0006
#define GG82563_MSCR_TX_CLK_1000MBPS_25MHZ 0x0007
#define GG82563_MSCR_ASSERT_CRS_ON_TX 0x0010
#define GG82563_PHY_MAC_SPEC_CTRL_2 GG82563_REG(2, 26)
#define GG82563_PHY_DSP_DISTANCE GG82563_REG(5, 26)
#define GG82563_DSPD_CABLE_LENGTH 0x0007
#define GG82563_PHY_KMRN_MODE_CTRL GG82563_REG(193, 16)
#define GG82563_KMCR_PHY_LEDS_EN 0x0020
#define GG82563_KMCR_FORCE_LINK_UP 0x0040
#define GG82563_KMCR_SUPPRESS_SGMII_EPD_EXT 0x0080
#define GG82563_KMCR_MDIO_BUS_SPEED_SELECT_MASK 0x0400
#define GG82563_KMCR_MDIO_BUS_SPEED_SELECT 0x0400
#define GG82563_KMCR_PASS_FALSE_CARRIER 0x0800
#define GG82563_PHY_PORT_RESET GG82563_REG(193, 17)
#define GG82563_PHY_REVISION_ID GG82563_REG(193, 18)
#define GG82563_PHY_DEVICE_ID GG82563_REG(193, 19)
#define GG82563_PHY_PWR_MGMT_CTRL GG82563_REG(193, 20)
#define GG82563_PMCR_ENABLE_ELECTRICAL_IDLE 0x0001
#define GG82563_PMCR_DISABLE_PORT 0x0002
#define GG82563_PMCR_DISABLE_SERDES 0x0004
#define GG82563_PMCR_REVERSE_AUTO_NEG 0x0008
#define GG82563_PMCR_DISABLE_1000_NON_D0 0x0010
#define GG82563_PMCR_DISABLE_1000 0x0020
#define GG82563_PMCR_REVERSE_AUTO_NEG_D0A 0x0040
#define GG82563_PMCR_FORCE_POWER_STATE 0x0080
#define GG82563_PMCR_PROGRAMMED_POWER_STATE_MASK 0x0300
#define GG82563_PMCR_PROGRAMMED_POWER_STATE_DR 0x0000
#define GG82563_PMCR_PROGRAMMED_POWER_STATE_D0U 0x0100
#define GG82563_PMCR_PROGRAMMED_POWER_STATE_D0A 0x0200
#define GG82563_PMCR_PROGRAMMED_POWER_STATE_D3 0x0300
#define GG82563_PHY_RATE_ADAPT_CTRL GG82563_REG(193, 25)
#define GG82563_PHY_KMRN_FIFO_CTRL_STAT GG82563_REG(194, 16)
#define GG82563_PHY_KMRN_CTRL GG82563_REG(194, 17)
#define GG82563_PHY_INBAND_CTRL GG82563_REG(194, 18)
#define GG82563_ICR_DIS_PADDING 0x0010
#define GG82563_PHY_KMRN_DIAGNOSTIC GG82563_REG(194, 19)
#define GG82563_PHY_ACK_TIMEOUTS GG82563_REG(194, 20)
#define GG82563_PHY_ADV_ABILITY GG82563_REG(194, 21)
#define GG82563_PHY_LINK_PARTNER_ADV_ABILITY GG82563_REG(194, 23)
#define GG82563_PHY_ADV_NEXT_PAGE GG82563_REG(194, 24)
#define GG82563_PHY_LINK_PARTNER_ADV_NEXT_PAGE GG82563_REG(194, 25)
#define GG82563_PHY_KMRN_MISC GG82563_REG(194, 26)