16fb76097SChristian Marangi /* SPDX-License-Identifier: GPL-2.0 */ 26fb76097SChristian Marangi 3249d2b80SChristian Marangi #define AT803X_SPECIFIC_FUNCTION_CONTROL 0x10 4249d2b80SChristian Marangi #define AT803X_SFC_ASSERT_CRS BIT(11) 5249d2b80SChristian Marangi #define AT803X_SFC_FORCE_LINK BIT(10) 6249d2b80SChristian Marangi #define AT803X_SFC_MDI_CROSSOVER_MODE_M GENMASK(6, 5) 7249d2b80SChristian Marangi #define AT803X_SFC_AUTOMATIC_CROSSOVER 0x3 8249d2b80SChristian Marangi #define AT803X_SFC_MANUAL_MDIX 0x1 9249d2b80SChristian Marangi #define AT803X_SFC_MANUAL_MDI 0x0 10249d2b80SChristian Marangi #define AT803X_SFC_SQE_TEST BIT(2) 11249d2b80SChristian Marangi #define AT803X_SFC_POLARITY_REVERSAL BIT(1) 12249d2b80SChristian Marangi #define AT803X_SFC_DISABLE_JABBER BIT(0) 13249d2b80SChristian Marangi 14249d2b80SChristian Marangi #define AT803X_SPECIFIC_STATUS 0x11 15249d2b80SChristian Marangi #define AT803X_SS_SPEED_MASK GENMASK(15, 14) 16249d2b80SChristian Marangi #define AT803X_SS_SPEED_1000 2 17249d2b80SChristian Marangi #define AT803X_SS_SPEED_100 1 18249d2b80SChristian Marangi #define AT803X_SS_SPEED_10 0 19249d2b80SChristian Marangi #define AT803X_SS_DUPLEX BIT(13) 20249d2b80SChristian Marangi #define AT803X_SS_SPEED_DUPLEX_RESOLVED BIT(11) 21249d2b80SChristian Marangi #define AT803X_SS_MDIX BIT(6) 22249d2b80SChristian Marangi 23249d2b80SChristian Marangi #define QCA808X_SS_SPEED_MASK GENMASK(9, 7) 24249d2b80SChristian Marangi #define QCA808X_SS_SPEED_2500 4 25249d2b80SChristian Marangi 26249d2b80SChristian Marangi #define AT803X_INTR_ENABLE 0x12 27249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_AUTONEG_ERR BIT(15) 28249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_SPEED_CHANGED BIT(14) 29249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_DUPLEX_CHANGED BIT(13) 30249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_PAGE_RECEIVED BIT(12) 31249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_LINK_FAIL BIT(11) 32249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_LINK_SUCCESS BIT(10) 33249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_LINK_FAIL_BX BIT(8) 34249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_LINK_SUCCESS_BX BIT(7) 35249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_WIRESPEED_DOWNGRADE BIT(5) 36249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_POLARITY_CHANGED BIT(1) 37249d2b80SChristian Marangi #define AT803X_INTR_ENABLE_WOL BIT(0) 38249d2b80SChristian Marangi 39249d2b80SChristian Marangi #define AT803X_INTR_STATUS 0x13 40249d2b80SChristian Marangi 41249d2b80SChristian Marangi #define AT803X_SMART_SPEED 0x14 42249d2b80SChristian Marangi #define AT803X_SMART_SPEED_ENABLE BIT(5) 43249d2b80SChristian Marangi #define AT803X_SMART_SPEED_RETRY_LIMIT_MASK GENMASK(4, 2) 44249d2b80SChristian Marangi #define AT803X_SMART_SPEED_BYPASS_TIMER BIT(1) 45249d2b80SChristian Marangi 46249d2b80SChristian Marangi #define AT803X_CDT 0x16 47249d2b80SChristian Marangi #define AT803X_CDT_MDI_PAIR_MASK GENMASK(9, 8) 48249d2b80SChristian Marangi #define AT803X_CDT_ENABLE_TEST BIT(0) 49249d2b80SChristian Marangi #define AT803X_CDT_STATUS 0x1c 50249d2b80SChristian Marangi #define AT803X_CDT_STATUS_STAT_NORMAL 0 51249d2b80SChristian Marangi #define AT803X_CDT_STATUS_STAT_SHORT 1 52249d2b80SChristian Marangi #define AT803X_CDT_STATUS_STAT_OPEN 2 53249d2b80SChristian Marangi #define AT803X_CDT_STATUS_STAT_FAIL 3 54249d2b80SChristian Marangi #define AT803X_CDT_STATUS_STAT_MASK GENMASK(9, 8) 55249d2b80SChristian Marangi #define AT803X_CDT_STATUS_DELTA_TIME_MASK GENMASK(7, 0) 56249d2b80SChristian Marangi 57737eb75aSChristian Marangi #define QCA808X_CDT_ENABLE_TEST BIT(15) 58737eb75aSChristian Marangi #define QCA808X_CDT_INTER_CHECK_DIS BIT(13) 59737eb75aSChristian Marangi #define QCA808X_CDT_STATUS BIT(11) 60737eb75aSChristian Marangi #define QCA808X_CDT_LENGTH_UNIT BIT(10) 61737eb75aSChristian Marangi 62737eb75aSChristian Marangi #define QCA808X_MMD3_CDT_STATUS 0x8064 63737eb75aSChristian Marangi #define QCA808X_MMD3_CDT_DIAG_PAIR_A 0x8065 64737eb75aSChristian Marangi #define QCA808X_MMD3_CDT_DIAG_PAIR_B 0x8066 65737eb75aSChristian Marangi #define QCA808X_MMD3_CDT_DIAG_PAIR_C 0x8067 66737eb75aSChristian Marangi #define QCA808X_MMD3_CDT_DIAG_PAIR_D 0x8068 67737eb75aSChristian Marangi #define QCA808X_CDT_DIAG_LENGTH_SAME_SHORT GENMASK(15, 8) 68737eb75aSChristian Marangi #define QCA808X_CDT_DIAG_LENGTH_CROSS_SHORT GENMASK(7, 0) 69737eb75aSChristian Marangi 70737eb75aSChristian Marangi #define QCA808X_CDT_CODE_PAIR_A GENMASK(15, 12) 71737eb75aSChristian Marangi #define QCA808X_CDT_CODE_PAIR_B GENMASK(11, 8) 72737eb75aSChristian Marangi #define QCA808X_CDT_CODE_PAIR_C GENMASK(7, 4) 73737eb75aSChristian Marangi #define QCA808X_CDT_CODE_PAIR_D GENMASK(3, 0) 74737eb75aSChristian Marangi 75737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_TYPE GENMASK(1, 0) 76737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_FAIL FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_TYPE, 0) 77737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_NORMAL FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_TYPE, 1) 78737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_SAME_OPEN FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_TYPE, 2) 79737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_SAME_SHORT FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_TYPE, 3) 80737eb75aSChristian Marangi 81737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_MDI GENMASK(3, 2) 82737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_MDI1 FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_MDI, 1) 83737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_MDI2 FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_MDI, 2) 84737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_MDI3 FIELD_PREP_CONST(QCA808X_CDT_STATUS_STAT_MDI, 3) 85737eb75aSChristian Marangi 86737eb75aSChristian Marangi /* NORMAL are MDI with type set to 0 */ 87737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI1_SAME_NORMAL QCA808X_CDT_STATUS_STAT_MDI1 88737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI1_SAME_OPEN (QCA808X_CDT_STATUS_STAT_SAME_OPEN |\ 89737eb75aSChristian Marangi QCA808X_CDT_STATUS_STAT_MDI1) 90737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI1_SAME_SHORT (QCA808X_CDT_STATUS_STAT_SAME_SHORT |\ 91737eb75aSChristian Marangi QCA808X_CDT_STATUS_STAT_MDI1) 92737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI2_SAME_NORMAL QCA808X_CDT_STATUS_STAT_MDI2 93737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI2_SAME_OPEN (QCA808X_CDT_STATUS_STAT_SAME_OPEN |\ 94737eb75aSChristian Marangi QCA808X_CDT_STATUS_STAT_MDI2) 95737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI2_SAME_SHORT (QCA808X_CDT_STATUS_STAT_SAME_SHORT |\ 96737eb75aSChristian Marangi QCA808X_CDT_STATUS_STAT_MDI2) 97737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI3_SAME_NORMAL QCA808X_CDT_STATUS_STAT_MDI3 98737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI3_SAME_OPEN (QCA808X_CDT_STATUS_STAT_SAME_OPEN |\ 99737eb75aSChristian Marangi QCA808X_CDT_STATUS_STAT_MDI3) 100737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI3_SAME_SHORT (QCA808X_CDT_STATUS_STAT_SAME_SHORT |\ 101737eb75aSChristian Marangi QCA808X_CDT_STATUS_STAT_MDI3) 102737eb75aSChristian Marangi 103737eb75aSChristian Marangi /* Added for reference of existence but should be handled by wait_for_completion already */ 104737eb75aSChristian Marangi #define QCA808X_CDT_STATUS_STAT_BUSY (BIT(1) | BIT(3)) 105737eb75aSChristian Marangi 106ee9d9807SChristian Marangi #define QCA808X_MMD7_LED_GLOBAL 0x8073 107ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_1 GENMASK(11, 6) 108ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_2 GENMASK(5, 0) 109ee9d9807SChristian Marangi /* Values are the same for both BLINK_1 and BLINK_2 */ 110ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_MASK GENMASK(5, 3) 111ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_2HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x0) 112ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_4HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x1) 113ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_8HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x2) 114ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_16HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x3) 115ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_32HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x4) 116ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_64HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x5) 117ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_128HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x6) 118ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_FREQ_256HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x7) 119ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_MASK GENMASK(2, 0) 120ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_50_50 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x0) 121ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_75_25 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x1) 122ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_25_75 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x2) 123ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_33_67 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x3) 124ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_67_33 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x4) 125ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_17_83 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x5) 126ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_83_17 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x6) 127ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_DUTY_8_92 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x7) 128ee9d9807SChristian Marangi 129ee9d9807SChristian Marangi /* LED hw control pattern is the same for every LED */ 130ee9d9807SChristian Marangi #define QCA808X_LED_PATTERN_MASK GENMASK(15, 0) 131ee9d9807SChristian Marangi #define QCA808X_LED_SPEED2500_ON BIT(15) 132ee9d9807SChristian Marangi #define QCA808X_LED_SPEED2500_BLINK BIT(14) 133ee9d9807SChristian Marangi /* Follow blink trigger even if duplex or speed condition doesn't match */ 134ee9d9807SChristian Marangi #define QCA808X_LED_BLINK_CHECK_BYPASS BIT(13) 135ee9d9807SChristian Marangi #define QCA808X_LED_FULL_DUPLEX_ON BIT(12) 136ee9d9807SChristian Marangi #define QCA808X_LED_HALF_DUPLEX_ON BIT(11) 137ee9d9807SChristian Marangi #define QCA808X_LED_TX_BLINK BIT(10) 138ee9d9807SChristian Marangi #define QCA808X_LED_RX_BLINK BIT(9) 139ee9d9807SChristian Marangi #define QCA808X_LED_TX_ON_10MS BIT(8) 140ee9d9807SChristian Marangi #define QCA808X_LED_RX_ON_10MS BIT(7) 141ee9d9807SChristian Marangi #define QCA808X_LED_SPEED1000_ON BIT(6) 142ee9d9807SChristian Marangi #define QCA808X_LED_SPEED100_ON BIT(5) 143ee9d9807SChristian Marangi #define QCA808X_LED_SPEED10_ON BIT(4) 144ee9d9807SChristian Marangi #define QCA808X_LED_COLLISION_BLINK BIT(3) 145ee9d9807SChristian Marangi #define QCA808X_LED_SPEED1000_BLINK BIT(2) 146ee9d9807SChristian Marangi #define QCA808X_LED_SPEED100_BLINK BIT(1) 147ee9d9807SChristian Marangi #define QCA808X_LED_SPEED10_BLINK BIT(0) 148ee9d9807SChristian Marangi 149ee9d9807SChristian Marangi /* LED force ctrl is the same for every LED 150ee9d9807SChristian Marangi * No documentation exist for this, not even internal one 151ee9d9807SChristian Marangi * with NDA as QCOM gives only info about configuring 152ee9d9807SChristian Marangi * hw control pattern rules and doesn't indicate any way 153ee9d9807SChristian Marangi * to force the LED to specific mode. 154ee9d9807SChristian Marangi * These define comes from reverse and testing and maybe 155ee9d9807SChristian Marangi * lack of some info or some info are not entirely correct. 156ee9d9807SChristian Marangi * For the basic LED control and hw control these finding 157ee9d9807SChristian Marangi * are enough to support LED control in all the required APIs. 158ee9d9807SChristian Marangi * 159ee9d9807SChristian Marangi * On doing some comparison with implementation with qca807x, 160ee9d9807SChristian Marangi * it was found that it's 1:1 equal to it and confirms all the 161ee9d9807SChristian Marangi * reverse done. It was also found further specification with the 162ee9d9807SChristian Marangi * force mode and the blink modes. 163ee9d9807SChristian Marangi */ 164ee9d9807SChristian Marangi #define QCA808X_LED_FORCE_EN BIT(15) 165ee9d9807SChristian Marangi #define QCA808X_LED_FORCE_MODE_MASK GENMASK(14, 13) 166ee9d9807SChristian Marangi #define QCA808X_LED_FORCE_BLINK_1 FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x3) 167ee9d9807SChristian Marangi #define QCA808X_LED_FORCE_BLINK_2 FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x2) 168ee9d9807SChristian Marangi #define QCA808X_LED_FORCE_ON FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x1) 169ee9d9807SChristian Marangi #define QCA808X_LED_FORCE_OFF FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x0) 170ee9d9807SChristian Marangi 171249d2b80SChristian Marangi #define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C 172249d2b80SChristian Marangi #define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B 173249d2b80SChristian Marangi #define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A 174249d2b80SChristian Marangi 1756fb76097SChristian Marangi #define AT803X_DEBUG_ADDR 0x1D 1766fb76097SChristian Marangi #define AT803X_DEBUG_DATA 0x1E 1776fb76097SChristian Marangi 1786fb76097SChristian Marangi #define AT803X_DEBUG_ANALOG_TEST_CTRL 0x00 1796fb76097SChristian Marangi #define QCA8327_DEBUG_MANU_CTRL_EN BIT(2) 1806fb76097SChristian Marangi #define QCA8337_DEBUG_MANU_CTRL_EN GENMASK(3, 2) 1816fb76097SChristian Marangi #define AT803X_DEBUG_RX_CLK_DLY_EN BIT(15) 1826fb76097SChristian Marangi 1836fb76097SChristian Marangi #define AT803X_DEBUG_SYSTEM_CTRL_MODE 0x05 1846fb76097SChristian Marangi #define AT803X_DEBUG_TX_CLK_DLY_EN BIT(8) 1856fb76097SChristian Marangi 1866fb76097SChristian Marangi #define AT803X_DEBUG_REG_HIB_CTRL 0x0b 1876fb76097SChristian Marangi #define AT803X_DEBUG_HIB_CTRL_SEL_RST_80U BIT(10) 1886fb76097SChristian Marangi #define AT803X_DEBUG_HIB_CTRL_EN_ANY_CHANGE BIT(13) 1896fb76097SChristian Marangi #define AT803X_DEBUG_HIB_CTRL_PS_HIB_EN BIT(15) 1906fb76097SChristian Marangi 191249d2b80SChristian Marangi #define AT803X_DEFAULT_DOWNSHIFT 5 192249d2b80SChristian Marangi #define AT803X_MIN_DOWNSHIFT 2 193249d2b80SChristian Marangi #define AT803X_MAX_DOWNSHIFT 9 194249d2b80SChristian Marangi 1956fb76097SChristian Marangi enum stat_access_type { 1966fb76097SChristian Marangi PHY, 1976fb76097SChristian Marangi MMD 1986fb76097SChristian Marangi }; 1996fb76097SChristian Marangi 2006fb76097SChristian Marangi struct at803x_hw_stat { 2016fb76097SChristian Marangi const char *string; 2026fb76097SChristian Marangi u8 reg; 2036fb76097SChristian Marangi u32 mask; 2046fb76097SChristian Marangi enum stat_access_type access_type; 2056fb76097SChristian Marangi }; 2066fb76097SChristian Marangi 207249d2b80SChristian Marangi struct at803x_ss_mask { 208249d2b80SChristian Marangi u16 speed_mask; 209249d2b80SChristian Marangi u8 speed_shift; 210249d2b80SChristian Marangi }; 211249d2b80SChristian Marangi 2126fb76097SChristian Marangi int at803x_debug_reg_read(struct phy_device *phydev, u16 reg); 2136fb76097SChristian Marangi int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg, 2146fb76097SChristian Marangi u16 clear, u16 set); 2156fb76097SChristian Marangi int at803x_debug_reg_write(struct phy_device *phydev, u16 reg, u16 data); 216249d2b80SChristian Marangi int at803x_set_wol(struct phy_device *phydev, 217249d2b80SChristian Marangi struct ethtool_wolinfo *wol); 218249d2b80SChristian Marangi void at803x_get_wol(struct phy_device *phydev, 219249d2b80SChristian Marangi struct ethtool_wolinfo *wol); 220249d2b80SChristian Marangi int at803x_ack_interrupt(struct phy_device *phydev); 221249d2b80SChristian Marangi int at803x_config_intr(struct phy_device *phydev); 222249d2b80SChristian Marangi irqreturn_t at803x_handle_interrupt(struct phy_device *phydev); 223249d2b80SChristian Marangi int at803x_read_specific_status(struct phy_device *phydev, 224249d2b80SChristian Marangi struct at803x_ss_mask ss_mask); 225249d2b80SChristian Marangi int at803x_config_mdix(struct phy_device *phydev, u8 ctrl); 226249d2b80SChristian Marangi int at803x_prepare_config_aneg(struct phy_device *phydev); 227737eb75aSChristian Marangi int at803x_read_status(struct phy_device *phydev); 228249d2b80SChristian Marangi int at803x_get_tunable(struct phy_device *phydev, 229249d2b80SChristian Marangi struct ethtool_tunable *tuna, void *data); 230249d2b80SChristian Marangi int at803x_set_tunable(struct phy_device *phydev, 231249d2b80SChristian Marangi struct ethtool_tunable *tuna, const void *data); 232249d2b80SChristian Marangi int at803x_cdt_fault_length(int dt); 233249d2b80SChristian Marangi int at803x_cdt_start(struct phy_device *phydev, u32 cdt_start); 234249d2b80SChristian Marangi int at803x_cdt_wait_for_completion(struct phy_device *phydev, 235249d2b80SChristian Marangi u32 cdt_en); 236737eb75aSChristian Marangi int qca808x_cable_test_get_status(struct phy_device *phydev, bool *finished); 237*47b930d0SChristian Marangi int qca808x_led_reg_hw_control_enable(struct phy_device *phydev, u16 reg); 238*47b930d0SChristian Marangi bool qca808x_led_reg_hw_control_status(struct phy_device *phydev, u16 reg); 239*47b930d0SChristian Marangi int qca808x_led_reg_brightness_set(struct phy_device *phydev, 240*47b930d0SChristian Marangi u16 reg, enum led_brightness value); 241*47b930d0SChristian Marangi int qca808x_led_reg_blink_set(struct phy_device *phydev, u16 reg, 242*47b930d0SChristian Marangi unsigned long *delay_on, 243*47b930d0SChristian Marangi unsigned long *delay_off); 244