[PATCH 6/6] ARM: dts: stm32: Add DHCOR based DRC Compact board

Patrice CHOTARD patrice.chotard at foss.st.com
Wed Jun 15 08:54:45 CEST 2022


HI Marek

On 6/13/22 11:55, Marek Vasut wrote:
> Add DT for DH DRC Compact unit, which is a universal controller device.
> The system has two ethernet ports, one CAN, RS485 and RS232, USB, uSD
> card slot, eMMC and SDIO Wi-Fi.
> 
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Patrice Chotard <patrice.chotard at foss.st.com>
> Cc: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
>  arch/arm/dts/Makefile                         |   3 +-
>  .../arm/dts/stm32mp153c-dhcor-drc-compact.dts |  30 ++
>  .../stm32mp15xx-dhcor-drc-compact-u-boot.dtsi | 120 +++++++
>  .../arm/dts/stm32mp15xx-dhcor-drc-compact.dts |  16 +
>  .../dts/stm32mp15xx-dhcor-drc-compact.dtsi    | 326 ++++++++++++++++++
>  .../dh_stm32mp1/u-boot-dhcor.its              |  15 +
>  configs/stm32mp15_dhcor_basic_defconfig       |   1 +
>  7 files changed, 510 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/dts/stm32mp153c-dhcor-drc-compact.dts
>  create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-drc-compact-u-boot.dtsi
>  create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dts
>  create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dtsi
> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 0a2713c06a3..8a314210da6 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -1172,7 +1172,8 @@ dtb-$(CONFIG_STM32MP15x) += \
>  	stm32mp15xx-dhcom-drc02.dtb \
>  	stm32mp15xx-dhcom-pdk2.dtb \
>  	stm32mp15xx-dhcom-picoitx.dtb \
> -	stm32mp15xx-dhcor-avenger96.dtb
> +	stm32mp15xx-dhcor-avenger96.dtb \
> +	stm32mp15xx-dhcor-drc-compact.dtb
>  
>  dtb-$(CONFIG_SOC_K3_AM6) += \
>  	k3-am654-base-board.dtb \
> diff --git a/arch/arm/dts/stm32mp153c-dhcor-drc-compact.dts b/arch/arm/dts/stm32mp153c-dhcor-drc-compact.dts
> new file mode 100644
> index 00000000000..c8b9818499e
> --- /dev/null
> +++ b/arch/arm/dts/stm32mp153c-dhcor-drc-compact.dts
> @@ -0,0 +1,30 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
> +/*
> + * Copyright (C) 2022 Marek Vasut <marex at denx.de>
> + *
> + * DHCOR STM32MP1 variant:
> + * DHCR-STM32MP153C-C065-R051-V33-SPI-I-01LG
> + * DHCOR PCB number: 586-100 or newer
> + * DRC Compact PCB number: 627-100 or newer
> + */
> +
> +/dts-v1/;
> +
> +#include "stm32mp153.dtsi"
> +#include "stm32mp15xc.dtsi"
> +#include "stm32mp15xx-dhcor-som.dtsi"
> +#include "stm32mp15xx-dhcor-drc-compact.dtsi"
> +
> +/ {
> +	model = "DH electronics STM32MP153C DHCOR DRC Compact";
> +	compatible = "dh,stm32mp153c-dhcor-drc-compact",
> +		     "dh,stm32mp153c-dhcor-som",
> +		     "st,stm32mp153";
> +};
> +
> +&m_can1 {
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&m_can1_pins_c>;
> +	pinctrl-1 = <&m_can1_sleep_pins_c>;
> +	status = "okay";
> +};
> diff --git a/arch/arm/dts/stm32mp15xx-dhcor-drc-compact-u-boot.dtsi b/arch/arm/dts/stm32mp15xx-dhcor-drc-compact-u-boot.dtsi
> new file mode 100644
> index 00000000000..407fed56167
> --- /dev/null
> +++ b/arch/arm/dts/stm32mp15xx-dhcor-drc-compact-u-boot.dtsi
> @@ -0,0 +1,120 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
> +/*
> + * Copyright (C) 2022 Marek Vasut <marex at denx.de>
> + */
> +
> +#include "stm32mp15xx-dhcor-u-boot.dtsi"
> +
> +/delete-node/ &ksz8851;
> +
> +/ {
> +	aliases {
> +		mmc0 = &sdmmc1;
> +		mmc1 = &sdmmc2;
> +		usb0 = &usbotg_hs;
> +		ethernet1 = &ks8851;
> +	};
> +
> +	config {
> +		dh,board-coding-gpios = <&gpioh 9 0>, <&gpioh 8 0>, <&gpioh 3 0>;
> +	};
> +
> +	/* This is actually on FMC2, but we do not have bus driver for that */
> +	ks8851: ks8851mll at 64000000 {
> +		compatible = "micrel,ks8851-mll";
> +		reg = <0x64000000 0x20000>;
> +	};
> +};
> +
> +&ethernet0 {
> +	phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
> +
> +	mdio0 {
> +		ethernet-phy at 7 {
> +			reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
> +			reset-assert-us = <11000>;
> +			reset-deassert-us = <1000>;
> +		};
> +	};
> +};
> +
> +&pinctrl {
> +	/* These should bound to FMC2 bus driver, but we do not have one */
> +	pinctrl-0 = <&fmc_pins_b>;
> +	pinctrl-1 = <&fmc_sleep_pins_b>;
> +	pinctrl-names = "default", "sleep";
> +};
> +
> +&sdmmc1 {
> +	u-boot,dm-spl;
> +	st,use-ckin;
> +	st,cmd-gpios = <&gpiod 2 0>;
> +	st,ck-gpios = <&gpioc 12 0>;
> +	st,ckin-gpios = <&gpioe 4 0>;
> +};
> +
> +&sdmmc1_b4_pins_a {
> +	u-boot,dm-spl;
> +	pins1 {
> +		u-boot,dm-spl;
> +	};
> +	pins2 {
> +		u-boot,dm-spl;
> +	};
> +};
> +
> +&sdmmc1_dir_pins_b {
> +	u-boot,dm-spl;
> +	pins1 {
> +		u-boot,dm-spl;
> +	};
> +	pins2 {
> +		u-boot,dm-spl;
> +	};
> +};
> +
> +&sdmmc2 {
> +	u-boot,dm-spl;
> +};
> +
> +&sdmmc2_b4_pins_a {
> +	u-boot,dm-spl;
> +	pins1 {
> +		u-boot,dm-spl;
> +	};
> +	pins2 {
> +		u-boot,dm-spl;
> +	};
> +};
> +
> +&sdmmc2_d47_pins_c {
> +	u-boot,dm-spl;
> +	pins {
> +		u-boot,dm-spl;
> +	};
> +};
> +
> +&sdmmc3 {	/* SDIO Wi-Fi */
> +	status = "disabled";
> +};
> +
> +&uart4 {
> +	u-boot,dm-pre-reloc;
> +};
> +
> +&uart4_pins_d {
> +	u-boot,dm-pre-reloc;
> +	pins1 {
> +		u-boot,dm-pre-reloc;
> +	};
> +	pins2 {
> +		u-boot,dm-pre-reloc;
> +		/delete-property/ bias-disable;
> +		bias-pull-up;
> +	};
> +};
> +
> +&usbotg_hs {
> +	u-boot,force-b-session-valid;
> +	hnp-srp-disable;
> +};
> diff --git a/arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dts b/arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dts
> new file mode 100644
> index 00000000000..77dd944ff53
> --- /dev/null
> +++ b/arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dts
> @@ -0,0 +1,16 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
> +/*
> + * Copyright (C) 2022 Marek Vasut <marex at denx.de>
> + */
> +
> +/dts-v1/;
> +
> +#include "stm32mp151.dtsi"
> +#include "stm32mp15xc.dtsi"
> +#include "stm32mp15xx-dhcor-som.dtsi"
> +#include "stm32mp15xx-dhcor-drc-compact.dtsi"
> +
> +/ {
> +	model = "DH electronics STM32MP15xx DHCOR DRC Compact";
> +	compatible = "dh,stm32mp15xx-dhcor-drc-compact", "st,stm32mp1xx";
> +};
> diff --git a/arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dtsi b/arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dtsi
> new file mode 100644
> index 00000000000..bedccf0f00a
> --- /dev/null
> +++ b/arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dtsi
> @@ -0,0 +1,326 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
> +/*
> + * Copyright (C) 2022 Marek Vasut <marex at denx.de>
> + */
> +
> +/ {
> +	aliases {
> +		ethernet0 = &ethernet0;
> +		ethernet1 = &ksz8851;
> +		mmc0 = &sdmmc1;
> +		rtc0 = &hwrtc;
> +		rtc1 = &rtc;
> +		serial0 = &uart4;
> +		serial1 = &uart8;
> +		serial2 = &usart3;
> +		serial3 = &uart5;
> +		spi0 = &qspi;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +	};
> +
> +	led {
> +		compatible = "gpio-leds";
> +		led1 {
> +			label = "yellow:user0";
> +			gpios = <&gpioz 6 GPIO_ACTIVE_LOW>;
> +			default-state = "off";
> +		};
> +
> +		led2 {
> +			label = "red:user1";
> +			gpios = <&gpioz 3 GPIO_ACTIVE_LOW>;
> +			default-state = "off";
> +		};
> +	};
> +
> +	ethernet_vio: vioregulator {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vio";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		gpio = <&gpioh 2 GPIO_ACTIVE_LOW>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +		vin-supply = <&vdd>;
> +	};
> +};
> +
> +&adc {	/* X11 ADC inputs */
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&adc12_ain_pins_b>;
> +	vdd-supply = <&vdd>;
> +	vdda-supply = <&vdda>;
> +	vref-supply = <&vdda>;
> +	status = "okay";
> +
> +	adc1: adc at 0 {
> +		st,adc-channels = <0 1 6>;
> +		st,min-sample-time-nsecs = <5000>;
> +		status = "okay";
> +	};
> +
> +	adc2: adc at 100 {
> +		st,adc-channels = <0 1 2>;
> +		st,min-sample-time-nsecs = <5000>;
> +		status = "okay";
> +	};
> +};
> +
> +&ethernet0 {
> +	status = "okay";
> +	pinctrl-0 = <&ethernet0_rgmii_pins_c>;
> +	pinctrl-1 = <&ethernet0_rgmii_sleep_pins_c>;
> +	pinctrl-names = "default", "sleep";
> +	phy-mode = "rgmii";
> +	max-speed = <1000>;
> +	phy-handle = <&phy0>;
> +
> +	mdio0 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "snps,dwmac-mdio";
> +		reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
> +		reset-delay-us = <1000>;
> +		reset-post-delay-us = <1000>;
> +
> +		phy0: ethernet-phy at 7 {
> +			reg = <7>;
> +
> +			rxc-skew-ps = <1500>;
> +			rxdv-skew-ps = <540>;
> +			rxd0-skew-ps = <420>;
> +			rxd1-skew-ps = <420>;
> +			rxd2-skew-ps = <420>;
> +			rxd3-skew-ps = <420>;
> +
> +			txc-skew-ps = <1440>;
> +			txen-skew-ps = <540>;
> +			txd0-skew-ps = <420>;
> +			txd1-skew-ps = <420>;
> +			txd2-skew-ps = <420>;
> +			txd3-skew-ps = <420>;
> +		};
> +	};
> +};
> +
> +&fmc {
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&fmc_pins_b>;
> +	pinctrl-1 = <&fmc_sleep_pins_b>;
> +	status = "okay";
> +
> +	ksz8851: ethernet at 1,0 {
> +		compatible = "micrel,ks8851-mll";
> +		reg = <1 0x0 0x2>, <1 0x2 0x20000>;
> +		interrupt-parent = <&gpioc>;
> +		interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
> +		bank-width = <2>;
> +
> +		/* Timing values are in nS */
> +		st,fmc2-ebi-cs-mux-enable;
> +		st,fmc2-ebi-cs-transaction-type = <4>;
> +		st,fmc2-ebi-cs-buswidth = <16>;
> +		st,fmc2-ebi-cs-address-setup-ns = <5>;
> +		st,fmc2-ebi-cs-address-hold-ns = <5>;
> +		st,fmc2-ebi-cs-bus-turnaround-ns = <5>;
> +		st,fmc2-ebi-cs-data-setup-ns = <45>;
> +		st,fmc2-ebi-cs-data-hold-ns = <1>;
> +		st,fmc2-ebi-cs-write-address-setup-ns = <5>;
> +		st,fmc2-ebi-cs-write-address-hold-ns = <5>;
> +		st,fmc2-ebi-cs-write-bus-turnaround-ns = <5>;
> +		st,fmc2-ebi-cs-write-data-setup-ns = <45>;
> +		st,fmc2-ebi-cs-write-data-hold-ns = <1>;
> +	};
> +};
> +
> +&gpioa {
> +	gpio-line-names = "", "", "", "",
> +			  "DRCC-VAR2", "", "", "",
> +			  "", "", "", "",
> +			  "", "", "", "";
> +};
> +
> +&gpioe {
> +	gpio-line-names = "", "", "", "",
> +			  "", "DRCC-GPIO0", "", "",
> +			  "", "", "", "",
> +			  "", "", "", "";
> +};
> +
> +&gpiog {
> +	gpio-line-names = "", "", "", "",
> +			  "", "", "", "",
> +			  "", "", "", "",
> +			  "DRCC-GPIO5", "", "", "";
> +};
> +
> +&gpioh {
> +	gpio-line-names = "", "", "", "DRCC-HW2",
> +			  "DRCC-GPIO4", "", "", "",
> +			  "DRCC-HW1", "DRCC-HW0", "", "DRCC-VAR1",
> +			  "DRCC-VAR0", "", "", "DRCC-GPIO6";
> +};
> +
> +&gpioi {
> +	gpio-line-names = "", "", "", "",
> +			  "", "", "", "DRCC-GPIO2",
> +			  "", "DRCC-GPIO1", "", "",
> +			  "", "", "", "";
> +};
> +
> +&i2c1 {	/* X11 I2C1 */
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c1_pins_b>;
> +	i2c-scl-rising-time-ns = <185>;
> +	i2c-scl-falling-time-ns = <20>;
> +	status = "okay";
> +	/delete-property/dmas;
> +	/delete-property/dma-names;
> +};
> +
> +&i2c4 {
> +	hwrtc: rtc at 32 {
> +		compatible = "microcrystal,rv8803";
> +		reg = <0x32>;
> +	};
> +
> +	eeprom at 50 {
> +		compatible = "atmel,24c04";
> +		reg = <0x50>;
> +		pagesize = <16>;
> +	};
> +};
> +
> +&sdmmc1 {	/* MicroSD */
> +	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 = <&gpioi 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
> +	disable-wp;
> +	st,neg-edge;
> +	bus-width = <4>;
> +	vmmc-supply = <&vdd>;
> +	vqmmc-supply = <&vdd>;
> +	status = "okay";
> +};
> +
> +&sdmmc2 {	/* eMMC */
> +	pinctrl-names = "default", "opendrain", "sleep";
> +	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>;
> +	pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>;
> +	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>;
> +	bus-width = <8>;
> +	no-sd;
> +	no-sdio;
> +	non-removable;
> +	st,neg-edge;
> +	vmmc-supply = <&v3v3>;
> +	vqmmc-supply = <&vdd>;
> +	status = "okay";
> +};
> +
> +&sdmmc3 {	/* SDIO Wi-Fi */
> +	pinctrl-names = "default", "opendrain", "sleep";
> +	pinctrl-0 = <&sdmmc3_b4_pins_a>;
> +	pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
> +	pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
> +	broken-cd;
> +	bus-width = <4>;
> +	mmc-ddr-3_3v;
> +	st,neg-edge;
> +	vmmc-supply = <&v3v3>;
> +	vqmmc-supply = <&v3v3>;
> +	status = "okay";
> +};
> +
> +&spi2 {	/* X11 SPI */
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&spi2_pins_b>;
> +	cs-gpios = <&gpioi 0 0>;
> +	status = "disabled";
> +	/delete-property/dmas;
> +	/delete-property/dma-names;
> +};
> +
> +&uart4 {
> +	label = "UART0";
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart4_pins_d>;
> +	/delete-property/dmas;
> +	/delete-property/dma-names;
> +	status = "okay";
> +};
> +
> +&uart5 {	/* X11 UART */
> +	label = "X11-UART5";
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart5_pins_a>;
> +	/delete-property/dmas;
> +	/delete-property/dma-names;
> +	status = "okay";
> +};
> +
> +&uart8 {
> +	label = "RS485-1";
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart8_pins_a &uart8_rtscts_pins_a>;
> +	uart-has-rtscts;
> +	/delete-property/dmas;
> +	/delete-property/dma-names;
> +	status = "okay";
> +};
> +
> +&usart3 {	/* RS485 or RS232 */
> +	label = "RS485-2";
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&usart3_pins_e>;
> +	pinctrl-1 = <&usart3_sleep_pins_e>;
> +	uart-has-rtscts;
> +	/delete-property/dmas;
> +	/delete-property/dma-names;
> +	status = "okay";
> +};
> +
> +&usbh_ehci {
> +	phys = <&usbphyc_port0>;
> +	status = "okay";
> +};
> +
> +&usbh_ohci {
> +	phys = <&usbphyc_port0>;
> +	status = "okay";
> +};
> +
> +&usbotg_hs {
> +	dr_mode = "otg";
> +	pinctrl-0 = <&usbotg_hs_pins_a>;
> +	pinctrl-names = "default";
> +	phy-names = "usb2-phy";
> +	phys = <&usbphyc_port1 0>;
> +	vbus-supply = <&vbus_otg>;
> +	status = "okay";
> +};
> +
> +&usbphyc {
> +	status = "okay";
> +};
> +
> +&usbphyc_port0 {
> +	phy-supply = <&vdd_usb>;
> +	vdda1v1-supply = <&reg11>;
> +	vdda1v8-supply = <&reg18>;
> +	connector {
> +		compatible = "usb-a-connector";
> +		vbus-supply = <&vbus_sw>;
> +	};
> +};
> +
> +&usbphyc_port1 {
> +	phy-supply = <&vdd_usb>;
> +	vdda1v1-supply = <&reg11>;
> +	vdda1v8-supply = <&reg18>;
> +};
> diff --git a/board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its b/board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its
> index 0ea10a14972..de7dcb317f3 100644
> --- a/board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its
> +++ b/board/dhelectronics/dh_stm32mp1/u-boot-dhcor.its
> @@ -23,6 +23,14 @@
>  			arch = "arm";
>  			compression = "none";
>  		};
> +
> +		fdt-2 {
> +			description = ".dtb";
> +			data = /incbin/("arch/arm/dts/stm32mp15xx-dhcor-drc-compact.dtb");
> +			type = "flat_dt";
> +			arch = "arm";
> +			compression = "none";
> +		};
>  	};
>  
>  	configurations {
> @@ -35,6 +43,13 @@
>  			fdt = "fdt-1";
>  		};
>  
> +		config-2 {
> +			/* DT+SoM+board model */
> +			description = "dh,stm32mp15xx-dhcor-drc-compact_somrev0_boardrev0";
> +			firmware = "uboot";
> +			fdt = "fdt-2";
> +		};
> +
>  		/* Add 586-200..586-400 with fdt-2..fdt-4 here */
>  	};
>  };
> diff --git a/configs/stm32mp15_dhcor_basic_defconfig b/configs/stm32mp15_dhcor_basic_defconfig
> index 0c4bca15402..32aa8b5dfaf 100644
> --- a/configs/stm32mp15_dhcor_basic_defconfig
> +++ b/configs/stm32mp15_dhcor_basic_defconfig
> @@ -109,6 +109,7 @@ CONFIG_PHY_MICREL=y
>  CONFIG_PHY_MICREL_KSZ90X1=y
>  CONFIG_DM_ETH=y
>  CONFIG_DWC_ETH_QOS=y
> +CONFIG_KS8851_MLL=y
>  CONFIG_PHY=y
>  CONFIG_SPL_PHY=y
>  CONFIG_PHY_STM32_USBPHYC=y
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>

Thanks
Patrice


More information about the U-Boot mailing list