diff mbox series

[v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines

Message ID 20250401135026.18018-1-ansuelsmth@gmail.com (mailing list archive)
State New
Headers show
Series [v2] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines | expand

Commit Message

Christian Marangi (Ansuel) April 1, 2025, 1:50 p.m. UTC
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(-)

Comments

Lorenzo Bianconi April 1, 2025, 1:56 p.m. UTC | #1
> 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
>
diff mbox series

Patch

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,
 	},