]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ARM: dts: broadcom: rpi: Switch to V3D firmware clock
authorStefan Wahren <wahrenst@gmx.net>
Sun, 5 Oct 2025 11:38:16 +0000 (13:38 +0200)
committerFlorian Fainelli <florian.fainelli@broadcom.com>
Mon, 13 Oct 2025 17:31:25 +0000 (10:31 -0700)
Until commit 919d6924ae9b ("clk: bcm: rpi: Turn firmware clock on/off
when preparing/unpreparing") the clk-raspberrypi driver wasn't able
to change the state of the V3D clock. Only the clk-bcm2835 was able
to do this before. After this commit both drivers were able to work
against each other, which could result in a system freeze. One step
to avoid this conflict is to switch all V3D consumer to the firmware
clock.

Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Closes: https://lore.kernel.org/linux-arm-kernel/727aa0c8-2981-4662-adf3-69cac2da956d@samsung.com/
Fixes: 919d6924ae9b ("clk: bcm: rpi: Turn firmware clock on/off when preparing/unpreparing")
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Co-developed-by: Melissa Wen <mwen@igalia.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20251005113816.6721-1-wahrenst@gmx.net
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
arch/arm/boot/dts/broadcom/bcm2835-rpi-common.dtsi

index c78ed064d1667d0d20f00cdd84b0af05d385bac0..1eb6406449d198208b5bbd47b9a4c449747eb07a 100644 (file)
        /delete-property/ pinctrl-0;
 };
 
+&pm {
+       clocks = <&firmware_clocks 5>,
+                <&clocks BCM2835_CLOCK_PERI_IMAGE>,
+                <&clocks BCM2835_CLOCK_H264>,
+                <&clocks BCM2835_CLOCK_ISP>;
+       clock-names = "v3d", "peri_image", "h264", "isp";
+};
+
 &rmem {
        /*
         * RPi4's co-processor will copy the board's bootloader configuration
index 8b3c21d9f333a16ed94d3f84ea55c54adb9756b3..fa9d784c88b64a9da843782067a182dd7b6870a8 100644 (file)
        clock-names = "pixel", "hdmi";
 };
 
+&pm {
+       clocks = <&firmware_clocks 5>,
+                <&clocks BCM2835_CLOCK_PERI_IMAGE>,
+                <&clocks BCM2835_CLOCK_H264>,
+                <&clocks BCM2835_CLOCK_ISP>;
+       clock-names = "v3d", "peri_image", "h264", "isp";
+};
+
 &v3d {
+       clocks = <&firmware_clocks 5>;
        power-domains = <&power RPI_POWER_DOMAIN_V3D>;
 };