kernel: bump 6.1 to 6.1.92
authorZxl hhyccc <zxlhhy@gmail.com>
Sat, 25 May 2024 11:38:35 +0000 (19:38 +0800)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 8 Jun 2024 12:16:19 +0000 (14:16 +0200)
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.92

Removed upstreamed:
 bcm27xx/patches-6.1/950-0270-net-bcmgenet-Reset-RBUF-on-first-open.patch
 generic/backport-6.1/600-v6.9-03-net-gro-add-flush-check-in-udp_gro_receive_segment.patch
 generic/pending-6.1/681-net-bridge-fix-multicast-to-unicast-with-fraglist-GS.patch
 generic/pending-6.1/682-net-core-reject-skb_copy-_expand-for-fraglist-GSO-sk.patch
 generic/pending-6.1/684-net-bridge-fix-corrupted-ethernet-header-on-multicas.patch
 generic/pending-6.1/778-net-l2tp-drop-flow-hash-on-forward.patch
 imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch

All other patches automatically rebased.

Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com>
27 files changed:
include/kernel-6.1
target/linux/bcm27xx/patches-6.1/950-0080-Revert-net-bcmgenet-Request-APD-DLL-disable-and-IDDQ.patch
target/linux/bcm27xx/patches-6.1/950-0106-Add-dwc_otg-driver.patch
target/linux/bcm27xx/patches-6.1/950-0179-bcmgenet-Better-coalescing-parameter-defaults.patch
target/linux/bcm27xx/patches-6.1/950-0180-net-genet-enable-link-energy-detect-powerdown-for-ex.patch
target/linux/bcm27xx/patches-6.1/950-0189-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch
target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch
target/linux/bcm27xx/patches-6.1/950-0270-net-bcmgenet-Reset-RBUF-on-first-open.patch [deleted file]
target/linux/bcm27xx/patches-6.1/950-0513-net-bcmgenet-Add-eee-module-parameter.patch
target/linux/bcm27xx/patches-6.1/950-0865-usb-dwc3-Set-DMA-and-coherent-masks-early.patch
target/linux/bcm47xx/patches-6.1/209-b44-register-adm-switch.patch
target/linux/bcm47xx/patches-6.1/210-b44_phy_fix.patch
target/linux/generic/backport-6.1/600-v6.9-03-net-gro-add-flush-check-in-udp_gro_receive_segment.patch [deleted file]
target/linux/generic/hack-6.1/221-module_exports.patch
target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch
target/linux/generic/hack-6.1/901-debloat_sock_diag.patch
target/linux/generic/hack-6.1/902-debloat_proc.patch
target/linux/generic/pending-6.1/655-increase_skb_pad.patch
target/linux/generic/pending-6.1/681-net-bridge-fix-multicast-to-unicast-with-fraglist-GS.patch [deleted file]
target/linux/generic/pending-6.1/682-net-core-reject-skb_copy-_expand-for-fraglist-GSO-sk.patch [deleted file]
target/linux/generic/pending-6.1/684-net-bridge-fix-corrupted-ethernet-header-on-multicas.patch [deleted file]
target/linux/generic/pending-6.1/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
target/linux/generic/pending-6.1/760-net-core-add-optional-threading-for-backlog-processi.patch
target/linux/generic/pending-6.1/778-net-l2tp-drop-flow-hash-on-forward.patch [deleted file]
target/linux/imx/patches-6.1/001-6.2-phy-freescale-imx8m-pcie-Refine-register-definitions.patch
target/linux/imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch [deleted file]
target/linux/imx/patches-6.1/003-6.3-phy-freescale-imx8m-pcie-Add-i.MX8MP-PCIe-PHY-suppor.patch

index 6717917ac1edc4c27b8aa876dc4484e34cbda14d..026ef91a52e13dafbed4c0b381cfbf5121dbc82c 100644 (file)
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.1 = .89
-LINUX_KERNEL_HASH-6.1.89 = 12bab8e092618d1d4eeaf4201e6e70054c94896198956bd84ff0e908b0264719
+LINUX_VERSION-6.1 = .92
+LINUX_KERNEL_HASH-6.1.92 = 9019f427bfdc9ced5bc954d760d37ac08c0cdffb45ad28087fc45a73e64336c9
index 9a29d617929bd2a5752e20a6b44cac4a89531668..57a59c1ae41136dece09abbb254a06fb026c0b96 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -290,9 +290,7 @@ int bcmgenet_mii_probe(struct net_device
+@@ -303,9 +303,7 @@ int bcmgenet_mii_probe(struct net_device
        struct device_node *dn = kdev->of_node;
        phy_interface_t phy_iface = priv->phy_interface;
        struct phy_device *phydev;
index 600fe08126ddd2fc118edbf641d74ddb01b18346..89ed66656718d5d6b21b188d0c54b0a2d0182e62 100644 (file)
@@ -1185,7 +1185,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -5697,7 +5697,7 @@ static void port_event(struct usb_hub *h
+@@ -5698,7 +5698,7 @@ static void port_event(struct usb_hub *h
                port_dev->over_current_count++;
                port_over_current_notify(port_dev);
  
index b805f1df30df3f586e639a447e5a2e37545960b5..41c6199005df2b035aed322f0958faad26ae3cc3 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -2659,7 +2659,7 @@ static void bcmgenet_init_tx_ring(struct
+@@ -2665,7 +2665,7 @@ static void bcmgenet_init_tx_ring(struct
  
        bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
        bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
@@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
        /* Disable rate control for now */
        bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
                                  TDMA_FLOW_PERIOD);
-@@ -4140,9 +4140,12 @@ static int bcmgenet_probe(struct platfor
+@@ -4160,9 +4160,12 @@ static int bcmgenet_probe(struct platfor
        netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
  
        /* Set default coalescing parameters */
index cc76ba5db92a202cb3aa4984f78419292e04c995..44d8613b5e8b7be4c0762317f3b582405a1e5748 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
 
 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
 +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -296,6 +296,8 @@ int bcmgenet_mii_probe(struct net_device
+@@ -309,6 +309,8 @@ int bcmgenet_mii_probe(struct net_device
        /* Communicate the integrated PHY revision */
        if (priv->internal_phy)
                phy_flags = priv->gphy_rev;
index da60efe07fca8e9eed92cb70a2696367c9947c98..1507baa65b9a00e6388c87891d073a2c5442dd86 100644 (file)
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
  
  static inline void bcmgenet_writel(u32 value, void __iomem *offset)
  {
-@@ -2490,6 +2493,11 @@ static void reset_umac(struct bcmgenet_p
+@@ -2494,6 +2497,11 @@ static void reset_umac(struct bcmgenet_p
        bcmgenet_rbuf_ctrl_set(priv, 0);
        udelay(10);
  
@@ -47,5 +47,5 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 +      }
 +
        /* issue soft reset and disable MAC while updating its registers */
+       spin_lock_bh(&priv->reg_lock);
        bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD);
-       udelay(2);
index ef96ffe86e132d5b91e57726cc7272382f298a92..2a3e2d781e07c3ae2b3613e5e85f6581cfd9231f 100644 (file)
@@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
 
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -3679,6 +3679,7 @@ static int spi_set_cs_timing(struct spi_
+@@ -3690,6 +3690,7 @@ static int spi_set_cs_timing(struct spi_
   */
  int spi_setup(struct spi_device *spi)
  {
@@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
        unsigned        bad_bits, ugly_bits;
        int             status = 0;
  
-@@ -3699,6 +3700,14 @@ int spi_setup(struct spi_device *spi)
+@@ -3710,6 +3711,14 @@ int spi_setup(struct spi_device *spi)
                (SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
                 SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
                return -EINVAL;
diff --git a/target/linux/bcm27xx/patches-6.1/950-0270-net-bcmgenet-Reset-RBUF-on-first-open.patch b/target/linux/bcm27xx/patches-6.1/950-0270-net-bcmgenet-Reset-RBUF-on-first-open.patch
deleted file mode 100644 (file)
index e21de6f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-From e857a27d5bca6269cea7a0ca0058aa8fffe90a83 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.com>
-Date: Fri, 25 Sep 2020 15:07:23 +0100
-Subject: [PATCH] net: bcmgenet: Reset RBUF on first open
-
-If the RBUF logic is not reset when the kernel starts then there
-may be some data left over from any network boot loader. If the
-64-byte packet headers are enabled then this can be fatal.
-
-Extend bcmgenet_dma_disable to do perform the reset, but not when
-called from bcmgenet_resume in order to preserve a wake packet.
-
-N.B. This different handling of resume is just based on a hunch -
-why else wouldn't one reset the RBUF as well as the TBUF? If this
-isn't the case then it's easy to change the patch to make the RBUF
-reset unconditional.
-
-See: https://github.com/raspberrypi/linux/issues/3850
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.com>
----
- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
---- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -3306,7 +3306,7 @@ static void bcmgenet_get_hw_addr(struct
- }
- /* Returns a reusable dma control register value */
--static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv)
-+static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv, bool flush_rx)
- {
-       unsigned int i;
-       u32 reg;
-@@ -3331,6 +3331,14 @@ static u32 bcmgenet_dma_disable(struct b
-       udelay(10);
-       bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
-+      if (flush_rx) {
-+          reg = bcmgenet_rbuf_ctrl_get(priv);
-+          bcmgenet_rbuf_ctrl_set(priv, reg | BIT(0));
-+          udelay(10);
-+          bcmgenet_rbuf_ctrl_set(priv, reg);
-+          udelay(10);
-+      }
-+
-       return dma_ctrl;
- }
-@@ -3394,8 +3402,8 @@ static int bcmgenet_open(struct net_devi
-       bcmgenet_set_hw_addr(priv, dev->dev_addr);
--      /* Disable RX/TX DMA and flush TX queues */
--      dma_ctrl = bcmgenet_dma_disable(priv);
-+      /* Disable RX/TX DMA and flush TX and RX queues */
-+      dma_ctrl = bcmgenet_dma_disable(priv, true);
-       /* Reinitialize TDMA and RDMA and SW housekeeping */
-       ret = bcmgenet_init_dma(priv);
-@@ -4269,7 +4277,7 @@ static int bcmgenet_resume(struct device
-                       bcmgenet_hfb_create_rxnfc_filter(priv, rule);
-       /* Disable RX/TX DMA and flush TX queues */
--      dma_ctrl = bcmgenet_dma_disable(priv);
-+      dma_ctrl = bcmgenet_dma_disable(priv, false);
-       /* Reinitialize TDMA and RDMA and SW housekeeping */
-       ret = bcmgenet_init_dma(priv);
index cd9820fc9d6d87ce014f9cb7f4bcd69696460630..1d035c105ce014e7442f791b09b7de217cf6908b 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
  
  static inline void bcmgenet_writel(u32 value, void __iomem *offset)
  {
-@@ -3440,6 +3443,17 @@ static int bcmgenet_open(struct net_devi
+@@ -3448,6 +3451,17 @@ static int bcmgenet_open(struct net_devi
  
        bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
  
index e67cb66880eb03b5669ca164b334a71cb670ee62..cf92da67a8a74bee13454d5bd76cd4b95ca740e5 100644 (file)
@@ -212,7 +212,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        },
 --- a/drivers/usb/dwc3/core.c
 +++ b/drivers/usb/dwc3/core.c
-@@ -1179,6 +1179,24 @@ static void dwc3_config_threshold(struct
+@@ -1180,6 +1180,24 @@ static void dwc3_config_threshold(struct
        }
  }
  
@@ -237,7 +237,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
  /**
   * dwc3_core_init - Low-level initialization of DWC3 Core
   * @dwc: Pointer to our controller context structure
-@@ -1271,6 +1289,8 @@ static int dwc3_core_init(struct dwc3 *d
+@@ -1257,6 +1275,8 @@ static int dwc3_core_init(struct dwc3 *d
  
        dwc3_set_incr_burst_type(dwc);
  
@@ -246,7 +246,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        usb_phy_set_suspend(dwc->usb2_phy, 0);
        usb_phy_set_suspend(dwc->usb3_phy, 0);
        ret = phy_power_on(dwc->usb2_generic_phy);
-@@ -1504,6 +1524,7 @@ static void dwc3_get_properties(struct d
+@@ -1490,6 +1510,7 @@ static void dwc3_get_properties(struct d
        u8                      tx_thr_num_pkt_prd = 0;
        u8                      tx_max_burst_prd = 0;
        u8                      tx_fifo_resize_max_num;
@@ -254,7 +254,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        const char              *usb_psy_name;
        int                     ret;
  
-@@ -1526,6 +1547,9 @@ static void dwc3_get_properties(struct d
+@@ -1512,6 +1533,9 @@ static void dwc3_get_properties(struct d
         */
        tx_fifo_resize_max_num = 6;
  
@@ -264,7 +264,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        dwc->maximum_speed = usb_get_maximum_speed(dev);
        dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev);
        dwc->dr_mode = usb_get_dr_mode(dev);
-@@ -1641,6 +1665,9 @@ static void dwc3_get_properties(struct d
+@@ -1627,6 +1651,9 @@ static void dwc3_get_properties(struct d
        dwc->dis_split_quirk = device_property_read_bool(dev,
                                "snps,dis-split-quirk");
  
@@ -274,7 +274,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        dwc->lpm_nyet_threshold = lpm_nyet_threshold;
        dwc->tx_de_emphasis = tx_de_emphasis;
  
-@@ -1658,6 +1685,8 @@ static void dwc3_get_properties(struct d
+@@ -1644,6 +1671,8 @@ static void dwc3_get_properties(struct d
        dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd;
        dwc->tx_max_burst_prd = tx_max_burst_prd;
  
@@ -283,7 +283,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        dwc->imod_interval = 0;
  
        dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
-@@ -1866,6 +1895,12 @@ static int dwc3_probe(struct platform_de
+@@ -1852,6 +1881,12 @@ static int dwc3_probe(struct platform_de
  
        dwc3_get_properties(dwc);
  
@@ -326,7 +326,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
  
 --- a/drivers/usb/dwc3/host.c
 +++ b/drivers/usb/dwc3/host.c
-@@ -30,10 +30,10 @@ static void dwc3_host_fill_xhci_irq_res(
+@@ -51,10 +51,10 @@ static void dwc3_host_fill_xhci_irq_res(
  
  static int dwc3_host_get_irq(struct dwc3 *dwc)
  {
@@ -339,7 +339,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        if (irq > 0) {
                dwc3_host_fill_xhci_irq_res(dwc, irq, "host");
                goto out;
-@@ -42,7 +42,7 @@ static int dwc3_host_get_irq(struct dwc3
+@@ -63,7 +63,7 @@ static int dwc3_host_get_irq(struct dwc3
        if (irq == -EPROBE_DEFER)
                goto out;
  
@@ -348,7 +348,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        if (irq > 0) {
                dwc3_host_fill_xhci_irq_res(dwc, irq, "dwc_usb3");
                goto out;
-@@ -51,7 +51,7 @@ static int dwc3_host_get_irq(struct dwc3
+@@ -72,7 +72,7 @@ static int dwc3_host_get_irq(struct dwc3
        if (irq == -EPROBE_DEFER)
                goto out;
  
@@ -357,7 +357,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
        if (irq > 0) {
                dwc3_host_fill_xhci_irq_res(dwc, irq, NULL);
                goto out;
-@@ -66,16 +66,23 @@ out:
+@@ -87,16 +87,23 @@ out:
  
  int dwc3_host_init(struct dwc3 *dwc)
  {
index af4e218f9ec2da8f4b049c208d0ea476df5fe793..1b9dcb3adc3c181c84a81853e7473a3eddfd9b67 100644 (file)
@@ -19,7 +19,7 @@ Subject: [PATCH 210/210] b44: register adm switch
  
  #include <linux/uaccess.h>
  #include <asm/io.h>
-@@ -2249,6 +2251,69 @@ static void b44_adjust_link(struct net_d
+@@ -2251,6 +2253,69 @@ static void b44_adjust_link(struct net_d
        }
  }
  
@@ -89,7 +89,7 @@ Subject: [PATCH 210/210] b44: register adm switch
  static int b44_register_phy_one(struct b44 *bp)
  {
        __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
-@@ -2285,6 +2350,9 @@ static int b44_register_phy_one(struct b
+@@ -2287,6 +2352,9 @@ static int b44_register_phy_one(struct b
        if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) &&
            (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) {
  
@@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch
                dev_info(sdev->dev,
                         "could not find PHY at %i, use fixed one\n",
                         bp->phy_addr);
-@@ -2479,6 +2547,7 @@ static void b44_remove_one(struct ssb_de
+@@ -2481,6 +2549,7 @@ static void b44_remove_one(struct ssb_de
        unregister_netdev(dev);
        if (bp->flags & B44_FLAG_EXTERNAL_PHY)
                b44_unregister_phy_one(bp);
index ffe029b9fe784a42bee6c42a61e0b5948fc93909..af9736518b83a7c4ac4b61ed776031cdfbe31a4a 100644 (file)
@@ -43,7 +43,7 @@
  
        if (bp->flags & B44_FLAG_EXTERNAL_PHY)
                return 0;
-@@ -2179,6 +2204,8 @@ static int b44_get_invariants(struct b44
+@@ -2181,6 +2206,8 @@ static int b44_get_invariants(struct b44
         * valid PHY address. */
        bp->phy_addr &= 0x1F;
  
diff --git a/target/linux/generic/backport-6.1/600-v6.9-03-net-gro-add-flush-check-in-udp_gro_receive_segment.patch b/target/linux/generic/backport-6.1/600-v6.9-03-net-gro-add-flush-check-in-udp_gro_receive_segment.patch
deleted file mode 100644 (file)
index 55dac85..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-From: Richard Gobert <richardbgobert@gmail.com>
-Date: Tue, 30 Apr 2024 16:35:55 +0200
-Subject: [PATCH] net: gro: add flush check in udp_gro_receive_segment
-
-GRO-GSO path is supposed to be transparent and as such L3 flush checks are
-relevant to all UDP flows merging in GRO. This patch uses the same logic
-and code from tcp_gro_receive, terminating merge if flush is non zero.
-
-Fixes: e20cf8d3f1f7 ("udp: implement GRO for plain UDP sockets.")
-Signed-off-by: Richard Gobert <richardbgobert@gmail.com>
-Reviewed-by: Willem de Bruijn <willemb@google.com>
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
----
-
---- a/net/ipv4/udp_offload.c
-+++ b/net/ipv4/udp_offload.c
-@@ -463,6 +463,7 @@ static struct sk_buff *udp_gro_receive_s
-       struct sk_buff *p;
-       unsigned int ulen;
-       int ret = 0;
-+      int flush;
-       /* requires non zero csum, for symmetry with GSO */
-       if (!uh->check) {
-@@ -496,13 +497,22 @@ static struct sk_buff *udp_gro_receive_s
-                       return p;
-               }
-+              flush = NAPI_GRO_CB(p)->flush;
-+
-+              if (NAPI_GRO_CB(p)->flush_id != 1 ||
-+                  NAPI_GRO_CB(p)->count != 1 ||
-+                  !NAPI_GRO_CB(p)->is_atomic)
-+                      flush |= NAPI_GRO_CB(p)->flush_id;
-+              else
-+                      NAPI_GRO_CB(p)->is_atomic = false;
-+
-               /* Terminate the flow on len mismatch or if it grow "too much".
-                * Under small packet flood GRO count could elsewhere grow a lot
-                * leading to excessive truesize values.
-                * On len mismatch merge the first packet shorter than gso_size,
-                * otherwise complete the GRO packet.
-                */
--              if (ulen > ntohs(uh2->len)) {
-+              if (ulen > ntohs(uh2->len) || flush) {
-                       pp = p;
-               } else {
-                       if (NAPI_GRO_CB(skb)->is_flist) {
index 967510bcb6d92f05024ad7cfaa5da52a6d6f226e..573eeb15d7d2bb3318e9598ebff712b5bcc31da9 100644 (file)
@@ -115,7 +115,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        .previous
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -388,7 +388,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
+@@ -391,7 +391,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
  # Linker scripts preprocessor (.lds.S -> .lds)
  # ---------------------------------------------------------------------------
  quiet_cmd_cpp_lds_S = LDS     $@
index bf286523d6095df26bedb5cea48e17d7db146b37..696a78e53ea9fd80297224cc335578e553e61625 100644 (file)
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
   */
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -3045,6 +3045,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -3060,6 +3060,10 @@ static inline int pskb_trim(struct sk_bu
        return (len < skb->len) ? __pskb_trim(skb, len) : 0;
  }
  
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  /**
   *    pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *    @skb: buffer to alter
-@@ -3194,16 +3198,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -3209,16 +3213,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
index ec71f9af4be03e1d8639e5e8ed4a01c8480f3568..09b59478aae2bae2cf8f8a1978efcfc08a41e97d 100644 (file)
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  static void sock_def_write_space_wfree(struct sock *sk);
  static void sock_def_write_space(struct sock *sk);
-@@ -585,6 +587,18 @@ discard_and_relse:
+@@ -586,6 +588,18 @@ discard_and_relse:
  }
  EXPORT_SYMBOL(__sk_receive_skb);
  
@@ -79,7 +79,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
                                                          u32));
  INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
-@@ -2188,9 +2202,11 @@ static void __sk_free(struct sock *sk)
+@@ -2189,9 +2203,11 @@ static void __sk_free(struct sock *sk)
        if (likely(sk->sk_net_refcnt))
                sock_inuse_add(sock_net(sk), -1);
  
index a90169efc9c202781a3ed2555c08f8c3c894743d..d9de0b4fec68781c6e79602bda5abb47c00b8649 100644 (file)
@@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -4114,6 +4114,8 @@ static __net_initdata struct pernet_oper
+@@ -4115,6 +4115,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
index 8af331cb2382d873535d9fdc89378bae84c10198..9d77ceaf938d78dcb7049d8ae77bac20b40b61da 100644 (file)
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -3012,7 +3012,7 @@ static inline int pskb_network_may_pull(
+@@ -3027,7 +3027,7 @@ static inline int pskb_network_may_pull(
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
diff --git a/target/linux/generic/pending-6.1/681-net-bridge-fix-multicast-to-unicast-with-fraglist-GS.patch b/target/linux/generic/pending-6.1/681-net-bridge-fix-multicast-to-unicast-with-fraglist-GS.patch
deleted file mode 100644 (file)
index 6a53a67..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Sat, 27 Apr 2024 18:54:25 +0200
-Subject: [PATCH] net: bridge: fix multicast-to-unicast with fraglist GSO
-
-Calling skb_copy on a SKB_GSO_FRAGLIST skb is not valid, since it returns
-an invalid linearized skb. This code only needs to change the ethernet
-header, so pskb_copy is the right function to call here.
-
-Fixes: 6db6f0eae605 ("bridge: multicast to unicast")
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/net/bridge/br_forward.c
-+++ b/net/bridge/br_forward.c
-@@ -261,7 +261,7 @@ static void maybe_deliver_addr(struct ne
-       if (skb->dev == p->dev && ether_addr_equal(src, addr))
-               return;
--      skb = skb_copy(skb, GFP_ATOMIC);
-+      skb = pskb_copy(skb, GFP_ATOMIC);
-       if (!skb) {
-               DEV_STATS_INC(dev, tx_dropped);
-               return;
diff --git a/target/linux/generic/pending-6.1/682-net-core-reject-skb_copy-_expand-for-fraglist-GSO-sk.patch b/target/linux/generic/pending-6.1/682-net-core-reject-skb_copy-_expand-for-fraglist-GSO-sk.patch
deleted file mode 100644 (file)
index 719cac9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Sat, 27 Apr 2024 19:29:45 +0200
-Subject: [PATCH] net: core: reject skb_copy(_expand) for fraglist GSO skbs
-
-SKB_GSO_FRAGLIST skbs must not be linearized, otherwise they become
-invalid. Return NULL if such an skb is passed to skb_copy or
-skb_copy_expand, in order to prevent a crash on a potential later
-call to skb_gso_segment.
-
-Fixes: 3a1296a38d0c ("net: Support GRO/GSO fraglist chaining.")
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/net/core/skbuff.c
-+++ b/net/core/skbuff.c
-@@ -1720,11 +1720,17 @@ static inline int skb_alloc_rx_flag(cons
- struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask)
- {
--      int headerlen = skb_headroom(skb);
--      unsigned int size = skb_end_offset(skb) + skb->data_len;
--      struct sk_buff *n = __alloc_skb(size, gfp_mask,
--                                      skb_alloc_rx_flag(skb), NUMA_NO_NODE);
-+      struct sk_buff *n;
-+      unsigned int size;
-+      int headerlen;
-+      if (WARN_ON_ONCE(skb_shinfo(skb)->gso_type & SKB_GSO_FRAGLIST))
-+              return NULL;
-+
-+      headerlen = skb_headroom(skb);
-+      size = skb_end_offset(skb) + skb->data_len;
-+      n = __alloc_skb(size, gfp_mask,
-+                      skb_alloc_rx_flag(skb), NUMA_NO_NODE);
-       if (!n)
-               return NULL;
-@@ -2037,12 +2043,17 @@ struct sk_buff *skb_copy_expand(const st
-       /*
-        *      Allocate the copy buffer
-        */
--      struct sk_buff *n = __alloc_skb(newheadroom + skb->len + newtailroom,
--                                      gfp_mask, skb_alloc_rx_flag(skb),
--                                      NUMA_NO_NODE);
--      int oldheadroom = skb_headroom(skb);
-       int head_copy_len, head_copy_off;
-+      struct sk_buff *n;
-+      int oldheadroom;
-+
-+      if (WARN_ON_ONCE(skb_shinfo(skb)->gso_type & SKB_GSO_FRAGLIST))
-+              return NULL;
-+      oldheadroom = skb_headroom(skb);
-+      n = __alloc_skb(newheadroom + skb->len + newtailroom,
-+                      gfp_mask, skb_alloc_rx_flag(skb),
-+                      NUMA_NO_NODE);
-       if (!n)
-               return NULL;
diff --git a/target/linux/generic/pending-6.1/684-net-bridge-fix-corrupted-ethernet-header-on-multicas.patch b/target/linux/generic/pending-6.1/684-net-bridge-fix-corrupted-ethernet-header-on-multicas.patch
deleted file mode 100644 (file)
index c315790..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Sun, 5 May 2024 20:36:56 +0200
-Subject: [PATCH] net: bridge: fix corrupted ethernet header on
- multicast-to-unicast
-
-The change from skb_copy to pskb_copy unfortunately changed the data
-copying to omit the ethernet header, since it was pulled before reaching
-this point. Fix this by calling __skb_push/pull around pskb_copy.
-
-Fixes: 59c878cbcdd8 ("net: bridge: fix multicast-to-unicast with fraglist GSO")
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/net/bridge/br_forward.c
-+++ b/net/bridge/br_forward.c
-@@ -253,6 +253,7 @@ static void maybe_deliver_addr(struct ne
- {
-       struct net_device *dev = BR_INPUT_SKB_CB(skb)->brdev;
-       const unsigned char *src = eth_hdr(skb)->h_source;
-+      struct sk_buff *nskb;
-       if (!should_deliver(p, skb))
-               return;
-@@ -261,12 +262,16 @@ static void maybe_deliver_addr(struct ne
-       if (skb->dev == p->dev && ether_addr_equal(src, addr))
-               return;
--      skb = pskb_copy(skb, GFP_ATOMIC);
--      if (!skb) {
-+      __skb_push(skb, ETH_HLEN);
-+      nskb = pskb_copy(skb, GFP_ATOMIC);
-+      __skb_pull(skb, ETH_HLEN);
-+      if (!nskb) {
-               DEV_STATS_INC(dev, tx_dropped);
-               return;
-       }
-+      skb = nskb;
-+      __skb_pull(skb, ETH_HLEN);
-       if (!is_broadcast_ether_addr(addr))
-               memcpy(eth_hdr(skb)->h_dest, addr, ETH_ALEN);
index 20d1c130459d84c687287d53d738fb172e9a45cd..367c41bff0ea7ca53e8729ade8ef79e68ce48b18 100644 (file)
@@ -134,7 +134,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                return -EMSGSIZE;
  
        timerval = br_timer_value(&p->message_age_timer);
-@@ -878,6 +880,7 @@ static const struct nla_policy br_port_p
+@@ -879,6 +881,7 @@ static const struct nla_policy br_port_p
        [IFLA_BRPORT_LOCKED] = { .type = NLA_U8 },
        [IFLA_BRPORT_BACKUP_PORT] = { .type = NLA_U32 },
        [IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT] = { .type = NLA_U32 },
@@ -142,7 +142,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  };
  
  /* Change the state of the port and notify spanning tree */
-@@ -943,6 +946,7 @@ static int br_setport(struct net_bridge_
+@@ -944,6 +947,7 @@ static int br_setport(struct net_bridge_
        br_set_port_flag(p, tb, IFLA_BRPORT_NEIGH_SUPPRESS, BR_NEIGH_SUPPRESS);
        br_set_port_flag(p, tb, IFLA_BRPORT_ISOLATED, BR_ISOLATED);
        br_set_port_flag(p, tb, IFLA_BRPORT_LOCKED, BR_PORT_LOCKED);
index 69b272173815c45c7e0c48d1657eca8813349f65..6ccc3eb389833d49c9f2c1c34946667b48d86f31 100644 (file)
@@ -177,15 +177,15 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                sd->backlog.weight = weight_p;
 --- a/net/core/sysctl_net_core.c
 +++ b/net/core/sysctl_net_core.c
-@@ -29,6 +29,7 @@ static int int_3600 = 3600;
- static int min_sndbuf = SOCK_MIN_SNDBUF;
+@@ -30,6 +30,7 @@ static int min_sndbuf = SOCK_MIN_SNDBUF;
  static int min_rcvbuf = SOCK_MIN_RCVBUF;
  static int max_skb_frags = MAX_SKB_FRAGS;
+ static int min_mem_pcpu_rsv = SK_MEMORY_PCPU_RESERVE;
 +static int backlog_threaded;
  
  static int net_msg_warn;      /* Unused, but still a sysctl */
  
-@@ -112,6 +113,23 @@ static int rps_sock_flow_sysctl(struct c
+@@ -113,6 +114,23 @@ static int rps_sock_flow_sysctl(struct c
  }
  #endif /* CONFIG_RPS */
  
@@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #ifdef CONFIG_NET_FLOW_LIMIT
  static DEFINE_MUTEX(flow_limit_update_mutex);
  
-@@ -473,6 +491,15 @@ static struct ctl_table net_core_table[]
+@@ -482,6 +500,15 @@ static struct ctl_table net_core_table[]
                .proc_handler   = rps_sock_flow_sysctl
        },
  #endif
diff --git a/target/linux/generic/pending-6.1/778-net-l2tp-drop-flow-hash-on-forward.patch b/target/linux/generic/pending-6.1/778-net-l2tp-drop-flow-hash-on-forward.patch
deleted file mode 100644 (file)
index a2c0edc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4a44a52f16ccd3d03e0cb5fb437a5eb31a5f9f05 Mon Sep 17 00:00:00 2001
-From: David Bauer <mail@david-bauer.net>
-Date: Mon, 26 Feb 2024 21:39:34 +0100
-Subject: [PATCH] net l2tp: drop flow hash on forward
-
-Drop the flow-hash of the skb when forwarding to the L2TP netdev.
-
-This avoids the L2TP qdisc from using the flow-hash from the outer
-packet, which is identical for every flow within the tunnel.
-
-This does not affect every platform but is specific for the ethernet
-driver. It depends on the platform including L4 information in the
-flow-hash.
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
----
- net/l2tp/l2tp_eth.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/net/l2tp/l2tp_eth.c
-+++ b/net/l2tp/l2tp_eth.c
-@@ -136,6 +136,9 @@ static void l2tp_eth_dev_recv(struct l2t
-       /* checksums verified by L2TP */
-       skb->ip_summed = CHECKSUM_NONE;
-+      /* drop outer flow-hash */
-+      skb_clear_hash(skb);
-+
-       skb_dst_drop(skb);
-       nf_reset_ct(skb);
index 0af479aae94b8f39194fa6a57563006714bd2956..01731755df11b7c8e54f58cded3fe51368a64faf 100644 (file)
@@ -20,7 +20,7 @@ Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
 
 --- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
 +++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
-@@ -31,12 +31,10 @@
+@@ -32,12 +32,10 @@
  #define IMX8MM_PCIE_PHY_CMN_REG065    0x194
  #define  ANA_AUX_RX_TERM              (BIT(7) | BIT(4))
  #define  ANA_AUX_TX_LVL                       GENMASK(3, 0)
@@ -35,8 +35,8 @@ Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
  
  #define IMX8MM_GPR_PCIE_REF_CLK_SEL   GENMASK(25, 24)
  #define IMX8MM_GPR_PCIE_REF_CLK_PLL   FIELD_PREP(IMX8MM_GPR_PCIE_REF_CLK_SEL, 0x3)
-@@ -131,9 +129,8 @@ static int imx8_pcie_phy_power_on(struct
-       reset_control_deassert(imx8_phy->reset);
+@@ -152,9 +150,8 @@ static int imx8_pcie_phy_power_on(struct
+       }
  
        /* Polling to check the phy is ready or not. */
 -      ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG75,
diff --git a/target/linux/imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch b/target/linux/imx/patches-6.1/002-6.2-phy-freescale-imx8m-pcie-Refine-i.MX8MM-PCIe-PHY-dri.patch
deleted file mode 100644 (file)
index c2264c0..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-From fb681544808b85c0cdf41a627401e5d470633914 Mon Sep 17 00:00:00 2001
-From: Richard Zhu <hongxing.zhu@nxp.com>
-Date: Thu, 13 Oct 2022 09:47:01 +0800
-Subject: [PATCH 2/3] phy: freescale: imx8m-pcie: Refine i.MX8MM PCIe PHY
- driver
-
-To make it more flexible and easy to expand. Refine i.MX8MM PCIe PHY
-driver.
-- Use gpr compatible string to avoid the codes duplications when add
-  another platform PCIe PHY support.
-- Re-arrange the codes to let it more flexible and easy to expand.
-No functional change. Re-arrange the TX tuning, since internal registers
-can be wrote through APB interface before assertion of CMN_RST.
-
-Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Tested-by: Marek Vasut <marex@denx.de>
-Tested-by: Richard Leitner <richard.leitner@skidata.com>
-Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
-Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
-Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
----
- drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 106 +++++++++++++--------
- 1 file changed, 66 insertions(+), 40 deletions(-)
-
---- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
-+++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c
-@@ -11,6 +11,7 @@
- #include <linux/mfd/syscon.h>
- #include <linux/mfd/syscon/imx7-iomuxc-gpr.h>
- #include <linux/module.h>
-+#include <linux/of_device.h>
- #include <linux/phy/phy.h>
- #include <linux/platform_device.h>
- #include <linux/regmap.h>
-@@ -45,6 +46,15 @@
- #define IMX8MM_GPR_PCIE_SSC_EN                BIT(16)
- #define IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE       BIT(9)
-+enum imx8_pcie_phy_type {
-+      IMX8MM,
-+};
-+
-+struct imx8_pcie_phy_drvdata {
-+      const   char                    *gpr;
-+      enum    imx8_pcie_phy_type      variant;
-+};
-+
- struct imx8_pcie_phy {
-       void __iomem            *base;
-       struct clk              *clk;
-@@ -55,6 +65,7 @@ struct imx8_pcie_phy {
-       u32                     tx_deemph_gen1;
-       u32                     tx_deemph_gen2;
-       bool                    clkreq_unused;
-+      const struct imx8_pcie_phy_drvdata      *drvdata;
- };
- static int imx8_pcie_phy_power_on(struct phy *phy)
-@@ -66,31 +77,17 @@ static int imx8_pcie_phy_power_on(struct
-       reset_control_assert(imx8_phy->reset);
-       pad_mode = imx8_phy->refclk_pad_mode;
--      /* Set AUX_EN_OVERRIDE 1'b0, when the CLKREQ# isn't hooked */
--      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
--                         IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE,
--                         imx8_phy->clkreq_unused ?
--                         0 : IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE);
--      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
--                         IMX8MM_GPR_PCIE_AUX_EN,
--                         IMX8MM_GPR_PCIE_AUX_EN);
--      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
--                         IMX8MM_GPR_PCIE_POWER_OFF, 0);
--      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
--                         IMX8MM_GPR_PCIE_SSC_EN, 0);
--
--      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
--                         IMX8MM_GPR_PCIE_REF_CLK_SEL,
--                         pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ?
--                         IMX8MM_GPR_PCIE_REF_CLK_EXT :
--                         IMX8MM_GPR_PCIE_REF_CLK_PLL);
--      usleep_range(100, 200);
--
--      /* Do the PHY common block reset */
--      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
--                         IMX8MM_GPR_PCIE_CMN_RST,
--                         IMX8MM_GPR_PCIE_CMN_RST);
--      usleep_range(200, 500);
-+      switch (imx8_phy->drvdata->variant) {
-+      case IMX8MM:
-+              /* Tune PHY de-emphasis setting to pass PCIe compliance. */
-+              if (imx8_phy->tx_deemph_gen1)
-+                      writel(imx8_phy->tx_deemph_gen1,
-+                             imx8_phy->base + PCIE_PHY_TRSV_REG5);
-+              if (imx8_phy->tx_deemph_gen2)
-+                      writel(imx8_phy->tx_deemph_gen2,
-+                             imx8_phy->base + PCIE_PHY_TRSV_REG6);
-+              break;
-+      }
-       if (pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ||
-           pad_mode == IMX8_PCIE_REFCLK_PAD_UNUSED) {
-@@ -118,15 +115,37 @@ static int imx8_pcie_phy_power_on(struct
-                      imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG065);
-       }
--      /* Tune PHY de-emphasis setting to pass PCIe compliance. */
--      if (imx8_phy->tx_deemph_gen1)
--              writel(imx8_phy->tx_deemph_gen1,
--                     imx8_phy->base + PCIE_PHY_TRSV_REG5);
--      if (imx8_phy->tx_deemph_gen2)
--              writel(imx8_phy->tx_deemph_gen2,
--                     imx8_phy->base + PCIE_PHY_TRSV_REG6);
-+      /* Set AUX_EN_OVERRIDE 1'b0, when the CLKREQ# isn't hooked */
-+      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
-+                         IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE,
-+                         imx8_phy->clkreq_unused ?
-+                         0 : IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE);
-+      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
-+                         IMX8MM_GPR_PCIE_AUX_EN,
-+                         IMX8MM_GPR_PCIE_AUX_EN);
-+      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
-+                         IMX8MM_GPR_PCIE_POWER_OFF, 0);
-+      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
-+                         IMX8MM_GPR_PCIE_SSC_EN, 0);
--      reset_control_deassert(imx8_phy->reset);
-+      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
-+                         IMX8MM_GPR_PCIE_REF_CLK_SEL,
-+                         pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ?
-+                         IMX8MM_GPR_PCIE_REF_CLK_EXT :
-+                         IMX8MM_GPR_PCIE_REF_CLK_PLL);
-+      usleep_range(100, 200);
-+
-+      /* Do the PHY common block reset */
-+      regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14,
-+                         IMX8MM_GPR_PCIE_CMN_RST,
-+                         IMX8MM_GPR_PCIE_CMN_RST);
-+
-+      switch (imx8_phy->drvdata->variant) {
-+      case IMX8MM:
-+              reset_control_deassert(imx8_phy->reset);
-+              usleep_range(200, 500);
-+              break;
-+      }
-       /* Polling to check the phy is ready or not. */
-       ret = readl_poll_timeout(imx8_phy->base + IMX8MM_PCIE_PHY_CMN_REG075,
-@@ -157,6 +176,17 @@ static const struct phy_ops imx8_pcie_ph
-       .owner          = THIS_MODULE,
- };
-+static const struct imx8_pcie_phy_drvdata imx8mm_drvdata = {
-+      .gpr = "fsl,imx8mm-iomuxc-gpr",
-+      .variant = IMX8MM,
-+};
-+
-+static const struct of_device_id imx8_pcie_phy_of_match[] = {
-+      {.compatible = "fsl,imx8mm-pcie-phy", .data = &imx8mm_drvdata, },
-+      { },
-+};
-+MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
-+
- static int imx8_pcie_phy_probe(struct platform_device *pdev)
- {
-       struct phy_provider *phy_provider;
-@@ -169,6 +199,8 @@ static int imx8_pcie_phy_probe(struct pl
-       if (!imx8_phy)
-               return -ENOMEM;
-+      imx8_phy->drvdata = of_device_get_match_data(dev);
-+
-       /* get PHY refclk pad mode */
-       of_property_read_u32(np, "fsl,refclk-pad-mode",
-                            &imx8_phy->refclk_pad_mode);
-@@ -194,7 +226,7 @@ static int imx8_pcie_phy_probe(struct pl
-       /* Grab GPR config register range */
-       imx8_phy->iomuxc_gpr =
--               syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
-+               syscon_regmap_lookup_by_compatible(imx8_phy->drvdata->gpr);
-       if (IS_ERR(imx8_phy->iomuxc_gpr)) {
-               dev_err(dev, "unable to find iomuxc registers\n");
-               return PTR_ERR(imx8_phy->iomuxc_gpr);
-@@ -222,12 +254,6 @@ static int imx8_pcie_phy_probe(struct pl
-       return PTR_ERR_OR_ZERO(phy_provider);
- }
--static const struct of_device_id imx8_pcie_phy_of_match[] = {
--      {.compatible = "fsl,imx8mm-pcie-phy",},
--      { },
--};
--MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
--
- static struct platform_driver imx8_pcie_phy_driver = {
-       .probe  = imx8_pcie_phy_probe,
-       .driver = {
index 03b41e4153029a14e7cf98b9777e687fe74aa654..dbcfd40e573578417dcaf0cdbc7e105a4b2850f5 100644 (file)
@@ -57,7 +57,7 @@ Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
        }
  
        if (pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ||
-@@ -141,6 +145,9 @@ static int imx8_pcie_phy_power_on(struct
+@@ -143,6 +147,9 @@ static int imx8_pcie_phy_power_on(struct
                           IMX8MM_GPR_PCIE_CMN_RST);
  
        switch (imx8_phy->drvdata->variant) {
@@ -67,7 +67,7 @@ Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
        case IMX8MM:
                reset_control_deassert(imx8_phy->reset);
                usleep_range(200, 500);
-@@ -181,8 +188,14 @@ static const struct imx8_pcie_phy_drvdat
+@@ -183,8 +190,14 @@ static const struct imx8_pcie_phy_drvdat
        .variant = IMX8MM,
  };
  
@@ -82,7 +82,7 @@ Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
        { },
  };
  MODULE_DEVICE_TABLE(of, imx8_pcie_phy_of_match);
-@@ -238,6 +251,14 @@ static int imx8_pcie_phy_probe(struct pl
+@@ -240,6 +253,14 @@ static int imx8_pcie_phy_probe(struct pl
                return PTR_ERR(imx8_phy->reset);
        }