Commit 89931cb4 authored by Alexandre Torgue's avatar Alexandre Torgue Committed by Arnd Bergmann

ARM: dts: stm32: move SCMI related nodes in a dedicated file for stm32mp15

Adding a "secure" version of STM32 boards (DK1/DK2/ED1/EV1), SCMI (clock/
reset) protocol and OP-TEE node have been added in SoC dtsi file
(stm32mp151.dtsi). They have been added with a status disabled in order to
keep our legacy unchanged. It is actually not enough to keep our legacy
unchanged.

First, just a reminder about our use case: TF-A (BL2) loads and starts
OP-TEE, then loads and runs U-Boot. U-Boot code checks if an OP-TEE is
running, if yes it searches in Kernel device tree if an OP-TEE node is
present:

-If the OP-TEE node is not present then U-Boot copies OP-TEE node and its
reserved memory region from U-Boot device tree to the kernel device tree.

-If the OP-TEE node is present then it does nothing (this OP-TEE node will
be used by Linux). So U-Boot lets the kernel device tree unchanged thinking
it is correct for an OP-TEE usage. It is the case for our legacy boards,
the OP-TEE node is present (although disabled) but the reserved memory
region is not declared. As no memory region has been reserved for OP-TEE,
the end of DDR is seen by the kernel as free and then used for CMA. But as
OP-TEE is running, this end of DDR is already used by OP-TEE. So as soon as
kernel tries to access to the CMA region OP-TEE raises an error.

To fix it, all OP-TEE node and SCMI is moved in a dedicated file.

Fixes: 40b4157d ("ARM: dts: stm32: enable optee firmware and SCMI support on STM32MP15")
Signed-off-by: default avatarAlexandre Torgue <alexandre.torgue@foss.st.com>
Link: https://lore.kernel.org/r/20220613071920.5463-1-alexandre.torgue@foss.st.com'
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 002ec157
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2022 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
*/
/ {
firmware {
optee: optee {
compatible = "linaro,optee-tz";
method = "smc";
};
scmi: scmi {
compatible = "linaro,scmi-optee";
#address-cells = <1>;
#size-cells = <0>;
linaro,optee-channel-id = <0>;
shmem = <&scmi_shm>;
scmi_clk: protocol@14 {
reg = <0x14>;
#clock-cells = <1>;
};
scmi_reset: protocol@16 {
reg = <0x16>;
#reset-cells = <1>;
};
};
};
soc {
scmi_sram: sram@2ffff000 {
compatible = "mmio-sram";
reg = <0x2ffff000 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x2ffff000 0x1000>;
scmi_shm: scmi-sram@0 {
compatible = "arm,scmi-shmem";
reg = <0 0x80>;
};
};
};
};
...@@ -115,33 +115,6 @@ booster: regulator-booster { ...@@ -115,33 +115,6 @@ booster: regulator-booster {
status = "disabled"; status = "disabled";
}; };
firmware {
optee: optee {
compatible = "linaro,optee-tz";
method = "smc";
status = "disabled";
};
scmi: scmi {
compatible = "linaro,scmi-optee";
#address-cells = <1>;
#size-cells = <0>;
linaro,optee-channel-id = <0>;
shmem = <&scmi_shm>;
status = "disabled";
scmi_clk: protocol@14 {
reg = <0x14>;
#clock-cells = <1>;
};
scmi_reset: protocol@16 {
reg = <0x16>;
#reset-cells = <1>;
};
};
};
soc { soc {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
...@@ -149,20 +122,6 @@ soc { ...@@ -149,20 +122,6 @@ soc {
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
ranges; ranges;
scmi_sram: sram@2ffff000 {
compatible = "mmio-sram";
reg = <0x2ffff000 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x2ffff000 0x1000>;
scmi_shm: scmi-sram@0 {
compatible = "arm,scmi-shmem";
reg = <0 0x80>;
status = "disabled";
};
};
timers2: timer@40000000 { timers2: timer@40000000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157a-dk1.dts" #include "stm32mp157a-dk1.dts"
#include "stm32mp15-scmi.dtsi"
/ { / {
model = "STMicroelectronics STM32MP157A-DK1 SCMI Discovery Board"; model = "STMicroelectronics STM32MP157A-DK1 SCMI Discovery Board";
...@@ -54,10 +55,6 @@ &mlahb { ...@@ -54,10 +55,6 @@ &mlahb {
resets = <&scmi_reset RST_SCMI_MCU>; resets = <&scmi_reset RST_SCMI_MCU>;
}; };
&optee {
status = "okay";
};
&rcc { &rcc {
compatible = "st,stm32mp1-rcc-secure", "syscon"; compatible = "st,stm32mp1-rcc-secure", "syscon";
clock-names = "hse", "hsi", "csi", "lse", "lsi"; clock-names = "hse", "hsi", "csi", "lse", "lsi";
...@@ -76,11 +73,3 @@ &rng1 { ...@@ -76,11 +73,3 @@ &rng1 {
&rtc { &rtc {
clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
}; };
&scmi {
status = "okay";
};
&scmi_shm {
status = "okay";
};
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157c-dk2.dts" #include "stm32mp157c-dk2.dts"
#include "stm32mp15-scmi.dtsi"
/ { / {
model = "STMicroelectronics STM32MP157C-DK2 SCMI Discovery Board"; model = "STMicroelectronics STM32MP157C-DK2 SCMI Discovery Board";
...@@ -63,10 +64,6 @@ &mlahb { ...@@ -63,10 +64,6 @@ &mlahb {
resets = <&scmi_reset RST_SCMI_MCU>; resets = <&scmi_reset RST_SCMI_MCU>;
}; };
&optee {
status = "okay";
};
&rcc { &rcc {
compatible = "st,stm32mp1-rcc-secure", "syscon"; compatible = "st,stm32mp1-rcc-secure", "syscon";
clock-names = "hse", "hsi", "csi", "lse", "lsi"; clock-names = "hse", "hsi", "csi", "lse", "lsi";
...@@ -85,11 +82,3 @@ &rng1 { ...@@ -85,11 +82,3 @@ &rng1 {
&rtc { &rtc {
clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
}; };
&scmi {
status = "okay";
};
&scmi_shm {
status = "okay";
};
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157c-ed1.dts" #include "stm32mp157c-ed1.dts"
#include "stm32mp15-scmi.dtsi"
/ { / {
model = "STMicroelectronics STM32MP157C-ED1 SCMI eval daughter"; model = "STMicroelectronics STM32MP157C-ED1 SCMI eval daughter";
...@@ -59,10 +60,6 @@ &mlahb { ...@@ -59,10 +60,6 @@ &mlahb {
resets = <&scmi_reset RST_SCMI_MCU>; resets = <&scmi_reset RST_SCMI_MCU>;
}; };
&optee {
status = "okay";
};
&rcc { &rcc {
compatible = "st,stm32mp1-rcc-secure", "syscon"; compatible = "st,stm32mp1-rcc-secure", "syscon";
clock-names = "hse", "hsi", "csi", "lse", "lsi"; clock-names = "hse", "hsi", "csi", "lse", "lsi";
...@@ -81,11 +78,3 @@ &rng1 { ...@@ -81,11 +78,3 @@ &rng1 {
&rtc { &rtc {
clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
}; };
&scmi {
status = "okay";
};
&scmi_shm {
status = "okay";
};
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157c-ev1.dts" #include "stm32mp157c-ev1.dts"
#include "stm32mp15-scmi.dtsi"
/ { / {
model = "STMicroelectronics STM32MP157C-EV1 SCMI eval daughter on eval mother"; model = "STMicroelectronics STM32MP157C-EV1 SCMI eval daughter on eval mother";
...@@ -68,10 +69,6 @@ &mlahb { ...@@ -68,10 +69,6 @@ &mlahb {
resets = <&scmi_reset RST_SCMI_MCU>; resets = <&scmi_reset RST_SCMI_MCU>;
}; };
&optee {
status = "okay";
};
&rcc { &rcc {
compatible = "st,stm32mp1-rcc-secure", "syscon"; compatible = "st,stm32mp1-rcc-secure", "syscon";
clock-names = "hse", "hsi", "csi", "lse", "lsi"; clock-names = "hse", "hsi", "csi", "lse", "lsi";
...@@ -90,11 +87,3 @@ &rng1 { ...@@ -90,11 +87,3 @@ &rng1 {
&rtc { &rtc {
clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
}; };
&scmi {
status = "okay";
};
&scmi_shm {
status = "okay";
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment