Re: [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board

From: Marcin SÅoniewski
Date: Thu Jul 23 2020 - 15:43:40 EST


Hello Ahmad,

First of all thank you very much for your feedback, it was very helpful!

År., 22 lip 2020 o 08:40 Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> napisaÅ(a):
>
> On 7/21/20 8:53 PM, Marcin Sloniewski wrote:
> > Add support for Seeed Studio's stm32mp157c odyssey board.
> > Board consists of SoM with stm32mp157c with 4GB eMMC and 512 MB DDR3 RAM
> > and carrier board with USB and ETH interfaces, SD card connector,
> > wifi and BT chip AP6236.
> >
> > In this patch only basic kernel boot is supported and interfacing
> > SD card and on-board eMMC.
> >
> > Signed-off-by: Marcin Sloniewski <marcin.sloniewski@xxxxxxxxx>
> > ---
> >
> > Changes in v3:
> > - fix compilation on tip of stm32-next
> > due to change in names for pinctrl
> > - fix deprecated binding for led node
> > - fix redundant "okay" statuses
> > - add phy part number for eth in comment
>
> You didn't address all my feedback on v2.
I posted today v4 of the patch-set with further changes.
Regarding watchdog from pmic: when using this watchdog
my board resets even though I feed the watchdog. I'm going to
use the internal watchdog for now and keep in mind that this
could be improved in future.

I changed phy address to 7, indeed you were right about it.
But unfortunately even though I set the address correctly phy
is still missing according to dmesg (I checked datasheet and schematics
the address is surely correct now).
That's something I would like to postpone a little bit as well for now.

>
> > Changes in v2:
> > - add new odyssey dts to Makefile
> >
> > arch/arm/boot/dts/Makefile | 3 +-
> > .../arm/boot/dts/stm32mp157c-odyssey-som.dtsi | 276 ++++++++++++++++++
> > arch/arm/boot/dts/stm32mp157c-odyssey.dts | 72 +++++
> > 3 files changed, 350 insertions(+), 1 deletion(-)
> > create mode 100644 arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
> > create mode 100644 arch/arm/boot/dts/stm32mp157c-odyssey.dts
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index e6a1cac0bfc7..a3ea2301c82c 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -1047,7 +1047,8 @@ dtb-$(CONFIG_ARCH_STM32) += \
> > stm32mp157c-dk2.dtb \
> > stm32mp157c-ed1.dtb \
> > stm32mp157c-ev1.dtb \
> > - stm32mp157c-lxa-mc1.dtb
> > + stm32mp157c-lxa-mc1.dtb \
> > + stm32mp157c-odyssey.dtb
> > dtb-$(CONFIG_MACH_SUN4I) += \
> > sun4i-a10-a1000.dtb \
> > sun4i-a10-ba10-tvbox.dtb \
> > diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
> > new file mode 100644
> > index 000000000000..935632caddd6
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
> > @@ -0,0 +1,276 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> > +/*
> > + * Copyright (C) 2020 Marcin Sloniewski <marcin.sloniewski@xxxxxxxxx>.
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "stm32mp157.dtsi"
> > +#include "stm32mp15xc.dtsi"
> > +#include "stm32mp15-pinctrl.dtsi"
> > +#include "stm32mp15xxac-pinctrl.dtsi"
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/leds/common.h>
> > +#include <dt-bindings/mfd/st,stpmic1.h>
> > +
> > +/ {
> > + model = "Seeed Studio Odyssey-STM32MP157C SOM";
> > + compatible = "seeed,stm32mp157c-odyssey-som", "st,stm32mp157";
> > +
> > + memory@c0000000 {
> > + device_type = "memory";
> > + reg = <0xc0000000 0x20000000>;
> > + };
> > +
> > + 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;
> > + };
> > +
> > + gpu_reserved: gpu@d4000000 {
> > + reg = <0xd4000000 0x4000000>;
> > + no-map;
> > + };
> > + };
> > +
> > + led {
> > + compatible = "gpio-leds";
> > + led-blue {
> > + color = <LED_COLOR_ID_BLUE>;
> > + function = LED_FUNCTION_HEARTBEAT;
> > + gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "heartbeat";
> > + };
> > + };
> > +};
> > +
> > +&gpu {
> > + contiguous-area = <&gpu_reserved>;
> > + status = "okay";
> > +};
> > +
> > +&i2c2 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&i2c2_pins_a>;
> > + i2c-scl-rising-time-ns = <185>;
> > + i2c-scl-falling-time-ns = <20>;
> > + status = "okay";
> > + /* spare dmas for other usage */
> > + /delete-property/dmas;
> > + /delete-property/dma-names;
> > +
> > + pmic: stpmic@33 {
> > + compatible = "st,stpmic1";
> > + reg = <0x33>;
> > + interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
> > + interrupt-controller;
> > + #interrupt-cells = <2>;
> > +
> > + regulators {
> > + compatible = "st,stpmic1-regulators";
> > + ldo1-supply = <&v3v3>;
> > + ldo3-supply = <&vdd_ddr>;
> > + ldo6-supply = <&v3v3>;
> > + pwr_sw1-supply = <&bst_out>;
> > + pwr_sw2-supply = <&bst_out>;
> > +
> > + vddcore: buck1 {
> > + regulator-name = "vddcore";
> > + regulator-min-microvolt = <800000>;
> > + regulator-max-microvolt = <1350000>;
> > + regulator-always-on;
> > + regulator-initial-mode = <0>;
> > + regulator-over-current-protection;
> > + };
> > +
> > + vdd_ddr: buck2 {
> > + regulator-name = "vdd_ddr";
> > + regulator-min-microvolt = <1350000>;
> > + regulator-max-microvolt = <1350000>;
> > + regulator-always-on;
> > + regulator-initial-mode = <0>;
> > + regulator-over-current-protection;
> > + };
> > +
> > + vdd: buck3 {
> > + regulator-name = "vdd";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-always-on;
> > + st,mask-reset;
> > + regulator-initial-mode = <0>;
> > + regulator-over-current-protection;
> > + };
> > +
> > + v3v3: buck4 {
> > + regulator-name = "v3v3";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-always-on;
> > + regulator-over-current-protection;
> > + regulator-initial-mode = <0>;
> > + };
> > +
> > + v1v8_audio: ldo1 {
> > + regulator-name = "v1v8_audio";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-always-on;
> > + interrupts = <IT_CURLIM_LDO1 0>;
> > + };
> > +
> > + v3v3_hdmi: ldo2 {
> > + regulator-name = "v3v3_hdmi";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-always-on;
> > + interrupts = <IT_CURLIM_LDO2 0>;
> > + };
> > +
> > + vtt_ddr: ldo3 {
> > + regulator-name = "vtt_ddr";
> > + regulator-min-microvolt = <500000>;
> > + regulator-max-microvolt = <750000>;
> > + regulator-always-on;
> > + regulator-over-current-protection;
> > + };
> > +
> > + vdd_usb: ldo4 {
> > + regulator-name = "vdd_usb";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > + interrupts = <IT_CURLIM_LDO4 0>;
> > + };
> > +
> > + vdda: ldo5 {
> > + regulator-name = "vdda";
> > + regulator-min-microvolt = <2900000>;
> > + regulator-max-microvolt = <2900000>;
> > + interrupts = <IT_CURLIM_LDO5 0>;
> > + regulator-boot-on;
> > + };
> > +
> > + v1v2_hdmi: ldo6 {
> > + regulator-name = "v1v2_hdmi";
> > + regulator-min-microvolt = <1200000>;
> > + regulator-max-microvolt = <1200000>;
> > + regulator-always-on;
> > + interrupts = <IT_CURLIM_LDO6 0>;
> > + };
> > +
> > + vref_ddr: vref_ddr {
> > + regulator-name = "vref_ddr";
> > + regulator-always-on;
> > + regulator-over-current-protection;
> > + };
> > +
> > + bst_out: boost {
> > + regulator-name = "bst_out";
> > + interrupts = <IT_OCP_BOOST 0>;
> > + };
> > +
> > + vbus_otg: pwr_sw1 {
> > + regulator-name = "vbus_otg";
> > + interrupts = <IT_OCP_OTG 0>;
> > + };
> > +
> > + vbus_sw: pwr_sw2 {
> > + regulator-name = "vbus_sw";
> > + interrupts = <IT_OCP_SWOUT 0>;
> > + regulator-active-discharge;
> > + };
> > + };
> > +
> > + onkey {
> > + compatible = "st,stpmic1-onkey";
> > + interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
> > + interrupt-names = "onkey-falling", "onkey-rising";
> > + power-off-time-sec = <10>;
> > + };
> > +
> > + watchdog {
> > + compatible = "st,stpmic1-wdt";
> > + status = "disabled";
> > + };
> > + };
> > +};
> > +
> > +&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";
> > +};
> > +
> > +&sdmmc2 {
> > + pinctrl-names = "default", "opendrain", "sleep";
> > + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
> > + pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_a>;
> > + pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_a>;
> > + non-removable;
> > + no-sd;
> > + no-sdio;
> > + st,neg-edge;
> > + bus-width = <4>;
> > + vmmc-supply = <&v3v3>;
> > + vqmmc-supply = <&v3v3>;
> > + mmc-ddr-3_3v;
> > + status = "okay";
> > +};
> > +
> > diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey.dts b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
> > new file mode 100644
> > index 000000000000..09edf6afa155
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
> > @@ -0,0 +1,72 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> > +/*
> > + * Copyright (C) 2020 Marcin Sloniewski <marcin.sloniewski@xxxxxxxxx>.
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "stm32mp157c-odyssey-som.dtsi"
> > +
> > +/ {
> > + model = "Seeed Studio Odyssey-STM32MP157C Board";
> > + compatible = "seeed,stm32mp157c-odyssey", "st,stm32mp157";
> > +
> > + aliases {
> > + ethernet0 = &ethernet0;
> > + serial0 = &uart4;
> > + };
> > +
> > + chosen {
> > + stdout-path = "serial0:115200n8";
> > + };
> > +};
> > +
> > +&ethernet0 {
> > + status = "okay";
> > + pinctrl-0 = <&ethernet0_rgmii_pins_a>;
> > + pinctrl-1 = <&ethernet0_rgmii_sleep_pins_a>;
> > + pinctrl-names = "default", "sleep";
> > + phy-mode = "rgmii-id";
> > + max-speed = <1000>;
> > + phy-handle = <&phy0>;
> > +
> > + mdio0 {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + compatible = "snps,dwmac-mdio";
> > + phy0: ethernet-phy@0 { /* KSZ9031RN */
> > + reg = <0>;
> > + };
> > + };
> > +};
> > +
> > +&i2c1 {
> > + pinctrl-names = "default", "sleep";
> > + pinctrl-0 = <&i2c1_pins_a>;
> > + pinctrl-1 = <&i2c1_sleep_pins_a>;
> > + i2c-scl-rising-time-ns = <100>;
> > + i2c-scl-falling-time-ns = <7>;
> > + status = "okay";
> > + /delete-property/dmas;
> > + /delete-property/dma-names;
> > +};
> > +
> > +&sdmmc1 {
> > + pinctrl-names = "default", "opendrain", "sleep";
> > + pinctrl-0 = <&sdmmc1_b4_pins_a>;
> > + pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
> > + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
> > + cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
> > + disable-wp;
> > + st,neg-edge;
> > + bus-width = <4>;
> > + vmmc-supply = <&v3v3>;
> > + status = "okay";
> > +};
> > +
> > +&uart4 {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart4_pins_a>;
> > + status = "okay";
> > +};
> > +
> >
>
> --
> Pengutronix e.K. | |
> Steuerwalder Str. 21 | http://www.pengutronix.de/ |
> 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |