diff --git a/target/linux/airoha/patches-6.18/102-02-v6.19-net-airoha-npu-Add-airoha_npu_soc_data-struct.patch b/target/linux/airoha/patches-6.18/102-02-v6.19-net-airoha-npu-Add-airoha_npu_soc_data-struct.patch index 09972a9b62..4d2e712410 100644 --- a/target/linux/airoha/patches-6.18/102-02-v6.19-net-airoha-npu-Add-airoha_npu_soc_data-struct.patch +++ b/target/linux/airoha/patches-6.18/102-02-v6.19-net-airoha-npu-Add-airoha_npu_soc_data-struct.patch @@ -1,7 +1,7 @@ From 0850ae496d534847ec2c26744521c1bce04ec59d Mon Sep 17 00:00:00 2001 From: Lorenzo Bianconi Date: Mon, 13 Oct 2025 15:58:50 +0200 -Subject: [PATCH 2/3] net: airoha: npu: Add airoha_npu_soc_data struct +Subject: [PATCH] net: airoha: npu: Add airoha_npu_soc_data struct Introduce airoha_npu_soc_data structure in order to generalize per-SoC NPU firmware info. Introduce airoha_npu_load_firmware utility routine. @@ -15,6 +15,8 @@ Signed-off-by: Jakub Kicinski drivers/net/ethernet/airoha/airoha_npu.c | 77 ++++++++++++++++-------- 1 file changed, 51 insertions(+), 26 deletions(-) +diff --git a/drivers/net/ethernet/airoha/airoha_npu.c b/drivers/net/ethernet/airoha/airoha_npu.c +index 8c883f2b2d36b7..41944cc5f6b062 100644 --- a/drivers/net/ethernet/airoha/airoha_npu.c +++ b/drivers/net/ethernet/airoha/airoha_npu.c @@ -103,6 +103,16 @@ enum { @@ -34,12 +36,12 @@ Signed-off-by: Jakub Kicinski #define MBOX_MSG_FUNC_ID GENMASK(14, 11) #define MBOX_MSG_STATIC_BUF BIT(5) #define MBOX_MSG_STATUS GENMASK(4, 2) -@@ -182,49 +192,53 @@ static int airoha_npu_send_msg(struct ai +@@ -182,49 +192,53 @@ static int airoha_npu_send_msg(struct airoha_npu *npu, int func_id, return ret; } -static int airoha_npu_run_firmware(struct device *dev, void __iomem *base, -- struct reserved_mem *rmem) +- struct resource *res) +static int airoha_npu_load_firmware(struct device *dev, void __iomem *addr, + const struct airoha_npu_fw *fw_info) { @@ -61,7 +63,7 @@ Signed-off-by: Jakub Kicinski goto out; } -- addr = devm_ioremap(dev, rmem->base, rmem->size); +- addr = devm_ioremap_resource(dev, res); - if (IS_ERR(addr)) { - ret = PTR_ERR(addr); - goto out; @@ -84,7 +86,7 @@ Signed-off-by: Jakub Kicinski - goto out; - } +static int airoha_npu_run_firmware(struct device *dev, void __iomem *base, -+ struct reserved_mem *rmem) ++ struct resource *res) +{ + const struct airoha_npu_soc_data *soc; + void __iomem *addr; @@ -98,7 +100,7 @@ Signed-off-by: Jakub Kicinski + return -EINVAL; - return ret; -+ addr = devm_ioremap(dev, rmem->base, rmem->size); ++ addr = devm_ioremap_resource(dev, res); + if (IS_ERR(addr)) + return PTR_ERR(addr); + @@ -113,7 +115,7 @@ Signed-off-by: Jakub Kicinski } static irqreturn_t airoha_npu_mbox_handler(int irq, void *npu_instance) -@@ -596,8 +610,19 @@ void airoha_npu_put(struct airoha_npu *n +@@ -597,8 +611,19 @@ void airoha_npu_put(struct airoha_npu *npu) } EXPORT_SYMBOL_GPL(airoha_npu_put); diff --git a/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch b/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch index 9546fa3e83..bcb056b31a 100644 --- a/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch +++ b/target/linux/airoha/patches-6.18/109-01-v6.19-pinctrl-airoha-generalize-pins-group-function-confs-.patch @@ -1,7 +1,7 @@ From 4043b0c45f8555a079bdac69a19ed08695a47a7b Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 7 Nov 2025 00:57:04 +0100 -Subject: [PATCH 1/5] pinctrl: airoha: generalize pins/group/function/confs +Subject: [PATCH] pinctrl: airoha: generalize pins/group/function/confs handling In preparation for support of Airoha AN7583, generalize @@ -17,6 +17,8 @@ Signed-off-by: Linus Walleij drivers/pinctrl/mediatek/pinctrl-airoha.c | 567 ++++++++++++---------- 1 file changed, 318 insertions(+), 249 deletions(-) +diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c +index f1cf2578fe423e..32e5c1b32d5071 100644 --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c @@ -30,15 +30,15 @@ @@ -90,7 +92,7 @@ Signed-off-by: Linus Walleij PINCTRL_PIN(0, "uart1_txd"), PINCTRL_PIN(1, "uart1_rxd"), PINCTRL_PIN(2, "i2c_scl"), -@@ -427,172 +457,172 @@ static struct pinctrl_pin_desc airoha_pi +@@ -427,172 +457,172 @@ static struct pinctrl_pin_desc airoha_pinctrl_pins[] = { PINCTRL_PIN(63, "pcie_reset2"), }; @@ -429,7 +431,7 @@ Signed-off-by: Linus Walleij }; static const char *const pon_groups[] = { "pon" }; -@@ -1955,33 +1985,33 @@ static const struct airoha_pinctrl_func_ +@@ -1955,33 +1985,33 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = { }, }; @@ -488,7 +490,7 @@ Signed-off-by: Linus Walleij PINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK), PINCTRL_CONF_DESC(2, REG_I2C_SDA_PU, I2C_SDA_PU_MASK), -@@ -2042,7 +2072,7 @@ static const struct airoha_pinctrl_conf +@@ -2042,7 +2072,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_pullup_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK), }; @@ -497,7 +499,7 @@ Signed-off-by: Linus Walleij PINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK), PINCTRL_CONF_DESC(2, REG_I2C_SDA_PD, I2C_SDA_PD_MASK), -@@ -2103,7 +2133,7 @@ static const struct airoha_pinctrl_conf +@@ -2103,7 +2133,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_pulldown_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK), }; @@ -506,7 +508,7 @@ Signed-off-by: Linus Walleij PINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK), PINCTRL_CONF_DESC(2, REG_I2C_SDA_E2, I2C_SDA_E2_MASK), -@@ -2164,7 +2194,7 @@ static const struct airoha_pinctrl_conf +@@ -2164,7 +2194,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e2_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK), }; @@ -515,7 +517,7 @@ Signed-off-by: Linus Walleij PINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK), PINCTRL_CONF_DESC(2, REG_I2C_SDA_E4, I2C_SDA_E4_MASK), -@@ -2225,7 +2255,7 @@ static const struct airoha_pinctrl_conf +@@ -2225,7 +2255,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e4_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK), }; @@ -524,7 +526,7 @@ Signed-off-by: Linus Walleij PINCTRL_CONF_DESC(61, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK), PINCTRL_CONF_DESC(62, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK), PINCTRL_CONF_DESC(63, REG_PCIE_RESET_OD, PCIE2_RESET_OD_MASK), -@@ -2547,12 +2577,17 @@ airoha_pinctrl_get_conf_reg(const struct +@@ -2546,12 +2576,17 @@ airoha_pinctrl_get_conf_reg(const struct airoha_pinctrl_conf *conf, } static int airoha_pinctrl_get_conf(struct airoha_pinctrl *pinctrl, @@ -545,7 +547,7 @@ Signed-off-by: Linus Walleij if (!reg) return -EINVAL; -@@ -2565,12 +2600,17 @@ static int airoha_pinctrl_get_conf(struc +@@ -2564,12 +2599,17 @@ static int airoha_pinctrl_get_conf(struct airoha_pinctrl *pinctrl, } static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl, @@ -566,7 +568,7 @@ Signed-off-by: Linus Walleij if (!reg) return -EINVAL; -@@ -2583,44 +2623,34 @@ static int airoha_pinctrl_set_conf(struc +@@ -2582,44 +2622,34 @@ static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl, } #define airoha_pinctrl_get_pullup_conf(pinctrl, pin, val) \ @@ -621,7 +623,7 @@ Signed-off-by: Linus Walleij (pin), (val)) static int airoha_pinconf_get_direction(struct pinctrl_dev *pctrl_dev, u32 p) -@@ -2799,12 +2829,13 @@ static int airoha_pinconf_set(struct pin +@@ -2796,12 +2826,13 @@ static int airoha_pinconf_set(struct pinctrl_dev *pctrl_dev, static int airoha_pinconf_group_get(struct pinctrl_dev *pctrl_dev, unsigned int group, unsigned long *config) { @@ -637,7 +639,7 @@ Signed-off-by: Linus Walleij config)) return -ENOTSUPP; -@@ -2821,13 +2852,14 @@ static int airoha_pinconf_group_set(stru +@@ -2818,13 +2849,14 @@ static int airoha_pinconf_group_set(struct pinctrl_dev *pctrl_dev, unsigned int group, unsigned long *configs, unsigned int num_configs) { @@ -654,11 +656,11 @@ Signed-off-by: Linus Walleij configs, num_configs); if (err) return err; -@@ -2853,23 +2885,16 @@ static const struct pinctrl_ops airoha_p +@@ -2850,23 +2882,16 @@ static const struct pinctrl_ops airoha_pctlops = { .dt_free_map = pinconf_generic_dt_free_map, }; --static struct pinctrl_desc airoha_pinctrl_desc = { +-static const struct pinctrl_desc airoha_pinctrl_desc = { - .name = KBUILD_MODNAME, - .owner = THIS_MODULE, - .pctlops = &airoha_pctlops, @@ -681,7 +683,7 @@ Signed-off-by: Linus Walleij pinctrl = devm_kzalloc(dev, sizeof(*pinctrl), GFP_KERNEL); if (!pinctrl) return -ENOMEM; -@@ -2884,14 +2909,23 @@ static int airoha_pinctrl_probe(struct p +@@ -2881,14 +2906,23 @@ static int airoha_pinctrl_probe(struct platform_device *pdev) pinctrl->chip_scu = map; @@ -708,7 +710,7 @@ Signed-off-by: Linus Walleij err = pinctrl_generic_add_group(pinctrl->ctrl, grp->name, grp->pins, grp->npins, -@@ -2904,10 +2938,10 @@ static int airoha_pinctrl_probe(struct p +@@ -2901,10 +2935,10 @@ static int airoha_pinctrl_probe(struct platform_device *pdev) } /* build functions */ @@ -718,10 +720,10 @@ Signed-off-by: Linus Walleij - func = &airoha_pinctrl_funcs[i]; + func = &data->funcs[i]; - err = pinmux_generic_add_function(pinctrl->ctrl, - func->desc.name, - func->desc.groups, -@@ -2920,6 +2954,10 @@ static int airoha_pinctrl_probe(struct p + err = pinmux_generic_add_pinfunction(pinctrl->ctrl, + &func->desc, + (void *)func); +@@ -2915,6 +2949,10 @@ static int airoha_pinctrl_probe(struct platform_device *pdev) } } @@ -732,7 +734,7 @@ Signed-off-by: Linus Walleij err = pinctrl_enable(pinctrl->ctrl); if (err) return err; -@@ -2928,8 +2966,39 @@ static int airoha_pinctrl_probe(struct p +@@ -2923,8 +2961,39 @@ static int airoha_pinctrl_probe(struct platform_device *pdev) return airoha_pinctrl_add_gpiochip(pinctrl, pdev); } diff --git a/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch b/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch index 569fcafaa2..6f2ebc1237 100644 --- a/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch +++ b/target/linux/airoha/patches-6.18/109-02-v6.19-pinctrl-airoha-convert-PHY-LED-GPIO-to-macro.patch @@ -1,7 +1,7 @@ From 579839c9548cf2a85e873ad787bc2fa6610bf8ab Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 7 Nov 2025 00:57:05 +0100 -Subject: [PATCH 2/5] pinctrl: airoha: convert PHY LED GPIO to macro +Subject: [PATCH] pinctrl: airoha: convert PHY LED GPIO to macro PHY LED GPIO pinctrl struct definition is very similar across the different 4 PHY and 2 LED and it can be generelized to a macro. @@ -14,9 +14,11 @@ Signed-off-by: Linus Walleij drivers/pinctrl/mediatek/pinctrl-airoha.c | 588 ++++------------------ 1 file changed, 100 insertions(+), 488 deletions(-) +diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c +index 32e5c1b32d5071..cb0edc2a66a1e6 100644 --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -1473,516 +1473,128 @@ static const struct airoha_pinctrl_func_ +@@ -1473,516 +1473,128 @@ static const struct airoha_pinctrl_func_group pwm_func_group[] = { }, }; diff --git a/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch b/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch index cab0517f7e..0cd944b2ba 100644 --- a/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch +++ b/target/linux/airoha/patches-6.18/109-03-v6.19-pinctrl-airoha-convert-PWM-GPIO-to-macro.patch @@ -1,7 +1,7 @@ From 1552ad5d649cff9d170e5bc1d13ab1487333b4b7 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 7 Nov 2025 00:57:06 +0100 -Subject: [PATCH 3/5] pinctrl: airoha: convert PWM GPIO to macro +Subject: [PATCH] pinctrl: airoha: convert PWM GPIO to macro The PWM GPIO struct definition follow the same pattern for every GPIO pin hence it can be converted to a macro. @@ -15,9 +15,11 @@ Signed-off-by: Linus Walleij drivers/pinctrl/mediatek/pinctrl-airoha.c | 465 ++++------------------ 1 file changed, 68 insertions(+), 397 deletions(-) +diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c +index cb0edc2a66a1e6..f3cf48bdd1f83d 100644 --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c -@@ -1073,404 +1073,75 @@ static const struct airoha_pinctrl_func_ +@@ -1073,404 +1073,75 @@ static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = { }; /* PWM */ diff --git a/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch b/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch index b33af2bb78..990a154d12 100644 --- a/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch +++ b/target/linux/airoha/patches-6.18/109-05-v6.19-pinctrl-airoha-add-support-for-Airoha-AN7583-PINs.patch @@ -1,7 +1,7 @@ From 3ffeb17a9a27a668efb6fbd074835e187910a9bb Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 7 Nov 2025 00:57:08 +0100 -Subject: [PATCH 5/5] pinctrl: airoha: add support for Airoha AN7583 PINs +Subject: [PATCH] pinctrl: airoha: add support for Airoha AN7583 PINs Add all the required entry to add suppot for Airoha AN7583 PINs. @@ -14,6 +14,8 @@ Signed-off-by: Linus Walleij drivers/pinctrl/mediatek/pinctrl-airoha.c | 747 +++++++++++++++++++++- 1 file changed, 740 insertions(+), 7 deletions(-) +diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c +index f3cf48bdd1f83d..bfcedc7f920b1e 100644 --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c @@ -70,6 +70,7 @@ @@ -94,7 +96,7 @@ Signed-off-by: Linus Walleij #define UART1_RXD_PD_MASK BIT(3) #define UART1_TXD_PD_MASK BIT(2) #define I2C_SCL_PD_MASK BIT(1) -@@ -625,10 +642,223 @@ static const struct pingroup en7581_pinc +@@ -625,10 +642,223 @@ static const struct pingroup en7581_pinctrl_groups[] = { PINCTRL_PIN_GROUP("pcie_reset2", en7581_pcie_reset2), }; @@ -318,7 +320,7 @@ Signed-off-by: Linus Walleij static const char *const uart_groups[] = { "uart2", "uart2_cts_rts", "hsuart", "hsuart_cts_rts", "uart4", "uart5" }; -@@ -641,11 +871,16 @@ static const char *const pcm_spi_groups[ +@@ -641,11 +871,16 @@ static const char *const pcm_spi_groups[] = { "pcm_spi", "pcm_spi_int", "pcm_spi_cs2_p156", "pcm_spi_cs2_p128", "pcm_spi_cs3", "pcm_spi_cs4" }; @@ -335,7 +337,7 @@ Signed-off-by: Linus Walleij static const char *const pwm_groups[] = { "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", -@@ -684,6 +919,22 @@ static const char *const phy3_led1_group +@@ -684,6 +919,22 @@ static const char *const phy3_led1_groups[] = { "gpio43", "gpio44", "gpio45", "gpio46" }; static const char *const phy4_led1_groups[] = { "gpio43", "gpio44", "gpio45", "gpio46" }; @@ -358,7 +360,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func_group pon_func_group[] = { { -@@ -761,6 +1012,25 @@ static const struct airoha_pinctrl_func_ +@@ -761,6 +1012,25 @@ static const struct airoha_pinctrl_func_group mdio_func_group[] = { }, }; @@ -384,7 +386,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func_group uart_func_group[] = { { .name = "uart2", -@@ -1002,6 +1272,73 @@ static const struct airoha_pinctrl_func_ +@@ -1002,6 +1272,73 @@ static const struct airoha_pinctrl_func_group pcm_spi_func_group[] = { }, }; @@ -458,7 +460,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func_group i2s_func_group[] = { { .name = "i2s", -@@ -1072,6 +1409,28 @@ static const struct airoha_pinctrl_func_ +@@ -1072,6 +1409,28 @@ static const struct airoha_pinctrl_func_group pcie_reset_func_group[] = { }, }; @@ -487,7 +489,7 @@ Signed-off-by: Linus Walleij /* PWM */ #define AIROHA_PINCTRL_PWM(gpio, mux_val) \ { \ -@@ -1268,6 +1627,94 @@ static const struct airoha_pinctrl_func_ +@@ -1268,6 +1627,94 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = { LAN3_LED_MAPPING_MASK, LAN3_PHY_LED_MAP(2)), }; @@ -582,7 +584,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_func en7581_pinctrl_funcs[] = { PINCTRL_FUNC_DESC("pon", pon), PINCTRL_FUNC_DESC("tod_1pps", tod_1pps), -@@ -1294,6 +1741,31 @@ static const struct airoha_pinctrl_func +@@ -1294,6 +1741,31 @@ static const struct airoha_pinctrl_func en7581_pinctrl_funcs[] = { PINCTRL_FUNC_DESC("phy4_led1", phy4_led1), }; @@ -614,7 +616,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_pullup_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK), -@@ -1355,6 +1827,62 @@ static const struct airoha_pinctrl_conf +@@ -1355,6 +1827,62 @@ static const struct airoha_pinctrl_conf en7581_pinctrl_pullup_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK), }; @@ -677,7 +679,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_pulldown_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK), -@@ -1416,6 +1944,62 @@ static const struct airoha_pinctrl_conf +@@ -1416,6 +1944,62 @@ static const struct airoha_pinctrl_conf en7581_pinctrl_pulldown_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK), }; @@ -740,7 +742,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e2_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK), -@@ -1477,6 +2061,62 @@ static const struct airoha_pinctrl_conf +@@ -1477,6 +2061,62 @@ static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e2_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK), }; @@ -803,7 +805,7 @@ Signed-off-by: Linus Walleij static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e4_conf[] = { PINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK), PINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK), -@@ -1538,12 +2178,73 @@ static const struct airoha_pinctrl_conf +@@ -1538,12 +2178,73 @@ static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e4_conf[] = { PINCTRL_CONF_DESC(63, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK), }; @@ -877,7 +879,7 @@ Signed-off-by: Linus Walleij static int airoha_convert_pin_to_reg_offset(struct pinctrl_dev *pctrl_dev, struct pinctrl_gpio_range *range, int pin) -@@ -1709,7 +2410,7 @@ static const struct irq_chip airoha_gpio +@@ -1708,7 +2409,7 @@ static const struct irq_chip airoha_gpio_irq_chip = { }; static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl, @@ -886,7 +888,7 @@ Signed-off-by: Linus Walleij { struct airoha_pinctrl_gpiochip *chip = &pinctrl->gpiochip; struct gpio_chip *gc = &chip->chip; -@@ -1744,7 +2445,7 @@ static int airoha_pinctrl_add_gpiochip(s +@@ -1743,7 +2444,7 @@ static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl, return irq; err = devm_request_irq(dev, irq, airoha_irq_handler, IRQF_SHARED, @@ -895,7 +897,7 @@ Signed-off-by: Linus Walleij if (err) { dev_err(dev, "error requesting irq %d: %d\n", irq, err); return err; -@@ -1808,8 +2509,8 @@ static int airoha_pinmux_set_mux(struct +@@ -1807,8 +2508,8 @@ static int airoha_pinmux_set_mux(struct pinctrl_dev *pctrl_dev, } static int airoha_pinmux_set_direction(struct pinctrl_dev *pctrl_dev, @@ -906,7 +908,7 @@ Signed-off-by: Linus Walleij { struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); u32 mask, index; -@@ -1899,7 +2600,7 @@ static int airoha_pinctrl_set_conf(struc +@@ -1898,7 +2599,7 @@ static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl, if (regmap_update_bits(pinctrl->chip_scu, reg->offset, reg->mask, @@ -915,7 +917,7 @@ Signed-off-by: Linus Walleij return -EINVAL; return 0; -@@ -2118,8 +2819,8 @@ static int airoha_pinconf_group_get(stru +@@ -2115,8 +2816,8 @@ static int airoha_pinconf_group_get(struct pinctrl_dev *pctrl_dev, for (i = 0; i < pinctrl->grps[group].npins; i++) { if (airoha_pinconf_get(pctrl_dev, @@ -926,7 +928,7 @@ Signed-off-by: Linus Walleij return -ENOTSUPP; if (i && cur_config != *config) -@@ -2280,8 +2981,40 @@ static const struct airoha_pinctrl_match +@@ -2275,8 +2976,40 @@ static const struct airoha_pinctrl_match_data en7581_pinctrl_match_data = { }, }; diff --git a/target/linux/airoha/patches-6.18/220-06-phy-move-Airoha-PCIe-PHY-driver-to-dedicated-directo.patch b/target/linux/airoha/patches-6.18/220-06-phy-move-Airoha-PCIe-PHY-driver-to-dedicated-directo.patch index e61de0441e..d130789c9b 100644 --- a/target/linux/airoha/patches-6.18/220-06-phy-move-Airoha-PCIe-PHY-driver-to-dedicated-directo.patch +++ b/target/linux/airoha/patches-6.18/220-06-phy-move-Airoha-PCIe-PHY-driver-to-dedicated-directo.patch @@ -40,7 +40,7 @@ Signed-off-by: Christian Marangi # M: Lorenzo Bianconi --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig -@@ -72,16 +72,7 @@ config PHY_CAN_TRANSCEIVER +@@ -102,16 +102,6 @@ config PHY_CAN_TRANSCEIVER functional modes using gpios and sets the attribute max link rate, for CAN drivers. @@ -54,19 +54,27 @@ Signed-off-by: Christian Marangi - This driver create the basic PHY instance and provides initialize - callback for PCIe GEN3 port. - + config PHY_NXP_PTN3222 + tristate "NXP PTN3222 1-port eUSB2 to USB2 redriver" + depends on I2C +@@ -123,6 +113,7 @@ config PHY_NXP_PTN3222 + schemes. It supports all three USB 2.0 data rates: Low Speed, Full + Speed and High Speed. + +source "drivers/phy/airoha/Kconfig" source "drivers/phy/allwinner/Kconfig" source "drivers/phy/amlogic/Kconfig" source "drivers/phy/broadcom/Kconfig" --- a/drivers/phy/Makefile +++ b/drivers/phy/Makefile -@@ -10,8 +10,8 @@ obj-$(CONFIG_PHY_LPC18XX_USB_OTG) += phy - obj-$(CONFIG_PHY_XGENE) += phy-xgene.o +@@ -13,9 +13,9 @@ obj-$(CONFIG_PHY_XGENE) += phy-xgene.o obj-$(CONFIG_PHY_PISTACHIO_USB) += phy-pistachio-usb.o + obj-$(CONFIG_PHY_SNPS_EUSB2) += phy-snps-eusb2.o obj-$(CONFIG_USB_LGM_PHY) += phy-lgm-usb.o -obj-$(CONFIG_PHY_AIROHA_PCIE) += phy-airoha-pcie.o --obj-y += allwinner/ \ -+obj-y += airoha/ \ + obj-$(CONFIG_PHY_NXP_PTN3222) += phy-nxp-ptn3222.o +-obj-$(CONFIG_GENERIC_PHY) += allwinner/ \ ++obj-$(CONFIG_GENERIC_PHY) += airoha/ \ + allwinner/ \ amlogic/ \ broadcom/ \ diff --git a/target/linux/airoha/patches-6.18/310-09-net-pcs-airoha-add-PCS-driver-for-Airoha-AN7581-SoC.patch b/target/linux/airoha/patches-6.18/310-09-net-pcs-airoha-add-PCS-driver-for-Airoha-AN7581-SoC.patch index 1f3137f70b..7c6c687b30 100644 --- a/target/linux/airoha/patches-6.18/310-09-net-pcs-airoha-add-PCS-driver-for-Airoha-AN7581-SoC.patch +++ b/target/linux/airoha/patches-6.18/310-09-net-pcs-airoha-add-PCS-driver-for-Airoha-AN7581-SoC.patch @@ -28,20 +28,19 @@ Signed-off-by: Christian Marangi --- a/drivers/net/pcs/Kconfig +++ b/drivers/net/pcs/Kconfig -@@ -51,4 +51,6 @@ config PCS_RZN1_MIIC - on RZ/N1 SoCs. This PCS converts MII to RMII/RGMII or can be set in - pass-through mode for MII. +@@ -55,4 +55,6 @@ config PCS_RZN1_MIIC + Renesas RZ/N1, RZ/N2H, and RZ/T2H SoCs. This PCS converts MII to + RMII/RGMII, or can be set in pass-through mode for MII. +source "drivers/net/pcs/airoha/Kconfig" + endmenu --- a/drivers/net/pcs/Makefile +++ b/drivers/net/pcs/Makefile -@@ -10,3 +10,5 @@ obj-$(CONFIG_PCS_LYNX) += pcs-lynx.o +@@ -10,3 +10,4 @@ obj-$(CONFIG_PCS_LYNX) += pcs-lynx.o obj-$(CONFIG_PCS_MTK_LYNXI) += pcs-mtk-lynxi.o - obj-$(CONFIG_PCS_RZN1_MIIC) += pcs-rzn1-miic.o obj-$(CONFIG_PCS_MTK_USXGMII) += pcs-mtk-usxgmii.o -+ + obj-$(CONFIG_PCS_RZN1_MIIC) += pcs-rzn1-miic.o +obj-$(CONFIG_PCS_AIROHA) += airoha/ --- /dev/null +++ b/drivers/net/pcs/airoha/Kconfig @@ -70,7 +69,7 @@ Signed-off-by: Christian Marangi +endif --- /dev/null +++ b/drivers/net/pcs/airoha/pcs-airoha-common.c -@@ -0,0 +1,1312 @@ +@@ -0,0 +1,1313 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2024 AIROHA Inc @@ -387,7 +386,8 @@ Signed-off-by: Christian Marangi +} + +static void airoha_pcs_get_state_sgmii(struct airoha_pcs_priv *priv, -+ int index, struct phylink_link_state *state) ++ int index, unsigned int neg_mode, ++ struct phylink_link_state *state) +{ + struct airoha_pcs_maps *maps = &priv->maps[index]; + u32 bmsr, lpa; @@ -403,7 +403,7 @@ Signed-off-by: Christian Marangi + AIROHA_PCS_HSGMII_AN_SGMII_LINK_STATUS) & bmsr; + lpa = AIROHA_PCS_HSGMII_AN_SGMII_PARTNER_ABILITY & lpa; + -+ phylink_mii_c22_pcs_decode_state(state, bmsr, lpa); ++ phylink_mii_c22_pcs_decode_state(state, neg_mode, bmsr, lpa); +} + +static void airoha_pcs_get_state_hsgmii(struct airoha_pcs_priv *priv, int index, @@ -493,6 +493,7 @@ Signed-off-by: Christian Marangi +} + +static void airoha_pcs_get_state(struct phylink_pcs *pcs, ++ unsigned int neg_mode, + struct phylink_link_state *state) +{ + struct airoha_pcs_port *port = to_airoha_pcs_port(pcs); @@ -501,7 +502,7 @@ Signed-off-by: Christian Marangi + switch (state->interface) { + case PHY_INTERFACE_MODE_SGMII: + case PHY_INTERFACE_MODE_1000BASEX: -+ airoha_pcs_get_state_sgmii(priv, port->index, state); ++ airoha_pcs_get_state_sgmii(priv, port->index, neg_mode, state); + break; + case PHY_INTERFACE_MODE_2500BASEX: + airoha_pcs_get_state_hsgmii(priv, port->index, state); @@ -1282,7 +1283,6 @@ Signed-off-by: Christian Marangi + port->priv = priv; + port->index = index; + port->pcs.poll = true; -+ port->pcs.neg_mode = true; + port->pcs.ops = &airoha_pcs_ops; + + switch (data->port_type) { diff --git a/target/linux/airoha/patches-6.18/886-uart-add-en7523-support.patch b/target/linux/airoha/patches-6.18/886-uart-add-en7523-support.patch index 486208f71a..f6ea73fa47 100644 --- a/target/linux/airoha/patches-6.18/886-uart-add-en7523-support.patch +++ b/target/linux/airoha/patches-6.18/886-uart-add-en7523-support.patch @@ -201,6 +201,6 @@ unsigned int quot); int fsl8250_handle_irq(struct uart_port *port); +int en7523_set_uart_baud_rate(struct uart_port *port, unsigned int baud); + void serial8250_handle_irq_locked(struct uart_port *port, unsigned int iir); int serial8250_handle_irq(struct uart_port *port, unsigned int iir); u16 serial8250_rx_chars(struct uart_8250_port *up, u16 lsr); - void serial8250_read_char(struct uart_8250_port *up, u16 lsr); diff --git a/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch b/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch index e11d368888..5229eb4798 100644 --- a/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch +++ b/target/linux/airoha/patches-6.18/915-01-net-netfilter-flowtable-Add-the-capability-to-offloa.patch @@ -37,7 +37,7 @@ Signed-off-by: Lorenzo Bianconi struct dst_entry *dst_cache; --- a/net/netfilter/nf_flow_table_ip.c +++ b/net/netfilter/nf_flow_table_ip.c -@@ -372,6 +372,7 @@ static int nf_flow_offload_forward(struc +@@ -376,6 +376,7 @@ static int nf_flow_offload_forward(struc struct flow_offload *flow; unsigned int thoff, mtu; struct iphdr *iph; @@ -45,7 +45,7 @@ Signed-off-by: Lorenzo Bianconi dir = tuplehash->tuple.dir; flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]); -@@ -401,6 +402,12 @@ static int nf_flow_offload_forward(struc +@@ -405,6 +406,12 @@ static int nf_flow_offload_forward(struc iph = ip_hdr(skb); nf_flow_nat_ip(flow, skb, thoff, dir, iph); @@ -58,7 +58,7 @@ Signed-off-by: Lorenzo Bianconi ip_decrease_ttl(iph); skb_clear_tstamp(skb); -@@ -651,6 +658,7 @@ static int nf_flow_offload_ipv6_forward( +@@ -655,6 +662,7 @@ static int nf_flow_offload_ipv6_forward( struct flow_offload *flow; unsigned int thoff, mtu; struct ipv6hdr *ip6h; @@ -66,7 +66,7 @@ Signed-off-by: Lorenzo Bianconi dir = tuplehash->tuple.dir; flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]); -@@ -679,6 +687,12 @@ static int nf_flow_offload_ipv6_forward( +@@ -683,6 +691,12 @@ static int nf_flow_offload_ipv6_forward( ip6h = ipv6_hdr(skb); nf_flow_nat_ipv6(flow, skb, dir, ip6h); @@ -107,8 +107,8 @@ Signed-off-by: Lorenzo Bianconi #include #include +#include - #include /* for ipv4 options. */ - #include + #include + #include #include @@ -279,6 +280,27 @@ static int nft_flow_route(const struct n return 0; diff --git a/target/linux/airoha/patches-6.18/920-01-net-airoha-Introduce-airoha_gdm_dev-struct.patch b/target/linux/airoha/patches-6.18/920-01-net-airoha-Introduce-airoha_gdm_dev-struct.patch index 0bb339c910..6d2eee0446 100644 --- a/target/linux/airoha/patches-6.18/920-01-net-airoha-Introduce-airoha_gdm_dev-struct.patch +++ b/target/linux/airoha/patches-6.18/920-01-net-airoha-Introduce-airoha_gdm_dev-struct.patch @@ -961,7 +961,7 @@ Signed-off-by: Lorenzo Bianconi u8 fport); --- a/drivers/net/ethernet/airoha/airoha_ppe.c +++ b/drivers/net/ethernet/airoha/airoha_ppe.c -@@ -297,12 +297,12 @@ static void airoha_ppe_foe_set_bridge_ad +@@ -299,12 +299,12 @@ static void airoha_ppe_foe_set_bridge_ad static int airoha_ppe_foe_entry_prepare(struct airoha_eth *eth, struct airoha_foe_entry *hwe, @@ -976,7 +976,7 @@ Signed-off-by: Lorenzo Bianconi struct airoha_foe_mac_info_common *l2; u8 smac_id = 0xf; -@@ -318,10 +318,11 @@ static int airoha_ppe_foe_entry_prepare( +@@ -320,10 +320,11 @@ static int airoha_ppe_foe_entry_prepare( hwe->ib1 = val; val = FIELD_PREP(AIROHA_FOE_IB2_PORT_AG, 0x1f); @@ -990,7 +990,7 @@ Signed-off-by: Lorenzo Bianconi val |= FIELD_PREP(AIROHA_FOE_IB2_NBQ, info.idx) | FIELD_PREP(AIROHA_FOE_IB2_PSE_PORT, FE_PSE_PORT_CDM4); -@@ -331,12 +332,14 @@ static int airoha_ppe_foe_entry_prepare( +@@ -333,12 +334,14 @@ static int airoha_ppe_foe_entry_prepare( FIELD_PREP(AIROHA_FOE_MAC_WDMA_WCID, info.wcid); } else { @@ -1007,7 +1007,7 @@ Signed-off-by: Lorenzo Bianconi if (dsa_port >= 0 || eth->ports[1]) pse_port = port->id == 4 ? FE_PSE_PORT_GDM4 : port->id; -@@ -1483,7 +1486,7 @@ void airoha_ppe_check_skb(struct airoha_ +@@ -1485,7 +1488,7 @@ void airoha_ppe_check_skb(struct airoha_ void airoha_ppe_init_upd_mem(struct airoha_gdm_port *port) { struct airoha_eth *eth = port->qdma->eth; diff --git a/target/linux/airoha/patches-6.18/920-06-net-airoha-Support-multiple-net_devices-for-a-single.patch b/target/linux/airoha/patches-6.18/920-06-net-airoha-Support-multiple-net_devices-for-a-single.patch index 22f4d2920d..ad848a432a 100644 --- a/target/linux/airoha/patches-6.18/920-06-net-airoha-Support-multiple-net_devices-for-a-single.patch +++ b/target/linux/airoha/patches-6.18/920-06-net-airoha-Support-multiple-net_devices-for-a-single.patch @@ -236,7 +236,7 @@ Signed-off-by: Lorenzo Bianconi airoha_ppe_set_cpu_port(dev, i, AIROHA_GDM2_IDX); if (port->id == AIROHA_GDM4_IDX && airoha_is_7581(eth)) { -- u32 mask = FC_ID_OF_SRC_PORT_MASK(port->nbq); +- u32 mask = FC_ID_OF_SRC_PORT_MASK(nbq); + u32 mask = FC_ID_OF_SRC_PORT_MASK(dev->nbq); airoha_fe_rmw(eth, REG_SRC_PORT_FC_MAP6, mask,