2022-10-26 13:37:10

by Maxime Ripard

[permalink] [raw]
Subject: [PATCH 0/2] ARM: dts: bcm283x: Switch to firmware clocks for Pi0-3

Hi,

Over the years, the differences between the Pi0-3 and the Pi4 created a bunch
of issues in the KMS driver that trace back to the policy differences between
the clk-bcm2835 and clk-raspberrypi drivers.

Instead of piling hacks over hacks to work around those differences, let's just
follow what downstream is doing and use the clk-raspberrypi for all the KMS
related devices.

Let me know what you think,
Maxime

To: Rob Herring <[email protected]>
To: Krzysztof Kozlowski <[email protected]>
To: Florian Fainelli <[email protected]>
To: Broadcom internal kernel review list <[email protected]>
To: Ray Jui <[email protected]>
To: Scott Branden <[email protected]>
Cc: Dave Stevenson <[email protected]>
Cc: Dom Cobley <[email protected]>
Cc: Phil Elwell <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Maxime Ripard <[email protected]>

---
Maxime Ripard (2):
ARM: dts: bcm283x: Remove bcm2835-rpi-common.dtsi from SoC DTSI
ARM: dts: bcm2835-rpi: Use firmware clocks for display

arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-a.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi | 1 +
arch/arm/boot/dts/bcm2835-rpi-common.dtsi | 17 +++++++++++++++++
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-zero.dts | 1 +
arch/arm/boot/dts/bcm2835.dtsi | 1 -
arch/arm/boot/dts/bcm2836-rpi.dtsi | 1 +
arch/arm/boot/dts/bcm2836.dtsi | 1 -
arch/arm/boot/dts/bcm2837.dtsi | 1 -
13 files changed, 26 insertions(+), 3 deletions(-)
---
base-commit: 5398aeb71349b5e67658d51f46e12117060d867d
change-id: 20221026-rpi-display-fw-clk-0382f7afa5e8

Best regards,
--
Maxime Ripard <[email protected]>


2022-10-26 13:48:48

by Maxime Ripard

[permalink] [raw]
Subject: [PATCH 1/2] ARM: dts: bcm283x: Remove bcm2835-rpi-common.dtsi from SoC DTSI

According to the commit log of the commit 3ac395a5b3f3 ("ARM: dts:
bcm283x: Use firmware PM driver for V3D"), the initial intent behind the
bcm2835-rpi-common DTSI was to share data between the RaspberryPies
based on the BCM2835, 36 and 37.

However, it was included by these SoCs' main DTSI. This is creating an
improper layering.

On top of that, bcm2835.dtsi is being included by bcm2711.dtsi, which
means that, even though the bcm2835-rpi-common DTSI wasn't actually
meant to contain data for the BCM2711, it actually leaks into the
BCM2711 DTSI.

In order to remove both issues, let's remove the include of
bcm2835-rpi-common.dtsi from bcm283{5-7}.dtsi and put them into the
bcm283{6,7}-rpi.dtsi.

BCM2835 has to be handled with special care due to the fact that
bcm2835.dtsi is being included by bcm2711.dtsi. Thus, we chose to
include bcm2835-rpi-common.dtsi directly into the board DTS. This will
be more error-prone, but given that it's a fairly old SoC by now, the
chance that we will get more BCM2835 boards is fairly low.

BCM2711 isn't modified since the content of bcm2835-rpi-common.dtsi was
only a power-domain for the v3d that was overridden anyway.

Signed-off-by: Maxime Ripard <[email protected]>
---
arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-a.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi | 1 +
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-zero.dts | 1 +
arch/arm/boot/dts/bcm2835.dtsi | 1 -
arch/arm/boot/dts/bcm2836-rpi.dtsi | 1 +
arch/arm/boot/dts/bcm2836.dtsi | 1 -
arch/arm/boot/dts/bcm2837.dtsi | 1 -
12 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
index 9b9a18bbb20a..1470d2049f74 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
@@ -2,6 +2,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-usb-host.dtsi"

/ {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
index f664e4fced93..89be496f84f8 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
@@ -2,6 +2,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-usb-host.dtsi"

/ {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
index 248feb2ed23d..7f653f11788d 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
@@ -2,6 +2,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-smsc9514.dtsi"
#include "bcm283x-rpi-usb-host.dtsi"

diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
index f5b66d3f4ff3..55e7cb0a242f 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
@@ -2,6 +2,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-smsc9512.dtsi"
#include "bcm283x-rpi-usb-host.dtsi"

diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
index f589bede2b11..3020c42ea8d7 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
@@ -2,6 +2,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-smsc9512.dtsi"
#include "bcm283x-rpi-usb-host.dtsi"

diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi b/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi
index e4e6b6abbfc1..f71d7e9e5895 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi
+++ b/arch/arm/boot/dts/bcm2835-rpi-cm1.dtsi
@@ -2,6 +2,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"

/ {
leds {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
index 596bb1ef994e..9b3a2070a629 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
@@ -6,6 +6,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-usb-otg.dtsi"
#include "bcm283x-rpi-wifi-bt.dtsi"

diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
index a65c2bca69ea..f9359ac2bb92 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
@@ -6,6 +6,7 @@
/dts-v1/;
#include "bcm2835.dtsi"
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"
#include "bcm283x-rpi-usb-otg.dtsi"

/ {
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
index 1c90e5a44283..15cb331febbb 100644
--- a/arch/arm/boot/dts/bcm2835.dtsi
+++ b/arch/arm/boot/dts/bcm2835.dtsi
@@ -1,7 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "bcm283x.dtsi"
#include "bcm2835-common.dtsi"
-#include "bcm2835-rpi-common.dtsi"

/ {
compatible = "brcm,bcm2835";
diff --git a/arch/arm/boot/dts/bcm2836-rpi.dtsi b/arch/arm/boot/dts/bcm2836-rpi.dtsi
index c4c858b984c6..48b03b55ff56 100644
--- a/arch/arm/boot/dts/bcm2836-rpi.dtsi
+++ b/arch/arm/boot/dts/bcm2836-rpi.dtsi
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "bcm2835-rpi.dtsi"
+#include "bcm2835-rpi-common.dtsi"

&vchiq {
compatible = "brcm,bcm2836-vchiq", "brcm,bcm2835-vchiq";
diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
index 534dacfc4dd5..db56a3443a4a 100644
--- a/arch/arm/boot/dts/bcm2836.dtsi
+++ b/arch/arm/boot/dts/bcm2836.dtsi
@@ -1,7 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "bcm283x.dtsi"
#include "bcm2835-common.dtsi"
-#include "bcm2835-rpi-common.dtsi"

/ {
compatible = "brcm,bcm2836";
diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
index 5dbdebc46259..58b3efe483c3 100644
--- a/arch/arm/boot/dts/bcm2837.dtsi
+++ b/arch/arm/boot/dts/bcm2837.dtsi
@@ -1,6 +1,5 @@
#include "bcm283x.dtsi"
#include "bcm2835-common.dtsi"
-#include "bcm2835-rpi-common.dtsi"

/ {
compatible = "brcm,bcm2837";

--
b4 0.10.1

2022-11-09 18:36:54

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH 1/2] ARM: dts: bcm283x: Remove bcm2835-rpi-common.dtsi from SoC DTSI

On Wed, 26 Oct 2022 15:17:38 +0200, [email protected] wrote:
> According to the commit log of the commit 3ac395a5b3f3 ("ARM: dts:
> bcm283x: Use firmware PM driver for V3D"), the initial intent behind the
> bcm2835-rpi-common DTSI was to share data between the RaspberryPies
> based on the BCM2835, 36 and 37.
>
> However, it was included by these SoCs' main DTSI. This is creating an
> improper layering.
>
> On top of that, bcm2835.dtsi is being included by bcm2711.dtsi, which
> means that, even though the bcm2835-rpi-common DTSI wasn't actually
> meant to contain data for the BCM2711, it actually leaks into the
> BCM2711 DTSI.
>
> In order to remove both issues, let's remove the include of
> bcm2835-rpi-common.dtsi from bcm283{5-7}.dtsi and put them into the
> bcm283{6,7}-rpi.dtsi.
>
> BCM2835 has to be handled with special care due to the fact that
> bcm2835.dtsi is being included by bcm2711.dtsi. Thus, we chose to
> include bcm2835-rpi-common.dtsi directly into the board DTS. This will
> be more error-prone, but given that it's a fairly old SoC by now, the
> chance that we will get more BCM2835 boards is fairly low.
>
> BCM2711 isn't modified since the content of bcm2835-rpi-common.dtsi was
> only a power-domain for the v3d that was overridden anyway.
>
> Signed-off-by: Maxime Ripard <[email protected]>
> ---

Applied to https://github.com/Broadcom/stblinux/commits/devicetree/next, thanks!
--
Florian

2022-11-10 18:40:13

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH 0/2] ARM: dts: bcm283x: Switch to firmware clocks for Pi0-3

On 10/26/22 06:17, [email protected] wrote:
> Hi,
>
> Over the years, the differences between the Pi0-3 and the Pi4 created a bunch
> of issues in the KMS driver that trace back to the policy differences between
> the clk-bcm2835 and clk-raspberrypi drivers.
>
> Instead of piling hacks over hacks to work around those differences, let's just
> follow what downstream is doing and use the clk-raspberrypi for all the KMS
> related devices.
>
> Let me know what you think,

Maxime, please fix your git configuration such that the author of the
patches is:

Maxime Ripard <[email protected]>

and not:

[email protected]

which git am then translates into [email protected] <[email protected]>

causing the email vs. author checks to fail on my end (and then in
linux-next).

Thanks!
--
Florian