xref: /linux/drivers/net/phy/qcom/qcom.h (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
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