From 0700aa5ea52da9f3c946d0327bd49993e2263f07 Mon Sep 17 00:00:00 2001 From: Yann Gautier <yann.gautier@st.com> Date: Fri, 25 Sep 2020 17:25:09 +0200 Subject: [PATCH] fdts: stm32mp1: add nvmem_layout node and OTP definitions A new nvmem_layout node includes nvmem platform-dependent layout information, such as OTP NVMEM cell lists (phandle, name). This list allows easy access to OTP offsets defined in BSEC node, where more OTP definitions with offsets in bytes and length have been added (replace hard-coded values). Each board may redefine this list, especially for board_id info. Change-Id: I910ae671b3bf3320ee6500fecc9ec335ae67bbda Signed-off-by: Nicolas Le Bayon <nicolas.le.bayon@st.com> Signed-off-by: Yann Gautier <yann.gautier@st.com> --- fdts/stm32mp151.dtsi | 48 +++++++++++++++++++++++++++++++++++++++ fdts/stm32mp157c-ed1.dts | 20 ++++++++++++++++ fdts/stm32mp15xx-dkx.dtsi | 20 ++++++++++++++++ 3 files changed, 88 insertions(+) diff --git a/fdts/stm32mp151.dtsi b/fdts/stm32mp151.dtsi index 8f175a649..966dcd54e 100644 --- a/fdts/stm32mp151.dtsi +++ b/fdts/stm32mp151.dtsi @@ -19,9 +19,31 @@ compatible = "arm,cortex-a7"; device_type = "cpu"; reg = <0>; + nvmem-cells = <&part_number_otp>; + nvmem-cell-names = "part_number"; }; }; + nvmem_layout: nvmem_layout@0 { + compatible = "st,stm32-nvmem-layout"; + + nvmem-cells = <&cfg0_otp>, + <&part_number_otp>, + <&monotonic_otp>, + <&nand_otp>, + <&uid_otp>, + <&package_otp>, + <&hw2_otp>; + + nvmem-cell-names = "cfg0_otp", + "part_number_otp", + "monotonic_otp", + "nand_otp", + "uid_otp", + "package_otp", + "hw2_otp"; + }; + psci { compatible = "arm,psci-1.0"; method = "smc"; @@ -424,12 +446,38 @@ reg = <0x5c005000 0x400>; #address-cells = <1>; #size-cells = <1>; + + cfg0_otp: cfg0_otp@0 { + reg = <0x0 0x1>; + }; + part_number_otp: part_number_otp@4 { + reg = <0x4 0x1>; + }; + monotonic_otp: monotonic_otp@10 { + reg = <0x10 0x4>; + }; + nand_otp: nand_otp@24 { + reg = <0x24 0x4>; + }; + uid_otp: uid_otp@34 { + reg = <0x34 0xc>; + }; + package_otp: package_otp@40 { + reg = <0x40 0x4>; + }; + hw2_otp: hw2_otp@48 { + reg = <0x48 0x4>; + }; ts_cal1: calib@5c { reg = <0x5c 0x2>; }; ts_cal2: calib@5e { reg = <0x5e 0x2>; }; + mac_addr: mac_addr@e4 { + reg = <0xe4 0x8>; + st,non-secure-otp; + }; }; etzpc: etzpc@5c007000 { diff --git a/fdts/stm32mp157c-ed1.dts b/fdts/stm32mp157c-ed1.dts index a6b98b7d9..cee54fe2c 100644 --- a/fdts/stm32mp157c-ed1.dts +++ b/fdts/stm32mp157c-ed1.dts @@ -196,6 +196,26 @@ status = "okay"; }; +&nvmem_layout { + nvmem-cells = <&cfg0_otp>, + <&part_number_otp>, + <&monotonic_otp>, + <&nand_otp>, + <&uid_otp>, + <&package_otp>, + <&hw2_otp>, + <&board_id>; + + nvmem-cell-names = "cfg0_otp", + "part_number_otp", + "monotonic_otp", + "nand_otp", + "uid_otp", + "package_otp", + "hw2_otp", + "board_id"; +}; + &pwr_regulators { vdd-supply = <&vdd>; vdd_3v3_usbfs-supply = <&vdd_usb>; diff --git a/fdts/stm32mp15xx-dkx.dtsi b/fdts/stm32mp15xx-dkx.dtsi index 52b914b84..38927a0c2 100644 --- a/fdts/stm32mp15xx-dkx.dtsi +++ b/fdts/stm32mp15xx-dkx.dtsi @@ -186,6 +186,26 @@ secure-status = "okay"; }; +&nvmem_layout { + nvmem-cells = <&cfg0_otp>, + <&part_number_otp>, + <&monotonic_otp>, + <&nand_otp>, + <&uid_otp>, + <&package_otp>, + <&hw2_otp>, + <&board_id>; + + nvmem-cell-names = "cfg0_otp", + "part_number_otp", + "monotonic_otp", + "nand_otp", + "uid_otp", + "package_otp", + "hw2_otp", + "board_id"; +}; + &pwr_regulators { vdd-supply = <&vdd>; vdd_3v3_usbfs-supply = <&vdd_usb>; -- GitLab