diff --git a/board/aarch64/raspberrypi-rpi64/dts/broadcom/bcm2711-rpi-4-b.dts b/board/aarch64/raspberrypi-rpi64/dts/broadcom/bcm2711-rpi-4-b.dts index 2f557a9fd..9ed756822 100644 --- a/board/aarch64/raspberrypi-rpi64/dts/broadcom/bcm2711-rpi-4-b.dts +++ b/board/aarch64/raspberrypi-rpi64/dts/broadcom/bcm2711-rpi-4-b.dts @@ -2,29 +2,18 @@ #include "infix.dtsi" / { - /* Dynamic GPU reservation */ - gpu-reserved { - size = <0x0 0x10000000>; /* 256MB */ - alignment = <0x0 0x1000000>; /* 16MB aligned */ - alloc-ranges = <0x0 0x10000000 0x1 0x00000000>; /* Allow anywhere in RAM */ - no-map; - }; - - /* CMA pool */ - cma-reserved { - compatible = "shared-dma-pool"; - size = <0x0 0x10000000>; /* 256MB */ - alignment = <0x0 0x1000000>; /* 16MB aligned */ - linux,cma-default; - reusable; - }; - chosen { /* 8250 auxiliary UART instead of pl011 */ stdout-path = "serial1:115200n8"; }; }; +/* Override upstream 64MB CMA with 256MB for vc4 GPU */ +&rmem { + cma: linux,cma { + size = <0x10000000>; /* 256MB */ + }; +}; &vc4 { status = "okay"; diff --git a/doc/ChangeLog.md b/doc/ChangeLog.md index 82daf908e..b5f7af78a 100644 --- a/doc/ChangeLog.md +++ b/doc/ChangeLog.md @@ -3,6 +3,16 @@ Change Log All notable changes to the project are documented in this file. +[v26.04.0][UNRELEASED] - +------------------------- + +### Changes + +- Upgrade Linux kernel to 6.18.21 (LTS) + +### Fixes + + [v26.03.0][] - 2026-03-31 ------------------------- @@ -2025,7 +2035,7 @@ Supported YANG models in addition to those used by sysrepo and netopeer: - N/A [buildroot]: https://buildroot.org/ -[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.02.0...HEAD +[UNRELEASED]: https://github.com/kernelkit/infix/compare/v26.03.0...HEAD [v26.03.0]: https://github.com/kernelkit/infix/compare/v26.02.0...v26.03.0 [v26.02.0]: https://github.com/kernelkit/infix/compare/v26.01.0...v26.02.0 [v26.01.0]: https://github.com/kernelkit/infix/compare/v25.11.0...v26.01.0 diff --git a/patches/linux/6.18.21/0001-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch b/patches/linux/6.18.21/0001-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch index 0e2a0b9e4..a1f1ae3e6 100644 --- a/patches/linux/6.18.21/0001-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch +++ b/patches/linux/6.18.21/0001-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch @@ -1,8 +1,9 @@ From 657a79b59e67bac4af66f63bcf740238af399aba Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 19 Sep 2023 18:38:10 +0200 -Subject: [PATCH 01/33] net: phy: marvell10g: Support firmware loading on +Subject: [PATCH 01/41] net: phy: marvell10g: Support firmware loading on 88X3310 +Organization: Wires When probing, if a device is waiting for firmware to be loaded into its RAM, ask userspace for the binary and load it over XMDIO. @@ -15,7 +16,7 @@ fall back. 1 file changed, 161 insertions(+) diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c -index 8fd42131cdbf..44294519231e 100644 +index 8fd42131cdbf9..44294519231ed 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -25,6 +25,7 @@ diff --git a/patches/linux/6.18.21/0002-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch b/patches/linux/6.18.21/0002-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch index e7acebc06..0bc67c4ca 100644 --- a/patches/linux/6.18.21/0002-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch +++ b/patches/linux/6.18.21/0002-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch @@ -1,8 +1,9 @@ From 6684303b2262468f91f4aab0755a35f8dc2ee141 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 21 Nov 2023 20:15:24 +0100 -Subject: [PATCH 02/33] net: phy: marvell10g: Fix power-up when strapped to +Subject: [PATCH 02/41] net: phy: marvell10g: Fix power-up when strapped to start powered down +Organization: Wires On devices which are hardware strapped to start powered down (PDSTATE == 1), make sure that we clear the power-down bit on all units @@ -12,7 +13,7 @@ affected by this setting. 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c -index 44294519231e..40439db49601 100644 +index 44294519231ed..40439db49601d 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -322,11 +322,23 @@ static int mv3310_power_down(struct phy_device *phydev) diff --git a/patches/linux/6.18.21/0003-net-phy-marvell10g-Add-LED-support-for-88X3310.patch b/patches/linux/6.18.21/0003-net-phy-marvell10g-Add-LED-support-for-88X3310.patch index e337b9e6f..0f2de6122 100644 --- a/patches/linux/6.18.21/0003-net-phy-marvell10g-Add-LED-support-for-88X3310.patch +++ b/patches/linux/6.18.21/0003-net-phy-marvell10g-Add-LED-support-for-88X3310.patch @@ -1,7 +1,8 @@ From ee1464a4becdb06df87ae167fb56d9ac1530512f Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 15 Nov 2023 20:58:42 +0100 -Subject: [PATCH 03/33] net: phy: marvell10g: Add LED support for 88X3310 +Subject: [PATCH 03/41] net: phy: marvell10g: Add LED support for 88X3310 +Organization: Wires Pickup the LEDs from the state in which the hardware reset or bootloader left them, but also support further configuration via @@ -21,7 +22,7 @@ Trigger support: 1 file changed, 422 insertions(+) diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c -index 40439db49601..7ae4744f147b 100644 +index 40439db49601d..7ae4744f147bb 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -28,6 +28,7 @@ diff --git a/patches/linux/6.18.21/0004-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch b/patches/linux/6.18.21/0004-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch index 8fee9e592..b06b3c968 100644 --- a/patches/linux/6.18.21/0004-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch +++ b/patches/linux/6.18.21/0004-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch @@ -1,8 +1,9 @@ From cfe0f07454be8ab659b33fafd83a57b2d44f2fdf Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 12 Dec 2023 09:51:05 +0100 -Subject: [PATCH 04/33] net: phy: marvell10g: Support LEDs tied to a single +Subject: [PATCH 04/41] net: phy: marvell10g: Support LEDs tied to a single media side +Organization: Wires In a combo-port setup, i.e. where both the copper and fiber interface are available to the user, the LEDs may be physically located either @@ -18,7 +19,7 @@ versa for the SFP cage. 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c -index 7ae4744f147b..5e48355ffcef 100644 +index 7ae4744f147bb..5e48355ffcef4 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -192,6 +192,9 @@ struct mv3310_chip { diff --git a/patches/linux/6.18.21/0005-net-phy-Do-not-resume-PHY-when-attaching.patch b/patches/linux/6.18.21/0005-net-phy-Do-not-resume-PHY-when-attaching.patch index 962f9cec7..f92fd47b6 100644 --- a/patches/linux/6.18.21/0005-net-phy-Do-not-resume-PHY-when-attaching.patch +++ b/patches/linux/6.18.21/0005-net-phy-Do-not-resume-PHY-when-attaching.patch @@ -1,7 +1,8 @@ From e0d9221901b235ffb4c0ea58748e8e5263eb0d9f Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 27 Mar 2024 10:10:19 +0100 -Subject: [PATCH 05/33] net: phy: Do not resume PHY when attaching +Subject: [PATCH 05/41] net: phy: Do not resume PHY when attaching +Organization: Wires The PHY should not start negotiating with its link-partner until explicitly instructed to do so. @@ -19,7 +20,7 @@ administratively down. 1 file changed, 1 deletion(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c -index 2353d6eced68..9b0983453393 100644 +index 2353d6eced68d..9b09834533933 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1750,7 +1750,6 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, diff --git a/patches/linux/6.18.21/0006-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch b/patches/linux/6.18.21/0006-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch index c80b40dec..5c4475c85 100644 --- a/patches/linux/6.18.21/0006-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch +++ b/patches/linux/6.18.21/0006-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch @@ -1,8 +1,9 @@ From 86cdec8b0959cf957b2811a23ddf77648161a402 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 4 Mar 2024 16:47:28 +0100 -Subject: [PATCH 06/33] net: bridge: avoid classifying unknown multicast as +Subject: [PATCH 06/41] net: bridge: avoid classifying unknown multicast as mrouters_only +Organization: Wires Unknown multicast, MAC/IPv4/IPv6, should always be flooded according to the per-port mcast_flood setting, as well as to detected and configured @@ -26,7 +27,7 @@ Signed-off-by: Joachim Wiberg 7 files changed, 57 insertions(+), 14 deletions(-) diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h -index e52f8207ab27..306fa8a94c81 100644 +index e52f8207ab278..306fa8a94c819 100644 --- a/include/uapi/linux/if_bridge.h +++ b/include/uapi/linux/if_bridge.h @@ -835,6 +835,7 @@ enum br_boolopt_id { @@ -38,7 +39,7 @@ index e52f8207ab27..306fa8a94c81 100644 }; diff --git a/net/bridge/br.c b/net/bridge/br.c -index c37e52e2f29a..0759bc37d6f0 100644 +index c37e52e2f29ad..0759bc37d6f0f 100644 --- a/net/bridge/br.c +++ b/net/bridge/br.c @@ -312,6 +312,9 @@ int br_boolopt_toggle(struct net_bridge *br, enum br_boolopt_id opt, bool on, @@ -61,7 +62,7 @@ index c37e52e2f29a..0759bc37d6f0 100644 /* shouldn't be called with unsupported options */ WARN_ON(1); diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c -index 525d4eccd194..6278dfc9612f 100644 +index 525d4eccd194a..6278dfc9612f5 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -89,10 +89,10 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) @@ -101,7 +102,7 @@ index 525d4eccd194..6278dfc9612f 100644 br_stp_timer_init(br); br_multicast_init(br); diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c -index dea09096ad0f..f0a613238e0d 100644 +index dea09096ad0fb..f0a613238e0d5 100644 --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c @@ -199,15 +199,20 @@ static struct net_bridge_port *maybe_deliver( @@ -140,7 +141,7 @@ index dea09096ad0f..f0a613238e0d 100644 continue; break; diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c -index 2cbae0f9ae1f..0c539bf4bebe 100644 +index 2cbae0f9ae1f0..0c539bf4bebec 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -186,9 +186,13 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb @@ -170,7 +171,7 @@ index 2cbae0f9ae1f..0c539bf4bebe 100644 br_multicast_flood(mdst, skb, brmctx, local_rcv, false); } diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c -index 5855eb050208..06641afb99a8 100644 +index 5855eb0502085..06641afb99a8b 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -3836,6 +3836,11 @@ static void br_multicast_err_count(const struct net_bridge *br, @@ -206,7 +207,7 @@ index 5855eb050208..06641afb99a8 100644 ipv6_addr_is_all_snoopers(&ipv6_hdr(skb)->daddr)) br_ip6_multicast_mrd_rcv(brmctx, pmctx, skb); diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h -index b9b2981c4841..ccbaaa96f7c7 100644 +index b9b2981c48414..ccbaaa96f7c70 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -489,6 +489,7 @@ enum net_bridge_opts { diff --git a/patches/linux/6.18.21/0007-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch b/patches/linux/6.18.21/0007-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch index b5d02cf04..f63d8f6a6 100644 --- a/patches/linux/6.18.21/0007-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch +++ b/patches/linux/6.18.21/0007-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch @@ -1,8 +1,9 @@ From 31794e03e7f1d66f7fdff708cdaa40453e591204 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 5 Mar 2024 06:44:41 +0100 -Subject: [PATCH 07/33] net: bridge: Ignore router ports when forwarding L2 +Subject: [PATCH 07/41] net: bridge: Ignore router ports when forwarding L2 multicast +Organization: Wires Multicast router ports are either statically configured or learned from control protocol traffic (IGMP/MLD/PIM). These protocols regulate IP @@ -16,7 +17,7 @@ Signed-off-by: Joachim Wiberg 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h -index ccbaaa96f7c7..d7187bead496 100644 +index ccbaaa96f7c70..d7187bead4968 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -1097,7 +1097,10 @@ br_multicast_get_first_rport_node(struct net_bridge_mcast *brmctx, diff --git a/patches/linux/6.18.21/0008-net-bridge-drop-delay-for-applying-strict-multicast-.patch b/patches/linux/6.18.21/0008-net-bridge-drop-delay-for-applying-strict-multicast-.patch index 3f3b32293..01fcba49a 100644 --- a/patches/linux/6.18.21/0008-net-bridge-drop-delay-for-applying-strict-multicast-.patch +++ b/patches/linux/6.18.21/0008-net-bridge-drop-delay-for-applying-strict-multicast-.patch @@ -1,8 +1,9 @@ From 984d59e5f06c3741e1c76daf4bed6883eb339e97 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 4 Apr 2024 16:36:30 +0200 -Subject: [PATCH 08/33] net: bridge: drop delay for applying strict multicast +Subject: [PATCH 08/41] net: bridge: drop delay for applying strict multicast filtering +Organization: Wires This *local* patch drops the initial delay before applying strict multicast filtering, introduced in [1] and recently updated in [2]. @@ -24,7 +25,7 @@ Signed-off-by: Joachim Wiberg 2 files changed, 8 insertions(+), 38 deletions(-) diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c -index 06641afb99a8..bacff6c2e968 100644 +index 06641afb99a8b..bacff6c2e9684 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1760,10 +1760,6 @@ static void br_ip6_multicast_querier_expired(struct timer_list *t) @@ -163,7 +164,7 @@ index 06641afb99a8..bacff6c2e968 100644 #endif diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h -index d7187bead496..83dc15fdcefd 100644 +index d7187bead4968..83dc15fdcefdc 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -80,7 +80,6 @@ struct bridge_mcast_own_query { diff --git a/patches/linux/6.18.21/0009-net-bridge-Differentiate-MDB-additions-from-modifica.patch b/patches/linux/6.18.21/0009-net-bridge-Differentiate-MDB-additions-from-modifica.patch index cb2b80af5..9d732b3ef 100644 --- a/patches/linux/6.18.21/0009-net-bridge-Differentiate-MDB-additions-from-modifica.patch +++ b/patches/linux/6.18.21/0009-net-bridge-Differentiate-MDB-additions-from-modifica.patch @@ -1,8 +1,9 @@ From e3f31e30e7086bdd0b9698deb0b036d5e8ebb99e Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Thu, 16 May 2024 14:51:54 +0200 -Subject: [PATCH 09/33] net: bridge: Differentiate MDB additions from +Subject: [PATCH 09/41] net: bridge: Differentiate MDB additions from modifications +Organization: Wires Before this change, the reception of an IGMPv3 report (and analogously for MLDv2) that adds a new group, would trigger two MDB RTM_NEWMDB @@ -27,7 +28,7 @@ introducing a RTM_SETMDB events to be used in the latter scenario. 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h -index dab9493c791b..40a3534f0f1d 100644 +index dab9493c791b8..40a3534f0f1d7 100644 --- a/include/uapi/linux/rtnetlink.h +++ b/include/uapi/linux/rtnetlink.h @@ -142,6 +142,8 @@ enum { @@ -40,7 +41,7 @@ index dab9493c791b..40a3534f0f1d 100644 RTM_NEWNSID = 88, #define RTM_NEWNSID RTM_NEWNSID diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c -index 400eb872b403..cd7a2cd0911a 100644 +index 400eb872b4032..cd7a2cd0911ad 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c @@ -752,7 +752,7 @@ static int br_mdb_replace_group_sg(const struct br_mdb_config *cfg, @@ -62,7 +63,7 @@ index 400eb872b403..cd7a2cd0911a 100644 if (br_multicast_should_handle_mode(brmctx, cfg->group.proto)) br_multicast_star_g_handle_mode(pg, cfg->filter_mode); diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c -index bacff6c2e968..a5f3e4935edc 100644 +index bacff6c2e9684..a5f3e4935edc6 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -616,7 +616,7 @@ static void br_multicast_fwd_src_handle(struct net_bridge_group_src *src) diff --git a/patches/linux/6.18.21/0010-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch b/patches/linux/6.18.21/0010-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch index 35b621910..e0fc61682 100644 --- a/patches/linux/6.18.21/0010-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch +++ b/patches/linux/6.18.21/0010-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch @@ -1,8 +1,9 @@ From 7f1e44c7216953f3b09e2aa6df4c739ce2e1d480 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Fri, 24 Nov 2023 23:29:55 +0100 -Subject: [PATCH 10/33] nvmem: layouts: onie-tlv: Let device probe even when +Subject: [PATCH 10/41] nvmem: layouts: onie-tlv: Let device probe even when TLV is invalid +Organization: Wires Before this change, probing an NVMEM device, expected to contain a valid TLV, would fail if it had not been provisioned yet. But an @@ -17,7 +18,7 @@ simply refrain from registering any cells in those cases. 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/nvmem/layouts/onie-tlv.c b/drivers/nvmem/layouts/onie-tlv.c -index 0967a32319a2..48547d5bb502 100644 +index 0967a32319a28..48547d5bb5020 100644 --- a/drivers/nvmem/layouts/onie-tlv.c +++ b/drivers/nvmem/layouts/onie-tlv.c @@ -197,7 +197,7 @@ static int onie_tlv_parse_table(struct nvmem_layout *layout) diff --git a/patches/linux/6.18.21/0011-net-usb-r8152-add-r8153b-support-for-link-activity-L.patch b/patches/linux/6.18.21/0011-net-usb-r8152-add-r8153b-support-for-link-activity-L.patch index b783b1485..44f0e649c 100644 --- a/patches/linux/6.18.21/0011-net-usb-r8152-add-r8153b-support-for-link-activity-L.patch +++ b/patches/linux/6.18.21/0011-net-usb-r8152-add-r8153b-support-for-link-activity-L.patch @@ -1,8 +1,9 @@ From 080f229c35d686e8c260092e18caa39cbe833392 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sun, 11 Aug 2024 11:27:35 +0200 -Subject: [PATCH 11/33] net: usb: r8152: add r8153b support for link/activity +Subject: [PATCH 11/41] net: usb: r8152: add r8153b support for link/activity LEDs +Organization: Wires This patch adds support for the link/activity LEDs on the NanoPi R2S and OrangePi R1 Plus. @@ -18,7 +19,7 @@ Signed-off-by: Joachim Wiberg 1 file changed, 8 insertions(+) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index 357f5c733d0b..e7aa0cffadc5 100644 +index 357f5c733d0b5..e7aa0cffadc58 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -41,6 +41,11 @@ diff --git a/patches/linux/6.18.21/0012-arm64-dts-mediatek-mt7986a-rename-BPi-R3-ports-to-ma.patch b/patches/linux/6.18.21/0012-arm64-dts-mediatek-mt7986a-rename-BPi-R3-ports-to-ma.patch index e418e7eb3..043f8b54d 100644 --- a/patches/linux/6.18.21/0012-arm64-dts-mediatek-mt7986a-rename-BPi-R3-ports-to-ma.patch +++ b/patches/linux/6.18.21/0012-arm64-dts-mediatek-mt7986a-rename-BPi-R3-ports-to-ma.patch @@ -1,8 +1,9 @@ From 2040cffd47b80aa352b624ddaa66f47f85d5c88a Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sun, 10 Aug 2025 18:52:54 +0200 -Subject: [PATCH 12/33] arm64: dts: mediatek: mt7986a: rename BPi R3 ports to +Subject: [PATCH 12/41] arm64: dts: mediatek: mt7986a: rename BPi R3 ports to match case +Organization: Wires For ref. see: https://wiki.banana-pi.org/File:Bpi-r3_Metal_case.jpg @@ -15,7 +16,7 @@ Signed-off-by: Joachim Wiberg 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts -index e7654dc9a1c9..4cc6aff07225 100644 +index e7654dc9a1c9b..4cc6aff072256 100644 --- a/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts +++ b/arch/arm64/boot/dts/mediatek/mt7986a-bananapi-bpi-r3.dts @@ -46,7 +46,7 @@ fan: pwm-fan { diff --git a/patches/linux/6.18.21/0013-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch b/patches/linux/6.18.21/0013-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch index b7014eaa9..b12724b4c 100644 --- a/patches/linux/6.18.21/0013-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch +++ b/patches/linux/6.18.21/0013-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch @@ -1,8 +1,9 @@ From db4b35cf2ce8f06e9ed65b394728e846f92af4b7 Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Wed, 20 Aug 2025 21:38:24 +0200 -Subject: [PATCH 13/33] drm/panel-simple: Add a timing for the Raspberry Pi 7" +Subject: [PATCH 13/41] drm/panel-simple: Add a timing for the Raspberry Pi 7" panel +Organization: Wires The Raspberry Pi 7" 800x480 panel uses a Toshiba TC358762 DSI to DPI bridge chip, so there is a requirement for the timings @@ -46,7 +47,7 @@ Signed-off-by: Dave Stevenson 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index 271f93399193..75dbc3cb8135 100644 +index 271f933991937..75dbc3cb81354 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -400,7 +400,8 @@ static int panel_simple_get_modes(struct drm_panel *panel, diff --git a/patches/linux/6.18.21/0014-input-touchscreen-edt-ft5x06-Add-polled-mode.patch b/patches/linux/6.18.21/0014-input-touchscreen-edt-ft5x06-Add-polled-mode.patch index c063535ad..66b628a57 100644 --- a/patches/linux/6.18.21/0014-input-touchscreen-edt-ft5x06-Add-polled-mode.patch +++ b/patches/linux/6.18.21/0014-input-touchscreen-edt-ft5x06-Add-polled-mode.patch @@ -1,7 +1,8 @@ From c6bdd72407392acd6f29e6a1554724953ec8590f Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Thu, 21 Aug 2025 11:20:23 +0200 -Subject: [PATCH 14/33] input:touchscreen:edt-ft5x06: Add polled mode +Subject: [PATCH 14/41] input:touchscreen:edt-ft5x06: Add polled mode +Organization: Wires Not all hardware has interrupts therefore we need to poll the touchscreen. @@ -10,7 +11,7 @@ to poll the touchscreen. 1 file changed, 58 insertions(+), 16 deletions(-) diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c -index bf498bd4dea9..30308d840935 100644 +index bf498bd4dea96..30308d8409353 100644 --- a/drivers/input/touchscreen/edt-ft5x06.c +++ b/drivers/input/touchscreen/edt-ft5x06.c @@ -77,6 +77,9 @@ diff --git a/patches/linux/6.18.21/0015-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch b/patches/linux/6.18.21/0015-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch index 8934208ea..9bb58cd2e 100644 --- a/patches/linux/6.18.21/0015-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch +++ b/patches/linux/6.18.21/0015-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch @@ -1,8 +1,9 @@ From 0361723f9ea674aab4e76f4a88471c1719976623 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 12 Mar 2024 10:27:24 +0100 -Subject: [PATCH 15/33] [FIX] net: dsa: mv88e6xxx: Fix timeout on waiting for +Subject: [PATCH 15/41] [FIX] net: dsa: mv88e6xxx: Fix timeout on waiting for PPU on 6393X +Organization: Wires In a multi-chip setup, delays of up to 750ms are observed before the device (6393X) signals completion of PPU initialization (Global 1, @@ -12,7 +13,7 @@ register 0, bit 15). Therefore, increase the timeout threshold to 1s. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index 09002c853b78..22f4fe642578 100644 +index 09002c853b78e..22f4fe642578c 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -87,7 +87,7 @@ int mv88e6xxx_write(struct mv88e6xxx_chip *chip, int addr, int reg, u16 val) diff --git a/patches/linux/6.18.21/0016-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch b/patches/linux/6.18.21/0016-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch index 95e6ec26e..7cc43a60f 100644 --- a/patches/linux/6.18.21/0016-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch +++ b/patches/linux/6.18.21/0016-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch @@ -1,8 +1,9 @@ From d9cc0e3a04dec8b02edbb0510eaee73734e9fe1b Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 27 Mar 2024 15:52:43 +0100 -Subject: [PATCH 16/33] net: dsa: mv88e6xxx: Improve indirect register access +Subject: [PATCH 16/41] net: dsa: mv88e6xxx: Improve indirect register access perf on 6393 +Organization: Wires When operating in multi-chip mode, the 6393 family maps a subset of commonly used global registers to the outermost address space (in @@ -21,7 +22,7 @@ other accesses use the regular indirect interface. 5 files changed, 119 insertions(+) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index 22f4fe642578..c51588e74aed 100644 +index 22f4fe642578c..c51588e74aedb 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -6543,6 +6543,13 @@ static int mv88e6xxx_detect(struct mv88e6xxx_chip *chip) @@ -39,7 +40,7 @@ index 22f4fe642578..c51588e74aed 100644 chip->info->prod_num, chip->info->name, rev); diff --git a/drivers/net/dsa/mv88e6xxx/global1.h b/drivers/net/dsa/mv88e6xxx/global1.h -index 3dbb7a1b8fe1..5ea956aadecc 100644 +index 3dbb7a1b8fe11..5ea956aadecc9 100644 --- a/drivers/net/dsa/mv88e6xxx/global1.h +++ b/drivers/net/dsa/mv88e6xxx/global1.h @@ -218,6 +218,9 @@ @@ -53,7 +54,7 @@ index 3dbb7a1b8fe1..5ea956aadecc 100644 #define MV88E6XXX_G1_CTL2 0x1c #define MV88E6185_G1_CTL2_CASCADE_PORT_MASK 0xf000 diff --git a/drivers/net/dsa/mv88e6xxx/global2.h b/drivers/net/dsa/mv88e6xxx/global2.h -index 82f9b410de0b..3663645621c9 100644 +index 82f9b410de0b8..3663645621c9d 100644 --- a/drivers/net/dsa/mv88e6xxx/global2.h +++ b/drivers/net/dsa/mv88e6xxx/global2.h @@ -143,6 +143,9 @@ @@ -67,7 +68,7 @@ index 82f9b410de0b..3663645621c9 100644 #define MV88E6XXX_G2_EEPROM_CMD 0x14 #define MV88E6XXX_G2_EEPROM_CMD_BUSY 0x8000 diff --git a/drivers/net/dsa/mv88e6xxx/smi.c b/drivers/net/dsa/mv88e6xxx/smi.c -index a990271b7482..f54bb0e79030 100644 +index a990271b74823..f54bb0e79030c 100644 --- a/drivers/net/dsa/mv88e6xxx/smi.c +++ b/drivers/net/dsa/mv88e6xxx/smi.c @@ -8,6 +8,8 @@ @@ -168,7 +169,7 @@ index a990271b7482..f54bb0e79030 100644 chip->smi_ops = &mv88e6xxx_smi_indirect_ops; else diff --git a/drivers/net/dsa/mv88e6xxx/smi.h b/drivers/net/dsa/mv88e6xxx/smi.h -index c6c71d5757f5..788cf68b7b33 100644 +index c6c71d5757f5d..788cf68b7b334 100644 --- a/drivers/net/dsa/mv88e6xxx/smi.h +++ b/drivers/net/dsa/mv88e6xxx/smi.h @@ -31,6 +31,36 @@ diff --git a/patches/linux/6.18.21/0017-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch b/patches/linux/6.18.21/0017-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch index 0dc720bdb..a2ebc39db 100644 --- a/patches/linux/6.18.21/0017-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch +++ b/patches/linux/6.18.21/0017-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch @@ -1,8 +1,9 @@ From 8516fa6ca5c60461f61703525eb29efc2f90e83f Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Mon, 22 Apr 2024 23:18:01 +0200 -Subject: [PATCH 17/33] net: dsa: mv88e6xxx: Honor ports being managed via +Subject: [PATCH 17/41] net: dsa: mv88e6xxx: Honor ports being managed via in-band-status +Organization: Wires Keep all link parameters in their unforced states when the port is declared as being managed via in-band-status, and let the MAC @@ -17,7 +18,7 @@ when in-band-status is being used. 1 file changed, 6 insertions(+) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index c51588e74aed..de230df48545 100644 +index c51588e74aedb..de230df48545d 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -965,6 +965,9 @@ static void mv88e6xxx_mac_link_down(struct phylink_config *config, diff --git a/patches/linux/6.18.21/0018-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch b/patches/linux/6.18.21/0018-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch index 6da223789..769aaf341 100644 --- a/patches/linux/6.18.21/0018-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch +++ b/patches/linux/6.18.21/0018-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch @@ -1,8 +1,9 @@ From 46f0ce2051d0ddb753a663b5bc2a622758100899 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 24 Apr 2024 22:41:04 +0200 -Subject: [PATCH 18/33] net: dsa: mv88e6xxx: Limit rsvd2cpu policy to user +Subject: [PATCH 18/41] net: dsa: mv88e6xxx: Limit rsvd2cpu policy to user ports on 6393X +Organization: Wires For packets with a DA in the IEEE reserved L2 group range, originating from a CPU, forward it as normal, rather than classifying it as @@ -33,7 +34,7 @@ forwarded like any other. 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c -index 66b1b7277281..df19dfa5cc3d 100644 +index 66b1b72772810..df19dfa5cc3d8 100644 --- a/drivers/net/dsa/mv88e6xxx/port.c +++ b/drivers/net/dsa/mv88e6xxx/port.c @@ -1434,6 +1434,23 @@ static int mv88e6393x_port_policy_write_all(struct mv88e6xxx_chip *chip, diff --git a/patches/linux/6.18.21/0019-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch b/patches/linux/6.18.21/0019-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch index c6065b747..3a0adac04 100644 --- a/patches/linux/6.18.21/0019-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch +++ b/patches/linux/6.18.21/0019-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch @@ -1,8 +1,9 @@ From 07600da9729116e9d146a961a681312fd5945831 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 28 May 2024 10:38:42 +0200 -Subject: [PATCH 19/33] net: dsa: tag_dsa: Use tag priority as initial +Subject: [PATCH 19/41] net: dsa: tag_dsa: Use tag priority as initial skb->priority +Organization: Wires Use the 3-bit priority field from the DSA tag as the initial packet priority on ingress to the CPU. @@ -23,7 +24,7 @@ implemented, support the setup that is likely to be the most common; a 1 file changed, 7 insertions(+) diff --git a/net/dsa/tag_dsa.c b/net/dsa/tag_dsa.c -index 2a2c4fb61a65..a00ae6bf2971 100644 +index 2a2c4fb61a65c..a00ae6bf29717 100644 --- a/net/dsa/tag_dsa.c +++ b/net/dsa/tag_dsa.c @@ -323,6 +323,13 @@ static struct sk_buff *dsa_rcv_ll(struct sk_buff *skb, struct net_device *dev, diff --git a/patches/linux/6.18.21/0020-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch b/patches/linux/6.18.21/0020-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch index 287cd4e2b..62a58921d 100644 --- a/patches/linux/6.18.21/0020-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch +++ b/patches/linux/6.18.21/0020-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch @@ -1,8 +1,9 @@ From 3d7009324b7b0855621b1187cdd02f5cd1d10aae Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 16 Jan 2024 16:00:55 +0100 -Subject: [PATCH 20/33] net: dsa: Support MDB memberships whose L2 addresses +Subject: [PATCH 20/41] net: dsa: Support MDB memberships whose L2 addresses overlap +Organization: Wires Multiple IP multicast groups (32 for v4, 2^80 for v6) map to the same L2 address. This means that switchdev drivers may receive multiple MDB @@ -33,7 +34,7 @@ which previously skipped reference countung on user ports. 1 file changed, 16 deletions(-) diff --git a/net/dsa/switch.c b/net/dsa/switch.c -index 3d2feeea897b..628e8a884dde 100644 +index 3d2feeea897b6..628e8a884dde5 100644 --- a/net/dsa/switch.c +++ b/net/dsa/switch.c @@ -164,14 +164,6 @@ static int dsa_port_do_mdb_add(struct dsa_port *dp, diff --git a/patches/linux/6.18.21/0021-net-dsa-Support-EtherType-based-priority-overrides.patch b/patches/linux/6.18.21/0021-net-dsa-Support-EtherType-based-priority-overrides.patch index 0a25f6145..2109088f6 100644 --- a/patches/linux/6.18.21/0021-net-dsa-Support-EtherType-based-priority-overrides.patch +++ b/patches/linux/6.18.21/0021-net-dsa-Support-EtherType-based-priority-overrides.patch @@ -1,7 +1,8 @@ From 3f046855852e41283e4855575974f376c4d82976 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Thu, 21 Mar 2024 19:12:15 +0100 -Subject: [PATCH 21/33] net: dsa: Support EtherType based priority overrides +Subject: [PATCH 21/41] net: dsa: Support EtherType based priority overrides +Organization: Wires --- include/net/dsa.h | 4 ++++ @@ -9,7 +10,7 @@ Subject: [PATCH 21/33] net: dsa: Support EtherType based priority overrides 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/include/net/dsa.h b/include/net/dsa.h -index 5cb456bf4639..c31d4e910f07 100644 +index 5cb456bf46394..c31d4e910f075 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -958,6 +958,10 @@ struct dsa_switch_ops { @@ -24,7 +25,7 @@ index 5cb456bf4639..c31d4e910f07 100644 /* * Suspend and resume diff --git a/net/dsa/user.c b/net/dsa/user.c -index f59d66f0975d..58174ad612d2 100644 +index f59d66f0975d7..58174ad612d21 100644 --- a/net/dsa/user.c +++ b/net/dsa/user.c @@ -2336,6 +2336,34 @@ dsa_user_dcbnl_add_dscp_prio(struct net_device *dev, struct dcb_app *app) diff --git a/patches/linux/6.18.21/0022-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch b/patches/linux/6.18.21/0022-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch index 4095ccb93..28254bd14 100644 --- a/patches/linux/6.18.21/0022-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch +++ b/patches/linux/6.18.21/0022-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch @@ -1,8 +1,9 @@ From ab5c530c7dbf9f8dacf42231d4aa8331ae874c00 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Fri, 22 Mar 2024 16:15:43 +0100 -Subject: [PATCH 22/33] net: dsa: mv88e6xxx: Support EtherType based priority +Subject: [PATCH 22/41] net: dsa: mv88e6xxx: Support EtherType based priority overrides +Organization: Wires --- drivers/net/dsa/mv88e6xxx/chip.c | 64 +++++++++++++++++++++++++++++ @@ -14,7 +15,7 @@ Subject: [PATCH 22/33] net: dsa: mv88e6xxx: Support EtherType based priority 6 files changed, 207 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index de230df48545..c99aef8afa5d 100644 +index de230df48545d..c99aef8afa5d0 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -1688,6 +1688,11 @@ static int mv88e6xxx_rmu_setup(struct mv88e6xxx_chip *chip) @@ -117,7 +118,7 @@ index de230df48545..c99aef8afa5d 100644 static int mv88e6xxx_register_switch(struct mv88e6xxx_chip *chip) diff --git a/drivers/net/dsa/mv88e6xxx/chip.h b/drivers/net/dsa/mv88e6xxx/chip.h -index e073446ee7d0..5d5e7ab63fca 100644 +index e073446ee7d02..5d5e7ab63fca3 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.h +++ b/drivers/net/dsa/mv88e6xxx/chip.h @@ -301,6 +301,11 @@ struct mv88e6xxx_port { @@ -170,7 +171,7 @@ index e073446ee7d0..5d5e7ab63fca 100644 struct mv88e6xxx_bus_ops { diff --git a/drivers/net/dsa/mv88e6xxx/global2.c b/drivers/net/dsa/mv88e6xxx/global2.c -index 30a6ffa7817b..3f16a7ef3fa2 100644 +index 30a6ffa7817b0..3f16a7ef3fa28 100644 --- a/drivers/net/dsa/mv88e6xxx/global2.c +++ b/drivers/net/dsa/mv88e6xxx/global2.c @@ -315,7 +315,7 @@ int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip, u16 *stats) @@ -244,7 +245,7 @@ index 30a6ffa7817b..3f16a7ef3fa2 100644 * Offset 0x15: EEPROM Data (for 16-bit data access) * Offset 0x15: EEPROM Addr (for 8-bit data access) diff --git a/drivers/net/dsa/mv88e6xxx/global2.h b/drivers/net/dsa/mv88e6xxx/global2.h -index 3663645621c9..496269c26c50 100644 +index 3663645621c9d..496269c26c508 100644 --- a/drivers/net/dsa/mv88e6xxx/global2.h +++ b/drivers/net/dsa/mv88e6xxx/global2.h @@ -138,6 +138,7 @@ @@ -266,7 +267,7 @@ index 3663645621c9..496269c26c50 100644 int mv88e6xxx_g2_trunk_mask_write(struct mv88e6xxx_chip *chip, int num, bool hash, u16 mask); diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c -index df19dfa5cc3d..e1fee09eae2f 100644 +index df19dfa5cc3d8..e1fee09eae2fc 100644 --- a/drivers/net/dsa/mv88e6xxx/port.c +++ b/drivers/net/dsa/mv88e6xxx/port.c @@ -1560,6 +1560,52 @@ int mv88e6351_port_set_ether_type(struct mv88e6xxx_chip *chip, int port, @@ -323,7 +324,7 @@ index df19dfa5cc3d..e1fee09eae2f 100644 * Offset 0x19: Port IEEE Priority Remapping Registers [4-7] */ diff --git a/drivers/net/dsa/mv88e6xxx/port.h b/drivers/net/dsa/mv88e6xxx/port.h -index c1d2f99efb1c..d2ba9ed1f23e 100644 +index c1d2f99efb1c6..d2ba9ed1f23ea 100644 --- a/drivers/net/dsa/mv88e6xxx/port.h +++ b/drivers/net/dsa/mv88e6xxx/port.h @@ -286,7 +286,18 @@ diff --git a/patches/linux/6.18.21/0023-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch b/patches/linux/6.18.21/0023-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch index 675db5b6d..58282f0df 100644 --- a/patches/linux/6.18.21/0023-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch +++ b/patches/linux/6.18.21/0023-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch @@ -1,7 +1,8 @@ From 1a2c045f9e4fd595803b014bd85e2914b9003e8d Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 28 May 2024 11:04:22 +0200 -Subject: [PATCH 23/33] net: dsa: mv88e6xxx: Add mqprio qdisc support +Subject: [PATCH 23/41] net: dsa: mv88e6xxx: Add mqprio qdisc support +Organization: Wires Add support for attaching mqprio qdisc's to mv88e6xxx ports and use the packet's traffic class as the outgoing priority when no PCP bits @@ -29,7 +30,7 @@ handle the mapping down to the "real" number. 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index c99aef8afa5d..2c533aeb7374 100644 +index c99aef8afa5d0..2c533aeb7374d 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -32,6 +32,7 @@ @@ -131,7 +132,7 @@ index c99aef8afa5d..2c533aeb7374 100644 return dsa_register_switch(ds); diff --git a/net/dsa/tag_dsa.c b/net/dsa/tag_dsa.c -index a00ae6bf2971..55c296e0b5b0 100644 +index a00ae6bf29717..55c296e0b5b0e 100644 --- a/net/dsa/tag_dsa.c +++ b/net/dsa/tag_dsa.c @@ -180,8 +180,10 @@ static struct sk_buff *dsa_xmit_ll(struct sk_buff *skb, struct net_device *dev, diff --git a/patches/linux/6.18.21/0024-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch b/patches/linux/6.18.21/0024-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch index dd0489a06..ddad85d97 100644 --- a/patches/linux/6.18.21/0024-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch +++ b/patches/linux/6.18.21/0024-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch @@ -1,8 +1,9 @@ From e21110ff341e8e98fd37682eb3697af164ab6a18 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 29 May 2024 13:20:41 +0200 -Subject: [PATCH 24/33] net: dsa: mv88e6xxx: Use VLAN prio over IP when both +Subject: [PATCH 24/41] net: dsa: mv88e6xxx: Use VLAN prio over IP when both are available +Organization: Wires Switch the priority sourcing precdence to prefer VLAN PCP over IP DSCP, when both are available. @@ -26,7 +27,7 @@ main reasons for choosing the new default: 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index 2c533aeb7374..969f772fcb27 100644 +index 2c533aeb7374d..969f772fcb273 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -3422,9 +3422,13 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port) diff --git a/patches/linux/6.18.21/0025-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch b/patches/linux/6.18.21/0025-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch index f79be1a22..0647aa58b 100644 --- a/patches/linux/6.18.21/0025-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch +++ b/patches/linux/6.18.21/0025-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch @@ -1,8 +1,9 @@ From 707470adc86e9a099e3660c1c6c7a50ec38c2aa9 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 26 Nov 2024 19:45:59 +0100 -Subject: [PATCH 25/33] [FIX] net: dsa: mv88e6xxx: Trap locally terminated +Subject: [PATCH 25/41] [FIX] net: dsa: mv88e6xxx: Trap locally terminated VLANs +Organization: Wires Before this change, in a setup like the following, packets assigned to VLAN 10 were forwarded between the switch ports, even though the @@ -30,7 +31,7 @@ cause all packets assigned to these VLANs to properly terminated. 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index 969f772fcb27..161ce87a8871 100644 +index 969f772fcb273..161ce87a88716 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -2611,7 +2611,7 @@ static int mv88e6xxx_port_broadcast_sync(struct mv88e6xxx_chip *chip, int port, @@ -117,7 +118,7 @@ index 969f772fcb27..161ce87a8871 100644 return err; diff --git a/include/net/switchdev.h b/include/net/switchdev.h -index 8346b0d29542..764cd3dd4645 100644 +index 8346b0d29542c..764cd3dd46454 100644 --- a/include/net/switchdev.h +++ b/include/net/switchdev.h @@ -104,6 +104,10 @@ struct switchdev_obj_port_vlan { @@ -132,7 +133,7 @@ index 8346b0d29542..764cd3dd4645 100644 #define SWITCHDEV_OBJ_PORT_VLAN(OBJ) \ diff --git a/net/dsa/user.c b/net/dsa/user.c -index 58174ad612d2..c0019d0c1172 100644 +index 58174ad612d21..c0019d0c1172d 100644 --- a/net/dsa/user.c +++ b/net/dsa/user.c @@ -1796,6 +1796,8 @@ static int dsa_user_vlan_rx_add_vid(struct net_device *dev, __be16 proto, diff --git a/patches/linux/6.18.21/0026-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch b/patches/linux/6.18.21/0026-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch index 6d45abf97..f0e492286 100644 --- a/patches/linux/6.18.21/0026-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch +++ b/patches/linux/6.18.21/0026-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch @@ -1,8 +1,9 @@ From 810739b589e9a754a62f2070abf39bab7c96122d Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 16 Jan 2025 12:35:12 +0100 -Subject: [PATCH 26/33] net: dsa: mv88e6xxx: collapse disabled state into +Subject: [PATCH 26/41] net: dsa: mv88e6xxx: collapse disabled state into blocking +Organization: Wires This patch changes the behavior of switchcore ports wrt. the port state. Instead of disabling the port, the driver now treats the disabled state @@ -22,7 +23,7 @@ Signed-off-by: Joachim Wiberg 1 file changed, 2 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c -index e1fee09eae2f..e28fdd21de38 100644 +index e1fee09eae2fc..e28fdd21de38e 100644 --- a/drivers/net/dsa/mv88e6xxx/port.c +++ b/drivers/net/dsa/mv88e6xxx/port.c @@ -793,8 +793,6 @@ int mv88e6xxx_port_set_state(struct mv88e6xxx_chip *chip, int port, u8 state) diff --git a/patches/linux/6.18.21/0027-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch b/patches/linux/6.18.21/0027-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch index 4e18a23b1..9f113aeb6 100644 --- a/patches/linux/6.18.21/0027-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch +++ b/patches/linux/6.18.21/0027-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch @@ -1,8 +1,9 @@ From 33439041b14ff724f0d607df9bf46ae90415f493 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 12 Feb 2025 22:03:14 +0100 -Subject: [PATCH 27/33] net: dsa: mv88e6xxx: Only activate LAG offloading when +Subject: [PATCH 27/41] net: dsa: mv88e6xxx: Only activate LAG offloading when bridged +Organization: Wires The current port isolation scheme for mv88e6xxx is detailed here: https://lore.kernel.org/netdev/20220203101657.990241-1-tobias@waldekranz.com/ @@ -50,7 +51,7 @@ CPU; egress traffic always relies on software hashing. 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index 161ce87a8871..d379799c0a16 100644 +index 161ce87a88716..d379799c0a168 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -3058,6 +3058,7 @@ static int mv88e6xxx_port_bridge_join(struct dsa_switch *ds, int port, diff --git a/patches/linux/6.18.21/0028-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch b/patches/linux/6.18.21/0028-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch index 5af2875f9..36d31f011 100644 --- a/patches/linux/6.18.21/0028-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch +++ b/patches/linux/6.18.21/0028-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch @@ -1,7 +1,8 @@ From 1c589a1949419a0f810a768f0d871d849c48073c Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Wed, 14 Jan 2026 18:22:41 +0100 -Subject: [PATCH 28/33] net: dsa: mv88e6xxx: Add LED support for 6393X +Subject: [PATCH 28/41] net: dsa: mv88e6xxx: Add LED support for 6393X +Organization: Wires Original commit: commit 462277b926140ee2d231317e92afb6cabf640268 @@ -22,7 +23,7 @@ Date: Thu Nov 16 21:59:35 2023 +0100 4 files changed, 450 insertions(+) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c -index d379799c0a16..7bc3169839d3 100644 +index d379799c0a168..7bc3169839d3b 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -5658,6 +5658,7 @@ static const struct mv88e6xxx_ops mv88e6393x_ops = { @@ -34,7 +35,7 @@ index d379799c0a16..7bc3169839d3 100644 .port_set_upstream_port = mv88e6393x_port_set_upstream_port, .stats_snapshot = mv88e6390_g1_stats_snapshot, diff --git a/drivers/net/dsa/mv88e6xxx/leds.c b/drivers/net/dsa/mv88e6xxx/leds.c -index ab3bc645da56..aa539df21f8d 100644 +index ab3bc645da566..aa539df21f8d7 100644 --- a/drivers/net/dsa/mv88e6xxx/leds.c +++ b/drivers/net/dsa/mv88e6xxx/leds.c @@ -102,6 +102,58 @@ struct mv88e6xxx_led_hwconfig { @@ -452,7 +453,7 @@ index ab3bc645da56..aa539df21f8d 100644 + return ret; +} diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c -index e28fdd21de38..1985b8553611 100644 +index e28fdd21de38e..1985b85536112 100644 --- a/drivers/net/dsa/mv88e6xxx/port.c +++ b/drivers/net/dsa/mv88e6xxx/port.c @@ -1604,6 +1604,39 @@ int mv88e6xxx_port_relinquish_ether_type(struct mv88e6xxx_chip *chip, int port) @@ -496,7 +497,7 @@ index e28fdd21de38..1985b8553611 100644 * Offset 0x19: Port IEEE Priority Remapping Registers [4-7] */ diff --git a/drivers/net/dsa/mv88e6xxx/port.h b/drivers/net/dsa/mv88e6xxx/port.h -index d2ba9ed1f23e..f4a56671fc4c 100644 +index d2ba9ed1f23ea..f4a56671fc4c2 100644 --- a/drivers/net/dsa/mv88e6xxx/port.h +++ b/drivers/net/dsa/mv88e6xxx/port.h @@ -444,6 +444,9 @@ diff --git a/patches/linux/6.18.21/0029-wifi-brcmfmac-support-deletion-and-recreation-of-pri.patch b/patches/linux/6.18.21/0029-wifi-brcmfmac-support-deletion-and-recreation-of-pri.patch index 97c88e7d1..a9bde4512 100644 --- a/patches/linux/6.18.21/0029-wifi-brcmfmac-support-deletion-and-recreation-of-pri.patch +++ b/patches/linux/6.18.21/0029-wifi-brcmfmac-support-deletion-and-recreation-of-pri.patch @@ -1,11 +1,12 @@ From bc38784c6cece06ea7de222187024eade94d6cbd Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Thu, 15 Jan 2026 22:47:37 +0100 -Subject: [PATCH 29/33] wifi: brcmfmac: support deletion and recreation of +Subject: [PATCH 29/41] wifi: brcmfmac: support deletion and recreation of primary interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Organization: Wires The Broadcom FullMAC firmware does not allow the primary interface (bsscfgidx 0) to be deleted - it always exists in firmware. However, @@ -44,7 +45,7 @@ Signed-off-by: Mattias Walström 4 files changed, 186 insertions(+), 20 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index bb96b87b2a6e..bcd8a4724625 100644 +index bb96b87b2a6e5..bcd8a4724625b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -124,6 +124,9 @@ struct cca_msrmnt_query { @@ -332,7 +333,7 @@ index bb96b87b2a6e..bcd8a4724625 100644 err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_PHY_NOISE, &noise); if (err) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h -index 273c80f2d483..ee7e9dc17dce 100644 +index 273c80f2d483a..ee7e9dc17dce0 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h @@ -433,7 +433,9 @@ static inline struct brcmf_cfg80211_vif *wdev_to_vif(struct wireless_dev *wdev) @@ -347,7 +348,7 @@ index 273c80f2d483..ee7e9dc17dce 100644 static inline struct brcmf_cfg80211_info *ndev_to_cfg(struct net_device *ndev) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -index 862a0336a0b5..08f265325ce4 100644 +index 862a0336a0b59..08f265325ce41 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -933,9 +933,11 @@ static void brcmf_del_if(struct brcmf_pub *drvr, s32 bsscfgidx, @@ -365,7 +366,7 @@ index 862a0336a0b5..08f265325ce4 100644 } else { netif_stop_queue(ifp->ndev); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c -index e1752a513c73..2dc0fbba271d 100644 +index e1752a513c733..2dc0fbba271de 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c @@ -2222,8 +2222,13 @@ static struct wireless_dev *brcmf_p2p_create_p2pdev(struct brcmf_p2p_info *p2p, diff --git a/patches/linux/6.18.21/0030-wifi-brcmfmac-check-connection-state-before-querying.patch b/patches/linux/6.18.21/0030-wifi-brcmfmac-check-connection-state-before-querying.patch index 99065cfc7..658570bf1 100644 --- a/patches/linux/6.18.21/0030-wifi-brcmfmac-check-connection-state-before-querying.patch +++ b/patches/linux/6.18.21/0030-wifi-brcmfmac-check-connection-state-before-querying.patch @@ -1,11 +1,12 @@ From 1b42e2f4929b011f0e0d7c8ec552970164811a98 Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Mon, 19 Jan 2026 13:06:53 +0100 -Subject: [PATCH 30/33] wifi: brcmfmac: check connection state before querying +Subject: [PATCH 30/41] wifi: brcmfmac: check connection state before querying station info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Organization: Wires In station mode, brcmf_cfg80211_get_station() queries the firmware for station info even when not connected to an AP. This results in error @@ -23,7 +24,7 @@ Signed-off-by: Mattias Walström 1 file changed, 5 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index bcd8a4724625..f06658d4299b 100644 +index bcd8a4724625b..f06658d4299b3 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -3303,6 +3303,11 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, diff --git a/patches/linux/6.18.21/0031-wifi-brcmfmac-suppress-log-spam-for-regulatory-restr.patch b/patches/linux/6.18.21/0031-wifi-brcmfmac-suppress-log-spam-for-regulatory-restr.patch index b4546baa5..227276787 100644 --- a/patches/linux/6.18.21/0031-wifi-brcmfmac-suppress-log-spam-for-regulatory-restr.patch +++ b/patches/linux/6.18.21/0031-wifi-brcmfmac-suppress-log-spam-for-regulatory-restr.patch @@ -1,11 +1,12 @@ From 8de957dbd9fcb775b3fa27a0d396fd6f95aa9da8 Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Tue, 20 Jan 2026 20:12:10 +0100 -Subject: [PATCH 31/33] wifi: brcmfmac: suppress log spam for +Subject: [PATCH 31/41] wifi: brcmfmac: suppress log spam for regulatory-restricted channels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Organization: Wires When scanning, the driver attempts to set each channel and logs an error if the firmware rejects it. For regulatory-restricted channels, @@ -20,7 +21,7 @@ Signed-off-by: Mattias Walström 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index f06658d4299b..046e07875d00 100644 +index f06658d4299b3..046e07875d001 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -8283,7 +8283,12 @@ brcmf_set_channel(struct brcmf_cfg80211_info *cfg, struct brcmf_if *ifp, diff --git a/patches/linux/6.18.21/0032-wifi-brcmfmac-reduce-log-noise-during-AP-to-station-.patch b/patches/linux/6.18.21/0032-wifi-brcmfmac-reduce-log-noise-during-AP-to-station-.patch index 865093ba7..0fbc1ecd8 100644 --- a/patches/linux/6.18.21/0032-wifi-brcmfmac-reduce-log-noise-during-AP-to-station-.patch +++ b/patches/linux/6.18.21/0032-wifi-brcmfmac-reduce-log-noise-during-AP-to-station-.patch @@ -1,11 +1,12 @@ From 0a25079b3ae16423aaad78637ed6fc29b44283d9 Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Tue, 20 Jan 2026 20:18:45 +0100 -Subject: [PATCH 32/33] wifi: brcmfmac: reduce log noise during AP to station +Subject: [PATCH 32/41] wifi: brcmfmac: reduce log noise during AP to station transition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Organization: Wires When transitioning from AP mode to station mode (e.g., hostapd stopping and wpa_supplicant starting), several non-fatal errors can occur: @@ -27,7 +28,7 @@ Signed-off-by: Mattias Walström 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 046e07875d00..0b04f98f6e4e 100644 +index 046e07875d001..0b04f98f6e4ee 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -1130,13 +1130,15 @@ static void brcmf_scan_config_mpc(struct brcmf_if *ifp, int mpc) diff --git a/patches/linux/6.18.21/0033-net-phy-air_en8811h-add-OF-device-table-for-auto-loa.patch b/patches/linux/6.18.21/0033-net-phy-air_en8811h-add-OF-device-table-for-auto-loa.patch index cbd4898d7..02d7465d9 100644 --- a/patches/linux/6.18.21/0033-net-phy-air_en8811h-add-OF-device-table-for-auto-loa.patch +++ b/patches/linux/6.18.21/0033-net-phy-air_en8811h-add-OF-device-table-for-auto-loa.patch @@ -1,8 +1,9 @@ From 81cb8dc071332896b5d3c49f6edd8b8331b86f2f Mon Sep 17 00:00:00 2001 From: Mattias Walström Date: Tue, 17 Feb 2026 21:59:59 +0100 -Subject: [PATCH 33/33] net: phy: air_en8811h: add OF device table for +Subject: [PATCH 33/41] net: phy: air_en8811h: add OF device table for auto-loading +Organization: Wires mdio_uevent() only emits an OF-style MODALIAS via of_device_uevent_modalias(), never the mdio: binary format that @@ -20,7 +21,7 @@ rejects drivers that provide an of_match_table. 1 file changed, 6 insertions(+) diff --git a/drivers/net/phy/air_en8811h.c b/drivers/net/phy/air_en8811h.c -index badd65f0ccee..b609465247a2 100644 +index badd65f0ccee2..b609465247a28 100644 --- a/drivers/net/phy/air_en8811h.c +++ b/drivers/net/phy/air_en8811h.c @@ -1184,6 +1184,12 @@ static int en8811h_suspend(struct phy_device *phydev) diff --git a/patches/linux/6.18.21/0034-drm-vc4-dsi-enable-video-and-then-retry-failed-trans.patch b/patches/linux/6.18.21/0034-drm-vc4-dsi-enable-video-and-then-retry-failed-trans.patch new file mode 100644 index 000000000..005ef2115 --- /dev/null +++ b/patches/linux/6.18.21/0034-drm-vc4-dsi-enable-video-and-then-retry-failed-trans.patch @@ -0,0 +1,114 @@ +From 42de6ed86d2d6745c0a96515c5d39d29eb5a6695 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Fri, 20 Sep 2024 12:05:18 +0100 +Subject: [PATCH 34/41] drm: vc4: dsi: enable video and then retry failed + transfers +Organization: Wires + +The DSI block appears to be able to come up stuck in a condition where +it leaves the lanes in HS mode or just jabbering. This stops LP +transfers from completing as there is no LP time available. This is +signalled via the LP1 contention error. + +Enabling video briefly clears that condition, so if we detect the +error condition, enable video mode and then retry. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_dsi.c | 54 +++++++++++++++++++++++++++++------ + 1 file changed, 46 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c +index 458e5d9879645..439d7a04127d8 100644 +--- a/drivers/gpu/drm/vc4/vc4_dsi.c ++++ b/drivers/gpu/drm/vc4/vc4_dsi.c +@@ -286,6 +286,8 @@ + DSI1_INT_PR_TO) + + #define DSI0_STAT 0x2c ++# define DSI0_STAT_ERR_CONT_LP1 BIT(6) ++# define DSI0_STAT_ERR_CONT_LP0 BIT(5) + #define DSI0_HSTX_TO_CNT 0x30 + #define DSI0_LPRX_TO_CNT 0x34 + #define DSI0_TA_TO_CNT 0x38 +@@ -1168,10 +1170,9 @@ static int vc4_dsi_bridge_attach(struct drm_bridge *bridge, + &dsi->bridge, flags); + } + +-static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host, +- const struct mipi_dsi_msg *msg) ++static ssize_t vc4_dsi_transfer(struct vc4_dsi *dsi, ++ const struct mipi_dsi_msg *msg, bool log_error) + { +- struct vc4_dsi *dsi = host_to_dsi(host); + struct drm_device *drm = dsi->bridge.dev; + struct mipi_dsi_packet packet; + u32 pkth = 0, pktc = 0; +@@ -1281,10 +1282,12 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host, + DSI_PORT_WRITE(TXPKT1C, pktc); + + if (!wait_for_completion_timeout(&dsi->xfer_completion, +- msecs_to_jiffies(1000))) { +- dev_err(&dsi->pdev->dev, "transfer interrupt wait timeout"); +- dev_err(&dsi->pdev->dev, "instat: 0x%08x\n", +- DSI_PORT_READ(INT_STAT)); ++ msecs_to_jiffies(500))) { ++ if (log_error) { ++ dev_err(&dsi->pdev->dev, "transfer interrupt wait timeout"); ++ dev_err(&dsi->pdev->dev, "instat: 0x%08x, stat: 0x%08x\n", ++ DSI_PORT_READ(INT_STAT), DSI_PORT_READ(INT_STAT)); ++ } + ret = -ETIMEDOUT; + } else { + ret = dsi->xfer_result; +@@ -1327,7 +1330,8 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host, + return ret; + + reset_fifo_and_return: +- drm_err(drm, "DSI transfer failed, resetting: %d\n", ret); ++ if (log_error) ++ drm_err(drm, "DSI transfer failed, resetting: %d\n", ret); + + DSI_PORT_WRITE(TXPKT1C, DSI_PORT_READ(TXPKT1C) & ~DSI_TXPKT1C_CMD_EN); + udelay(1); +@@ -1340,6 +1344,40 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host, + return ret; + } + ++static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host, ++ const struct mipi_dsi_msg *msg) ++{ ++ struct vc4_dsi *dsi = host_to_dsi(host); ++ u32 stat, disp0_ctrl; ++ int ret; ++ ++ ret = vc4_dsi_transfer(dsi, msg, false); ++ ++ if (ret == -ETIMEDOUT) { ++ stat = DSI_PORT_READ(STAT); ++ disp0_ctrl = DSI_PORT_READ(DISP0_CTRL); ++ ++ DSI_PORT_WRITE(STAT, DSI_PORT_BIT(STAT_ERR_CONT_LP1)); ++ if (!(disp0_ctrl & DSI_DISP0_ENABLE)) { ++ /* If video mode not enabled, then try recovering by ++ * enabling it briefly to clear FIFOs and the state. ++ */ ++ disp0_ctrl |= DSI_DISP0_ENABLE; ++ DSI_PORT_WRITE(DISP0_CTRL, disp0_ctrl); ++ msleep(30); ++ disp0_ctrl &= ~DSI_DISP0_ENABLE; ++ DSI_PORT_WRITE(DISP0_CTRL, disp0_ctrl); ++ msleep(30); ++ ++ ret = vc4_dsi_transfer(dsi, msg, true); ++ } else { ++ DRM_ERROR("DSI transfer failed whilst in HS mode stat: 0x%08x\n", ++ stat); ++ } ++ } ++ return ret; ++} ++ + static const struct component_ops vc4_dsi_ops; + static int vc4_dsi_host_attach(struct mipi_dsi_host *host, + struct mipi_dsi_device *device) diff --git a/patches/linux/6.18.21/0035-drm-vc4-dsi-Clocks-should-be-running-before-reset.patch b/patches/linux/6.18.21/0035-drm-vc4-dsi-Clocks-should-be-running-before-reset.patch new file mode 100644 index 000000000..467a34af2 --- /dev/null +++ b/patches/linux/6.18.21/0035-drm-vc4-dsi-Clocks-should-be-running-before-reset.patch @@ -0,0 +1,63 @@ +From d7727e571a36e978685cc5457d69ee12bab5b95e Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Wed, 8 Jun 2022 17:23:47 +0100 +Subject: [PATCH 35/41] drm: vc4: dsi: Clocks should be running before reset +Organization: Wires + +The initialisation sequence differs slightly from the documentation +in that the clocks are meant to be running before resets and +similar. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_dsi.c | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c +index 439d7a04127d8..1eba498d276f8 100644 +--- a/drivers/gpu/drm/vc4/vc4_dsi.c ++++ b/drivers/gpu/drm/vc4/vc4_dsi.c +@@ -926,6 +926,21 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge, + "Failed to set phy clock to %ld: %d\n", phy_clock, ret); + } + ++ ret = clk_prepare_enable(dsi->escape_clock); ++ if (ret) { ++ drm_err(bridge->dev, "Failed to turn on DSI escape clock: %d\n", ++ ret); ++ return; ++ } ++ ++ ret = clk_prepare_enable(dsi->pll_phy_clock); ++ if (ret) { ++ drm_err(bridge->dev, "Failed to turn on DSI PLL: %d\n", ret); ++ return; ++ } ++ ++ hs_clock = clk_get_rate(dsi->pll_phy_clock); ++ + /* Reset the DSI and all its fifos. */ + DSI_PORT_WRITE(CTRL, + DSI_CTRL_SOFT_RESET_CFG | +@@ -984,21 +999,6 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge, + mdelay(1); + } + +- ret = clk_prepare_enable(dsi->escape_clock); +- if (ret) { +- drm_err(bridge->dev, "Failed to turn on DSI escape clock: %d\n", +- ret); +- return; +- } +- +- ret = clk_prepare_enable(dsi->pll_phy_clock); +- if (ret) { +- drm_err(bridge->dev, "Failed to turn on DSI PLL: %d\n", ret); +- return; +- } +- +- hs_clock = clk_get_rate(dsi->pll_phy_clock); +- + /* Yes, we set the DSI0P/DSI1P pixel clock to the byte rate, + * not the pixel clock rate. DSIxP take from the APHY's byte, + * DDR2, or DDR4 clock (we use byte) and feed into the PV at diff --git a/patches/linux/6.18.21/0036-drm-vc4-Ensure-DSI-is-enabled-for-FIFO-resets.patch b/patches/linux/6.18.21/0036-drm-vc4-Ensure-DSI-is-enabled-for-FIFO-resets.patch new file mode 100644 index 000000000..99215cc08 --- /dev/null +++ b/patches/linux/6.18.21/0036-drm-vc4-Ensure-DSI-is-enabled-for-FIFO-resets.patch @@ -0,0 +1,60 @@ +From ee825e39fc6d6d40a51bcf6de7fe3c553aa44c60 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Fri, 5 Apr 2024 17:51:55 +0100 +Subject: [PATCH 36/41] drm/vc4: Ensure DSI is enabled for FIFO resets +Organization: Wires + +The block must be enabled for the FIFO resets to be actioned, +so ensure this is the case. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_dsi.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c +index 1eba498d276f8..de963edefb760 100644 +--- a/drivers/gpu/drm/vc4/vc4_dsi.c ++++ b/drivers/gpu/drm/vc4/vc4_dsi.c +@@ -400,7 +400,8 @@ + # define DSI1_CTRL_DISABLE_DISP_ECCC BIT(1) + # define DSI0_CTRL_CTRL0 BIT(0) + # define DSI1_CTRL_EN BIT(0) +-# define DSI0_CTRL_RESET_FIFOS (DSI_CTRL_CLR_LDF | \ ++# define DSI0_CTRL_RESET_FIFOS (DSI0_CTRL_CTRL0 | \ ++ DSI_CTRL_CLR_LDF | \ + DSI0_CTRL_CLR_PBCF | \ + DSI0_CTRL_CLR_CPBCF | \ + DSI0_CTRL_CLR_PDF | \ +@@ -941,12 +942,17 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge, + + hs_clock = clk_get_rate(dsi->pll_phy_clock); + +- /* Reset the DSI and all its fifos. */ ++ /* ++ * Reset the DSI and all its fifos. The block must be enabled for the ++ * FIFO resets to trigger. ++ */ + DSI_PORT_WRITE(CTRL, + DSI_CTRL_SOFT_RESET_CFG | + DSI_PORT_BIT(CTRL_RESET_FIFOS)); + + DSI_PORT_WRITE(CTRL, ++ ((dsi->variant->port == 0) ? ++ DSI0_CTRL_CTRL0 : DSI1_CTRL_EN) | + DSI_CTRL_HSDT_EOT_DISABLE | + DSI_CTRL_RX_LPDT_EOT_DISABLE); + +@@ -1114,12 +1120,6 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge, + DSI_DISP1_PFORMAT) | + DSI_DISP1_ENABLE); + +- /* Ungate the block. */ +- if (dsi->variant->port == 0) +- DSI_PORT_WRITE(CTRL, DSI_PORT_READ(CTRL) | DSI0_CTRL_CTRL0); +- else +- DSI_PORT_WRITE(CTRL, DSI_PORT_READ(CTRL) | DSI1_CTRL_EN); +- + /* Bring AFE out of reset. */ + DSI_PORT_WRITE(PHY_AFEC0, + DSI_PORT_READ(PHY_AFEC0) & diff --git a/patches/linux/6.18.21/0037-drm-vc4-Reset-DSI-AFE-on-disable.patch b/patches/linux/6.18.21/0037-drm-vc4-Reset-DSI-AFE-on-disable.patch new file mode 100644 index 000000000..d6e6a7ff3 --- /dev/null +++ b/patches/linux/6.18.21/0037-drm-vc4-Reset-DSI-AFE-on-disable.patch @@ -0,0 +1,52 @@ +From 72f90bf20790266571c167e5f9d4348f3f3a6815 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Thu, 26 May 2022 18:56:19 +0100 +Subject: [PATCH 37/41] drm: vc4: Reset DSI AFE on disable +Organization: Wires + +vc4_dsi_bridge_disable wasn't resetting things during shutdown, +so add that in. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_dsi.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c +index de963edefb760..9756821ebf27c 100644 +--- a/drivers/gpu/drm/vc4/vc4_dsi.c ++++ b/drivers/gpu/drm/vc4/vc4_dsi.c +@@ -360,6 +360,16 @@ + # define DSI_PHY_AFEC0_CTATADJ_MASK VC4_MASK(3, 0) + # define DSI_PHY_AFEC0_CTATADJ_SHIFT 0 + ++# define DSI0_AFEC0_PD_ALL_LANES (DSI0_PHY_AFEC0_PD | \ ++ DSI0_PHY_AFEC0_PD_BG | \ ++ DSI0_PHY_AFEC0_PD_DLANE1) ++ ++# define DSI1_AFEC0_PD_ALL_LANES (DSI1_PHY_AFEC0_PD | \ ++ DSI1_PHY_AFEC0_PD_BG | \ ++ DSI1_PHY_AFEC0_PD_DLANE3 | \ ++ DSI1_PHY_AFEC0_PD_DLANE2 | \ ++ DSI1_PHY_AFEC0_PD_DLANE1) ++ + #define DSI0_PHY_AFEC1 0x68 + # define DSI0_PHY_AFEC1_IDR_DLANE1_MASK VC4_MASK(10, 8) + # define DSI0_PHY_AFEC1_IDR_DLANE1_SHIFT 8 +@@ -809,6 +819,16 @@ static void vc4_dsi_bridge_disable(struct drm_bridge *bridge, + disp0_ctrl = DSI_PORT_READ(DISP0_CTRL); + disp0_ctrl &= ~DSI_DISP0_ENABLE; + DSI_PORT_WRITE(DISP0_CTRL, disp0_ctrl); ++ ++ /* Reset the DSI and all its fifos. */ ++ DSI_PORT_WRITE(CTRL, DSI_CTRL_SOFT_RESET_CFG | ++ DSI_PORT_BIT(CTRL_RESET_FIFOS)); ++ ++ /* Power down the analogue front end. */ ++ DSI_PORT_WRITE(PHY_AFEC0, DSI_PORT_BIT(PHY_AFEC0_RESET) | ++ DSI_PORT_BIT(PHY_AFEC0_PD) | ++ DSI_PORT_BIT(AFEC0_PD_ALL_LANES)); ++ + } + + static void vc4_dsi_bridge_post_disable(struct drm_bridge *bridge, diff --git a/patches/linux/6.18.21/0038-drm-vc4-dsi-Handle-the-different-command-FIFO-widths.patch b/patches/linux/6.18.21/0038-drm-vc4-dsi-Handle-the-different-command-FIFO-widths.patch new file mode 100644 index 000000000..8cb61b8eb --- /dev/null +++ b/patches/linux/6.18.21/0038-drm-vc4-dsi-Handle-the-different-command-FIFO-widths.patch @@ -0,0 +1,151 @@ +From e92eb94594b1e04b69c5c85f0719d09c8858cdfe Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Wed, 20 Nov 2024 13:58:08 +0000 +Subject: [PATCH 38/41] drm: vc4: dsi: Handle the different command FIFO widths +Organization: Wires + +DSI0 and DSI1 have different widths for the command FIFO (24bit +vs 32bit), but the driver was assuming the 32bit width of DSI1 +in all cases. +DSI0 also wants the data packed as 24bit big endian, so the +formatting code needs updating. + +Handle the difference via the variant structure. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_dsi.c | 64 ++++++++++++++++++++++++----------- + 1 file changed, 44 insertions(+), 20 deletions(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c +index 9756821ebf27c..b1cc30b8aa797 100644 +--- a/drivers/gpu/drm/vc4/vc4_dsi.c ++++ b/drivers/gpu/drm/vc4/vc4_dsi.c +@@ -44,7 +44,6 @@ + + #define DSI_CMD_FIFO_DEPTH 16 + #define DSI_PIX_FIFO_DEPTH 256 +-#define DSI_PIX_FIFO_WIDTH 4 + + #define DSI0_CTRL 0x00 + +@@ -170,11 +169,15 @@ + #define DSI1_DISP1_CTRL 0x2c + /* Format of the data written to TXPKT_PIX_FIFO. */ + # define DSI_DISP1_PFORMAT_MASK VC4_MASK(2, 1) +-# define DSI_DISP1_PFORMAT_SHIFT 1 +-# define DSI_DISP1_PFORMAT_16BIT 0 +-# define DSI_DISP1_PFORMAT_24BIT 1 +-# define DSI_DISP1_PFORMAT_32BIT_LE 2 +-# define DSI_DISP1_PFORMAT_32BIT_BE 3 ++# define DSI1_DISP1_PFORMAT_SHIFT 1 ++# define DSI0_DISP1_PFORMAT_16BIT 0 ++# define DSI0_DISP1_PFORMAT_16BIT_ADJ 1 ++# define DSI0_DISP1_PFORMAT_24BIT 2 ++# define DSI0_DISP1_PFORMAT_32BIT_LE 3 /* NB Invalid, but required for macros to work */ ++# define DSI1_DISP1_PFORMAT_16BIT 0 ++# define DSI1_DISP1_PFORMAT_24BIT 1 ++# define DSI1_DISP1_PFORMAT_32BIT_LE 2 ++# define DSI1_DISP1_PFORMAT_32BIT_BE 3 + + /* DISP1 is always command mode. */ + # define DSI_DISP1_ENABLE BIT(0) +@@ -553,6 +556,7 @@ struct vc4_dsi_variant { + unsigned int port; + + bool broken_axi_workaround; ++ unsigned int cmd_fifo_width; + + const char *debugfs_name; + const struct debugfs_reg32 *regs; +@@ -1135,10 +1139,16 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge, + /* Set up DISP1 for transferring long command payloads through + * the pixfifo. + */ +- DSI_PORT_WRITE(DISP1_CTRL, +- VC4_SET_FIELD(DSI_DISP1_PFORMAT_32BIT_LE, +- DSI_DISP1_PFORMAT) | +- DSI_DISP1_ENABLE); ++ if (dsi->variant->cmd_fifo_width == 4) ++ DSI_PORT_WRITE(DISP1_CTRL, ++ VC4_SET_FIELD(DSI_PORT_BIT(DISP1_PFORMAT_32BIT_LE), ++ DSI_DISP1_PFORMAT) | ++ DSI_DISP1_ENABLE); ++ else ++ DSI_PORT_WRITE(DISP1_CTRL, ++ VC4_SET_FIELD(DSI_PORT_BIT(DISP1_PFORMAT_24BIT), ++ DSI_DISP1_PFORMAT) | ++ DSI_DISP1_ENABLE); + + /* Bring AFE out of reset. */ + DSI_PORT_WRITE(PHY_AFEC0, +@@ -1221,9 +1231,9 @@ static ssize_t vc4_dsi_transfer(struct vc4_dsi *dsi, + pix_fifo_len = 0; + } else { + cmd_fifo_len = (packet.payload_length % +- DSI_PIX_FIFO_WIDTH); ++ dsi->variant->cmd_fifo_width); + pix_fifo_len = ((packet.payload_length - cmd_fifo_len) / +- DSI_PIX_FIFO_WIDTH); ++ dsi->variant->cmd_fifo_width); + } + + WARN_ON_ONCE(pix_fifo_len >= DSI_PIX_FIFO_DEPTH); +@@ -1241,14 +1251,25 @@ static ssize_t vc4_dsi_transfer(struct vc4_dsi *dsi, + + for (i = 0; i < cmd_fifo_len; i++) + DSI_PORT_WRITE(TXPKT_CMD_FIFO, packet.payload[i]); +- for (i = 0; i < pix_fifo_len; i++) { +- const u8 *pix = packet.payload + cmd_fifo_len + i * 4; +- +- DSI_PORT_WRITE(TXPKT_PIX_FIFO, +- pix[0] | +- pix[1] << 8 | +- pix[2] << 16 | +- pix[3] << 24); ++ if (dsi->variant->cmd_fifo_width == 4) { ++ for (i = 0; i < pix_fifo_len; i++) { ++ const u8 *pix = packet.payload + cmd_fifo_len + i * 4; ++ ++ DSI_PORT_WRITE(TXPKT_PIX_FIFO, ++ pix[0] | ++ pix[1] << 8 | ++ pix[2] << 16 | ++ pix[3] << 24); ++ } ++ } else { ++ for (i = 0; i < pix_fifo_len; i++) { ++ const u8 *pix = packet.payload + cmd_fifo_len + i * 3; ++ ++ DSI_PORT_WRITE(TXPKT_PIX_FIFO, ++ pix[2] | ++ pix[1] << 8 | ++ pix[0] << 16); ++ } + } + + if (msg->flags & MIPI_DSI_MSG_USE_LPM) +@@ -1493,6 +1514,7 @@ static const struct drm_encoder_funcs vc4_dsi_encoder_funcs = { + + static const struct vc4_dsi_variant bcm2711_dsi1_variant = { + .port = 1, ++ .cmd_fifo_width = 4, + .debugfs_name = "dsi1_regs", + .regs = dsi1_regs, + .nregs = ARRAY_SIZE(dsi1_regs), +@@ -1500,6 +1522,7 @@ static const struct vc4_dsi_variant bcm2711_dsi1_variant = { + + static const struct vc4_dsi_variant bcm2835_dsi0_variant = { + .port = 0, ++ .cmd_fifo_width = 3, + .debugfs_name = "dsi0_regs", + .regs = dsi0_regs, + .nregs = ARRAY_SIZE(dsi0_regs), +@@ -1507,6 +1530,7 @@ static const struct vc4_dsi_variant bcm2835_dsi0_variant = { + + static const struct vc4_dsi_variant bcm2835_dsi1_variant = { + .port = 1, ++ .cmd_fifo_width = 4, + .broken_axi_workaround = true, + .debugfs_name = "dsi1_regs", + .regs = dsi1_regs, diff --git a/patches/linux/6.18.21/0039-drm-bridge-tc358762-Program-the-DPI-mode-into-the-ch.patch b/patches/linux/6.18.21/0039-drm-bridge-tc358762-Program-the-DPI-mode-into-the-ch.patch new file mode 100644 index 000000000..623eb4707 --- /dev/null +++ b/patches/linux/6.18.21/0039-drm-bridge-tc358762-Program-the-DPI-mode-into-the-ch.patch @@ -0,0 +1,51 @@ +From 9975a8fd3fb000644606269a4e13a62f5b43180a Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 9 Jan 2024 17:37:00 +0000 +Subject: [PATCH 39/41] drm/bridge: tc358762: Program the DPI mode into the + chip +Organization: Wires + +The autodetection of resolution/timing by the TC358762 can lead +to the display being shifted by a pixel or two. + +Program the TC358762 with the requested mode timing so that +it can reproduce it accurately. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/bridge/tc358762.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc358762.c +index 98df3e667d4aa..73b169026e63b 100644 +--- a/drivers/gpu/drm/bridge/tc358762.c ++++ b/drivers/gpu/drm/bridge/tc358762.c +@@ -53,6 +53,12 @@ + #define LCDCTRL_VSPOL BIT(19) /* Polarity of VSYNC signal */ + #define LCDCTRL_VSDELAY(v) (((v) & 0xfff) << 20) /* VSYNC delay */ + ++/* First parameter is in the 16bits, second is in the top 16bits */ ++#define LCD_HS_HBP 0x0424 ++#define LCD_HDISP_HFP 0x0428 ++#define LCD_VS_VBP 0x042c ++#define LCD_VDISP_VFP 0x0430 ++ + /* SPI Master Registers */ + #define SPICMR 0x0450 + #define SPITCR 0x0454 +@@ -139,6 +145,15 @@ static int tc358762_init(struct tc358762 *ctx) + tc358762_write(ctx, LCDCTRL, lcdctrl); + + tc358762_write(ctx, SYSCTRL, 0x040f); ++ ++ tc358762_write(ctx, LCD_HS_HBP, (ctx->mode.hsync_end - ctx->mode.hsync_start) | ++ ((ctx->mode.htotal - ctx->mode.hsync_end) << 16)); ++ tc358762_write(ctx, LCD_HDISP_HFP, ctx->mode.hdisplay | ++ ((ctx->mode.hsync_start - ctx->mode.hdisplay) << 16)); ++ tc358762_write(ctx, LCD_VS_VBP, (ctx->mode.vsync_end - ctx->mode.vsync_start) | ++ ((ctx->mode.vtotal - ctx->mode.vsync_end) << 16)); ++ tc358762_write(ctx, LCD_VDISP_VFP, ctx->mode.vdisplay | ++ ((ctx->mode.vsync_start - ctx->mode.vdisplay) << 16)); + msleep(100); + + tc358762_write(ctx, PPI_STARTPPI, PPI_START_FUNCTION); diff --git a/patches/linux/6.18.21/0040-drm-bridge-tc358762-revert-move-ops-to-enable.patch b/patches/linux/6.18.21/0040-drm-bridge-tc358762-revert-move-ops-to-enable.patch new file mode 100644 index 000000000..6e2cd4ff5 --- /dev/null +++ b/patches/linux/6.18.21/0040-drm-bridge-tc358762-revert-move-ops-to-enable.patch @@ -0,0 +1,42 @@ +From 469cee798fdbcde99cd78ac7fc6d8ab61902d806 Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 9 Jan 2024 18:44:49 +0000 +Subject: [PATCH 40/41] drm/bridge: tc358762: revert move ops to enable +Organization: Wires + +Reverts 8a4b2fc9c91a ("drm/bridge: tc358762: Split register programming from pre-enable to enable") +as we want the config commands sent before video starts. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/bridge/tc358762.c | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc358762.c +index 73b169026e63b..6164932edfec9 100644 +--- a/drivers/gpu/drm/bridge/tc358762.c ++++ b/drivers/gpu/drm/bridge/tc358762.c +@@ -202,15 +202,6 @@ static void tc358762_pre_enable(struct drm_bridge *bridge, + usleep_range(5000, 10000); + } + +- ctx->pre_enabled = true; +-} +- +-static void tc358762_enable(struct drm_bridge *bridge, +- struct drm_atomic_state *state) +-{ +- struct tc358762 *ctx = bridge_to_tc358762(bridge); +- int ret; +- + ret = tc358762_init(ctx); + if (ret < 0) + dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); +@@ -238,7 +229,6 @@ static void tc358762_bridge_mode_set(struct drm_bridge *bridge, + static const struct drm_bridge_funcs tc358762_bridge_funcs = { + .atomic_post_disable = tc358762_post_disable, + .atomic_pre_enable = tc358762_pre_enable, +- .atomic_enable = tc358762_enable, + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, + .atomic_reset = drm_atomic_helper_bridge_reset, diff --git a/patches/linux/6.18.21/0041-drm-bridge-tc358762-Set-pre_enabled-on-pre_enable-to.patch b/patches/linux/6.18.21/0041-drm-bridge-tc358762-Set-pre_enabled-on-pre_enable-to.patch new file mode 100644 index 000000000..07d37fc98 --- /dev/null +++ b/patches/linux/6.18.21/0041-drm-bridge-tc358762-Set-pre_enabled-on-pre_enable-to.patch @@ -0,0 +1,31 @@ +From 3d1db425ec44e6c885e7b83d5a53b48b235aaa2f Mon Sep 17 00:00:00 2001 +From: Mattias Walström +Date: Sat, 4 Apr 2026 18:04:19 +0200 +Subject: [PATCH 41/41] drm/bridge: tc358762: Set pre_enabled on pre_enable to + prevent regulator imbalance +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Organization: Wires + +The RPi cherry-pick moved tc358762_init() to pre_enable but dropped the pre_enabled = true assignment. +Without it, post_disable always bails out early and never disables the regulator. + +Signed-off-by: Mattias Walström +--- + drivers/gpu/drm/bridge/tc358762.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc358762.c +index 6164932edfec9..8da66b06d6b63 100644 +--- a/drivers/gpu/drm/bridge/tc358762.c ++++ b/drivers/gpu/drm/bridge/tc358762.c +@@ -205,6 +205,8 @@ static void tc358762_pre_enable(struct drm_bridge *bridge, + ret = tc358762_init(ctx); + if (ret < 0) + dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); ++ ++ ctx->pre_enabled = true; + } + + static int tc358762_attach(struct drm_bridge *bridge,