kernel: bump 6.12 to 6.12.58
authorgongzi miao <[email protected]>
Fri, 14 Nov 2025 04:27:56 +0000 (12:27 +0800)
committerHauke Mehrtens <[email protected]>
Thu, 20 Nov 2025 20:30:26 +0000 (21:30 +0100)
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 <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/20777
Signed-off-by: Hauke Mehrtens <[email protected]>
47 files changed:
target/linux/bcm27xx/patches-6.12/950-0103-media-adv7180-Default-to-the-first-valid-input.patch
target/linux/bcm27xx/patches-6.12/950-0104-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch
target/linux/bcm27xx/patches-6.12/950-0295-media-adv7180-Nasty-hack-to-allow-input-selection.patch
target/linux/bcm27xx/patches-6.12/950-0322-Bluetooth-hci_sync-Add-fallback-bd-address-prop.patch
target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch
target/linux/bcm27xx/patches-6.12/950-0402-drivers-thermal-step_wise-add-support-for-hysteresis.patch
target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch
target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch
target/linux/bcm27xx/patches-6.12/950-0502-Bluetooth-hci_sync-Fix-crash-on-NULL-parent.patch
target/linux/bcm27xx/patches-6.12/950-0692-cgroup-Add-cgroup_enable-option.patch
target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch
target/linux/bmips/patches-6.12/110-net-dsa-b53-bcm531x5-fix-cpu-rgmii-mode-interpretation.patch
target/linux/generic/backport-6.12/601-06-v6.14-net-phy-marvell-implement-phy_inband_caps-method.patch
target/linux/generic/backport-6.12/601-08-v6.14-net-phy-marvell-implement-config_inband-method.patch
target/linux/generic/backport-6.12/610-03-v6.15-net-dsa-b53-mdio-add-support-for-BCM53101.patch
target/linux/generic/backport-6.12/610-04-v6.16-net-dsa-b53-implement-setting-ageing-time.patch
target/linux/generic/backport-6.12/610-07-v6.16-net-dsa-b53-do-not-configure-bcm63xx-s-IMP-port-inte.patch
target/linux/generic/backport-6.12/612-01-v6.17-net-dsa-tag_brcm-legacy-reorganize-functions.patch [deleted file]
target/linux/generic/backport-6.12/612-02-v6.17-net-dsa-tag_brcm-add-support-for-legacy-FCS-tags.patch
target/linux/generic/backport-6.12/612-03-v6.17-net-dsa-b53-support-legacy-FCS-tags.patch
target/linux/generic/backport-6.12/612-04-v6.17-net-dsa-b53-detect-BCM5325-variants.patch
target/linux/generic/backport-6.12/612-05-v6.17-net-dsa-b53-add-support-for-FDB-operations-on-5325-5365.patch
target/linux/generic/backport-6.12/612-12-v6.17-net-dsa-b53-fix-unicast-multicast-flooding-on-BCM5325.patch
target/linux/generic/backport-6.12/720-09-v6.14-net-phy-Constify-struct-mdio_device_id.patch
target/linux/generic/backport-6.12/780-23-v6.14-r8169-adjust-version-numbering-for-RTL8126.patch
target/linux/generic/backport-6.12/780-39-v6.16-r8169-merge-chip-versions-70-and-71-RTL8126A.patch
target/linux/generic/backport-6.12/780-42-v6.16-r8169-add-support-for-RTL8127A.patch
target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch
target/linux/generic/hack-6.12/780-usb-net-MeigLink_modem_support.patch
target/linux/generic/hack-6.12/902-debloat_proc.patch
target/linux/generic/kernel-6.12
target/linux/generic/pending-6.12/681-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch
target/linux/generic/pending-6.12/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
target/linux/generic/pending-6.12/802-OPP-Provide-old-opp-to-config_clks-on-_set_opp.patch
target/linux/generic/pending-6.12/810-pci_disable_common_quirks.patch
target/linux/imx/patches-6.12/506-6.16-PCI-imx6-Skip-link-up-workaround-for-newer-platforms.patch
target/linux/ipq40xx/patches-6.12/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch
target/linux/ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch
target/linux/lantiq/files/arch/mips/boot/dts/lantiq/danube.dtsi
target/linux/mvebu/patches-6.12/350-drivers-thermal-step_wise-add-support-for-hysteresis.patch
target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch [deleted file]
target/linux/qualcommax/patches-6.12/0804-remoteproc-qcom-q6v5-Add-multipd-interrupts-support.patch
target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch
target/linux/realtek/patches-6.12/020-01-v6.18-timer-rtl-otto-work-around-dying-timers.patch [deleted file]
target/linux/realtek/patches-6.12/020-03-v6.18-timer-rtl-otto-do-not-interfere-with-interrupts.patch [deleted file]
target/linux/rockchip/patches-6.12/037-01-v6.15-scsi-ufs-core-Export-ufshcd_dme_reset-and.patch
target/linux/starfive/patches-6.12/0017-plic-irq-Set-IRQCHIP_EOI_THREADED-in-PREEMPT_RT-case.patch

index 52a113906f8be0cabdf2fc5c8d938b70123793e7..c294e5286a4192bd3132f4ebe070f61bc0aacffa 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 --- 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 <[email protected]>
  
        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;
        }
  
index 8669c93edbe08b249d04a609f1c834e6dcfb2c9d..1552f6358c55253ad80ac540ef7b14a28847e067 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 --- 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) |
index c36033642bb6e1f709974413542692c22ffee510..fca52578af509288baa31931004e09019e584eb1 100644 (file)
@@ -30,7 +30,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  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 <[email protected]>
        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 <[email protected]>
  
        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 <[email protected]>
        *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;
        }
  
index 81e8d31c1b09e7b20de4e88ee3cdc398247d4ea2..aea33e7533db54abca5d259f91e62e45732e754e 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 --- 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 <[email protected]>
        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) &&
index 13e8d1bb3cce5c9bc4e4dec771ac337120272392..7b993d9987e09c714bdc5ee13c67e88e8a83b299 100644 (file)
@@ -55,7 +55,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
  
  #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);
  }
  
index d0c9fab6d4a3233d59370acc684b0cbe84b4e11d..b47c4322da48976f452d6d1deff3b9df13ac282e 100644 (file)
@@ -36,7 +36,7 @@ Signed-off-by: Jürgen Kreileder <[email protected]>
 
 --- 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 <[email protected]>
 + * 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;
index 5790d79adef9feaa52c72069f08a4cfa7392d91e..9b86b31a5d87087065b8d9558f39066b8de146b8 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Dave Stevenson <[email protected]>
 
 --- 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 <[email protected]>
  
        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);
  
index 4bc7a684eb3d31390c98f30e24c106f42c4d70d2..d67112a0698e691dbe525614de78ab9eafb273ad 100644 (file)
@@ -1,18 +1,14 @@
-From 7e58b9c99676d641ef76edd9c097f1c3c4e6c464 Mon Sep 17 00:00:00 2001
-From: Dave Stevenson <[email protected]>
-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 <[email protected]>
----
- drivers/media/i2c/adv7180.c | 32 +++++++++++++++++++++++++++++++-
- 1 file changed, 31 insertions(+), 1 deletion(-)
-
+From 954129f16c200e41a00ebebe2e22efc01b243538 Mon Sep 17 00:00:00 2001\r
+From: Dom Cobley <[email protected]>\r
+Date: Fri, 14 Nov 2025 14:08:18 +0000\r
+Subject: [PATCH] Revert "Revert "media: i2c: adv7180: Add support for\r
+ V4L2_CID_LINK_FREQ""\r
+\r
+This reverts commit 00ecb85c58501f8f7ae75fcb069bbbad5542e853.\r
+---\r
+ drivers/media/i2c/adv7180.c | 39 +++++++++++++++++++++++++++++++++++--\r
+ 1 file changed, 37 insertions(+), 2 deletions(-)\r
+\r
 --- 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 <[email protected]>
  };
  #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 <[email protected]>
        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 <[email protected]>
        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 <[email protected]>
  
        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 <[email protected]>
        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;
index cb98eb72fb79f2e290c0792b35efea88c406f4f5..db23f1f1ff5b53d2e71328f45f5b4c12be13ff0f 100644 (file)
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 --- 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)
  {
index d44e050e020722e96cdd3894dc384d1959fcca7f..64176cbfc78717e417b204730ce716e2a837aa70 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <[email protected]>
 
 --- 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);
  
index e0c0cc105f2c0b8a0978f4ff06d6fc6f7976adff..acc981dc2ea03998db34bc1849c788f1506583cb 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Jonathan Bell <[email protected]>
 
 --- 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);
index 30f346ff1ea8c80d2029dd2e478a3b733203ed34..e27c4cd98f55cff146e5069dd2978565f0324abd 100644 (file)
@@ -58,7 +58,7 @@ Signed-off-by: Jonas Gorski <[email protected]>
 +        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 <[email protected]>
        /* 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.
         *
index fb5d9c20afda36cd5e20c23daf99302dcfaee131..e2dfeba1d558f1605ba49135f1e3633fd2985ff3 100644 (file)
@@ -37,7 +37,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
  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 <[email protected]>
                .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 <[email protected]>
                .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,
index 00788d42fc5cdf6108c8f6314b3f5cd93c38fdc7..4531c507e261e00f70481fc667c63794ae655e0d 100644 (file)
@@ -51,7 +51,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
  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 <[email protected]>
                .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 <[email protected]>
                .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,
index 6d69ec0648fec864fc92c5db174b3711c059d397..0ec9f51395ceb35aec5b7ca53367b66f28574bdf 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
 
 --- 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 <[email protected]>
                .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) {
index 5c993a6119629537490cc7f2c160b0fa31fbe494..1e1756d04ae1c5ce6a57672fe30ac51ddb15e904 100644 (file)
@@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
        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 <[email protected]>
  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 <[email protected]>
  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 */
  
index f2c4464b06f5dbedd4f3e6bcc95f6c775b8f82f1..e70f09e05091629a28da089eca3d63360e0bf954 100644 (file)
@@ -28,7 +28,7 @@ Signed-off-by: Paolo Abeni <[email protected]>
  #include <linux/module.h>
  #include <linux/platform_data/b53.h>
  #include <linux/phy.h>
-@@ -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 <[email protected]>
  
        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 (file)
index 23d4929..0000000
+++ /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?= <[email protected]>
-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 <[email protected]>
-Signed-off-by: Álvaro Fernández Rojas <[email protected]>
-Link: https://patch.msgid.link/[email protected]
-Signed-off-by: Jakub Kicinski <[email protected]>
----
- 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,
index 9f6b71ff6480a8437bfe4c6bdc995f5977f823f5..88f10be377b1bd7dadcbb1ca232c67d992d3bf14 100644 (file)
@@ -99,7 +99,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
  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 <[email protected]>
  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 <[email protected]>
  #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
index 3fbc697f01d2c6e6eccda8d46abd1076c8be9c2e..d04c97ef7ba1d1b133a6c0ad17dbcdea13fc70c9 100644 (file)
@@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
          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;
        }
  
index 04ded31a8f211fe45d6d6227182ce7db25442f2a..c7af2f2f8060a366c497d2b771a89daca1856294 100644 (file)
@@ -21,7 +21,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
 
 --- 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 <[email protected]>
  
        /* 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 <[email protected]>
        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);
  
index 113528a6d5a3152ae6d530fe5a85dd6a484794a4..509806acf19f36135f109bc54861fb72ee6460d7 100644 (file)
@@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
 
 --- 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 <[email protected]>
  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 <[email protected]>
  
        /* 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 <[email protected]>
  
        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 <[email protected]>
        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 <[email protected]>
 -              b53_read8(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_CTL, &reg);
 +              b53_read8(dev, B53_ARLIO_PAGE, offset, &reg);
                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 <[email protected]>
  }
  
  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 <[email protected]>
  #include <linux/bcm47xx_nvram.h>
 --- 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
index 063622398a98d21646564da93bdcc06d830a4970..6b9c86ed0c90fbda79948076bf7bf20880cbb1bc 100644 (file)
@@ -107,7 +107,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
  
  /* 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))
  
  /*************************************************************************
index 3a6e0ac80a6ba4dd21ad54eaccd2608a1a8708bf..bad53cf177ef9d5378c13db4333988c3c23470b4 100644 (file)
@@ -403,7 +403,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
  };
 --- 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);
  
index 815c1fcf72c87a36432fb8cb8d4c04dbc1397e74..9e3fd0a66e2be6b2b53540fa224e20f1a19f547c 100644 (file)
@@ -183,7 +183,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
        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 ||
index da105f6fe3bf3e5b5c0c37fe67c603d69c86aeff..ecc04ef6ae6e350dbffbcb348a4f8b88603242e6 100644 (file)
@@ -69,7 +69,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
        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 ||
index 37a2d8667ec50c6bbd75fb9f9d91dedf263ce73b..5ed1f341ec3f13cbcbff18ed411d6b232b7afcba 100644 (file)
@@ -97,7 +97,7 @@ Signed-off-by: Jakub Kicinski <[email protected]>
        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)
index 82a23e6e44f451f310d120f9bfe48f1828d507a2..7f79e041df1bf8870aeddc659ba4e275c5c12630 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 
 --- 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 <[email protected]>
  
        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;
  
index 099bd428eb25bc19c8df26a80faf4c79001f997a..eff038fbd0699df52d8638b9811d10a6c0cc7bd9 100644 (file)
@@ -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 */
index b46b821aff460061fb02a1b4e2dc927d68ae6238..cd7241e6afa01250e687a7283f67b3df05aa156d 100644 (file)
@@ -331,7 +331,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  
 --- 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)
  {
index 3abf72c3ac661d0cd7da40bdb067b8f04136ab5b..920ea0645edba19ef364e74c85073174a6e868a9 100644 (file)
@@ -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
index 81f30b4a8c3a0e4f99796f69e8d262f4a227b0ae..66926bd5fb56c7ffecc7bcfbd214daf6865ff604 100644 (file)
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
        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 | \
index 7842889a980aa2d494fb5f66d3a87a606e834367..2f90df60131b71c986a6f058b048d25b18249389 100644 (file)
@@ -24,7 +24,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  
 --- 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 <[email protected]>
        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;
index 7a25825537cf9e79ab09637b8ee28489a12a7bbd..042afdc391b9f7490b905b5c9b6e093210f4eacc 100644 (file)
@@ -74,7 +74,7 @@ Signed-off-by: Christian Marangi <[email protected]>
                }
 --- 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 <[email protected]>
  }
 --- 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,
index 559348332f18053bf7a2734912ff6e6676ab0ea3..89dcbc27861b819880fe70bd5dc00b21a42fa9d3 100644 (file)
@@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  /*
   * 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 <[email protected]>
  /*
   * 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 <[email protected]>
  /*
   * 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);
  
index cc92d0a665c448e7dd2ee486e136f2b5fcbcace5..c13596f3024665801303d02862b67030ca3dd15c 100644 (file)
@@ -72,7 +72,7 @@ Link: https://patch.msgid.link/[email protected]
                }
  
                /* 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/[email protected]
                         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/[email protected]
                         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 |
index 737da1e2fe7a292d4b8d169f305d4bd4def4a858..dc3faee799a96df878b0467c565d43357c45e357 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <[email protected]>
 
 --- 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,
index 6e0f35b6fc0c853affb2cc7a7d12d3474b3727e9..8a81756d67e0d42f3d4eb2695ed32013c03bbfbd 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Christian Marangi <[email protected]>
 
 --- 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;
  }
  
index aa25a611c7cf35c873482796e3ce844f2d67bd00..8c75f4ad43d285bb4e4fb30bd335fad24a24b6f8 100644 (file)
                        interrupts = <126 127 128 129 130 131>;
                };
 
-               gpios: stp@e100bb0 {
+               stp0: gpio@e100bb0 {
                        #gpio-cells = <2>;
                        compatible = "lantiq,gpio-stp-xway";
                        gpio-controller;
index b0db0450f159c05ffbac9771337e7425ec265554..d98e585db59e44a1676157053a0dd7311172b7f3 100644 (file)
@@ -24,7 +24,7 @@ Signed-off-by: Daniel Golle <[email protected]>
 
 --- 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 (file)
index 9e4372a..0000000
+++ /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?= <[email protected]>
-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 <[email protected]>.
-
-Link: https://lore.kernel.org/all/[email protected]/
-Signed-off-by: Marko Mäkelä <[email protected]>
-Tested-by: Marko Mäkelä <[email protected]>
----
- 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,
-       },
- };
index 0238ba828a47cdf9c6a2be2049541b02896e9183..1dae38aeaa206e17dbc4ec2799c96189b4077a7a 100644 (file)
@@ -47,7 +47,7 @@ Signed-off-by: Manikanta Mylavarapu <[email protected]>
  
  /**
   * 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 <[email protected]>
  {
        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 <[email protected]>
  
  /**
   * 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);
  
  /**
index d042d33c2cf774538b50888b48453740845d72f1..56f837b5c39fba3cffc6a52b3db6ab7f06b5e336 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <[email protected]>
 
 --- 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 (file)
index 19bbc38..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-From 9f146b3e0b9e098cf36ebe42b4aa69270113c6bf Mon Sep 17 00:00:00 2001
-From: Markus Stockhausen <[email protected]>
-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 <[email protected]>
-Tested-by: Bjørn Mork <[email protected]>
-Signed-off-by: Markus Stockhausen <[email protected]>
-Link: https://lore.kernel.org/r/[email protected]
-Signed-off-by: Daniel Lezcano <[email protected]>
----
- 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 (file)
index c806a21..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-From add0d895aa6f66320f9b1d901b66259f4308af04 Mon Sep 17 00:00:00 2001
-From: Markus Stockhausen <[email protected]>
-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 <[email protected]>
-Tested-by: Bjørn Mork <[email protected]>
-Signed-off-by: Markus Stockhausen <[email protected]>
-Link: https://lore.kernel.org/r/[email protected]
-Signed-off-by: Daniel Lezcano <[email protected]>
----
- 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);
index f7419f61be736216ea56a6a39114292d58c6885f..7b96a42ca6a46f421a09ed4fd33045e505bcad57 100644 (file)
@@ -19,7 +19,7 @@ Signed-off-by: Martin K. Petersen <[email protected]>
 
 --- 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 <[email protected]>
  {
        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 <[email protected]>
  
  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 <[email protected]>
  {
        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 <[email protected]>
  {
 --- 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
  
index edfc554983a3fcd67755b0121cb6168a987acb98..61491c57a2e0da8006bebff8a40fcc4d45a7b6b7 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Minda Chen <[email protected]>
 
 --- 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 <[email protected]>
                          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 |