mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
Until commit919d6924ae("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:919d6924ae("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>
111 lines
2.0 KiB
Plaintext
111 lines
2.0 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0
|
|
#include "bcm2835-rpi.dtsi"
|
|
|
|
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
|
|
|
/ {
|
|
/* Will be filled by the bootloader */
|
|
memory@0 {
|
|
device_type = "memory";
|
|
reg = <0 0 0>;
|
|
};
|
|
|
|
aliases {
|
|
emmc2bus = &emmc2bus;
|
|
ethernet0 = &genet;
|
|
pcie0 = &pcie0;
|
|
blconfig = &blconfig;
|
|
};
|
|
|
|
i2c0mux: i2c-mux0 {
|
|
compatible = "i2c-mux-pinctrl";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
i2c-parent = <&i2c0>;
|
|
|
|
pinctrl-names = "i2c0", "i2c0-vc";
|
|
pinctrl-0 = <&i2c0_gpio0>;
|
|
pinctrl-1 = <&i2c0_gpio44>;
|
|
|
|
i2c0_0: i2c@0 {
|
|
reg = <0>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
};
|
|
|
|
i2c0_1: i2c@1 {
|
|
reg = <1>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&firmware {
|
|
expgpio: gpio {
|
|
compatible = "raspberrypi,firmware-gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
status = "okay";
|
|
};
|
|
|
|
reset: reset {
|
|
compatible = "raspberrypi,firmware-reset";
|
|
#reset-cells = <1>;
|
|
};
|
|
};
|
|
|
|
&hdmi0 {
|
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
|
wifi-2.4ghz-coexistence;
|
|
};
|
|
|
|
&hdmi1 {
|
|
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
|
clock-names = "hdmi", "bvb", "audio", "cec";
|
|
wifi-2.4ghz-coexistence;
|
|
};
|
|
|
|
&hvs {
|
|
clocks = <&firmware_clocks 4>;
|
|
};
|
|
|
|
&i2c0 {
|
|
/delete-property/ pinctrl-names;
|
|
/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
|
|
* into memory for the OS to consume. It'll also update this node with
|
|
* its placement information.
|
|
*/
|
|
blconfig: nvram@0 {
|
|
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
reg = <0x0 0x0 0x0>;
|
|
no-map;
|
|
status = "disabled";
|
|
};
|
|
};
|
|
|
|
&v3d {
|
|
clocks = <&firmware_clocks 5>;
|
|
};
|
|
|
|
&vchiq {
|
|
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
|
};
|