mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 17:23:00 +02:00
Merge pull request #1468 from kernelkit/fix-rpi-display
linux: Fix stability of Raspberry pi display 1
This commit is contained in:
@@ -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";
|
||||
|
||||
+11
-1
@@ -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
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 657a79b59e67bac4af66f63bcf740238af399aba Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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 @@
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 6684303b2262468f91f4aab0755a35f8dc2ee141 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From ee1464a4becdb06df87ae167fb56d9ac1530512f Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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 @@
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From cfe0f07454be8ab659b33fafd83a57b2d44f2fdf Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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 {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From e0d9221901b235ffb4c0ea58748e8e5263eb0d9f Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
+9
-8
@@ -1,8 +1,9 @@
|
||||
From 86cdec8b0959cf957b2811a23ddf77648161a402 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
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 <troglobit@gmail.com>
|
||||
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 {
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 31794e03e7f1d66f7fdff708cdaa40453e591204 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
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 <troglobit@gmail.com>
|
||||
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,
|
||||
|
||||
+4
-3
@@ -1,8 +1,9 @@
|
||||
From 984d59e5f06c3741e1c76daf4bed6883eb339e97 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
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 <troglobit@gmail.com>
|
||||
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 {
|
||||
|
||||
+5
-4
@@ -1,8 +1,9 @@
|
||||
From e3f31e30e7086bdd0b9698deb0b036d5e8ebb99e Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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)
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 7f1e44c7216953f3b09e2aa6df4c739ce2e1d480 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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)
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 080f229c35d686e8c260092e18caa39cbe833392 Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
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 <troglobit@gmail.com>
|
||||
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 @@
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 2040cffd47b80aa352b624ddaa66f47f85d5c88a Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
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 <troglobit@gmail.com>
|
||||
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 {
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From db4b35cf2ce8f06e9ed65b394728e846f92af4b7 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
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,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From c6bdd72407392acd6f29e6a1554724953ec8590f Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 @@
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 0361723f9ea674aab4e76f4a88471c1719976623 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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)
|
||||
|
||||
+7
-6
@@ -1,8 +1,9 @@
|
||||
From d9cc0e3a04dec8b02edbb0510eaee73734e9fe1b Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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 @@
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 8516fa6ca5c60461f61703525eb29efc2f90e83f Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 46f0ce2051d0ddb753a663b5bc2a622758100899 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 07600da9729116e9d146a961a681312fd5945831 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 3d7009324b7b0855621b1187cdd02f5cd1d10aae Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From 3f046855852e41283e4855575974f376c4d82976 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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)
|
||||
|
||||
+8
-7
@@ -1,8 +1,9 @@
|
||||
From ab5c530c7dbf9f8dacf42231d4aa8331ae874c00 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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 @@
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From 1a2c045f9e4fd595803b014bd85e2914b9003e8d Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From e21110ff341e8e98fd37682eb3697af164ab6a18 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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)
|
||||
|
||||
+5
-4
@@ -1,8 +1,9 @@
|
||||
From 707470adc86e9a099e3660c1c6c7a50ec38c2aa9 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 810739b589e9a754a62f2070abf39bab7c96122d Mon Sep 17 00:00:00 2001
|
||||
From: Joachim Wiberg <troglobit@gmail.com>
|
||||
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 <troglobit@gmail.com>
|
||||
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)
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 33439041b14ff724f0d607df9bf46ae90415f493 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
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,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From 1c589a1949419a0f810a768f0d871d849c48073c Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 @@
|
||||
|
||||
+6
-5
@@ -1,11 +1,12 @@
|
||||
From bc38784c6cece06ea7de222187024eade94d6cbd Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 <lazzer@gmail.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
From 1b42e2f4929b011f0e0d7c8ec552970164811a98 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 <lazzer@gmail.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
From 8de957dbd9fcb775b3fa27a0d396fd6f95aa9da8 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 <lazzer@gmail.com>
|
||||
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,
|
||||
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
From 0a25079b3ae16423aaad78637ed6fc29b44283d9 Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 <lazzer@gmail.com>
|
||||
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)
|
||||
|
||||
+3
-2
@@ -1,8 +1,9 @@
|
||||
From 81cb8dc071332896b5d3c49f6edd8b8331b86f2f Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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)
|
||||
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
From 42de6ed86d2d6745c0a96515c5d39d29eb5a6695 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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)
|
||||
@@ -0,0 +1,63 @@
|
||||
From d7727e571a36e978685cc5457d69ee12bab5b95e Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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
|
||||
@@ -0,0 +1,60 @@
|
||||
From ee825e39fc6d6d40a51bcf6de7fe3c553aa44c60 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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) &
|
||||
@@ -0,0 +1,52 @@
|
||||
From 72f90bf20790266571c167e5f9d4348f3f3a6815 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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,
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
From e92eb94594b1e04b69c5c85f0719d09c8858cdfe Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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,
|
||||
@@ -0,0 +1,51 @@
|
||||
From 9975a8fd3fb000644606269a4e13a62f5b43180a Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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);
|
||||
@@ -0,0 +1,42 @@
|
||||
From 469cee798fdbcde99cd78ac7fc6d8ab61902d806 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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,
|
||||
@@ -0,0 +1,31 @@
|
||||
From 3d1db425ec44e6c885e7b83d5a53b48b235aaa2f Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Walström <lazzer@gmail.com>
|
||||
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 <lazzer@gmail.com>
|
||||
---
|
||||
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,
|
||||
Reference in New Issue
Block a user