linux/drivers/net/phy/qcom/qcom.h

/* SPDX-License-Identifier: GPL-2.0 */

#define AT803X_SPECIFIC_FUNCTION_CONTROL
#define AT803X_SFC_ASSERT_CRS
#define AT803X_SFC_FORCE_LINK
#define AT803X_SFC_MDI_CROSSOVER_MODE_M
#define AT803X_SFC_AUTOMATIC_CROSSOVER
#define AT803X_SFC_MANUAL_MDIX
#define AT803X_SFC_MANUAL_MDI
#define AT803X_SFC_SQE_TEST
#define AT803X_SFC_POLARITY_REVERSAL
#define AT803X_SFC_DISABLE_JABBER

#define AT803X_SPECIFIC_STATUS
#define AT803X_SS_SPEED_MASK
#define AT803X_SS_SPEED_1000
#define AT803X_SS_SPEED_100
#define AT803X_SS_SPEED_10
#define AT803X_SS_DUPLEX
#define AT803X_SS_SPEED_DUPLEX_RESOLVED
#define AT803X_SS_MDIX

#define QCA808X_SS_SPEED_MASK
#define QCA808X_SS_SPEED_2500

#define AT803X_INTR_ENABLE
#define AT803X_INTR_ENABLE_AUTONEG_ERR
#define AT803X_INTR_ENABLE_SPEED_CHANGED
#define AT803X_INTR_ENABLE_DUPLEX_CHANGED
#define AT803X_INTR_ENABLE_PAGE_RECEIVED
#define AT803X_INTR_ENABLE_LINK_FAIL
#define AT803X_INTR_ENABLE_LINK_SUCCESS
#define AT803X_INTR_ENABLE_LINK_FAIL_BX
#define AT803X_INTR_ENABLE_LINK_SUCCESS_BX
#define AT803X_INTR_ENABLE_WIRESPEED_DOWNGRADE
#define AT803X_INTR_ENABLE_POLARITY_CHANGED
#define AT803X_INTR_ENABLE_WOL

#define AT803X_INTR_STATUS

#define AT803X_SMART_SPEED
#define AT803X_SMART_SPEED_ENABLE
#define AT803X_SMART_SPEED_RETRY_LIMIT_MASK
#define AT803X_SMART_SPEED_BYPASS_TIMER

#define AT803X_CDT
#define AT803X_CDT_MDI_PAIR_MASK
#define AT803X_CDT_ENABLE_TEST
#define AT803X_CDT_STATUS
#define AT803X_CDT_STATUS_STAT_NORMAL
#define AT803X_CDT_STATUS_STAT_SHORT
#define AT803X_CDT_STATUS_STAT_OPEN
#define AT803X_CDT_STATUS_STAT_FAIL
#define AT803X_CDT_STATUS_STAT_MASK
#define AT803X_CDT_STATUS_DELTA_TIME_MASK

#define QCA808X_CDT_ENABLE_TEST
#define QCA808X_CDT_INTER_CHECK_DIS
#define QCA808X_CDT_STATUS
#define QCA808X_CDT_LENGTH_UNIT

#define QCA808X_MMD3_CDT_STATUS
#define QCA808X_MMD3_CDT_DIAG_PAIR_A
#define QCA808X_MMD3_CDT_DIAG_PAIR_B
#define QCA808X_MMD3_CDT_DIAG_PAIR_C
#define QCA808X_MMD3_CDT_DIAG_PAIR_D
#define QCA808X_CDT_DIAG_LENGTH_SAME_SHORT
#define QCA808X_CDT_DIAG_LENGTH_CROSS_SHORT

#define QCA808X_CDT_CODE_PAIR_A
#define QCA808X_CDT_CODE_PAIR_B
#define QCA808X_CDT_CODE_PAIR_C
#define QCA808X_CDT_CODE_PAIR_D

#define QCA808X_CDT_STATUS_STAT_TYPE
#define QCA808X_CDT_STATUS_STAT_FAIL
#define QCA808X_CDT_STATUS_STAT_NORMAL
#define QCA808X_CDT_STATUS_STAT_SAME_OPEN
#define QCA808X_CDT_STATUS_STAT_SAME_SHORT

#define QCA808X_CDT_STATUS_STAT_MDI
#define QCA808X_CDT_STATUS_STAT_MDI1
#define QCA808X_CDT_STATUS_STAT_MDI2
#define QCA808X_CDT_STATUS_STAT_MDI3

/* NORMAL are MDI with type set to 0 */
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI1_SAME_NORMAL
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI1_SAME_OPEN
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI1_SAME_SHORT
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI2_SAME_NORMAL
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI2_SAME_OPEN
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI2_SAME_SHORT
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI3_SAME_NORMAL
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI3_SAME_OPEN
#define QCA808X_CDT_STATUS_STAT_CROSS_SHORT_WITH_MDI3_SAME_SHORT

/* Added for reference of existence but should be handled by wait_for_completion already */
#define QCA808X_CDT_STATUS_STAT_BUSY

#define QCA808X_MMD7_LED_GLOBAL
#define QCA808X_LED_BLINK_1
#define QCA808X_LED_BLINK_2
/* Values are the same for both BLINK_1 and BLINK_2 */
#define QCA808X_LED_BLINK_FREQ_MASK
#define QCA808X_LED_BLINK_FREQ_2HZ
#define QCA808X_LED_BLINK_FREQ_4HZ
#define QCA808X_LED_BLINK_FREQ_8HZ
#define QCA808X_LED_BLINK_FREQ_16HZ
#define QCA808X_LED_BLINK_FREQ_32HZ
#define QCA808X_LED_BLINK_FREQ_64HZ
#define QCA808X_LED_BLINK_FREQ_128HZ
#define QCA808X_LED_BLINK_FREQ_256HZ
#define QCA808X_LED_BLINK_DUTY_MASK
#define QCA808X_LED_BLINK_DUTY_50_50
#define QCA808X_LED_BLINK_DUTY_75_25
#define QCA808X_LED_BLINK_DUTY_25_75
#define QCA808X_LED_BLINK_DUTY_33_67
#define QCA808X_LED_BLINK_DUTY_67_33
#define QCA808X_LED_BLINK_DUTY_17_83
#define QCA808X_LED_BLINK_DUTY_83_17
#define QCA808X_LED_BLINK_DUTY_8_92

/* LED hw control pattern is the same for every LED */
#define QCA808X_LED_PATTERN_MASK
#define QCA808X_LED_SPEED2500_ON
#define QCA808X_LED_SPEED2500_BLINK
/* Follow blink trigger even if duplex or speed condition doesn't match */
#define QCA808X_LED_BLINK_CHECK_BYPASS
#define QCA808X_LED_FULL_DUPLEX_ON
#define QCA808X_LED_HALF_DUPLEX_ON
#define QCA808X_LED_TX_BLINK
#define QCA808X_LED_RX_BLINK
#define QCA808X_LED_TX_ON_10MS
#define QCA808X_LED_RX_ON_10MS
#define QCA808X_LED_SPEED1000_ON
#define QCA808X_LED_SPEED100_ON
#define QCA808X_LED_SPEED10_ON
#define QCA808X_LED_COLLISION_BLINK
#define QCA808X_LED_SPEED1000_BLINK
#define QCA808X_LED_SPEED100_BLINK
#define QCA808X_LED_SPEED10_BLINK

/* LED force ctrl is the same for every LED
 * No documentation exist for this, not even internal one
 * with NDA as QCOM gives only info about configuring
 * hw control pattern rules and doesn't indicate any way
 * to force the LED to specific mode.
 * These define comes from reverse and testing and maybe
 * lack of some info or some info are not entirely correct.
 * For the basic LED control and hw control these finding
 * are enough to support LED control in all the required APIs.
 *
 * On doing some comparison with implementation with qca807x,
 * it was found that it's 1:1 equal to it and confirms all the
 * reverse done. It was also found further specification with the
 * force mode and the blink modes.
 */
#define QCA808X_LED_FORCE_EN
#define QCA808X_LED_FORCE_MODE_MASK
#define QCA808X_LED_FORCE_BLINK_1
#define QCA808X_LED_FORCE_BLINK_2
#define QCA808X_LED_FORCE_ON
#define QCA808X_LED_FORCE_OFF

#define AT803X_LOC_MAC_ADDR_0_15_OFFSET
#define AT803X_LOC_MAC_ADDR_16_31_OFFSET
#define AT803X_LOC_MAC_ADDR_32_47_OFFSET

#define AT803X_DEBUG_ADDR
#define AT803X_DEBUG_DATA

#define AT803X_DEBUG_ANALOG_TEST_CTRL
#define QCA8327_DEBUG_MANU_CTRL_EN
#define QCA8337_DEBUG_MANU_CTRL_EN
#define AT803X_DEBUG_RX_CLK_DLY_EN

#define AT803X_DEBUG_SYSTEM_CTRL_MODE
#define AT803X_DEBUG_TX_CLK_DLY_EN

#define AT803X_DEBUG_REG_HIB_CTRL
#define AT803X_DEBUG_HIB_CTRL_SEL_RST_80U
#define AT803X_DEBUG_HIB_CTRL_EN_ANY_CHANGE
#define AT803X_DEBUG_HIB_CTRL_PS_HIB_EN

#define AT803X_DEFAULT_DOWNSHIFT
#define AT803X_MIN_DOWNSHIFT
#define AT803X_MAX_DOWNSHIFT

enum stat_access_type {};

struct at803x_hw_stat {};

struct at803x_ss_mask {};

int at803x_debug_reg_read(struct phy_device *phydev, u16 reg);
int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg,
			  u16 clear, u16 set);
int at803x_debug_reg_write(struct phy_device *phydev, u16 reg, u16 data);
int at803x_set_wol(struct phy_device *phydev,
		   struct ethtool_wolinfo *wol);
void at803x_get_wol(struct phy_device *phydev,
		    struct ethtool_wolinfo *wol);
int at803x_ack_interrupt(struct phy_device *phydev);
int at803x_config_intr(struct phy_device *phydev);
irqreturn_t at803x_handle_interrupt(struct phy_device *phydev);
int at803x_read_specific_status(struct phy_device *phydev,
				struct at803x_ss_mask ss_mask);
int at803x_config_mdix(struct phy_device *phydev, u8 ctrl);
int at803x_prepare_config_aneg(struct phy_device *phydev);
int at803x_read_status(struct phy_device *phydev);
int at803x_get_tunable(struct phy_device *phydev,
		       struct ethtool_tunable *tuna, void *data);
int at803x_set_tunable(struct phy_device *phydev,
		       struct ethtool_tunable *tuna, const void *data);
int at803x_cdt_fault_length(int dt);
int at803x_cdt_start(struct phy_device *phydev, u32 cdt_start);
int at803x_cdt_wait_for_completion(struct phy_device *phydev,
				   u32 cdt_en);
int qca808x_cable_test_get_status(struct phy_device *phydev, bool *finished);
int qca808x_led_reg_hw_control_enable(struct phy_device *phydev, u16 reg);
bool qca808x_led_reg_hw_control_status(struct phy_device *phydev, u16 reg);
int qca808x_led_reg_brightness_set(struct phy_device *phydev,
				   u16 reg, enum led_brightness value);
int qca808x_led_reg_blink_set(struct phy_device *phydev, u16 reg,
			      unsigned long *delay_on,
			      unsigned long *delay_off);