From: gongzi miao Date: Fri, 14 Nov 2025 04:27:56 +0000 (+0800) Subject: kernel: bump 6.12 to 6.12.58 X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=738876e76bb20e9fffac7da54aeee642cd59e51e;p=openwrt%2Fopenwrt.git kernel: bump 6.12 to 6.12.58 changelogs: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.58 Removed upstreamed patches: 1. target/linux/generic/backport-6.12/612-01-v6.17-net-dsa-tag_brcm-legacy-reorganize-functions.patch Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=a4daaf063f8269a5881154c5b77c5ef6639d65d3 2. target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=9a7a5d50ee2e035325de9c720e4842d6759d2374 3. target/linux/realtek/patches-6.12/020-01-v6.18-timer-rtl-otto-work-around-dying-timers.patch Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=d0e217b33d42bfe52ef7ef447916a23a586e6e5c 4. target/linux/realtek/patches-6.12/020-03-v6.18-timer-rtl-otto-do-not-interfere-with-interrupts.patch Upstream: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.58&id=8cc561dd9d02f1753ae34dfdd565662828be9a9d Additional changes: - Manually adapted bcm27xx patch: * 950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch Rebased and adjusted for kernel 6.12 to fix context conflicts. - Synced lantiq DTS (danube.dtsi) with upstream bindings to fix DT validation issues on kernel 6.12. - Manually adapted DTS to match OpenWrt's lantiq DTS layout. Compile-tested on x86_64 Run-tested on x86_64 Signed-off-by: gongzi miao Link: https://github.com/openwrt/openwrt/pull/20777 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/bcm27xx/patches-6.12/950-0103-media-adv7180-Default-to-the-first-valid-input.patch b/target/linux/bcm27xx/patches-6.12/950-0103-media-adv7180-Default-to-the-first-valid-input.patch index 52a113906f..c294e5286a 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0103-media-adv7180-Default-to-the-first-valid-input.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0103-media-adv7180-Default-to-the-first-valid-input.patch @@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c -@@ -1362,6 +1362,7 @@ static const struct adv7180_chip_info ad +@@ -1352,6 +1352,7 @@ static const struct adv7180_chip_info ad static int init_device(struct adv7180_state *state) { int ret; @@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson mutex_lock(&state->mutex); -@@ -1409,6 +1410,18 @@ static int init_device(struct adv7180_st +@@ -1399,6 +1400,18 @@ static int init_device(struct adv7180_st goto out_unlock; } diff --git a/target/linux/bcm27xx/patches-6.12/950-0104-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch b/target/linux/bcm27xx/patches-6.12/950-0104-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch index 8669c93edb..1552f6358c 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0104-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0104-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch @@ -14,7 +14,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c -@@ -1351,6 +1351,7 @@ static const struct adv7180_chip_info ad +@@ -1341,6 +1341,7 @@ static const struct adv7180_chip_info ad BIT(ADV7182_INPUT_SVIDEO_AIN1_AIN2) | BIT(ADV7182_INPUT_SVIDEO_AIN3_AIN4) | BIT(ADV7182_INPUT_SVIDEO_AIN7_AIN8) | diff --git a/target/linux/bcm27xx/patches-6.12/950-0295-media-adv7180-Nasty-hack-to-allow-input-selection.patch b/target/linux/bcm27xx/patches-6.12/950-0295-media-adv7180-Nasty-hack-to-allow-input-selection.patch index c36033642b..fca52578af 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0295-media-adv7180-Nasty-hack-to-allow-input-selection.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0295-media-adv7180-Nasty-hack-to-allow-input-selection.patch @@ -30,7 +30,7 @@ Signed-off-by: Dave Stevenson struct adv7180_state; #define ADV7180_FLAG_RESET_POWERED BIT(0) -@@ -408,10 +412,24 @@ out: +@@ -403,10 +407,24 @@ out: return ret; } @@ -56,7 +56,7 @@ Signed-off-by: Dave Stevenson if (ret) return ret; -@@ -437,7 +455,11 @@ static int adv7180_program_std(struct ad +@@ -432,7 +450,11 @@ static int adv7180_program_std(struct ad static int adv7180_s_std(struct v4l2_subdev *sd, v4l2_std_id std) { struct adv7180_state *state = to_state(sd); @@ -69,7 +69,7 @@ Signed-off-by: Dave Stevenson if (ret) return ret; -@@ -459,6 +481,8 @@ static int adv7180_g_std(struct v4l2_sub +@@ -454,6 +476,8 @@ static int adv7180_g_std(struct v4l2_sub { struct adv7180_state *state = to_state(sd); @@ -78,7 +78,7 @@ Signed-off-by: Dave Stevenson *norm = state->curr_norm; return 0; -@@ -900,6 +924,8 @@ static int adv7180_s_stream(struct v4l2_ +@@ -890,6 +914,8 @@ static int adv7180_s_stream(struct v4l2_ return 0; } diff --git a/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch b/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch index 81e8d31c1b..aea33e7533 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch @@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4930,6 +4930,7 @@ static const struct { +@@ -4935,6 +4935,7 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell int ret = 0; bool invalid_bdaddr; size_t i; -@@ -4958,7 +4959,8 @@ static int hci_dev_setup_sync(struct hci +@@ -4963,7 +4964,8 @@ static int hci_dev_setup_sync(struct hci test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); if (!ret) { if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) && diff --git a/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch b/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch index 13e8d1bb3c..7b993d9987 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch @@ -55,7 +55,7 @@ Signed-off-by: Dave Stevenson #ifdef CONFIG_GUMSTIX_AM200EPD { -@@ -506,6 +509,12 @@ static void do_unregister_framebuffer(st +@@ -507,6 +510,12 @@ static void do_unregister_framebuffer(st put_fb_info(fb_info); } diff --git a/target/linux/bcm27xx/patches-6.12/950-0402-drivers-thermal-step_wise-add-support-for-hysteresis.patch b/target/linux/bcm27xx/patches-6.12/950-0402-drivers-thermal-step_wise-add-support-for-hysteresis.patch index d0c9fab6d4..b47c4322da 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0402-drivers-thermal-step_wise-add-support-for-hysteresis.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0402-drivers-thermal-step_wise-add-support-for-hysteresis.patch @@ -36,7 +36,7 @@ Signed-off-by: Jürgen Kreileder --- a/drivers/thermal/gov_step_wise.c +++ b/drivers/thermal/gov_step_wise.c -@@ -17,11 +17,11 @@ +@@ -17,13 +17,13 @@ #include "thermal_core.h" /* @@ -44,13 +44,15 @@ Signed-off-by: Jürgen Kreileder + * If the temperature is higher than a hysteresis temperature, * a. if the trend is THERMAL_TREND_RAISING, use higher cooling * state for this trip point - * b. if the trend is THERMAL_TREND_DROPPING, do nothing + * b. if the trend is THERMAL_TREND_DROPPING, use a lower cooling state + * for this trip point, but keep the cooling state above the applicable + * minimum - * If the temperature is lower than a trip point, + * If the temperature is lower than a hysteresis temperature, * a. if the trend is THERMAL_TREND_RAISING, do nothing * b. if the trend is THERMAL_TREND_DROPPING, use lower cooling * state for this trip point, if the cooling state already -@@ -74,19 +74,35 @@ static void thermal_zone_trip_update(str +@@ -87,19 +87,35 @@ static void thermal_zone_trip_update(str int trip_id = thermal_zone_trip_id(tz, trip); struct thermal_instance *instance; bool throttle = false; diff --git a/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch b/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch index 5790d79ade..9b86b31a5d 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch @@ -17,7 +17,7 @@ Signed-off-by: Dave Stevenson --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c -@@ -737,10 +737,15 @@ static int adv7180_enum_mbus_code(struct +@@ -732,10 +732,15 @@ static int adv7180_enum_mbus_code(struct struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) { @@ -34,7 +34,7 @@ Signed-off-by: Dave Stevenson return 0; } -@@ -750,7 +755,10 @@ static int adv7180_mbus_fmt(struct v4l2_ +@@ -745,7 +750,10 @@ static int adv7180_mbus_fmt(struct v4l2_ { struct adv7180_state *state = to_state(sd); diff --git a/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch b/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch index 4bc7a684eb..d67112a069 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch @@ -1,18 +1,14 @@ -From 7e58b9c99676d641ef76edd9c097f1c3c4e6c464 Mon Sep 17 00:00:00 2001 -From: Dave Stevenson -Date: Thu, 21 Dec 2023 18:03:34 +0000 -Subject: [PATCH] media: i2c: adv7180: Add support for V4L2_CID_LINK_FREQ - -For CSI2 receivers that need to know the link frequency, -add it as a control to the driver. -Interlaced modes are 216Mbp/s or 108MHz, whilst going through -the I2P to deinterlace gives 432Mb/s or 216MHz. - -Signed-off-by: Dave Stevenson ---- - drivers/media/i2c/adv7180.c | 32 +++++++++++++++++++++++++++++++- - 1 file changed, 31 insertions(+), 1 deletion(-) - +From 954129f16c200e41a00ebebe2e22efc01b243538 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Fri, 14 Nov 2025 14:08:18 +0000 +Subject: [PATCH] Revert "Revert "media: i2c: adv7180: Add support for + V4L2_CID_LINK_FREQ"" + +This reverts commit 00ecb85c58501f8f7ae75fcb069bbbad5542e853. +--- + drivers/media/i2c/adv7180.c | 39 +++++++++++++++++++++++++++++++++++-- + 1 file changed, 37 insertions(+), 2 deletions(-) + --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c @@ -189,6 +189,16 @@ @@ -40,7 +36,7 @@ Signed-off-by: Dave Stevenson }; #define to_adv7180_sd(_ctrl) (&container_of(_ctrl->handler, \ struct adv7180_state, \ -@@ -630,6 +641,9 @@ static int adv7180_s_ctrl(struct v4l2_ct +@@ -625,6 +636,9 @@ static int adv7180_s_ctrl(struct v4l2_ct if (ret) return ret; @@ -50,7 +46,7 @@ Signed-off-by: Dave Stevenson val = ctrl->val; switch (ctrl->id) { case V4L2_CID_BRIGHTNESS: -@@ -671,6 +685,7 @@ static int adv7180_s_ctrl(struct v4l2_ct +@@ -666,6 +680,7 @@ static int adv7180_s_ctrl(struct v4l2_ct ret = -EINVAL; } @@ -58,7 +54,7 @@ Signed-off-by: Dave Stevenson mutex_unlock(&state->mutex); return ret; } -@@ -691,7 +706,7 @@ static const struct v4l2_ctrl_config adv +@@ -686,7 +701,7 @@ static const struct v4l2_ctrl_config adv static int adv7180_init_controls(struct adv7180_state *state) { @@ -67,7 +63,7 @@ Signed-off-by: Dave Stevenson v4l2_ctrl_new_std(&state->ctrl_hdl, &adv7180_ctrl_ops, V4L2_CID_BRIGHTNESS, ADV7180_BRI_MIN, -@@ -717,6 +732,17 @@ static int adv7180_init_controls(struct +@@ -712,6 +727,17 @@ static int adv7180_init_controls(struct test_pattern_menu); } @@ -85,14 +81,21 @@ Signed-off-by: Dave Stevenson state->sd.ctrl_handler = &state->ctrl_hdl; if (state->ctrl_hdl.error) { int err = state->ctrl_hdl.error; -@@ -849,6 +875,10 @@ static int adv7180_set_pad_format(struct - adv7180_set_power(state, false); - adv7180_set_field_mode(state); - adv7180_set_power(state, true); +@@ -839,7 +865,16 @@ static int adv7180_set_pad_format(struct + ret = adv7180_mbus_fmt(sd, &format->format); + + if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE) { +- state->field = format->format.field; ++ if (state->field != format->format.field) { ++ state->field = format->format.field; ++ adv7180_set_power(state, false); ++ adv7180_set_field_mode(state); ++ adv7180_set_power(state, true); + if (state->chip_info->flags & ADV7180_FLAG_MIPI_CSI2) + __v4l2_ctrl_s_ctrl(state->link_freq, + (state->field == V4L2_FIELD_NONE) ? + I2P_IDX : INTERLACED_IDX); - } ++ } } else { framefmt = v4l2_subdev_state_get_format(sd_state, 0); + *framefmt = format->format; diff --git a/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch b/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch index cb98eb72fb..db23f1f1ff 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c -@@ -4930,7 +4930,8 @@ static const struct { +@@ -4935,7 +4935,8 @@ static const struct { */ static int hci_dev_setup_sync(struct hci_dev *hdev) { diff --git a/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch b/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch index d44e050e02..64176cbfc7 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch @@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -6916,6 +6916,39 @@ static int __init cgroup_disable(char *s +@@ -6932,6 +6932,39 @@ static int __init cgroup_disable(char *s } __setup("cgroup_disable=", cgroup_disable); diff --git a/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch b/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch index e0c0cc105f..acc981dc2e 100644 --- a/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch +++ b/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch @@ -18,7 +18,7 @@ Signed-off-by: Jonathan Bell --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c -@@ -6255,6 +6255,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I +@@ -6256,6 +6256,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b1, aspm_l1_acceptable_latency); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency); diff --git a/target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch b/target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch index 30f346ff1e..e27c4cd98f 100644 --- a/target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch +++ b/target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch @@ -58,7 +58,7 @@ Signed-off-by: Jonas Gorski + the phy interface, but actually requires internal delays enabled. --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -1426,6 +1426,16 @@ static void b53_adjust_531x5_rgmii(struc +@@ -1435,6 +1435,16 @@ static void b53_adjust_531x5_rgmii(struc else off = B53_RGMII_CTRL_P(port); @@ -75,7 +75,7 @@ Signed-off-by: Jonas Gorski /* Configure the port RGMII clock delay by DLL disabled and * tx_clk aligned timing (restoring to reset defaults) */ -@@ -1437,19 +1447,24 @@ static void b53_adjust_531x5_rgmii(struc +@@ -1446,19 +1456,24 @@ static void b53_adjust_531x5_rgmii(struc * account for this internal delay that is inserted, otherwise * the switch won't be able to receive correctly. * diff --git a/target/linux/generic/backport-6.12/601-06-v6.14-net-phy-marvell-implement-phy_inband_caps-method.patch b/target/linux/generic/backport-6.12/601-06-v6.14-net-phy-marvell-implement-phy_inband_caps-method.patch index fb5d9c20af..e2dfeba1d5 100644 --- a/target/linux/generic/backport-6.12/601-06-v6.14-net-phy-marvell-implement-phy_inband_caps-method.patch +++ b/target/linux/generic/backport-6.12/601-06-v6.14-net-phy-marvell-implement-phy_inband_caps-method.patch @@ -37,7 +37,7 @@ Signed-off-by: Jakub Kicinski static int m88e1111_config_aneg(struct phy_device *phydev) { int extsr = phy_read(phydev, MII_M1111_PHY_EXT_SR); -@@ -3667,6 +3681,7 @@ static struct phy_driver marvell_drivers +@@ -3704,6 +3718,7 @@ static struct phy_driver marvell_drivers .name = "Marvell 88E1112", /* PHY_GBIT_FEATURES */ .probe = marvell_probe, @@ -45,7 +45,7 @@ Signed-off-by: Jakub Kicinski .config_init = m88e1112_config_init, .config_aneg = marvell_config_aneg, .config_intr = marvell_config_intr, -@@ -3688,6 +3703,7 @@ static struct phy_driver marvell_drivers +@@ -3725,6 +3740,7 @@ static struct phy_driver marvell_drivers /* PHY_GBIT_FEATURES */ .flags = PHY_POLL_CABLE_TEST, .probe = marvell_probe, @@ -53,7 +53,7 @@ Signed-off-by: Jakub Kicinski .config_init = m88e1111gbe_config_init, .config_aneg = m88e1111_config_aneg, .read_status = marvell_read_status, -@@ -3711,6 +3727,7 @@ static struct phy_driver marvell_drivers +@@ -3748,6 +3764,7 @@ static struct phy_driver marvell_drivers .name = "Marvell 88E1111 (Finisar)", /* PHY_GBIT_FEATURES */ .probe = marvell_probe, diff --git a/target/linux/generic/backport-6.12/601-08-v6.14-net-phy-marvell-implement-config_inband-method.patch b/target/linux/generic/backport-6.12/601-08-v6.14-net-phy-marvell-implement-config_inband-method.patch index 00788d42fc..4531c507e2 100644 --- a/target/linux/generic/backport-6.12/601-08-v6.14-net-phy-marvell-implement-config_inband-method.patch +++ b/target/linux/generic/backport-6.12/601-08-v6.14-net-phy-marvell-implement-config_inband-method.patch @@ -51,7 +51,7 @@ Signed-off-by: Jakub Kicinski static int m88e1111_config_aneg(struct phy_device *phydev) { int extsr = phy_read(phydev, MII_M1111_PHY_EXT_SR); -@@ -3682,6 +3710,7 @@ static struct phy_driver marvell_drivers +@@ -3719,6 +3747,7 @@ static struct phy_driver marvell_drivers /* PHY_GBIT_FEATURES */ .probe = marvell_probe, .inband_caps = m88e1111_inband_caps, @@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski .config_init = m88e1112_config_init, .config_aneg = marvell_config_aneg, .config_intr = marvell_config_intr, -@@ -3704,6 +3733,7 @@ static struct phy_driver marvell_drivers +@@ -3741,6 +3770,7 @@ static struct phy_driver marvell_drivers .flags = PHY_POLL_CABLE_TEST, .probe = marvell_probe, .inband_caps = m88e1111_inband_caps, @@ -67,7 +67,7 @@ Signed-off-by: Jakub Kicinski .config_init = m88e1111gbe_config_init, .config_aneg = m88e1111_config_aneg, .read_status = marvell_read_status, -@@ -3728,6 +3758,7 @@ static struct phy_driver marvell_drivers +@@ -3765,6 +3795,7 @@ static struct phy_driver marvell_drivers /* PHY_GBIT_FEATURES */ .probe = marvell_probe, .inband_caps = m88e1111_inband_caps, diff --git a/target/linux/generic/backport-6.12/610-03-v6.15-net-dsa-b53-mdio-add-support-for-BCM53101.patch b/target/linux/generic/backport-6.12/610-03-v6.15-net-dsa-b53-mdio-add-support-for-BCM53101.patch index 6d69ec0648..0ec9f51395 100644 --- a/target/linux/generic/backport-6.12/610-03-v6.15-net-dsa-b53-mdio-add-support-for-BCM53101.patch +++ b/target/linux/generic/backport-6.12/610-03-v6.15-net-dsa-b53-mdio-add-support-for-BCM53101.patch @@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -2584,6 +2584,19 @@ static const struct b53_chip_data b53_sw +@@ -2603,6 +2603,19 @@ static const struct b53_chip_data b53_sw .jumbo_size_reg = B53_JUMBO_MAX_SIZE, }, { @@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski .chip_id = BCM53115_DEVICE_ID, .dev_name = "BCM53115", .vlans = 4096, -@@ -2964,6 +2977,7 @@ int b53_switch_detect(struct b53_device +@@ -2983,6 +2996,7 @@ int b53_switch_detect(struct b53_device return ret; switch (id32) { diff --git a/target/linux/generic/backport-6.12/610-04-v6.16-net-dsa-b53-implement-setting-ageing-time.patch b/target/linux/generic/backport-6.12/610-04-v6.16-net-dsa-b53-implement-setting-ageing-time.patch index 5c993a6119..1e1756d04a 100644 --- a/target/linux/generic/backport-6.12/610-04-v6.16-net-dsa-b53-implement-setting-ageing-time.patch +++ b/target/linux/generic/backport-6.12/610-04-v6.16-net-dsa-b53-implement-setting-ageing-time.patch @@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski ret = b53_reset_switch(dev); if (ret) { dev_err(ds->dev, "failed to reset switch\n"); -@@ -2444,6 +2449,28 @@ static int b53_get_max_mtu(struct dsa_sw +@@ -2463,6 +2468,28 @@ static int b53_get_max_mtu(struct dsa_sw return B53_MAX_MTU; } @@ -69,7 +69,7 @@ Signed-off-by: Jakub Kicinski static const struct phylink_mac_ops b53_phylink_mac_ops = { .mac_select_pcs = b53_phylink_mac_select_pcs, .mac_config = b53_phylink_mac_config, -@@ -2468,6 +2495,7 @@ static const struct dsa_switch_ops b53_s +@@ -2487,6 +2514,7 @@ static const struct dsa_switch_ops b53_s .support_eee = b53_support_eee, .get_mac_eee = b53_get_mac_eee, .set_mac_eee = b53_set_mac_eee, @@ -89,7 +89,7 @@ Signed-off-by: Jakub Kicinski void b53_br_leave(struct dsa_switch *ds, int port, struct dsa_bridge bridge); --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h -@@ -225,6 +225,13 @@ +@@ -224,6 +224,13 @@ #define BRCM_HDR_P5_EN BIT(1) /* Enable tagging on port 5 */ #define BRCM_HDR_P7_EN BIT(2) /* Enable tagging on port 7 */ diff --git a/target/linux/generic/backport-6.12/610-07-v6.16-net-dsa-b53-do-not-configure-bcm63xx-s-IMP-port-inte.patch b/target/linux/generic/backport-6.12/610-07-v6.16-net-dsa-b53-do-not-configure-bcm63xx-s-IMP-port-inte.patch index f2c4464b06..e70f09e050 100644 --- a/target/linux/generic/backport-6.12/610-07-v6.16-net-dsa-b53-do-not-configure-bcm63xx-s-IMP-port-inte.patch +++ b/target/linux/generic/backport-6.12/610-07-v6.16-net-dsa-b53-do-not-configure-bcm63xx-s-IMP-port-inte.patch @@ -28,7 +28,7 @@ Signed-off-by: Paolo Abeni #include #include #include -@@ -1360,24 +1361,17 @@ static void b53_adjust_63xx_rgmii(struct +@@ -1369,24 +1370,17 @@ static void b53_adjust_63xx_rgmii(struct phy_interface_t interface) { struct b53_device *dev = ds->priv; @@ -59,7 +59,7 @@ Signed-off-by: Paolo Abeni dev_dbg(ds->dev, "Configured port %d for %s\n", port, phy_modes(interface)); -@@ -1528,7 +1522,7 @@ static void b53_phylink_mac_config(struc +@@ -1537,7 +1531,7 @@ static void b53_phylink_mac_config(struc struct b53_device *dev = ds->priv; int port = dp->index; diff --git a/target/linux/generic/backport-6.12/612-01-v6.17-net-dsa-tag_brcm-legacy-reorganize-functions.patch b/target/linux/generic/backport-6.12/612-01-v6.17-net-dsa-tag_brcm-legacy-reorganize-functions.patch deleted file mode 100644 index 23d4929eaa..0000000000 --- a/target/linux/generic/backport-6.12/612-01-v6.17-net-dsa-tag_brcm-legacy-reorganize-functions.patch +++ /dev/null @@ -1,99 +0,0 @@ -From a4daaf063f8269a5881154c5b77c5ef6639d65d3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= -Date: Sat, 14 Jun 2025 09:59:47 +0200 -Subject: [PATCH] net: dsa: tag_brcm: legacy: reorganize functions -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Move brcm_leg_tag_rcv() definition to top. -This function is going to be shared between two different tags. - -Reviewed-by: Florian Fainelli -Signed-off-by: Álvaro Fernández Rojas -Link: https://patch.msgid.link/20250614080000.1884236-2-noltari@gmail.com -Signed-off-by: Jakub Kicinski ---- - net/dsa/tag_brcm.c | 64 +++++++++++++++++++++++----------------------- - 1 file changed, 32 insertions(+), 32 deletions(-) - ---- a/net/dsa/tag_brcm.c -+++ b/net/dsa/tag_brcm.c -@@ -213,6 +213,38 @@ MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROT - #endif - - #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) -+static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, -+ struct net_device *dev) -+{ -+ int len = BRCM_LEG_TAG_LEN; -+ int source_port; -+ u8 *brcm_tag; -+ -+ if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN))) -+ return NULL; -+ -+ brcm_tag = dsa_etype_header_pos_rx(skb); -+ -+ source_port = brcm_tag[5] & BRCM_LEG_PORT_ID; -+ -+ skb->dev = dsa_conduit_find_user(dev, 0, source_port); -+ if (!skb->dev) -+ return NULL; -+ -+ /* VLAN tag is added by BCM63xx internal switch */ -+ if (netdev_uses_dsa(skb->dev)) -+ len += VLAN_HLEN; -+ -+ /* Remove Broadcom tag and update checksum */ -+ skb_pull_rcsum(skb, len); -+ -+ dsa_default_offload_fwd_mark(skb); -+ -+ dsa_strip_etype_header(skb, len); -+ -+ return skb; -+} -+ - static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb, - struct net_device *dev) - { -@@ -249,38 +281,6 @@ static struct sk_buff *brcm_leg_tag_xmit - - return skb; - } -- --static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, -- struct net_device *dev) --{ -- int len = BRCM_LEG_TAG_LEN; -- int source_port; -- u8 *brcm_tag; -- -- if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN))) -- return NULL; -- -- brcm_tag = dsa_etype_header_pos_rx(skb); -- -- source_port = brcm_tag[5] & BRCM_LEG_PORT_ID; -- -- skb->dev = dsa_conduit_find_user(dev, 0, source_port); -- if (!skb->dev) -- return NULL; -- -- /* VLAN tag is added by BCM63xx internal switch */ -- if (netdev_uses_dsa(skb->dev)) -- len += VLAN_HLEN; -- -- /* Remove Broadcom tag and update checksum */ -- skb_pull_rcsum(skb, len); -- -- dsa_default_offload_fwd_mark(skb); -- -- dsa_strip_etype_header(skb, len); -- -- return skb; --} - - static const struct dsa_device_ops brcm_legacy_netdev_ops = { - .name = BRCM_LEGACY_NAME, diff --git a/target/linux/generic/backport-6.12/612-02-v6.17-net-dsa-tag_brcm-add-support-for-legacy-FCS-tags.patch b/target/linux/generic/backport-6.12/612-02-v6.17-net-dsa-tag_brcm-add-support-for-legacy-FCS-tags.patch index 9f6b71ff64..88f10be377 100644 --- a/target/linux/generic/backport-6.12/612-02-v6.17-net-dsa-tag_brcm-add-support-for-legacy-FCS-tags.patch +++ b/target/linux/generic/backport-6.12/612-02-v6.17-net-dsa-tag_brcm-add-support-for-legacy-FCS-tags.patch @@ -99,7 +99,7 @@ Signed-off-by: Jakub Kicinski static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, struct net_device *dev) { -@@ -244,7 +250,9 @@ static struct sk_buff *brcm_leg_tag_rcv( +@@ -250,7 +256,9 @@ static struct sk_buff *brcm_leg_tag_rcv( return skb; } @@ -109,7 +109,7 @@ Signed-off-by: Jakub Kicinski static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb, struct net_device *dev) { -@@ -294,6 +302,66 @@ DSA_TAG_DRIVER(brcm_legacy_netdev_ops); +@@ -300,6 +308,66 @@ DSA_TAG_DRIVER(brcm_legacy_netdev_ops); MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY, BRCM_LEGACY_NAME); #endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY */ @@ -176,7 +176,7 @@ Signed-off-by: Jakub Kicinski #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND) static struct sk_buff *brcm_tag_xmit_prepend(struct sk_buff *skb, struct net_device *dev) -@@ -328,6 +396,9 @@ static struct dsa_tag_driver *dsa_tag_dr +@@ -334,6 +402,9 @@ static struct dsa_tag_driver *dsa_tag_dr #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) &DSA_TAG_DRIVER_NAME(brcm_legacy_netdev_ops), #endif diff --git a/target/linux/generic/backport-6.12/612-03-v6.17-net-dsa-b53-support-legacy-FCS-tags.patch b/target/linux/generic/backport-6.12/612-03-v6.17-net-dsa-b53-support-legacy-FCS-tags.patch index 3fbc697f01..d04c97ef7b 100644 --- a/target/linux/generic/backport-6.12/612-03-v6.17-net-dsa-b53-support-legacy-FCS-tags.patch +++ b/target/linux/generic/backport-6.12/612-03-v6.17-net-dsa-b53-support-legacy-FCS-tags.patch @@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski This driver adds support for Broadcom managed switch chips. It supports --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -2285,8 +2285,11 @@ enum dsa_tag_protocol b53_get_tag_protoc +@@ -2304,8 +2304,11 @@ enum dsa_tag_protocol b53_get_tag_protoc goto out; } diff --git a/target/linux/generic/backport-6.12/612-04-v6.17-net-dsa-b53-detect-BCM5325-variants.patch b/target/linux/generic/backport-6.12/612-04-v6.17-net-dsa-b53-detect-BCM5325-variants.patch index 04ded31a8f..c7af2f2f80 100644 --- a/target/linux/generic/backport-6.12/612-04-v6.17-net-dsa-b53-detect-BCM5325-variants.patch +++ b/target/linux/generic/backport-6.12/612-04-v6.17-net-dsa-b53-detect-BCM5325-variants.patch @@ -21,7 +21,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -1816,7 +1816,8 @@ static int b53_arl_op(struct b53_device +@@ -1835,7 +1835,8 @@ static int b53_arl_op(struct b53_device /* Perform a read for the given MAC and VID */ b53_write48(dev, B53_ARLIO_PAGE, B53_MAC_ADDR_IDX, mac); @@ -31,7 +31,7 @@ Signed-off-by: Jakub Kicinski /* Issue a read operation for this MAC */ ret = b53_arl_rw_op(dev, 1); -@@ -2884,6 +2885,9 @@ static int b53_switch_init(struct b53_de +@@ -2903,6 +2904,9 @@ static int b53_switch_init(struct b53_de } } @@ -41,7 +41,7 @@ Signed-off-by: Jakub Kicinski dev->num_ports = fls(dev->enabled_ports); dev->ds->num_ports = min_t(unsigned int, dev->num_ports, DSA_MAX_PORTS); -@@ -2985,10 +2989,24 @@ int b53_switch_detect(struct b53_device +@@ -3004,10 +3008,24 @@ int b53_switch_detect(struct b53_device b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_25, 0xf); b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_25, &tmp); diff --git a/target/linux/generic/backport-6.12/612-05-v6.17-net-dsa-b53-add-support-for-FDB-operations-on-5325-5365.patch b/target/linux/generic/backport-6.12/612-05-v6.17-net-dsa-b53-add-support-for-FDB-operations-on-5325-5365.patch index 113528a6d5..509806acf1 100644 --- a/target/linux/generic/backport-6.12/612-05-v6.17-net-dsa-b53-add-support-for-FDB-operations-on-5325-5365.patch +++ b/target/linux/generic/backport-6.12/612-05-v6.17-net-dsa-b53-add-support-for-FDB-operations-on-5325-5365.patch @@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c -@@ -1802,6 +1802,45 @@ static int b53_arl_read(struct b53_devic +@@ -1821,6 +1821,45 @@ static int b53_arl_read(struct b53_devic return *idx >= dev->num_arl_bins ? -ENOSPC : -ENOENT; } @@ -70,7 +70,7 @@ Signed-off-by: Jakub Kicinski static int b53_arl_op(struct b53_device *dev, int op, int port, const unsigned char *addr, u16 vid, bool is_valid) { -@@ -1824,7 +1863,10 @@ static int b53_arl_op(struct b53_device +@@ -1843,7 +1882,10 @@ static int b53_arl_op(struct b53_device if (ret) return ret; @@ -82,7 +82,7 @@ Signed-off-by: Jakub Kicinski /* If this is a read, just finish now */ if (op) -@@ -1868,12 +1910,17 @@ static int b53_arl_op(struct b53_device +@@ -1887,12 +1929,17 @@ static int b53_arl_op(struct b53_device ent.is_static = true; ent.is_age = false; memcpy(ent.mac, addr, ETH_ALEN); @@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski return b53_arl_rw_op(dev, 0); } -@@ -1885,12 +1932,6 @@ int b53_fdb_add(struct dsa_switch *ds, i +@@ -1904,12 +1951,6 @@ int b53_fdb_add(struct dsa_switch *ds, i struct b53_device *priv = ds->priv; int ret; @@ -116,7 +116,7 @@ Signed-off-by: Jakub Kicinski mutex_lock(&priv->arl_mutex); ret = b53_arl_op(priv, 0, port, addr, vid, true); mutex_unlock(&priv->arl_mutex); -@@ -1917,10 +1958,15 @@ EXPORT_SYMBOL(b53_fdb_del); +@@ -1936,10 +1977,15 @@ EXPORT_SYMBOL(b53_fdb_del); static int b53_arl_search_wait(struct b53_device *dev) { unsigned int timeout = 1000; @@ -132,9 +132,9 @@ Signed-off-by: Jakub Kicinski - b53_read8(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_CTL, ®); + b53_read8(dev, B53_ARLIO_PAGE, offset, ®); if (!(reg & ARL_SRCH_STDN)) - return 0; + return -ENOENT; -@@ -1937,13 +1983,24 @@ static void b53_arl_search_rd(struct b53 +@@ -1956,13 +2002,24 @@ static void b53_arl_search_rd(struct b53 struct b53_arl_entry *ent) { u64 mac_vid; @@ -165,7 +165,7 @@ Signed-off-by: Jakub Kicinski } static int b53_fdb_copy(int port, const struct b53_arl_entry *ent, -@@ -1964,14 +2021,20 @@ int b53_fdb_dump(struct dsa_switch *ds, +@@ -1983,14 +2040,20 @@ int b53_fdb_dump(struct dsa_switch *ds, struct b53_device *priv = ds->priv; struct b53_arl_entry results[2]; unsigned int count = 0; @@ -234,7 +234,7 @@ Signed-off-by: Jakub Kicinski #include --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h -@@ -329,9 +329,10 @@ +@@ -328,9 +328,10 @@ #define ARLTBL_VID_MASK 0xfff #define ARLTBL_DATA_PORT_ID_S_25 48 #define ARLTBL_DATA_PORT_ID_MASK_25 0xf diff --git a/target/linux/generic/backport-6.12/612-12-v6.17-net-dsa-b53-fix-unicast-multicast-flooding-on-BCM5325.patch b/target/linux/generic/backport-6.12/612-12-v6.17-net-dsa-b53-fix-unicast-multicast-flooding-on-BCM5325.patch index 063622398a..6b9c86ed0c 100644 --- a/target/linux/generic/backport-6.12/612-12-v6.17-net-dsa-b53-fix-unicast-multicast-flooding-on-BCM5325.patch +++ b/target/linux/generic/backport-6.12/612-12-v6.17-net-dsa-b53-fix-unicast-multicast-flooding-on-BCM5325.patch @@ -107,7 +107,7 @@ Signed-off-by: Jakub Kicinski /* PHY Registers */ #define B53_PORT_MII_PAGE(i) (0x10 + (i)) /* Port i MII Registers */ -@@ -372,6 +373,18 @@ +@@ -371,6 +372,18 @@ #define B53_ARL_SRCH_RSTL(x) (B53_ARL_SRCH_RSTL_0 + ((x) * 0x10)) /************************************************************************* diff --git a/target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch b/target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch index 3a6e0ac80a..bad53cf177 100644 --- a/target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch +++ b/target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch @@ -403,7 +403,7 @@ Signed-off-by: Jakub Kicinski }; --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c -@@ -4181,7 +4181,7 @@ static struct phy_driver marvell_drivers +@@ -4218,7 +4218,7 @@ static struct phy_driver marvell_drivers module_phy_driver(marvell_drivers); diff --git a/target/linux/generic/backport-6.12/780-23-v6.14-r8169-adjust-version-numbering-for-RTL8126.patch b/target/linux/generic/backport-6.12/780-23-v6.14-r8169-adjust-version-numbering-for-RTL8126.patch index 815c1fcf72..9e3fd0a66e 100644 --- a/target/linux/generic/backport-6.12/780-23-v6.14-r8169-adjust-version-numbering-for-RTL8126.patch +++ b/target/linux/generic/backport-6.12/780-23-v6.14-r8169-adjust-version-numbering-for-RTL8126.patch @@ -183,7 +183,7 @@ Signed-off-by: Jakub Kicinski else if (tp->mac_version == RTL_GIGA_MAC_VER_63) r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200); @@ -3742,8 +3742,8 @@ static void rtl_hw_start_8125_common(str - r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030); + r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0000); r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000); r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001); - if (tp->mac_version == RTL_GIGA_MAC_VER_65 || diff --git a/target/linux/generic/backport-6.12/780-39-v6.16-r8169-merge-chip-versions-70-and-71-RTL8126A.patch b/target/linux/generic/backport-6.12/780-39-v6.16-r8169-merge-chip-versions-70-and-71-RTL8126A.patch index da105f6fe3..ecc04ef6ae 100644 --- a/target/linux/generic/backport-6.12/780-39-v6.16-r8169-merge-chip-versions-70-and-71-RTL8126A.patch +++ b/target/linux/generic/backport-6.12/780-39-v6.16-r8169-merge-chip-versions-70-and-71-RTL8126A.patch @@ -69,7 +69,7 @@ Signed-off-by: Jakub Kicinski else if (tp->mac_version == RTL_GIGA_MAC_VER_63) r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200); @@ -3714,8 +3710,7 @@ static void rtl_hw_start_8125_common(str - r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030); + r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0000); r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000); r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001); - if (tp->mac_version == RTL_GIGA_MAC_VER_70 || diff --git a/target/linux/generic/backport-6.12/780-42-v6.16-r8169-add-support-for-RTL8127A.patch b/target/linux/generic/backport-6.12/780-42-v6.16-r8169-add-support-for-RTL8127A.patch index 37a2d8667e..5ed1f341ec 100644 --- a/target/linux/generic/backport-6.12/780-42-v6.16-r8169-add-support-for-RTL8127A.patch +++ b/target/linux/generic/backport-6.12/780-42-v6.16-r8169-add-support-for-RTL8127A.patch @@ -97,7 +97,7 @@ Signed-off-by: Jakub Kicinski else if (tp->mac_version == RTL_GIGA_MAC_VER_63) r8168_mac_ocp_modify(tp, 0xe614, 0x0700, 0x0200); @@ -3708,7 +3720,8 @@ static void rtl_hw_start_8125_common(str - r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0030); + r8168_mac_ocp_modify(tp, 0xe056, 0x00f0, 0x0000); r8168_mac_ocp_modify(tp, 0xe040, 0x1000, 0x0000); r8168_mac_ocp_modify(tp, 0xea1c, 0x0003, 0x0001); - if (tp->mac_version == RTL_GIGA_MAC_VER_70) diff --git a/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch b/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch index 82a23e6e44..7f79e041df 100644 --- a/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch +++ b/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch @@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/page_pool.c +++ b/net/core/page_pool.c -@@ -1153,8 +1153,9 @@ static void page_pool_release_retry(stru +@@ -1155,8 +1155,9 @@ static void page_pool_release_retry(stru { struct delayed_work *dwq = to_delayed_work(wq); struct page_pool *pool = container_of(dwq, typeof(*pool), release_dw); @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau inflight = page_pool_release(pool); /* In rare cases, a driver bug may cause inflight to go negative. -@@ -1166,6 +1167,21 @@ static void page_pool_release_retry(stru +@@ -1168,6 +1169,21 @@ static void page_pool_release_retry(stru if (inflight <= 0) return; diff --git a/target/linux/generic/hack-6.12/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-6.12/780-usb-net-MeigLink_modem_support.patch index 099bd428eb..eff038fbd0 100644 --- a/target/linux/generic/hack-6.12/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-6.12/780-usb-net-MeigLink_modem_support.patch @@ -10,7 +10,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c -@@ -1076,6 +1076,11 @@ static const struct usb_device_id produc +@@ -1082,6 +1082,11 @@ static const struct usb_device_id produc USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7), .driver_info = (unsigned long)&qmi_wwan_info, }, @@ -22,7 +22,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0122)}, /* Quectel RG650V */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */ -@@ -1083,6 +1088,7 @@ static const struct usb_device_id produc +@@ -1089,6 +1094,7 @@ static const struct usb_device_id produc {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */ diff --git a/target/linux/generic/hack-6.12/902-debloat_proc.patch b/target/linux/generic/hack-6.12/902-debloat_proc.patch index b46b821aff..cd7241e6af 100644 --- a/target/linux/generic/hack-6.12/902-debloat_proc.patch +++ b/target/linux/generic/hack-6.12/902-debloat_proc.patch @@ -331,7 +331,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -4277,6 +4277,8 @@ static __net_initdata struct pernet_oper +@@ -4280,6 +4280,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12 index 3abf72c3ac..920ea0645e 100644 --- a/target/linux/generic/kernel-6.12 +++ b/target/linux/generic/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .57 -LINUX_KERNEL_HASH-6.12.57 = 165ca1c37c4607b90e731996b7c1e3311285167d13deeedf08f3f1f0b9d2541a +LINUX_VERSION-6.12 = .58 +LINUX_KERNEL_HASH-6.12.58 = 5f1c4c546660a6a81046fdfa6195306bad2c8d17c0d69876dc100a85ad4613ac diff --git a/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch b/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch index 81f30b4a8c..66926bd5fb 100644 --- a/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch +++ b/target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau if (sk_can_gso(sk)) { --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -2021,7 +2021,7 @@ void ieee80211_color_collision_detection +@@ -2023,7 +2023,7 @@ void ieee80211_color_collision_detection /* interface handling */ #define MAC80211_SUPPORTED_FEATURES_TX (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | \ NETIF_F_HW_CSUM | NETIF_F_SG | \ diff --git a/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch b/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch index 7842889a98..2f90df6013 100644 --- a/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch +++ b/target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch @@ -24,7 +24,7 @@ Signed-off-by: Felix Fietkau --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c -@@ -201,6 +201,7 @@ void br_flood(struct net_bridge *br, str +@@ -202,6 +202,7 @@ void br_flood(struct net_bridge *br, str enum br_pkt_type pkt_type, bool local_rcv, bool local_orig, u16 vid) { @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau struct net_bridge_port *prev = NULL; struct net_bridge_port *p; -@@ -218,6 +219,10 @@ void br_flood(struct net_bridge *br, str +@@ -219,6 +220,10 @@ void br_flood(struct net_bridge *br, str case BR_PKT_MULTICAST: if (!(p->flags & BR_MCAST_FLOOD) && skb->dev != br->dev) continue; diff --git a/target/linux/generic/pending-6.12/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch b/target/linux/generic/pending-6.12/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch index 7a25825537..042afdc391 100644 --- a/target/linux/generic/pending-6.12/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch +++ b/target/linux/generic/pending-6.12/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch @@ -74,7 +74,7 @@ Signed-off-by: Christian Marangi } --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c -@@ -1119,8 +1119,8 @@ out: +@@ -1122,8 +1122,8 @@ out: } int ufshcd_opp_config_clks(struct device *dev, struct opp_table *opp_table, @@ -121,7 +121,7 @@ Signed-off-by: Christian Marangi } --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h -@@ -1326,8 +1326,8 @@ void ufshcd_mcq_enable(struct ufs_hba *h +@@ -1333,8 +1333,8 @@ void ufshcd_mcq_enable(struct ufs_hba *h void ufshcd_mcq_config_esi(struct ufs_hba *hba, struct msi_msg *msg); int ufshcd_opp_config_clks(struct device *dev, struct opp_table *opp_table, diff --git a/target/linux/generic/pending-6.12/810-pci_disable_common_quirks.patch b/target/linux/generic/pending-6.12/810-pci_disable_common_quirks.patch index 559348332f..89dcbc2786 100644 --- a/target/linux/generic/pending-6.12/810-pci_disable_common_quirks.patch +++ b/target/linux/generic/pending-6.12/810-pci_disable_common_quirks.patch @@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos /* * The Mellanox Tavor device gives false positive parity errors. Disable * parity error reporting. -@@ -3508,6 +3509,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I +@@ -3509,6 +3510,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); @@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos /* * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. * To work around this, query the size it should be configured to by the -@@ -3533,6 +3536,8 @@ static void quirk_intel_ntb(struct pci_d +@@ -3534,6 +3537,8 @@ static void quirk_intel_ntb(struct pci_d DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb); @@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos /* * Some BIOS implementations leave the Intel GPU interrupts enabled, even * though no one is handling them (e.g., if the i915 driver is never -@@ -3571,6 +3576,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN +@@ -3572,6 +3577,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); diff --git a/target/linux/imx/patches-6.12/506-6.16-PCI-imx6-Skip-link-up-workaround-for-newer-platforms.patch b/target/linux/imx/patches-6.12/506-6.16-PCI-imx6-Skip-link-up-workaround-for-newer-platforms.patch index cc92d0a665..c13596f302 100644 --- a/target/linux/imx/patches-6.12/506-6.16-PCI-imx6-Skip-link-up-workaround-for-newer-platforms.patch +++ b/target/linux/imx/patches-6.12/506-6.16-PCI-imx6-Skip-link-up-workaround-for-newer-platforms.patch @@ -72,7 +72,7 @@ Link: https://patch.msgid.link/20250416081314.3929794-2-hongxing.zhu@nxp.com } /* Make sure link training is finished as well! */ -@@ -1546,7 +1540,7 @@ static const struct imx_pcie_drvdata drv +@@ -1550,7 +1544,7 @@ static const struct imx_pcie_drvdata drv [IMX6Q] = { .variant = IMX6Q, .flags = IMX_PCIE_FLAG_IMX_PHY | @@ -81,7 +81,7 @@ Link: https://patch.msgid.link/20250416081314.3929794-2-hongxing.zhu@nxp.com IMX_PCIE_FLAG_BROKEN_SUSPEND | IMX_PCIE_FLAG_SUPPORTS_SUSPEND, .dbi_length = 0x200, -@@ -1564,7 +1558,7 @@ static const struct imx_pcie_drvdata drv +@@ -1568,7 +1562,7 @@ static const struct imx_pcie_drvdata drv [IMX6SX] = { .variant = IMX6SX, .flags = IMX_PCIE_FLAG_IMX_PHY | @@ -90,7 +90,7 @@ Link: https://patch.msgid.link/20250416081314.3929794-2-hongxing.zhu@nxp.com IMX_PCIE_FLAG_SUPPORTS_SUSPEND, .gpr = "fsl,imx6q-iomuxc-gpr", .clk_names = imx6sx_clks, -@@ -1580,7 +1574,7 @@ static const struct imx_pcie_drvdata drv +@@ -1584,7 +1578,7 @@ static const struct imx_pcie_drvdata drv [IMX6QP] = { .variant = IMX6QP, .flags = IMX_PCIE_FLAG_IMX_PHY | diff --git a/target/linux/ipq40xx/patches-6.12/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch b/target/linux/ipq40xx/patches-6.12/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch index 737da1e2fe..dc3faee799 100644 --- a/target/linux/ipq40xx/patches-6.12/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch +++ b/target/linux/ipq40xx/patches-6.12/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch @@ -13,7 +13,7 @@ Signed-off-by: Robert Marko --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c -@@ -2383,7 +2383,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat +@@ -2398,7 +2398,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat static const struct sdhci_ops sdhci_msm_ops = { .reset = sdhci_and_cqhci_reset, diff --git a/target/linux/ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch b/target/linux/ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch index 6e0f35b6fc..8a81756d67 100644 --- a/target/linux/ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch +++ b/target/linux/ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch @@ -13,7 +13,7 @@ Signed-off-by: Christian Marangi --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c -@@ -1818,49 +1818,49 @@ static unsigned int sdhci_msm_get_min_cl +@@ -1833,49 +1833,49 @@ static unsigned int sdhci_msm_get_min_cl return SDHCI_MSM_MIN_CLOCK; } diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube.dtsi index aa25a611c7..8c75f4ad43 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube.dtsi @@ -141,7 +141,7 @@ interrupts = <126 127 128 129 130 131>; }; - gpios: stp@e100bb0 { + stp0: gpio@e100bb0 { #gpio-cells = <2>; compatible = "lantiq,gpio-stp-xway"; gpio-controller; diff --git a/target/linux/mvebu/patches-6.12/350-drivers-thermal-step_wise-add-support-for-hysteresis.patch b/target/linux/mvebu/patches-6.12/350-drivers-thermal-step_wise-add-support-for-hysteresis.patch index b0db0450f1..d98e585db5 100644 --- a/target/linux/mvebu/patches-6.12/350-drivers-thermal-step_wise-add-support-for-hysteresis.patch +++ b/target/linux/mvebu/patches-6.12/350-drivers-thermal-step_wise-add-support-for-hysteresis.patch @@ -24,7 +24,7 @@ Signed-off-by: Daniel Golle --- a/drivers/thermal/gov_step_wise.c +++ b/drivers/thermal/gov_step_wise.c -@@ -74,19 +74,28 @@ static void thermal_zone_trip_update(str +@@ -87,19 +87,28 @@ static void thermal_zone_trip_update(str int trip_id = thermal_zone_trip_id(tz, trip); struct thermal_instance *instance; bool throttle = false; diff --git a/target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch b/target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch deleted file mode 100644 index 9e4372a878..0000000000 --- a/target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 9989fcd49c52500a2bf1f6d49411690dec45d2dc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= -Date: Sat, 2 Aug 2025 12:47:08 +0300 -Subject: [PATCH] clk: qcom: gcc-ipq6018: rework nss_port5 clock to multiple - conf - -Rework nss_port5 to use the new multiple configuration implementation -and correctly fix the clocks for this port under some corner case. - -In OpenWrt, this patch avoids intermittent dmesg errors of the form -nss_port5_rx_clk_src: rcg didn't update its configuration. - -This is a mechanical, straightforward port of -commit e88f03230dc07aa3293b6aeb078bd27370bb2594 -("clk: qcom: gcc-ipq8074: rework nss_port5/6 clock to multiple conf") -to gcc-ipq6018, with two conflicts resolved: different frequency of the -P_XO clock source, and only 5 Ethernet ports. - -This was originally developed by JiaY-shi . - -Link: https://lore.kernel.org/all/20231220221724.3822-4-ansuelsmth@gmail.com/ -Signed-off-by: Marko Mäkelä -Tested-by: Marko Mäkelä ---- - drivers/clk/qcom/gcc-ipq6018.c | 60 +++++++++++++++++++++------------- - 1 file changed, 38 insertions(+), 22 deletions(-) - ---- a/drivers/clk/qcom/gcc-ipq6018.c -+++ b/drivers/clk/qcom/gcc-ipq6018.c -@@ -511,15 +511,23 @@ static struct clk_rcg2 apss_ahb_clk_src - }, - }; - --static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = { -- F(24000000, P_XO, 1, 0, 0), -- F(25000000, P_UNIPHY1_RX, 12.5, 0, 0), -- F(25000000, P_UNIPHY0_RX, 5, 0, 0), -- F(78125000, P_UNIPHY1_RX, 4, 0, 0), -- F(125000000, P_UNIPHY1_RX, 2.5, 0, 0), -- F(125000000, P_UNIPHY0_RX, 1, 0, 0), -- F(156250000, P_UNIPHY1_RX, 2, 0, 0), -- F(312500000, P_UNIPHY1_RX, 1, 0, 0), -+static const struct freq_conf ftbl_nss_port5_rx_clk_src_25[] = { -+ C(P_UNIPHY1_RX, 12.5, 0, 0), -+ C(P_UNIPHY0_RX, 5, 0, 0), -+}; -+ -+static const struct freq_conf ftbl_nss_port5_rx_clk_src_125[] = { -+ C(P_UNIPHY1_RX, 2.5, 0, 0), -+ C(P_UNIPHY0_RX, 1, 0, 0), -+}; -+ -+static const struct freq_multi_tbl ftbl_nss_port5_rx_clk_src[] = { -+ FMS(24000000, P_XO, 1, 0, 0), -+ FM(25000000, ftbl_nss_port5_rx_clk_src_25), -+ FMS(78125000, P_UNIPHY1_RX, 4, 0, 0), -+ FM(125000000, ftbl_nss_port5_rx_clk_src_125), -+ FMS(156250000, P_UNIPHY1_RX, 2, 0, 0), -+ FMS(312500000, P_UNIPHY1_RX, 1, 0, 0), - { } - }; - -@@ -547,26 +555,34 @@ gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32 - - static struct clk_rcg2 nss_port5_rx_clk_src = { - .cmd_rcgr = 0x68060, -- .freq_tbl = ftbl_nss_port5_rx_clk_src, -+ .freq_multi_tbl = ftbl_nss_port5_rx_clk_src, - .hid_width = 5, - .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map, - .clkr.hw.init = &(struct clk_init_data){ - .name = "nss_port5_rx_clk_src", - .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias, - .num_parents = 7, -- .ops = &clk_rcg2_ops, -+ .ops = &clk_rcg2_fm_ops, - }, - }; - --static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = { -- F(24000000, P_XO, 1, 0, 0), -- F(25000000, P_UNIPHY1_TX, 12.5, 0, 0), -- F(25000000, P_UNIPHY0_TX, 5, 0, 0), -- F(78125000, P_UNIPHY1_TX, 4, 0, 0), -- F(125000000, P_UNIPHY1_TX, 2.5, 0, 0), -- F(125000000, P_UNIPHY0_TX, 1, 0, 0), -- F(156250000, P_UNIPHY1_TX, 2, 0, 0), -- F(312500000, P_UNIPHY1_TX, 1, 0, 0), -+static const struct freq_conf ftbl_nss_port5_tx_clk_src_25[] = { -+ C(P_UNIPHY1_TX, 12.5, 0, 0), -+ C(P_UNIPHY0_TX, 5, 0, 0), -+}; -+ -+static const struct freq_conf ftbl_nss_port5_tx_clk_src_125[] = { -+ C(P_UNIPHY1_TX, 2.5, 0, 0), -+ C(P_UNIPHY0_TX, 1, 0, 0), -+}; -+ -+static const struct freq_multi_tbl ftbl_nss_port5_tx_clk_src[] = { -+ FMS(24000000, P_XO, 1, 0, 0), -+ FM(25000000, ftbl_nss_port5_tx_clk_src_25), -+ FMS(78125000, P_UNIPHY1_TX, 4, 0, 0), -+ FM(125000000, ftbl_nss_port5_tx_clk_src_125), -+ FMS(156250000, P_UNIPHY1_TX, 2, 0, 0), -+ FMS(312500000, P_UNIPHY1_TX, 1, 0, 0), - { } - }; - -@@ -594,14 +610,14 @@ gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32 - - static struct clk_rcg2 nss_port5_tx_clk_src = { - .cmd_rcgr = 0x68068, -- .freq_tbl = ftbl_nss_port5_tx_clk_src, -+ .freq_multi_tbl = ftbl_nss_port5_tx_clk_src, - .hid_width = 5, - .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map, - .clkr.hw.init = &(struct clk_init_data){ - .name = "nss_port5_tx_clk_src", - .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias, - .num_parents = 7, -- .ops = &clk_rcg2_ops, -+ .ops = &clk_rcg2_fm_ops, - }, - }; - diff --git a/target/linux/qualcommax/patches-6.12/0804-remoteproc-qcom-q6v5-Add-multipd-interrupts-support.patch b/target/linux/qualcommax/patches-6.12/0804-remoteproc-qcom-q6v5-Add-multipd-interrupts-support.patch index 0238ba828a..1dae38aeaa 100644 --- a/target/linux/qualcommax/patches-6.12/0804-remoteproc-qcom-q6v5-Add-multipd-interrupts-support.patch +++ b/target/linux/qualcommax/patches-6.12/0804-remoteproc-qcom-q6v5-Add-multipd-interrupts-support.patch @@ -47,7 +47,7 @@ Signed-off-by: Manikanta Mylavarapu /** * qcom_q6v5_wait_for_start() - wait for remote processor start signal -@@ -174,7 +176,17 @@ static irqreturn_t q6v5_handover_interru +@@ -179,7 +181,17 @@ static irqreturn_t q6v5_handover_interru return IRQ_HANDLED; } @@ -66,7 +66,7 @@ Signed-off-by: Manikanta Mylavarapu { struct qcom_q6v5 *q6v5 = data; -@@ -182,6 +194,7 @@ static irqreturn_t q6v5_stop_interrupt(i +@@ -187,6 +199,7 @@ static irqreturn_t q6v5_stop_interrupt(i return IRQ_HANDLED; } @@ -74,7 +74,7 @@ Signed-off-by: Manikanta Mylavarapu /** * qcom_q6v5_request_stop() - request the remote processor to stop -@@ -212,6 +225,28 @@ int qcom_q6v5_request_stop(struct qcom_q +@@ -217,6 +230,28 @@ int qcom_q6v5_request_stop(struct qcom_q EXPORT_SYMBOL_GPL(qcom_q6v5_request_stop); /** diff --git a/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch b/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch index d042d33c2c..56f837b5c3 100644 --- a/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch +++ b/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch @@ -13,7 +13,7 @@ Signed-off-by: John Crispin --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -3216,6 +3216,18 @@ static const struct usb_device_id uvc_id +@@ -3229,6 +3229,18 @@ static const struct usb_device_id uvc_id .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, diff --git a/target/linux/realtek/patches-6.12/020-01-v6.18-timer-rtl-otto-work-around-dying-timers.patch b/target/linux/realtek/patches-6.12/020-01-v6.18-timer-rtl-otto-work-around-dying-timers.patch deleted file mode 100644 index 19bbc384a2..0000000000 --- a/target/linux/realtek/patches-6.12/020-01-v6.18-timer-rtl-otto-work-around-dying-timers.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 9f146b3e0b9e098cf36ebe42b4aa69270113c6bf Mon Sep 17 00:00:00 2001 -From: Markus Stockhausen -Date: Mon, 4 Aug 2025 04:03:25 -0400 -Subject: clocksource/drivers/timer-rtl-otto: Work around dying timers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The OpenWrt distribution has switched from kernel longterm 6.6 to -6.12. Reports show that devices with the Realtek Otto switch platform -die during operation and are rebooted by the watchdog. Sorting out -other possible reasons the Otto timer is to blame. The platform -currently consists of 4 targets with different hardware revisions. -It is not 100% clear which devices and revisions are affected. - -Analysis shows: - -A more aggressive sched/deadline handling leads to more timer starts -with small intervals. This increases the bug chances. See -https://marc.info/?l=linux-kernel&m=175276556023276&w=2 - -Focusing on the real issue a hardware limitation on some devices was -found. There is a minimal chance that a timer ends without firing an -interrupt if it is reprogrammed within the 5us before its expiration -time. Work around this issue by introducing a bounce() function. It -restarts the timer directly before the normal restart functions as -follows: - -- Stop timer -- Restart timer with a slow frequency. -- Target time will be >5us -- The subsequent normal restart is outside the critical window - -Downstream has already tested and confirmed a patch. See -https://github.com/openwrt/openwrt/pull/19468 -https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875/3788 - -Tested-by: Stephen Howell -Tested-by: Bjørn Mork -Signed-off-by: Markus Stockhausen -Link: https://lore.kernel.org/r/20250804080328.2609287-2-markus.stockhausen@gmx.de -Signed-off-by: Daniel Lezcano ---- - drivers/clocksource/timer-rtl-otto.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - ---- a/drivers/clocksource/timer-rtl-otto.c -+++ b/drivers/clocksource/timer-rtl-otto.c -@@ -38,6 +38,7 @@ - #define RTTM_BIT_COUNT 28 - #define RTTM_MIN_DELTA 8 - #define RTTM_MAX_DELTA CLOCKSOURCE_MASK(28) -+#define RTTM_MAX_DIVISOR GENMASK(15, 0) - - /* - * Timers are derived from the LXB clock frequency. Usually this is a fixed -@@ -112,6 +113,22 @@ static irqreturn_t rttm_timer_interrupt( - return IRQ_HANDLED; - } - -+static void rttm_bounce_timer(void __iomem *base, u32 mode) -+{ -+ /* -+ * When a running timer has less than ~5us left, a stop/start sequence -+ * might fail. While the details are unknown the most evident effect is -+ * that the subsequent interrupt will not be fired. -+ * -+ * As a workaround issue an intermediate restart with a very slow -+ * frequency of ~3kHz keeping the target counter (>=8). So the follow -+ * up restart will always be issued outside the critical window. -+ */ -+ -+ rttm_disable_timer(base); -+ rttm_enable_timer(base, mode, RTTM_MAX_DIVISOR); -+} -+ - static void rttm_stop_timer(void __iomem *base) - { - rttm_disable_timer(base); -@@ -129,6 +146,7 @@ static int rttm_next_event(unsigned long - struct timer_of *to = to_timer_of(clkevt); - - RTTM_DEBUG(to->of_base.base); -+ rttm_bounce_timer(to->of_base.base, RTTM_CTRL_COUNTER); - rttm_stop_timer(to->of_base.base); - rttm_set_period(to->of_base.base, delta); - rttm_start_timer(to, RTTM_CTRL_COUNTER); -@@ -141,6 +159,7 @@ static int rttm_state_oneshot(struct clo - struct timer_of *to = to_timer_of(clkevt); - - RTTM_DEBUG(to->of_base.base); -+ rttm_bounce_timer(to->of_base.base, RTTM_CTRL_COUNTER); - rttm_stop_timer(to->of_base.base); - rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ); - rttm_start_timer(to, RTTM_CTRL_COUNTER); -@@ -153,6 +172,7 @@ static int rttm_state_periodic(struct cl - struct timer_of *to = to_timer_of(clkevt); - - RTTM_DEBUG(to->of_base.base); -+ rttm_bounce_timer(to->of_base.base, RTTM_CTRL_TIMER); - rttm_stop_timer(to->of_base.base); - rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ); - rttm_start_timer(to, RTTM_CTRL_TIMER); diff --git a/target/linux/realtek/patches-6.12/020-03-v6.18-timer-rtl-otto-do-not-interfere-with-interrupts.patch b/target/linux/realtek/patches-6.12/020-03-v6.18-timer-rtl-otto-do-not-interfere-with-interrupts.patch deleted file mode 100644 index c806a217ab..0000000000 --- a/target/linux/realtek/patches-6.12/020-03-v6.18-timer-rtl-otto-do-not-interfere-with-interrupts.patch +++ /dev/null @@ -1,60 +0,0 @@ -From add0d895aa6f66320f9b1d901b66259f4308af04 Mon Sep 17 00:00:00 2001 -From: Markus Stockhausen -Date: Mon, 4 Aug 2025 04:03:27 -0400 -Subject: clocksource/drivers/timer-rtl-otto: Do not interfere with interrupts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -During normal operation the timers are reprogrammed including an -interrupt acknowledgement. This has no effect as the whole timer -is setup from scratch afterwards. Especially in an interrupt this -has already been done by rttm_timer_interrupt(). - -Change the behaviour as follows: - -- Use rttm_disable_timer() during reprogramming -- Keep rttm_stop_timer() for all other use cases. - -Downstream has already tested and confirmed a patch. See -https://github.com/openwrt/openwrt/pull/19468 -https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875/3788 - -Tested-by: Stephen Howell -Tested-by: Bjørn Mork -Signed-off-by: Markus Stockhausen -Link: https://lore.kernel.org/r/20250804080328.2609287-4-markus.stockhausen@gmx.de -Signed-off-by: Daniel Lezcano ---- - drivers/clocksource/timer-rtl-otto.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/drivers/clocksource/timer-rtl-otto.c -+++ b/drivers/clocksource/timer-rtl-otto.c -@@ -141,7 +141,7 @@ static int rttm_next_event(unsigned long - - RTTM_DEBUG(to->of_base.base); - rttm_bounce_timer(to->of_base.base, RTTM_CTRL_COUNTER); -- rttm_stop_timer(to->of_base.base); -+ rttm_disable_timer(to->of_base.base); - rttm_set_period(to->of_base.base, delta); - rttm_start_timer(to, RTTM_CTRL_COUNTER); - -@@ -154,7 +154,7 @@ static int rttm_state_oneshot(struct clo - - RTTM_DEBUG(to->of_base.base); - rttm_bounce_timer(to->of_base.base, RTTM_CTRL_COUNTER); -- rttm_stop_timer(to->of_base.base); -+ rttm_disable_timer(to->of_base.base); - rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ); - rttm_start_timer(to, RTTM_CTRL_COUNTER); - -@@ -167,7 +167,7 @@ static int rttm_state_periodic(struct cl - - RTTM_DEBUG(to->of_base.base); - rttm_bounce_timer(to->of_base.base, RTTM_CTRL_TIMER); -- rttm_stop_timer(to->of_base.base); -+ rttm_disable_timer(to->of_base.base); - rttm_set_period(to->of_base.base, RTTM_TICKS_PER_SEC / HZ); - rttm_start_timer(to, RTTM_CTRL_TIMER); - diff --git a/target/linux/rockchip/patches-6.12/037-01-v6.15-scsi-ufs-core-Export-ufshcd_dme_reset-and.patch b/target/linux/rockchip/patches-6.12/037-01-v6.15-scsi-ufs-core-Export-ufshcd_dme_reset-and.patch index f7419f61be..7b96a42ca6 100644 --- a/target/linux/rockchip/patches-6.12/037-01-v6.15-scsi-ufs-core-Export-ufshcd_dme_reset-and.patch +++ b/target/linux/rockchip/patches-6.12/037-01-v6.15-scsi-ufs-core-Export-ufshcd_dme_reset-and.patch @@ -19,7 +19,7 @@ Signed-off-by: Martin K. Petersen --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c -@@ -4043,7 +4043,7 @@ static int ufshcd_dme_link_startup(struc +@@ -4046,7 +4046,7 @@ static int ufshcd_dme_link_startup(struc * * Return: 0 on success, non-zero value on failure. */ @@ -28,7 +28,7 @@ Signed-off-by: Martin K. Petersen { struct uic_command uic_cmd = { .command = UIC_CMD_DME_RESET, -@@ -4057,6 +4057,7 @@ static int ufshcd_dme_reset(struct ufs_h +@@ -4060,6 +4060,7 @@ static int ufshcd_dme_reset(struct ufs_h return ret; } @@ -36,7 +36,7 @@ Signed-off-by: Martin K. Petersen int ufshcd_dme_configure_adapt(struct ufs_hba *hba, int agreed_gear, -@@ -4082,7 +4083,7 @@ EXPORT_SYMBOL_GPL(ufshcd_dme_configure_a +@@ -4085,7 +4086,7 @@ EXPORT_SYMBOL_GPL(ufshcd_dme_configure_a * * Return: 0 on success, non-zero value on failure. */ @@ -45,7 +45,7 @@ Signed-off-by: Martin K. Petersen { struct uic_command uic_cmd = { .command = UIC_CMD_DME_ENABLE, -@@ -4096,6 +4097,7 @@ static int ufshcd_dme_enable(struct ufs_ +@@ -4099,6 +4100,7 @@ static int ufshcd_dme_enable(struct ufs_ return ret; } @@ -55,7 +55,7 @@ Signed-off-by: Martin K. Petersen { --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h -@@ -1361,6 +1361,8 @@ extern int ufshcd_system_thaw(struct dev +@@ -1368,6 +1368,8 @@ extern int ufshcd_system_thaw(struct dev extern int ufshcd_system_restore(struct device *dev); #endif diff --git a/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch b/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch index edfc554983..61491c57a2 100644 --- a/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch +++ b/target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch @@ -17,7 +17,7 @@ Signed-off-by: Minda Chen --- a/drivers/irqchip/irq-sifive-plic.c +++ b/drivers/irqchip/irq-sifive-plic.c -@@ -202,6 +202,9 @@ static struct irq_chip plic_edge_chip = +@@ -204,6 +204,9 @@ static struct irq_chip plic_edge_chip = #endif .irq_set_type = plic_irq_set_type, .flags = IRQCHIP_SKIP_SET_WAKE | @@ -27,7 +27,7 @@ Signed-off-by: Minda Chen IRQCHIP_AFFINITY_PRE_STARTUP, }; -@@ -217,6 +220,9 @@ static struct irq_chip plic_chip = { +@@ -219,6 +222,9 @@ static struct irq_chip plic_chip = { #endif .irq_set_type = plic_irq_set_type, .flags = IRQCHIP_SKIP_SET_WAKE |