123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- From ee9d9807bee0e6af8ca2a4db6f0d1dc0e5b41f44 Mon Sep 17 00:00:00 2001
- From: Christian Marangi <[email protected]>
- Date: Tue, 6 Feb 2024 18:31:11 +0100
- Subject: [PATCH 08/10] net: phy: qcom: move common qca808x LED define to
- shared header
- The LED implementation of qca808x and qca807x is the same but qca807x
- supports also Fiber port and have different hw control bits for Fiber
- port.
- In preparation for qca807x introduction, move all the common define to
- shared header.
- Signed-off-by: Christian Marangi <[email protected]>
- Reviewed-by: Andrew Lunn <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/phy/qcom/qca808x.c | 65 ----------------------------------
- drivers/net/phy/qcom/qcom.h | 65 ++++++++++++++++++++++++++++++++++
- 2 files changed, 65 insertions(+), 65 deletions(-)
- --- a/drivers/net/phy/qcom/qca808x.c
- +++ b/drivers/net/phy/qcom/qca808x.c
- @@ -62,29 +62,6 @@
- #define QCA808X_DBG_AN_TEST 0xb
- #define QCA808X_HIBERNATION_EN BIT(15)
-
- -#define QCA808X_MMD7_LED_GLOBAL 0x8073
- -#define QCA808X_LED_BLINK_1 GENMASK(11, 6)
- -#define QCA808X_LED_BLINK_2 GENMASK(5, 0)
- -/* Values are the same for both BLINK_1 and BLINK_2 */
- -#define QCA808X_LED_BLINK_FREQ_MASK GENMASK(5, 3)
- -#define QCA808X_LED_BLINK_FREQ_2HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x0)
- -#define QCA808X_LED_BLINK_FREQ_4HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x1)
- -#define QCA808X_LED_BLINK_FREQ_8HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x2)
- -#define QCA808X_LED_BLINK_FREQ_16HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x3)
- -#define QCA808X_LED_BLINK_FREQ_32HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x4)
- -#define QCA808X_LED_BLINK_FREQ_64HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x5)
- -#define QCA808X_LED_BLINK_FREQ_128HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x6)
- -#define QCA808X_LED_BLINK_FREQ_256HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x7)
- -#define QCA808X_LED_BLINK_DUTY_MASK GENMASK(2, 0)
- -#define QCA808X_LED_BLINK_DUTY_50_50 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x0)
- -#define QCA808X_LED_BLINK_DUTY_75_25 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x1)
- -#define QCA808X_LED_BLINK_DUTY_25_75 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x2)
- -#define QCA808X_LED_BLINK_DUTY_33_67 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x3)
- -#define QCA808X_LED_BLINK_DUTY_67_33 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x4)
- -#define QCA808X_LED_BLINK_DUTY_17_83 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x5)
- -#define QCA808X_LED_BLINK_DUTY_83_17 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x6)
- -#define QCA808X_LED_BLINK_DUTY_8_92 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x7)
- -
- #define QCA808X_MMD7_LED2_CTRL 0x8074
- #define QCA808X_MMD7_LED2_FORCE_CTRL 0x8075
- #define QCA808X_MMD7_LED1_CTRL 0x8076
- @@ -92,51 +69,9 @@
- #define QCA808X_MMD7_LED0_CTRL 0x8078
- #define QCA808X_MMD7_LED_CTRL(x) (0x8078 - ((x) * 2))
-
- -/* LED hw control pattern is the same for every LED */
- -#define QCA808X_LED_PATTERN_MASK GENMASK(15, 0)
- -#define QCA808X_LED_SPEED2500_ON BIT(15)
- -#define QCA808X_LED_SPEED2500_BLINK BIT(14)
- -/* Follow blink trigger even if duplex or speed condition doesn't match */
- -#define QCA808X_LED_BLINK_CHECK_BYPASS BIT(13)
- -#define QCA808X_LED_FULL_DUPLEX_ON BIT(12)
- -#define QCA808X_LED_HALF_DUPLEX_ON BIT(11)
- -#define QCA808X_LED_TX_BLINK BIT(10)
- -#define QCA808X_LED_RX_BLINK BIT(9)
- -#define QCA808X_LED_TX_ON_10MS BIT(8)
- -#define QCA808X_LED_RX_ON_10MS BIT(7)
- -#define QCA808X_LED_SPEED1000_ON BIT(6)
- -#define QCA808X_LED_SPEED100_ON BIT(5)
- -#define QCA808X_LED_SPEED10_ON BIT(4)
- -#define QCA808X_LED_COLLISION_BLINK BIT(3)
- -#define QCA808X_LED_SPEED1000_BLINK BIT(2)
- -#define QCA808X_LED_SPEED100_BLINK BIT(1)
- -#define QCA808X_LED_SPEED10_BLINK BIT(0)
- -
- #define QCA808X_MMD7_LED0_FORCE_CTRL 0x8079
- #define QCA808X_MMD7_LED_FORCE_CTRL(x) (0x8079 - ((x) * 2))
-
- -/* 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 BIT(15)
- -#define QCA808X_LED_FORCE_MODE_MASK GENMASK(14, 13)
- -#define QCA808X_LED_FORCE_BLINK_1 FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x3)
- -#define QCA808X_LED_FORCE_BLINK_2 FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x2)
- -#define QCA808X_LED_FORCE_ON FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x1)
- -#define QCA808X_LED_FORCE_OFF FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x0)
- -
- #define QCA808X_MMD7_LED_POLARITY_CTRL 0x901a
- /* QSDK sets by default 0x46 to this reg that sets BIT 6 for
- * LED to active high. It's not clear what BIT 3 and BIT 4 does.
- --- a/drivers/net/phy/qcom/qcom.h
- +++ b/drivers/net/phy/qcom/qcom.h
- @@ -103,6 +103,71 @@
- /* Added for reference of existence but should be handled by wait_for_completion already */
- #define QCA808X_CDT_STATUS_STAT_BUSY (BIT(1) | BIT(3))
-
- +#define QCA808X_MMD7_LED_GLOBAL 0x8073
- +#define QCA808X_LED_BLINK_1 GENMASK(11, 6)
- +#define QCA808X_LED_BLINK_2 GENMASK(5, 0)
- +/* Values are the same for both BLINK_1 and BLINK_2 */
- +#define QCA808X_LED_BLINK_FREQ_MASK GENMASK(5, 3)
- +#define QCA808X_LED_BLINK_FREQ_2HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x0)
- +#define QCA808X_LED_BLINK_FREQ_4HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x1)
- +#define QCA808X_LED_BLINK_FREQ_8HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x2)
- +#define QCA808X_LED_BLINK_FREQ_16HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x3)
- +#define QCA808X_LED_BLINK_FREQ_32HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x4)
- +#define QCA808X_LED_BLINK_FREQ_64HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x5)
- +#define QCA808X_LED_BLINK_FREQ_128HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x6)
- +#define QCA808X_LED_BLINK_FREQ_256HZ FIELD_PREP(QCA808X_LED_BLINK_FREQ_MASK, 0x7)
- +#define QCA808X_LED_BLINK_DUTY_MASK GENMASK(2, 0)
- +#define QCA808X_LED_BLINK_DUTY_50_50 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x0)
- +#define QCA808X_LED_BLINK_DUTY_75_25 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x1)
- +#define QCA808X_LED_BLINK_DUTY_25_75 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x2)
- +#define QCA808X_LED_BLINK_DUTY_33_67 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x3)
- +#define QCA808X_LED_BLINK_DUTY_67_33 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x4)
- +#define QCA808X_LED_BLINK_DUTY_17_83 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x5)
- +#define QCA808X_LED_BLINK_DUTY_83_17 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x6)
- +#define QCA808X_LED_BLINK_DUTY_8_92 FIELD_PREP(QCA808X_LED_BLINK_DUTY_MASK, 0x7)
- +
- +/* LED hw control pattern is the same for every LED */
- +#define QCA808X_LED_PATTERN_MASK GENMASK(15, 0)
- +#define QCA808X_LED_SPEED2500_ON BIT(15)
- +#define QCA808X_LED_SPEED2500_BLINK BIT(14)
- +/* Follow blink trigger even if duplex or speed condition doesn't match */
- +#define QCA808X_LED_BLINK_CHECK_BYPASS BIT(13)
- +#define QCA808X_LED_FULL_DUPLEX_ON BIT(12)
- +#define QCA808X_LED_HALF_DUPLEX_ON BIT(11)
- +#define QCA808X_LED_TX_BLINK BIT(10)
- +#define QCA808X_LED_RX_BLINK BIT(9)
- +#define QCA808X_LED_TX_ON_10MS BIT(8)
- +#define QCA808X_LED_RX_ON_10MS BIT(7)
- +#define QCA808X_LED_SPEED1000_ON BIT(6)
- +#define QCA808X_LED_SPEED100_ON BIT(5)
- +#define QCA808X_LED_SPEED10_ON BIT(4)
- +#define QCA808X_LED_COLLISION_BLINK BIT(3)
- +#define QCA808X_LED_SPEED1000_BLINK BIT(2)
- +#define QCA808X_LED_SPEED100_BLINK BIT(1)
- +#define QCA808X_LED_SPEED10_BLINK BIT(0)
- +
- +/* 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 BIT(15)
- +#define QCA808X_LED_FORCE_MODE_MASK GENMASK(14, 13)
- +#define QCA808X_LED_FORCE_BLINK_1 FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x3)
- +#define QCA808X_LED_FORCE_BLINK_2 FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x2)
- +#define QCA808X_LED_FORCE_ON FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x1)
- +#define QCA808X_LED_FORCE_OFF FIELD_PREP(QCA808X_LED_FORCE_MODE_MASK, 0x0)
- +
- #define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C
- #define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B
- #define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A
|