linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/3] dt-bindings: vendor-prefixes: add Seeed Studio
@ 2020-07-21 18:53 Marcin Sloniewski
  2020-07-21 18:53 ` [PATCH v3 2/3] dt-bindings: arm: stm32: document Odyssey compatible Marcin Sloniewski
  2020-07-21 18:53 ` [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board Marcin Sloniewski
  0 siblings, 2 replies; 9+ messages in thread
From: Marcin Sloniewski @ 2020-07-21 18:53 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Marcin Sloniewski, Rob Herring, Alexandre Torgue,
	Manivannan Sadhasivam, Ahmad Fatoum, Sam Ravnborg, Linus Walleij,
	Stephan Gerhold, Heiko Stuebner, Lubomir Rintel, Mark Brown,
	allen, devicetree, linux-stm32, linux-kernel

Add the "seeed" vendor prefix for Seeed Technology Co., Ltd
Website: https://www.seeedstudio.com/

Signed-off-by: Marcin Sloniewski <marcin.sloniewski@gmail.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 9aeab66be85f..7dd03b3e9d3c 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -902,6 +902,8 @@ patternProperties:
     description: Schindler
   "^seagate,.*":
     description: Seagate Technology PLC
+  "^seeed,.*":
+    description: Seeed Technology Co., Ltd
   "^seirobotics,.*":
     description: Shenzhen SEI Robotics Co., Ltd
   "^semtech,.*":
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 2/3] dt-bindings: arm: stm32: document Odyssey compatible
  2020-07-21 18:53 [PATCH v3 1/3] dt-bindings: vendor-prefixes: add Seeed Studio Marcin Sloniewski
@ 2020-07-21 18:53 ` Marcin Sloniewski
  2020-07-21 18:53 ` [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board Marcin Sloniewski
  1 sibling, 0 replies; 9+ messages in thread
From: Marcin Sloniewski @ 2020-07-21 18:53 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Marcin Sloniewski, Rob Herring, Alexandre Torgue,
	Manivannan Sadhasivam, Ahmad Fatoum, Sam Ravnborg, Linus Walleij,
	Stephan Gerhold, Heiko Stuebner, Lubomir Rintel, Mark Brown,
	allen, devicetree, linux-stm32, linux-kernel

Document device tree bindings of Seeed SoM and carrier board.

Signed-off-by: Marcin Sloniewski <marcin.sloniewski@gmail.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/arm/stm32/stm32.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/stm32/stm32.yaml b/Documentation/devicetree/bindings/arm/stm32/stm32.yaml
index 790e6dd48e34..22b9aaa75eee 100644
--- a/Documentation/devicetree/bindings/arm/stm32/stm32.yaml
+++ b/Documentation/devicetree/bindings/arm/stm32/stm32.yaml
@@ -39,6 +39,8 @@ properties:
           - enum:
               - arrow,stm32mp157a-avenger96 # Avenger96
               - lxa,stm32mp157c-mc1
+              - seeed,stm32mp157c-odyssey
+              - seeed,stm32mp157c-odyssey-som
               - shiratech,stm32mp157a-iot-box # IoT Box
               - shiratech,stm32mp157a-stinger96 # Stinger96
               - st,stm32mp157c-ed1
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-21 18:53 [PATCH v3 1/3] dt-bindings: vendor-prefixes: add Seeed Studio Marcin Sloniewski
  2020-07-21 18:53 ` [PATCH v3 2/3] dt-bindings: arm: stm32: document Odyssey compatible Marcin Sloniewski
@ 2020-07-21 18:53 ` Marcin Sloniewski
  2020-07-22  6:39   ` Ahmad Fatoum
  2020-07-22 12:09   ` [Linux-stm32] " Christophe Kerello
  1 sibling, 2 replies; 9+ messages in thread
From: Marcin Sloniewski @ 2020-07-21 18:53 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Marcin Sloniewski, Rob Herring, Alexandre Torgue,
	Manivannan Sadhasivam, Ahmad Fatoum, Sam Ravnborg, Linus Walleij,
	Heiko Stuebner, Stephan Gerhold, Lubomir Rintel, Mark Brown,
	allen, devicetree, linux-stm32, linux-kernel

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@gmail.com>
---

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

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@gmail.com>.
+ */
+
+/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@gmail.com>.
+ */
+
+/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";
+};
+
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-21 18:53 ` [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board Marcin Sloniewski
@ 2020-07-22  6:39   ` Ahmad Fatoum
  2020-07-23 19:43     ` Marcin Słoniewski
  2020-07-22 12:09   ` [Linux-stm32] " Christophe Kerello
  1 sibling, 1 reply; 9+ messages in thread
From: Ahmad Fatoum @ 2020-07-22  6:39 UTC (permalink / raw)
  To: Marcin Sloniewski, linux-arm-kernel
  Cc: Rob Herring, Alexandre Torgue, Manivannan Sadhasivam,
	Sam Ravnborg, Linus Walleij, Heiko Stuebner, Stephan Gerhold,
	Lubomir Rintel, Mark Brown, allen, devicetree, linux-stm32,
	linux-kernel

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@gmail.com>
> ---
> 
> 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.

> 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@gmail.com>.
> + */
> +
> +/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@gmail.com>.
> + */
> +
> +/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 |

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Linux-stm32] [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-21 18:53 ` [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board Marcin Sloniewski
  2020-07-22  6:39   ` Ahmad Fatoum
@ 2020-07-22 12:09   ` Christophe Kerello
  2020-07-23 18:47     ` Marcin Słoniewski
  1 sibling, 1 reply; 9+ messages in thread
From: Christophe Kerello @ 2020-07-22 12:09 UTC (permalink / raw)
  To: Marcin Sloniewski, linux-arm-kernel
  Cc: Rob Herring, Stephan Gerhold, Manivannan Sadhasivam,
	Heiko Stuebner, Linus Walleij, linux-kernel, Lubomir Rintel,
	Mark Brown, allen, Sam Ravnborg, linux-stm32, devicetree

Hello Marcin,

On 7/21/20 8:53 PM, Marcin Sloniewski wrote:
> +&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";
> +};

Based on the pins muxed, 8 data lines are configured, but the bus width 
is set to 4. What is the reason of not setting this property to 8?

Regards,
Christophe Kerello.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Linux-stm32] [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-22 12:09   ` [Linux-stm32] " Christophe Kerello
@ 2020-07-23 18:47     ` Marcin Słoniewski
  0 siblings, 0 replies; 9+ messages in thread
From: Marcin Słoniewski @ 2020-07-23 18:47 UTC (permalink / raw)
  To: Christophe Kerello
  Cc: linux-arm-kernel, Rob Herring, Stephan Gerhold,
	Manivannan Sadhasivam, Heiko Stuebner, Linus Walleij,
	linux-kernel, Lubomir Rintel, Mark Brown, allen, Sam Ravnborg,
	linux-stm32, devicetree

Hi Christophe,

> > +     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";
> > +};
>
> Based on the pins muxed, 8 data lines are configured, but the bus width
> is set to 4. What is the reason of not setting this property to 8?

Yes, it was workaround, because sdmmc2 interface was working only
with width set to 4. It turned out there was one wrong pin used in
sdmmc2_d47_pins_a.
It will be fixed in v4.

Regards,
Marcin Sloniewski

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-22  6:39   ` Ahmad Fatoum
@ 2020-07-23 19:43     ` Marcin Słoniewski
  2020-07-24  9:16       ` Ahmad Fatoum
  0 siblings, 1 reply; 9+ messages in thread
From: Marcin Słoniewski @ 2020-07-23 19:43 UTC (permalink / raw)
  To: Ahmad Fatoum
  Cc: linux-arm-kernel, Rob Herring, Alexandre Torgue,
	Manivannan Sadhasivam, Sam Ravnborg, Linus Walleij,
	Heiko Stuebner, Stephan Gerhold, Lubomir Rintel, Mark Brown,
	allen, devicetree, linux-stm32, linux-kernel

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@pengutronix.de> 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@gmail.com>
> > ---
> >
> > 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@gmail.com>.
> > + */
> > +
> > +/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@gmail.com>.
> > + */
> > +
> > +/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 |

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-23 19:43     ` Marcin Słoniewski
@ 2020-07-24  9:16       ` Ahmad Fatoum
  2020-07-24 14:09         ` Marcin Słoniewski
  0 siblings, 1 reply; 9+ messages in thread
From: Ahmad Fatoum @ 2020-07-24  9:16 UTC (permalink / raw)
  To: Marcin Słoniewski
  Cc: linux-arm-kernel, Rob Herring, Alexandre Torgue,
	Manivannan Sadhasivam, Sam Ravnborg, Linus Walleij,
	Heiko Stuebner, Stephan Gerhold, Lubomir Rintel, Mark Brown,
	allen, devicetree, linux-stm32, linux-kernel

Hi,

On 7/23/20 9:43 PM, Marcin Słoniewski wrote:
> 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@pengutronix.de> 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@gmail.com>
>>> ---
>>>
>>> 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.

Who turns on the watchdog? If it's in the bootloader,
you can't rely on CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED feeding it till
userspace takes over because the stpmic1_wdt doesn't populate
WDOG_HW_RUNNING in status.

> 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.

You sent out v4 with a phy address of 7 though.
Did you get it working meanwhile?

> 
>>
>>> 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@gmail.com>.
>>> + */
>>> +
>>> +/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@gmail.com>.
>>> + */
>>> +
>>> +/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 |
> 

-- 
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 |

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board
  2020-07-24  9:16       ` Ahmad Fatoum
@ 2020-07-24 14:09         ` Marcin Słoniewski
  0 siblings, 0 replies; 9+ messages in thread
From: Marcin Słoniewski @ 2020-07-24 14:09 UTC (permalink / raw)
  To: Ahmad Fatoum
  Cc: linux-arm-kernel, Rob Herring, Alexandre Torgue,
	Manivannan Sadhasivam, Sam Ravnborg, Linus Walleij,
	Heiko Stuebner, Stephan Gerhold, Lubomir Rintel, Mark Brown,
	allen, devicetree, linux-stm32, linux-kernel

Hi,

pt., 24 lip 2020 o 11:17 Ahmad Fatoum <a.fatoum@pengutronix.de> napisał(a):
>
> Hi,
>
> On 7/23/20 9:43 PM, Marcin Słoniewski wrote:
> > 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@pengutronix.de> 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@gmail.com>
> >>> ---
> >>>
> >>> 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.
>
> Who turns on the watchdog? If it's in the bootloader,
> you can't rely on CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED feeding it till
> userspace takes over because the stpmic1_wdt doesn't populate
> WDOG_HW_RUNNING in status.
It's not turned on in bootloader (u-boot). I'm able to boot to userspace, but
the watchdog reboots board when using busybox's watchdog demon and when
I'm manually feeding it. Every other stm32mp1 based board isn't using
pmic watchdog,
so I guess it can be replaced by internal watchdog for now?
>
> > 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.
>
> You sent out v4 with a phy address of 7 though.
> Did you get it working meanwhile?
Unfortunately not yet.
>
> >
> >>
> >>> 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@gmail.com>.
> >>> + */
> >>> +
> >>> +/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@gmail.com>.
> >>> + */
> >>> +
> >>> +/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 |
> >
>
> --
> 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 |

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-07-24 14:09 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-21 18:53 [PATCH v3 1/3] dt-bindings: vendor-prefixes: add Seeed Studio Marcin Sloniewski
2020-07-21 18:53 ` [PATCH v3 2/3] dt-bindings: arm: stm32: document Odyssey compatible Marcin Sloniewski
2020-07-21 18:53 ` [PATCH v3 3/3] ARM: dts: stm32: add initial support for stm32mp157-odyssey board Marcin Sloniewski
2020-07-22  6:39   ` Ahmad Fatoum
2020-07-23 19:43     ` Marcin Słoniewski
2020-07-24  9:16       ` Ahmad Fatoum
2020-07-24 14:09         ` Marcin Słoniewski
2020-07-22 12:09   ` [Linux-stm32] " Christophe Kerello
2020-07-23 18:47     ` Marcin Słoniewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).