Re: [PATCH 2/5] ARM: dts: stm32: Add Engicam MicroGEA STM32MP1 SoM

From: Alexandre Torgue
Date: Mon Jan 25 2021 - 11:23:23 EST




On 1/25/21 4:05 PM, Alexandre TORGUE wrote:
Hi,

On 12/23/20 8:13 PM, Jagan Teki wrote:
MicroGEA STM32MP1 is an EDIMM SoM based on STM32MP157A from Engicam.

General features:
- STM32MP157AAC
- Up to 1GB DDR3L-800
- 512MB Nand flash
- I2S

MicroGEA STM32MP1 needs to mount on top of Engicam MicroDev carrier
boards for creating complete platform solutions.

Add support for it.

Signed-off-by: Matteo Lisi <matteo.lisi@xxxxxxxxxxx>
Signed-off-by: Francesco Utel <francesco.utel@xxxxxxxxxxx>
Signed-off-by: Mirko Ardinghi <mirko.ardinghi@xxxxxxxxxxx>
Signed-off-by: Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx>
---
  .../dts/stm32mp157a-microgea-stm32mp1.dtsi    | 147 ++++++++++++++++++
  1 file changed, 147 insertions(+)
  create mode 100644 arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1.dtsi

diff --git a/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1.dtsi b/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1.dtsi
new file mode 100644
index 000000000000..97d569107bfe
--- /dev/null
+++ b/arch/arm/boot/dts/stm32mp157a-microgea-stm32mp1.dtsi
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) STMicroelectronics 2019 - All Rights Reserved
+ * Copyright (c) 2020 Engicam srl
+ * Copyright (c) 2020 Amarula Solutons(India)
+ */
+

If STM32MP157AAC is soldered onto this board, you should include SoC dtsi here and no into MicroDev 2.0 board. No ?

+#include "stm32mp15-pinctrl.dtsi"
+#include "stm32mp15xxaa-pinctrl.dtsi"

and this one:
+#include "stm32mp157.dtsi"



Regards
Alex

+/ {
+    compatible = "engicam,microgea-stm32mp1", "st,stm32mp157";
+
+    memory@c0000000 {
+        reg = <0xc0000000 0x10000000>;
+    };
+
+    reserved-memory {
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        mcuram2: mcuram2@10000000 {
+            compatible = "shared-dma-pool";
+            reg = <0x10000000 0x40000>;
+            no-map;
+        };
+
+        vdev0vring0: vdev0vring0@10040000 {
+            compatible = "shared-dma-pool";
+            reg = <0x10040000 0x1000>;
+            no-map;
+        };
+
+        vdev0vring1: vdev0vring1@10041000 {
+            compatible = "shared-dma-pool";
+            reg = <0x10041000 0x1000>;
+            no-map;
+        };
+
+        vdev0buffer: vdev0buffer@10042000 {
+            compatible = "shared-dma-pool";
+            reg = <0x10042000 0x4000>;
+            no-map;
+        };
+
+        mcuram: mcuram@30000000 {
+            compatible = "shared-dma-pool";
+            reg = <0x30000000 0x40000>;
+            no-map;
+        };
+
+        retram: retram@38000000 {
+            compatible = "shared-dma-pool";
+            reg = <0x38000000 0x10000>;
+            no-map;
+        };
+    };
+
+    vin: regulator-vin {
+        compatible = "regulator-fixed";
+        regulator-name = "vin";
+        regulator-min-microvolt = <5000000>;
+        regulator-max-microvolt = <5000000>;
+        regulator-always-on;
+    };
+
+    vddcore: regulator-vddcore {
+        compatible = "regulator-fixed";
+        regulator-name = "vddcore";
+        regulator-min-microvolt = <1200000>;
+        regulator-max-microvolt = <1200000>;
+        regulator-always-on;
+        vin-supply = <&vin>;
+    };
+
+    vdd: regulator-vdd {
+        compatible = "regulator-fixed";
+        regulator-name = "vdd";
+        regulator-min-microvolt = <3300000>;
+        regulator-max-microvolt = <3300000>;
+        regulator-always-on;
+        vin-supply = <&vin>;
+    };
+
+    vddq_ddr: regulator-vddq-ddr {
+        compatible = "regulator-fixed";
+        regulator-name = "vddq_ddr";
+        regulator-min-microvolt = <1350000>;
+        regulator-max-microvolt = <1350000>;
+        regulator-always-on;
+        vin-supply = <&vin>;
+    };
+};
+
+&dts {
+    status = "okay";
+};
+
+&fmc {
+    pinctrl-names = "default", "sleep";
+    pinctrl-0 = <&fmc_pins_a>;
+    pinctrl-1 = <&fmc_sleep_pins_a>;
+    status = "okay";
+
+    nand-controller@4,0 {
+        status = "okay";
+
+        nand@0 {
+            reg = <0>;
+            nand-on-flash-bbt;
+            #address-cells = <1>;
+            #size-cells = <1>;
+        };
+    };
+};
+
+&ipcc {
+    status = "okay";
+};
+
+&iwdg2{
+    timeout-sec = <32>;
+    status = "okay";
+};
+
+&m4_rproc{
+    memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
+            <&vdev0vring1>, <&vdev0buffer>;
+    mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
+    mbox-names = "vq0", "vq1", "shutdown";
+    interrupt-parent = <&exti>;
+    interrupts = <68 1>;
+    status = "okay";
+};
+
+&rng1 {
+    status = "okay";
+};
+
+&rtc{
+    status = "okay";
+};
+
+&vrefbuf {
+    regulator-min-microvolt = <2500000>;
+    regulator-max-microvolt = <2500000>;
+    vdda-supply = <&vdd>;
+    status = "okay";
+};