* [PATCH v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines
@ 2025-04-01 13:50 Christian Marangi
2025-04-01 13:56 ` Lorenzo Bianconi
2025-04-15 7:59 ` Linus Walleij
0 siblings, 2 replies; 3+ messages in thread
From: Christian Marangi @ 2025-04-01 13:50 UTC (permalink / raw)
To: Lorenzo Bianconi, Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Benjamin Larsson, linux-mediatek,
linux-gpio, linux-kernel, linux-arm-kernel
Cc: Christian Marangi, stable
The current PHY2 LED define are wrong and actually set BITs outside the
related mask. Fix it and set the correct value. While at it, also use
FIELD_PREP_CONST macro to make it simple to understand what values are
actually applied for the mask.
Also fix wrong PHY LED mapping. The SoC Switch supports up to 4 port but
the register define mapping for 5 PHY port, starting from 0. The mapping
was wrongly defined starting from PHY1. Reorder the function group to
start from PHY0. PHY4 is actually never supported as we don't have a
GPIO pin to assign.
Cc: stable@vger.kernel.org
Fixes: 1c8ace2d0725 ("pinctrl: airoha: Add support for EN7581 SoC")
Reviewed-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
Changes v2:
- Add Reviewed-by tag
- Use more symbolic macro
drivers/pinctrl/mediatek/pinctrl-airoha.c | 159 ++++++++++------------
1 file changed, 70 insertions(+), 89 deletions(-)
diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c
index 547a798b71c8..5d84a778683d 100644
--- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
+++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
@@ -6,6 +6,7 @@
*/
#include <dt-bindings/pinctrl/mt65xx.h>
+#include <linux/bitfield.h>
#include <linux/bits.h>
#include <linux/cleanup.h>
#include <linux/gpio/driver.h>
@@ -112,39 +113,19 @@
#define REG_LAN_LED1_MAPPING 0x0280
#define LAN4_LED_MAPPING_MASK GENMASK(18, 16)
-#define LAN4_PHY4_LED_MAP BIT(18)
-#define LAN4_PHY2_LED_MAP BIT(17)
-#define LAN4_PHY1_LED_MAP BIT(16)
-#define LAN4_PHY0_LED_MAP 0
-#define LAN4_PHY3_LED_MAP GENMASK(17, 16)
+#define LAN4_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN4_LED_MAPPING_MASK, (_n))
#define LAN3_LED_MAPPING_MASK GENMASK(14, 12)
-#define LAN3_PHY4_LED_MAP BIT(14)
-#define LAN3_PHY2_LED_MAP BIT(13)
-#define LAN3_PHY1_LED_MAP BIT(12)
-#define LAN3_PHY0_LED_MAP 0
-#define LAN3_PHY3_LED_MAP GENMASK(13, 12)
+#define LAN3_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN3_LED_MAPPING_MASK, (_n))
#define LAN2_LED_MAPPING_MASK GENMASK(10, 8)
-#define LAN2_PHY4_LED_MAP BIT(12)
-#define LAN2_PHY2_LED_MAP BIT(11)
-#define LAN2_PHY1_LED_MAP BIT(10)
-#define LAN2_PHY0_LED_MAP 0
-#define LAN2_PHY3_LED_MAP GENMASK(11, 10)
+#define LAN2_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN2_LED_MAPPING_MASK, (_n))
#define LAN1_LED_MAPPING_MASK GENMASK(6, 4)
-#define LAN1_PHY4_LED_MAP BIT(6)
-#define LAN1_PHY2_LED_MAP BIT(5)
-#define LAN1_PHY1_LED_MAP BIT(4)
-#define LAN1_PHY0_LED_MAP 0
-#define LAN1_PHY3_LED_MAP GENMASK(5, 4)
+#define LAN1_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN1_LED_MAPPING_MASK, (_n))
#define LAN0_LED_MAPPING_MASK GENMASK(2, 0)
-#define LAN0_PHY4_LED_MAP BIT(3)
-#define LAN0_PHY2_LED_MAP BIT(2)
-#define LAN0_PHY1_LED_MAP BIT(1)
-#define LAN0_PHY0_LED_MAP 0
-#define LAN0_PHY3_LED_MAP GENMASK(2, 1)
+#define LAN0_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN0_LED_MAPPING_MASK, (_n))
/* CONF */
#define REG_I2C_SDA_E2 0x001c
@@ -1476,8 +1457,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY1_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(0)
},
.regmap_size = 2,
}, {
@@ -1491,8 +1472,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY1_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(0)
},
.regmap_size = 2,
}, {
@@ -1506,8 +1487,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY1_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(0)
},
.regmap_size = 2,
}, {
@@ -1521,8 +1502,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY1_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(0)
},
.regmap_size = 2,
},
@@ -1540,8 +1521,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY2_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(1)
},
.regmap_size = 2,
}, {
@@ -1555,8 +1536,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY2_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(1)
},
.regmap_size = 2,
}, {
@@ -1570,8 +1551,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY2_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(1)
},
.regmap_size = 2,
}, {
@@ -1585,8 +1566,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY2_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(1)
},
.regmap_size = 2,
},
@@ -1604,8 +1585,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY3_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(2)
},
.regmap_size = 2,
}, {
@@ -1619,8 +1600,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY3_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(2)
},
.regmap_size = 2,
}, {
@@ -1634,8 +1615,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY3_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(2)
},
.regmap_size = 2,
}, {
@@ -1649,8 +1630,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY3_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(2)
},
.regmap_size = 2,
},
@@ -1668,8 +1649,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY4_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(3)
},
.regmap_size = 2,
}, {
@@ -1683,8 +1664,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY4_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(3)
},
.regmap_size = 2,
}, {
@@ -1698,8 +1679,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY4_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(3)
},
.regmap_size = 2,
}, {
@@ -1713,8 +1694,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED0_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY4_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(3)
},
.regmap_size = 2,
},
@@ -1732,8 +1713,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY1_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(0)
},
.regmap_size = 2,
}, {
@@ -1747,8 +1728,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY1_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(0)
},
.regmap_size = 2,
}, {
@@ -1762,8 +1743,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY1_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(0)
},
.regmap_size = 2,
}, {
@@ -1777,8 +1758,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY1_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(0)
},
.regmap_size = 2,
},
@@ -1796,8 +1777,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY2_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(1)
},
.regmap_size = 2,
}, {
@@ -1811,8 +1792,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY2_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(1)
},
.regmap_size = 2,
}, {
@@ -1826,8 +1807,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY2_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(1)
},
.regmap_size = 2,
}, {
@@ -1841,8 +1822,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY2_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(1)
},
.regmap_size = 2,
},
@@ -1860,8 +1841,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY3_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(2)
},
.regmap_size = 2,
}, {
@@ -1875,8 +1856,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY3_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(2)
},
.regmap_size = 2,
}, {
@@ -1890,8 +1871,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY3_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(2)
},
.regmap_size = 2,
}, {
@@ -1905,8 +1886,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY3_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(2)
},
.regmap_size = 2,
},
@@ -1924,8 +1905,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN1_LED_MAPPING_MASK,
- LAN1_PHY4_LED_MAP
+ LAN0_LED_MAPPING_MASK,
+ LAN0_PHY_LED_MAP(3)
},
.regmap_size = 2,
}, {
@@ -1939,8 +1920,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN2_LED_MAPPING_MASK,
- LAN2_PHY4_LED_MAP
+ LAN1_LED_MAPPING_MASK,
+ LAN1_PHY_LED_MAP(3)
},
.regmap_size = 2,
}, {
@@ -1954,8 +1935,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN3_LED_MAPPING_MASK,
- LAN3_PHY4_LED_MAP
+ LAN2_LED_MAPPING_MASK,
+ LAN2_PHY_LED_MAP(3)
},
.regmap_size = 2,
}, {
@@ -1969,8 +1950,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
.regmap[1] = {
AIROHA_FUNC_MUX,
REG_LAN_LED1_MAPPING,
- LAN4_LED_MAPPING_MASK,
- LAN4_PHY4_LED_MAP
+ LAN3_LED_MAPPING_MASK,
+ LAN3_PHY_LED_MAP(3)
},
.regmap_size = 2,
},
--
2.48.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines
2025-04-01 13:50 [PATCH v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines Christian Marangi
@ 2025-04-01 13:56 ` Lorenzo Bianconi
2025-04-15 7:59 ` Linus Walleij
1 sibling, 0 replies; 3+ messages in thread
From: Lorenzo Bianconi @ 2025-04-01 13:56 UTC (permalink / raw)
To: Christian Marangi
Cc: Sean Wang, Linus Walleij, Matthias Brugger,
AngeloGioacchino Del Regno, Benjamin Larsson, linux-mediatek,
linux-gpio, linux-kernel, linux-arm-kernel, stable
[-- Attachment #1: Type: text/plain, Size: 13800 bytes --]
> The current PHY2 LED define are wrong and actually set BITs outside the
> related mask. Fix it and set the correct value. While at it, also use
> FIELD_PREP_CONST macro to make it simple to understand what values are
> actually applied for the mask.
>
> Also fix wrong PHY LED mapping. The SoC Switch supports up to 4 port but
> the register define mapping for 5 PHY port, starting from 0. The mapping
> was wrongly defined starting from PHY1. Reorder the function group to
> start from PHY0. PHY4 is actually never supported as we don't have a
> GPIO pin to assign.
>
> Cc: stable@vger.kernel.org
> Fixes: 1c8ace2d0725 ("pinctrl: airoha: Add support for EN7581 SoC")
> Reviewed-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
> Changes v2:
> - Add Reviewed-by tag
> - Use more symbolic macro
>
> drivers/pinctrl/mediatek/pinctrl-airoha.c | 159 ++++++++++------------
> 1 file changed, 70 insertions(+), 89 deletions(-)
>
> diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c
> index 547a798b71c8..5d84a778683d 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
> +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
> @@ -6,6 +6,7 @@
> */
>
> #include <dt-bindings/pinctrl/mt65xx.h>
> +#include <linux/bitfield.h>
> #include <linux/bits.h>
> #include <linux/cleanup.h>
> #include <linux/gpio/driver.h>
> @@ -112,39 +113,19 @@
> #define REG_LAN_LED1_MAPPING 0x0280
>
> #define LAN4_LED_MAPPING_MASK GENMASK(18, 16)
> -#define LAN4_PHY4_LED_MAP BIT(18)
> -#define LAN4_PHY2_LED_MAP BIT(17)
> -#define LAN4_PHY1_LED_MAP BIT(16)
> -#define LAN4_PHY0_LED_MAP 0
> -#define LAN4_PHY3_LED_MAP GENMASK(17, 16)
> +#define LAN4_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN4_LED_MAPPING_MASK, (_n))
>
> #define LAN3_LED_MAPPING_MASK GENMASK(14, 12)
> -#define LAN3_PHY4_LED_MAP BIT(14)
> -#define LAN3_PHY2_LED_MAP BIT(13)
> -#define LAN3_PHY1_LED_MAP BIT(12)
> -#define LAN3_PHY0_LED_MAP 0
> -#define LAN3_PHY3_LED_MAP GENMASK(13, 12)
> +#define LAN3_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN3_LED_MAPPING_MASK, (_n))
>
> #define LAN2_LED_MAPPING_MASK GENMASK(10, 8)
> -#define LAN2_PHY4_LED_MAP BIT(12)
> -#define LAN2_PHY2_LED_MAP BIT(11)
> -#define LAN2_PHY1_LED_MAP BIT(10)
> -#define LAN2_PHY0_LED_MAP 0
> -#define LAN2_PHY3_LED_MAP GENMASK(11, 10)
> +#define LAN2_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN2_LED_MAPPING_MASK, (_n))
>
> #define LAN1_LED_MAPPING_MASK GENMASK(6, 4)
> -#define LAN1_PHY4_LED_MAP BIT(6)
> -#define LAN1_PHY2_LED_MAP BIT(5)
> -#define LAN1_PHY1_LED_MAP BIT(4)
> -#define LAN1_PHY0_LED_MAP 0
> -#define LAN1_PHY3_LED_MAP GENMASK(5, 4)
> +#define LAN1_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN1_LED_MAPPING_MASK, (_n))
>
> #define LAN0_LED_MAPPING_MASK GENMASK(2, 0)
> -#define LAN0_PHY4_LED_MAP BIT(3)
> -#define LAN0_PHY2_LED_MAP BIT(2)
> -#define LAN0_PHY1_LED_MAP BIT(1)
> -#define LAN0_PHY0_LED_MAP 0
> -#define LAN0_PHY3_LED_MAP GENMASK(2, 1)
> +#define LAN0_PHY_LED_MAP(_n) FIELD_PREP_CONST(LAN0_LED_MAPPING_MASK, (_n))
>
> /* CONF */
> #define REG_I2C_SDA_E2 0x001c
> @@ -1476,8 +1457,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY1_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> }, {
> @@ -1491,8 +1472,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY1_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> }, {
> @@ -1506,8 +1487,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY1_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> }, {
> @@ -1521,8 +1502,8 @@ static const struct airoha_pinctrl_func_group phy1_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY1_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> },
> @@ -1540,8 +1521,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY2_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> }, {
> @@ -1555,8 +1536,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY2_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> }, {
> @@ -1570,8 +1551,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY2_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> }, {
> @@ -1585,8 +1566,8 @@ static const struct airoha_pinctrl_func_group phy2_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY2_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> },
> @@ -1604,8 +1585,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY3_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> }, {
> @@ -1619,8 +1600,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY3_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> }, {
> @@ -1634,8 +1615,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY3_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> }, {
> @@ -1649,8 +1630,8 @@ static const struct airoha_pinctrl_func_group phy3_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY3_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> },
> @@ -1668,8 +1649,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY4_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> }, {
> @@ -1683,8 +1664,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY4_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> }, {
> @@ -1698,8 +1679,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY4_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> }, {
> @@ -1713,8 +1694,8 @@ static const struct airoha_pinctrl_func_group phy4_led0_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED0_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY4_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> },
> @@ -1732,8 +1713,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY1_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> }, {
> @@ -1747,8 +1728,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY1_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> }, {
> @@ -1762,8 +1743,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY1_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> }, {
> @@ -1777,8 +1758,8 @@ static const struct airoha_pinctrl_func_group phy1_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY1_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(0)
> },
> .regmap_size = 2,
> },
> @@ -1796,8 +1777,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY2_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> }, {
> @@ -1811,8 +1792,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY2_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> }, {
> @@ -1826,8 +1807,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY2_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> }, {
> @@ -1841,8 +1822,8 @@ static const struct airoha_pinctrl_func_group phy2_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY2_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(1)
> },
> .regmap_size = 2,
> },
> @@ -1860,8 +1841,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY3_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> }, {
> @@ -1875,8 +1856,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY3_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> }, {
> @@ -1890,8 +1871,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY3_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> }, {
> @@ -1905,8 +1886,8 @@ static const struct airoha_pinctrl_func_group phy3_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY3_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(2)
> },
> .regmap_size = 2,
> },
> @@ -1924,8 +1905,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN1_LED_MAPPING_MASK,
> - LAN1_PHY4_LED_MAP
> + LAN0_LED_MAPPING_MASK,
> + LAN0_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> }, {
> @@ -1939,8 +1920,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN2_LED_MAPPING_MASK,
> - LAN2_PHY4_LED_MAP
> + LAN1_LED_MAPPING_MASK,
> + LAN1_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> }, {
> @@ -1954,8 +1935,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN3_LED_MAPPING_MASK,
> - LAN3_PHY4_LED_MAP
> + LAN2_LED_MAPPING_MASK,
> + LAN2_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> }, {
> @@ -1969,8 +1950,8 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
> .regmap[1] = {
> AIROHA_FUNC_MUX,
> REG_LAN_LED1_MAPPING,
> - LAN4_LED_MAPPING_MASK,
> - LAN4_PHY4_LED_MAP
> + LAN3_LED_MAPPING_MASK,
> + LAN3_PHY_LED_MAP(3)
> },
> .regmap_size = 2,
> },
> --
> 2.48.1
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines
2025-04-01 13:50 [PATCH v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines Christian Marangi
2025-04-01 13:56 ` Lorenzo Bianconi
@ 2025-04-15 7:59 ` Linus Walleij
1 sibling, 0 replies; 3+ messages in thread
From: Linus Walleij @ 2025-04-15 7:59 UTC (permalink / raw)
To: Christian Marangi
Cc: Lorenzo Bianconi, Sean Wang, Matthias Brugger,
AngeloGioacchino Del Regno, Benjamin Larsson, linux-mediatek,
linux-gpio, linux-kernel, linux-arm-kernel, stable
On Tue, Apr 1, 2025 at 3:50 PM Christian Marangi <ansuelsmth@gmail.com> wrote:
> The current PHY2 LED define are wrong and actually set BITs outside the
> related mask. Fix it and set the correct value. While at it, also use
> FIELD_PREP_CONST macro to make it simple to understand what values are
> actually applied for the mask.
>
> Also fix wrong PHY LED mapping. The SoC Switch supports up to 4 port but
> the register define mapping for 5 PHY port, starting from 0. The mapping
> was wrongly defined starting from PHY1. Reorder the function group to
> start from PHY0. PHY4 is actually never supported as we don't have a
> GPIO pin to assign.
>
> Cc: stable@vger.kernel.org
> Fixes: 1c8ace2d0725 ("pinctrl: airoha: Add support for EN7581 SoC")
> Reviewed-by: Benjamin Larsson <benjamin.larsson@genexis.eu>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Patch applied for fixes.
Sorry for the delay!
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-04-15 8:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-01 13:50 [PATCH v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines Christian Marangi
2025-04-01 13:56 ` Lorenzo Bianconi
2025-04-15 7:59 ` Linus Walleij
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).