meta-dcm/recipes-bsp/trusted-firmware-a/files/stm32mp157c-dcm-tfa.dts

285 lines
6.9 KiB
Plaintext

// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) 2019-2023, STMicroelectronics - All Rights Reserved
* Author: DCM Board Support - TF-A simplified version
*/
/dts-v1/;
#include "stm32mp157.dtsi"
#include "stm32mp15xc.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxac-pinctrl.dtsi"
/ {
model = "STM32MP157C DCM Board";
compatible = "st,stm32mp157c-dcm", "st,stm32mp157";
memory@c0000000 {
device_type = "memory";
reg = <0xc0000000 0x40000000>; /* 1GB */
};
aliases {
mmc0 = &sdmmc1; /* SD-Karte */
mmc1 = &sdmmc2; /* eMMC */
serial0 = &usart2; /* Console */
};
chosen {
stdout-path = "serial0:115200n8";
};
/* Clock configuration - vereinfacht für TF-A */
clocks {
clk_hse: clk-hse {
clock-frequency = <24000000>;
};
clk_lse: clk-lse {
clock-frequency = <32768>;
};
};
/* Override ARM PMU to fix cpu1 reference for BL2 */
arm-pmu {
compatible = "arm,cortex-a7-pmu";
interrupts = <0 200 4>;
interrupt-affinity = <&cpu0>;
interrupt-parent = <&intc>;
};
};
&pinctrl {
/* SDMMC1 sd-card */
sdmmc1_pins_mx: sdmmc1_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
<STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
<STM32_PINMUX('E', 6, AF8 )>, /* SDMMC1_D2 */
<STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
<STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
bias-disable;
drive-push-pull;
slew-rate = <1>;
};
pins2 {
pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
bias-disable;
drive-push-pull;
slew-rate = <3>;
};
};
sdmmc1_opendrain_pins_mx: sdmmc1_opendrain_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
<STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
<STM32_PINMUX('E', 6, AF8 )>, /* SDMMC1_D2 */
<STM32_PINMUX('C', 11, AF12)>; /* SDMMC1_D3 */
bias-disable;
drive-push-pull;
slew-rate = <1>;
};
pins2 {
pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
bias-disable;
drive-push-pull;
slew-rate = <3>;
};
pins3 {
pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
bias-disable;
drive-open-drain;
slew-rate = <1>;
};
};
sdmmc1_cd_pins: sdmmc1_cd_pins-0 {
pins {
u-boot,dm-pre-reloc;
pinmux = <STM32_PINMUX('F', 2, GPIO)>; /* SD_DETECT */
bias-pull-up;
};
};
/* SDMMC2 eMMC */
sdmmc2_pins_mx: sdmmc2_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('B', 14, AF9 )>, /* SDMMC2_D0 */
<STM32_PINMUX('B', 15, AF9 )>, /* SDMMC2_D1 */
<STM32_PINMUX('B', 3, AF9 )>, /* SDMMC2_D2 */
<STM32_PINMUX('B', 4, AF9 )>, /* SDMMC2_D3 */
<STM32_PINMUX('A', 8, AF9 )>, /* SDMMC2_D4 */
<STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */
<STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */
<STM32_PINMUX('D', 3, AF9 )>, /* SDMMC2_D7 */
<STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
bias-pull-up;
drive-push-pull;
slew-rate = <1>;
};
pins2 {
pinmux = <STM32_PINMUX('E', 3, AF9 )>; /* SDMMC2_CK */
bias-pull-up;
drive-push-pull;
slew-rate = <3>;
};
};
sdmmc2_opendrain_pins_mx: sdmmc2_opendrain_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('B', 14, AF9 )>, /* SDMMC2_D0 */
<STM32_PINMUX('B', 15, AF9 )>, /* SDMMC2_D1 */
<STM32_PINMUX('B', 3, AF9 )>, /* SDMMC2_D2 */
<STM32_PINMUX('B', 4, AF9 )>, /* SDMMC2_D3 */
<STM32_PINMUX('A', 8, AF9 )>, /* SDMMC2_D4 */
<STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */
<STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */
<STM32_PINMUX('D', 3, AF9 )>; /* SDMMC2_D7 */
bias-pull-up;
drive-push-pull;
slew-rate = <1>;
};
pins2 {
pinmux = <STM32_PINMUX('E', 3, AF9 )>; /* SDMMC2_CK */
bias-pull-up;
drive-push-pull;
slew-rate = <3>;
};
pins3 {
pinmux = <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
bias-pull-up;
drive-open-drain;
slew-rate = <1>;
};
};
usart2_pins_mx: usart2_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('F', 5, AF7)>; /* USART2_TX */
bias-disable;
drive-push-pull;
slew-rate = <0>;
};
pins2 {
pinmux = <STM32_PINMUX('F', 4, AF7)>; /* USART2_RX */
bias-disable;
};
};
};
&pinctrl_z {
i2c4_pins_z_mx: i2c4_mx-0 {
u-boot,dm-pre-reloc;
pins {
u-boot,dm-pre-reloc;
pinmux = <STM32_PINMUX('Z', 4, AF6)>, /* I2C4_SCL */
<STM32_PINMUX('Z', 5, AF6)>; /* I2C4_SDA */
bias-disable;
drive-open-drain;
slew-rate = <0>;
};
};
};
/* Console UART */
&usart2 {
status = "okay";
};
/* SD-Karte für Boot */
&sdmmc1 {
status = "okay";
st,neg-edge;
bus-width = <4>;
};
/* eMMC für Boot */
&sdmmc2 {
status = "okay";
non-removable;
no-sd;
no-sdio;
st,neg-edge;
bus-width = <8>;
};
/* USB Controllers - fix usbphyc references */
&usbh_ohci {
clocks = <&rcc 111>;
resets = <&rcc 3288>;
status = "disabled";
};
&usbh_ehci {
clocks = <&rcc 111>;
resets = <&rcc 3288>;
status = "disabled";
};
&usbotg_hs {
clocks = <&rcc 166>;
clock-names = "otg";
resets = <&rcc 19656>;
reset-names = "dwc2";
status = "disabled";
};
/* I2C4 für PMIC - minimal für TF-A */
&i2c4 {
status = "okay";
pmic: stpmic@33 {
compatible = "st,stpmic1";
reg = <0x33>;
status = "okay";
regulators {
compatible = "st,stpmic1-regulators";
vddcore: buck1 {
regulator-name = "vddcore";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
};
vdd_ddr: buck2 {
regulator-name = "vdd_ddr";
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
};
v3v3: buck4 {
regulator-name = "v3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};
};
/* RNG für TF-A Entropy */
&rng1 {
status = "okay";
};
/* Crypto für Secure Boot */
&cryp1 {
status = "okay";
};
&hash1 {
status = "okay";
};
/* CPU Voltage Supply */
&cpu0 {
cpu-supply = <&vddcore>;
};
&cpu1 {
cpu-supply = <&vddcore>;
};