Message ID | 20200331004851.282583-15-marex@denx.de |
---|---|
State | Superseded |
Headers | show |
Series | ARM: stm32: Fix Avenger96 | expand |
Hi Marek On 3/31/20 2:48 AM, Marek Vasut wrote: > The AV96 is in fact an assembly of DH Electronics DHCOR SoM on top > of an AV96 reference board. Split the DTs to reflect that and make > sure to DHCOR SoM can be reused on other boards easily. > > It is also highly recommended to configure the board for the DHCOM > make stm32mp15_dhcom_basic_defconfig > make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 > as that permits reusing the board code for the DH components, like > accessing and reading out the ethernet MAC from EEPROM. > > Signed-off-by: Marek Vasut <marex at denx.de> > Cc: Patrick Delaunay <patrick.delaunay at st.com> > Cc: Patrice Chotard <patrice.chotard at st.com> Reviewed-by: Patrice Chotard <patrice.chotard at st.com> Thanks > --- > V2: No change > --- > arch/arm/dts/Makefile | 3 +- > arch/arm/dts/stm32mp157a-avenger96.dts | 421 +----------------- > .../stm32mp15xx-dhcor-avenger96-u-boot.dtsi | 80 ++++ > arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts | 211 +++++++++ > ...oot.dtsi => stm32mp15xx-dhcor-u-boot.dtsi} | 79 +--- > arch/arm/dts/stm32mp15xx-dhcor.dtsi | 231 ++++++++++ > doc/board/st/stm32mp1.rst | 8 +- > 7 files changed, 535 insertions(+), 498 deletions(-) > create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > rename arch/arm/dts/{stm32mp157a-avenger96-u-boot.dtsi => stm32mp15xx-dhcor-u-boot.dtsi} (75%) > create mode 100644 arch/arm/dts/stm32mp15xx-dhcor.dtsi > > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile > index 9c593b2c98..2564f790de 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -884,7 +884,8 @@ dtb-$(CONFIG_STM32MP15x) += \ > stm32mp157c-dk2.dtb \ > stm32mp157c-ed1.dtb \ > stm32mp157c-ev1.dtb \ > - stm32mp15xx-dhcom-pdk2.dtb > + stm32mp15xx-dhcom-pdk2.dtb \ > + stm32mp15xx-dhcor-avenger96.dtb > > dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb k3-am654-r5-base-board.dtb > dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \ > diff --git a/arch/arm/dts/stm32mp157a-avenger96.dts b/arch/arm/dts/stm32mp157a-avenger96.dts > index 4fa20bc31d..9c165104fb 100644 > --- a/arch/arm/dts/stm32mp157a-avenger96.dts > +++ b/arch/arm/dts/stm32mp157a-avenger96.dts > @@ -4,422 +4,5 @@ > * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > */ > > -/dts-v1/; > - > -#include "stm32mp157c.dtsi" > -#include "stm32mp157xac-pinctrl.dtsi" > -#include <dt-bindings/gpio/gpio.h> > -#include <dt-bindings/mfd/st,stpmic1.h> > - > -/ { > - model = "Arrow Electronics STM32MP157A Avenger96 board"; > - compatible = "arrow,stm32mp157a-avenger96", "st,stm32mp157"; > - > - aliases { > - ethernet0 = ðernet0; > - mmc0 = &sdmmc1; > - serial0 = &uart4; > - serial1 = &uart7; > - spi0 = &qspi; > - }; > - > - chosen { > - stdout-path = "serial0:115200n8"; > - }; > - > - memory at c0000000 { > - device_type = "memory"; > - reg = <0xc0000000 0x40000000>; > - }; > - > - led { > - compatible = "gpio-leds"; > - led1 { > - label = "green:user1"; > - gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "heartbeat"; > - default-state = "off"; > - }; > - > - led2 { > - label = "green:user2"; > - gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "mmc0"; > - default-state = "off"; > - }; > - > - led3 { > - label = "green:user3"; > - gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "mmc1"; > - default-state = "off"; > - }; > - > - led4 { > - label = "green:user3"; > - gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "none"; > - default-state = "off"; > - panic-indicator; > - }; > - > - led5 { > - label = "yellow:wifi"; > - gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "phy0tx"; > - default-state = "off"; > - }; > - > - led6 { > - label = "blue:bt"; > - gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "bluetooth-power"; > - default-state = "off"; > - }; > - }; > - > - sd_switch: regulator-sd_switch { > - compatible = "regulator-gpio"; > - regulator-name = "sd_switch"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <2900000>; > - regulator-type = "voltage"; > - regulator-always-on; > - > - gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>; > - gpios-states = <0>; > - states = <1800000 0x1>, > - <2900000 0x0>; > - }; > - > - /* Enpirion EP3A8LQI U2 on the DHCOR */ > - vdd_io: regulator-buck-io { > - compatible = "regulator-fixed"; > - regulator-name = "buck-io"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <1800000>; > - regulator-always-on; > - regulator-boot-on; > - vin-supply = <&vdd>; > - }; > -}; > - > -ðernet0 { > - status = "okay"; > - pinctrl-0 = <ðernet0_rgmii_pins_b>; > - pinctrl-1 = <ðernet0_rgmii_pins_sleep_b>; > - pinctrl-names = "default", "sleep"; > - phy-mode = "rgmii"; > - max-speed = <1000>; > - phy-handle = <&phy0>; > - phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; > - > - mdio0 { > - #address-cells = <1>; > - #size-cells = <0>; > - compatible = "snps,dwmac-mdio"; > - phy0: ethernet-phy at 7 { > - reg = <7>; > - }; > - }; > -}; > - > -&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; > -}; > - > -&i2c2 { > - pinctrl-names = "default"; > - pinctrl-0 = <&i2c2_pins_b1 &i2c2_pins_b2>; > - i2c-scl-rising-time-ns = <185>; > - i2c-scl-falling-time-ns = <20>; > - status = "okay"; > - /delete-property/dmas; > - /delete-property/dma-names; > -}; > - > -&i2c4 { > - pinctrl-names = "default"; > - pinctrl-0 = <&i2c4_pins_a>; > - i2c-scl-rising-time-ns = <185>; > - i2c-scl-falling-time-ns = <20>; > - status = "okay"; > - /delete-property/dmas; > - /delete-property/dma-names; > - > - pmic: stpmic at 33 { > - compatible = "st,stpmic1"; > - reg = <0x33>; > - interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; > - interrupt-controller; > - #interrupt-cells = <2>; > - status = "okay"; > - > - st,main-control-register = <0x04>; > - st,vin-control-register = <0xc0>; > - st,usb-control-register = <0x30>; > - > - regulators { > - compatible = "st,stpmic1-regulators"; > - > - ldo1-supply = <&v3v3>; > - ldo2-supply = <&v3v3>; > - ldo3-supply = <&vdd_ddr>; > - ldo5-supply = <&v3v3>; > - 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 = <2900000>; > - regulator-max-microvolt = <2900000>; > - 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>; > - }; > - > - vdda: ldo1 { > - regulator-name = "vdda"; > - regulator-min-microvolt = <2900000>; > - regulator-max-microvolt = <2900000>; > - interrupts = <IT_CURLIM_LDO1 0>; > - interrupt-parent = <&pmic>; > - }; > - > - v2v8: ldo2 { > - regulator-name = "v2v8"; > - regulator-min-microvolt = <2800000>; > - regulator-max-microvolt = <2800000>; > - interrupts = <IT_CURLIM_LDO2 0>; > - interrupt-parent = <&pmic>; > - }; > - > - 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>; > - interrupt-parent = <&pmic>; > - }; > - > - vdd_sd: ldo5 { > - regulator-name = "vdd_sd"; > - regulator-min-microvolt = <2900000>; > - regulator-max-microvolt = <2900000>; > - interrupts = <IT_CURLIM_LDO5 0>; > - interrupt-parent = <&pmic>; > - regulator-boot-on; > - }; > - > - v1v8: ldo6 { > - regulator-name = "v1v8"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <1800000>; > - interrupts = <IT_CURLIM_LDO6 0>; > - interrupt-parent = <&pmic>; > - regulator-enable-ramp-delay = <300000>; > - }; > - > - 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>; > - interrupt-parent = <&pmic>; > - }; > - > - vbus_otg: pwr_sw1 { > - regulator-name = "vbus_otg"; > - interrupts = <IT_OCP_OTG 0>; > - interrupt-parent = <&pmic>; > - regulator-active-discharge = <1>; > - }; > - > - vbus_sw: pwr_sw2 { > - regulator-name = "vbus_sw"; > - interrupts = <IT_OCP_SWOUT 0>; > - interrupt-parent = <&pmic>; > - regulator-active-discharge = <1>; > - }; > - }; > - > - onkey { > - compatible = "st,stpmic1-onkey"; > - interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>; > - interrupt-names = "onkey-falling", "onkey-rising"; > - status = "okay"; > - }; > - > - watchdog { > - compatible = "st,stpmic1-wdt"; > - status = "disabled"; > - }; > - }; > - > - eeprom at 53 { > - compatible = "atmel,24c02"; > - reg = <0x53>; > - pagesize = <16>; > - }; > -}; > - > -&iwdg2 { > - timeout-sec = <32>; > - status = "okay"; > -}; > - > -&pwr_regulators { > - vdd-supply = <&vdd_io>; > - vdd_3v3_usbfs-supply = <&vdd_usb>; > -}; > - > -&qspi { > - pinctrl-names = "default", "sleep"; > - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; > - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; > - reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; > - #address-cells = <1>; > - #size-cells = <0>; > - status = "okay"; > - > - flash0: spi-flash at 0 { > - compatible = "jedec,spi-nor"; > - reg = <0>; > - spi-rx-bus-width = <4>; > - spi-max-frequency = <108000000>; > - #address-cells = <1>; > - #size-cells = <1>; > - }; > -}; > - > -&rng1 { > - status = "okay"; > -}; > - > -&rtc { > - status = "okay"; > -}; > - > -&sdmmc1 { > - pinctrl-names = "default", "opendrain", "sleep"; > - pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>; > - pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>; > - pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>; > - cd-gpios = <&gpioi 8 GPIO_ACTIVE_LOW>; > - disable-wp; > - st,sig-dir; > - st,neg-edge; > - st,use-ckin; > - sd-uhs-sdr104; > - bus-width = <4>; > - vmmc-supply = <&vdd_sd>; > - vqmmc-supply = <&sd_switch>; > - status = "okay"; > -}; > - > -&sdmmc2 { > - pinctrl-names = "default"; > - pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; > - non-removable; > - no-sd; > - no-sdio; > - st,neg-edge; > - bus-width = <8>; > - vmmc-supply = <&v3v3>; > - mmc-ddr-3_3v; > - status = "okay"; > -}; > - > -&spi2 { > - pinctrl-names = "default"; > - pinctrl-0 = <&spi2_pins_a>; > - status = "okay"; > -}; > - > -&uart4 { > - /* On Low speed expansion header */ > - label = "LS-UART1"; > - pinctrl-names = "default"; > - pinctrl-0 = <&uart4_pins_b>; > - status = "okay"; > -}; > - > -&uart7 { > - /* On Low speed expansion header */ > - label = "LS-UART0"; > - pinctrl-names = "default"; > - pinctrl-0 = <&uart7_pins_a>; > - status = "okay"; > -}; > - > -&usbh_ehci { > - phys = <&usbphyc_port0>; > - phy-names = "usb"; > - status = "okay"; > -}; > - > -&usbotg_hs { > - dr_mode = "peripheral"; > - phys = <&usbphyc_port1 0>; > - phy-names = "usb2-phy"; > - status = "okay"; > -}; > - > -&usbphyc { > - status = "okay"; > -}; > - > -&usbphyc_port0 { > - phy-supply = <&vdd_usb>; > -}; > - > -&usbphyc_port1 { > - phy-supply = <&vdd_usb>; > -}; > +/* This is kept for backward compatibility and will be removed */ > +#include "stm32mp15xx-dhcor-avenger96.dts" > diff --git a/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi b/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > new file mode 100644 > index 0000000000..4207a96618 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > @@ -0,0 +1,80 @@ > +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause > +/* > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> > + */ > + > +#include "stm32mp15xx-dhcor-u-boot.dtsi" > + > +/ { > + aliases { > + mmc0 = &sdmmc1; > + mmc1 = &sdmmc2; > + usb0 = &usbotg_hs; > + }; > + > + config { > + u-boot,boot-led = "led1"; > + u-boot,error-led = "led4"; > + }; > +}; > + > +&sdmmc1 { > + u-boot,dm-spl; > +}; > + > +&sdmmc1_b4_pins_a { > + u-boot,dm-spl; > + pins { > + 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_b { > + u-boot,dm-spl; > + pins { > + u-boot,dm-spl; > + }; > +}; > + > +&uart4 { > + u-boot,dm-pre-reloc; > +}; > + > +&uart4_pins_b { > + u-boot,dm-pre-reloc; > + pins1 { > + u-boot,dm-pre-reloc; > + }; > + pins2 { > + u-boot,dm-pre-reloc; > + }; > +}; > + > +&usbotg_hs { > + u-boot,force-b-session-valid; > + hnp-srp-disable; > +}; > diff --git a/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > new file mode 100644 > index 0000000000..9d859e1d09 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > @@ -0,0 +1,211 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) > +/* > + * Copyright (C) Linaro Ltd 2019 - All Rights Reserved > + * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> > + */ > + > +/dts-v1/; > + > +#include "stm32mp15xx-dhcor.dtsi" > +#include "stm32mp15xx-dhcor-avenger96-u-boot.dtsi" > + > +/ { > + model = "Arrow Electronics STM32MP15xx Avenger96 board"; > + compatible = "arrow,stm32mp15xx-avenger96", "st,stm32mp15x"; > + > + aliases { > + eeprom0 = &eeprom0; > + ethernet0 = ðernet0; > + mmc0 = &sdmmc1; > + serial0 = &uart4; > + serial1 = &uart7; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + led { > + compatible = "gpio-leds"; > + led1 { > + label = "green:user1"; > + gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "heartbeat"; > + default-state = "off"; > + }; > + > + led2 { > + label = "green:user2"; > + gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "mmc0"; > + default-state = "off"; > + }; > + > + led3 { > + label = "green:user3"; > + gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "mmc1"; > + default-state = "off"; > + }; > + > + led4 { > + label = "green:user3"; > + gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "none"; > + default-state = "off"; > + panic-indicator; > + }; > + > + led5 { > + label = "yellow:wifi"; > + gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "phy0tx"; > + default-state = "off"; > + }; > + > + led6 { > + label = "blue:bt"; > + gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "bluetooth-power"; > + default-state = "off"; > + }; > + }; > + > + sd_switch: regulator-sd_switch { > + compatible = "regulator-gpio"; > + regulator-name = "sd_switch"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <2900000>; > + regulator-type = "voltage"; > + regulator-always-on; > + > + gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>; > + gpios-states = <0>; > + states = <1800000 0x1>, > + <2900000 0x0>; > + }; > +}; > + > +ðernet0 { > + status = "okay"; > + pinctrl-0 = <ðernet0_rgmii_pins_b>; > + pinctrl-1 = <ðernet0_rgmii_pins_sleep_b>; > + pinctrl-names = "default", "sleep"; > + phy-mode = "rgmii"; > + max-speed = <1000>; > + phy-handle = <&phy0>; > + phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; > + > + mdio0 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "snps,dwmac-mdio"; > + phy0: ethernet-phy at 7 { > + reg = <7>; > + }; > + }; > +}; > + > +&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; > +}; > + > +&i2c2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&i2c2_pins_b1 &i2c2_pins_b2>; > + i2c-scl-rising-time-ns = <185>; > + i2c-scl-falling-time-ns = <20>; > + status = "okay"; > + /delete-property/dmas; > + /delete-property/dma-names; > +}; > + > +&i2c4 { > + eeprom0: eeprom at 53 { > + compatible = "atmel,24c02"; > + reg = <0x53>; > + pagesize = <16>; > + }; > +}; > + > +&sdmmc1 { > + pinctrl-names = "default", "opendrain", "sleep"; > + pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>; > + pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>; > + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>; > + disable-wp; > + st,sig-dir; > + st,neg-edge; > + st,use-ckin; > + bus-width = <4>; > + vmmc-supply = <&vdd_sd>; > + vqmmc-supply = <&sd_switch>; > + status = "okay"; > +}; > + > +&sdmmc2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; > + non-removable; > + no-sd; > + no-sdio; > + st,neg-edge; > + bus-width = <8>; > + vmmc-supply = <&v3v3>; > + mmc-ddr-3_3v; > + status = "okay"; > +}; > + > +&spi2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&spi2_pins_a>; > + status = "okay"; > +}; > + > +&uart4 { > + /* On Low speed expansion header */ > + label = "LS-UART1"; > + pinctrl-names = "default"; > + pinctrl-0 = <&uart4_pins_b>; > + status = "okay"; > +}; > + > +&uart7 { > + /* On Low speed expansion header */ > + label = "LS-UART0"; > + pinctrl-names = "default"; > + pinctrl-0 = <&uart7_pins_a>; > + status = "okay"; > +}; > + > +&usbh_ehci { > + phys = <&usbphyc_port0>; > + phy-names = "usb"; > + status = "okay"; > +}; > + > +&usbotg_hs { > + dr_mode = "peripheral"; > + phys = <&usbphyc_port1 0>; > + phy-names = "usb2-phy"; > + status = "okay"; > +}; > + > +&usbphyc { > + status = "okay"; > +}; > + > +&usbphyc_port0 { > + phy-supply = <&vdd_usb>; > +}; > + > +&usbphyc_port1 { > + phy-supply = <&vdd_usb>; > +}; > diff --git a/arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi b/arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi > similarity index 75% > rename from arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi > rename to arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi > index 320132a01e..02dad81b0b 100644 > --- a/arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi > +++ b/arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi > @@ -4,25 +4,13 @@ > * > * Copyright (C) Linaro Ltd 2019 - All Rights Reserved > * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> > */ > > #include <dt-bindings/clock/stm32mp1-clksrc.h> > #include "stm32mp157-u-boot.dtsi" > #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi" > > -/ { > - aliases { > - mmc0 = &sdmmc1; > - mmc1 = &sdmmc2; > - usb0 = &usbotg_hs; > - }; > - > - config { > - u-boot,boot-led = "led1"; > - u-boot,error-led = "led4"; > - }; > -}; > - > &i2c4 { > u-boot,dm-pre-reloc; > }; > @@ -38,6 +26,10 @@ > u-boot,dm-pre-reloc; > }; > > +&qspi { > + u-boot,dm-spl; > +}; > + > &rcc { > st,clksrc = < > CLK_MPU_PLL1P > @@ -139,67 +131,6 @@ > }; > }; > > -&sdmmc1 { > - u-boot,dm-spl; > -}; > - > -&sdmmc1_b4_pins_a { > - u-boot,dm-spl; > - pins { > - 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_b { > - u-boot,dm-spl; > - pins { > - u-boot,dm-spl; > - }; > -}; > - > -&uart4 { > - u-boot,dm-pre-reloc; > -}; > - > -&uart4_pins_b { > - u-boot,dm-pre-reloc; > - pins1 { > - u-boot,dm-pre-reloc; > - }; > - pins2 { > - u-boot,dm-pre-reloc; > - }; > -}; > - > -&usbotg_hs { > - u-boot,force-b-session-valid; > - hnp-srp-disable; > -}; > - > &v3v3 { > regulator-always-on; > }; > diff --git a/arch/arm/dts/stm32mp15xx-dhcor.dtsi b/arch/arm/dts/stm32mp15xx-dhcor.dtsi > new file mode 100644 > index 0000000000..9d4e92ebb1 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor.dtsi > @@ -0,0 +1,231 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) > +/* > + * Copyright (C) Linaro Ltd 2019 - All Rights Reserved > + * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> > + */ > +/dts-v1/; > + > +#include "stm32mp157c.dtsi" > +#include "stm32mp157xac-pinctrl.dtsi" > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/mfd/st,stpmic1.h> > + > +/ { > + aliases { > + spi0 = &qspi; > + }; > + > + memory at c0000000 { > + device_type = "memory"; > + reg = <0xc0000000 0x40000000>; > + }; > + > + /* Enpirion EP3A8LQI U2 on the DHCOR */ > + vdd_io: regulator-buck-io { > + compatible = "regulator-fixed"; > + regulator-name = "buck-io"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + regulator-boot-on; > + vin-supply = <&vdd>; > + }; > +}; > + > +&i2c4 { > + pinctrl-names = "default"; > + pinctrl-0 = <&i2c4_pins_a>; > + i2c-scl-rising-time-ns = <185>; > + i2c-scl-falling-time-ns = <20>; > + status = "okay"; > + /delete-property/dmas; > + /delete-property/dma-names; > + > + pmic: stpmic at 33 { > + compatible = "st,stpmic1"; > + reg = <0x33>; > + interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; > + interrupt-controller; > + #interrupt-cells = <2>; > + status = "okay"; > + > + st,main-control-register = <0x04>; > + st,vin-control-register = <0xc0>; > + st,usb-control-register = <0x30>; > + > + regulators { > + compatible = "st,stpmic1-regulators"; > + > + ldo1-supply = <&v3v3>; > + ldo2-supply = <&v3v3>; > + ldo3-supply = <&vdd_ddr>; > + ldo5-supply = <&v3v3>; > + 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 = <2900000>; > + regulator-max-microvolt = <2900000>; > + 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>; > + }; > + > + vdda: ldo1 { > + regulator-name = "vdda"; > + regulator-min-microvolt = <2900000>; > + regulator-max-microvolt = <2900000>; > + interrupts = <IT_CURLIM_LDO1 0>; > + interrupt-parent = <&pmic>; > + }; > + > + v2v8: ldo2 { > + regulator-name = "v2v8"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + interrupts = <IT_CURLIM_LDO2 0>; > + interrupt-parent = <&pmic>; > + }; > + > + 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>; > + interrupt-parent = <&pmic>; > + }; > + > + vdd_sd: ldo5 { > + regulator-name = "vdd_sd"; > + regulator-min-microvolt = <2900000>; > + regulator-max-microvolt = <2900000>; > + interrupts = <IT_CURLIM_LDO5 0>; > + interrupt-parent = <&pmic>; > + regulator-boot-on; > + }; > + > + v1v8: ldo6 { > + regulator-name = "v1v8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + interrupts = <IT_CURLIM_LDO6 0>; > + interrupt-parent = <&pmic>; > + regulator-enable-ramp-delay = <300000>; > + }; > + > + 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>; > + interrupt-parent = <&pmic>; > + }; > + > + vbus_otg: pwr_sw1 { > + regulator-name = "vbus_otg"; > + interrupts = <IT_OCP_OTG 0>; > + interrupt-parent = <&pmic>; > + regulator-active-discharge = <1>; > + }; > + > + vbus_sw: pwr_sw2 { > + regulator-name = "vbus_sw"; > + interrupts = <IT_OCP_SWOUT 0>; > + interrupt-parent = <&pmic>; > + regulator-active-discharge = <1>; > + }; > + }; > + > + onkey { > + compatible = "st,stpmic1-onkey"; > + interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>; > + interrupt-names = "onkey-falling", "onkey-rising"; > + status = "okay"; > + }; > + > + watchdog { > + compatible = "st,stpmic1-wdt"; > + status = "disabled"; > + }; > + }; > +}; > + > +&iwdg2 { > + timeout-sec = <32>; > + status = "okay"; > +}; > + > +&pwr_regulators { > + vdd-supply = <&vdd_io>; > + vdd_3v3_usbfs-supply = <&vdd_usb>; > +}; > + > +&qspi { > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; > + pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; > + reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; > + #address-cells = <1>; > + #size-cells = <0>; > + status = "okay"; > + > + flash0: spi-flash at 0 { > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-rx-bus-width = <4>; > + spi-max-frequency = <108000000>; > + #address-cells = <1>; > + #size-cells = <1>; > + }; > +}; > + > +&rng1 { > + status = "okay"; > +}; > + > +&rtc { > + status = "okay"; > +}; > diff --git a/doc/board/st/stm32mp1.rst b/doc/board/st/stm32mp1.rst > index 1640bf910e..73195134f1 100644 > --- a/doc/board/st/stm32mp1.rst > +++ b/doc/board/st/stm32mp1.rst > @@ -43,11 +43,11 @@ And the necessary drivers > > Currently the following boards are supported: > > - + stm32mp157a-avenger96.dts > + stm32mp157a-dk1.dts > + stm32mp157c-dk2.dts > + stm32mp157c-ed1.dts > + stm32mp157c-ev1.dts > + + stm32mp15xx-dhcor-avenger96.dts > > Boot Sequences > -------------- > @@ -145,9 +145,9 @@ the supported device trees for STM32MP15x are: > > + stm32mp157c-dk2 > > -+ avenger96: Avenger96 board from Arrow Electronics > ++ avenger96: Avenger96 board from Arrow Electronics based on DH Elec. DHCOR SoM > > - + stm32mp157a-avenger96 > + + stm32mp15xx-dhcor-avenger96 > > Build Procedure > --------------- > @@ -229,7 +229,7 @@ Build Procedure > > # export KBUILD_OUTPUT=stm32mp15_basic > # make stm32mp15_basic_defconfig > - # make DEVICE_TREE=stm32mp157a-avenger96 all > + # make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 all > > 6. Output files >
Hi, > From: Marek Vasut <marex at denx.de> > Sent: mardi 31 mars 2020 02:49 > > The AV96 is in fact an assembly of DH Electronics DHCOR SoM on top of an > AV96 reference board. Split the DTs to reflect that and make sure to DHCOR SoM > can be reused on other boards easily. > > It is also highly recommended to configure the board for the DHCOM make > stm32mp15_dhcom_basic_defconfig make DEVICE_TREE=stm32mp15xx-dhcor- > avenger96 > as that permits reusing the board code for the DH components, like accessing and > reading out the ethernet MAC from EEPROM. Recommended or mandatory... For my point of view - board/st/stm32mp1 manage the ST board (STM32MP15x-DKX and STM32MP15x-EV1) Can be used as starting point for customer new board - board/dhelectronics/dh_stm32mp1 manage the board based on DHCOR SoM or can be a starting point of SoM user For AV96, the first upstream was directly based on ST board, but I agree : it is clearly not a perfect solution (MAC address issue for example) => support on this board should be in dh_stm32mp1 board or create a new board AV96 based on it. And I need to continue to move in st/common the part common for all the STM32MP157 boards.... > Signed-off-by: Marek Vasut <marex at denx.de> > Cc: Patrick Delaunay <patrick.delaunay at st.com> > Cc: Patrice Chotard <patrice.chotard at st.com> > --- > V2: No change > --- > arch/arm/dts/Makefile | 3 +- > arch/arm/dts/stm32mp157a-avenger96.dts | 421 +----------------- > .../stm32mp15xx-dhcor-avenger96-u-boot.dtsi | 80 ++++ > arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts | 211 +++++++++ ...oot.dtsi => > stm32mp15xx-dhcor-u-boot.dtsi} | 79 +--- > arch/arm/dts/stm32mp15xx-dhcor.dtsi | 231 ++++++++++ > doc/board/st/stm32mp1.rst | 8 +- > 7 files changed, 535 insertions(+), 498 deletions(-) create mode 100644 > arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > rename arch/arm/dts/{stm32mp157a-avenger96-u-boot.dtsi => stm32mp15xx- > dhcor-u-boot.dtsi} (75%) create mode 100644 arch/arm/dts/stm32mp15xx- > dhcor.dtsi > > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index > 9c593b2c98..2564f790de 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -884,7 +884,8 @@ dtb-$(CONFIG_STM32MP15x) += \ > stm32mp157c-dk2.dtb \ > stm32mp157c-ed1.dtb \ > stm32mp157c-ev1.dtb \ > - stm32mp15xx-dhcom-pdk2.dtb > + stm32mp15xx-dhcom-pdk2.dtb \ > + stm32mp15xx-dhcor-avenger96.dtb Force device tree support for each target ? Avoid to mix incompatible device tree and defconfig.... dtb-$(TARGET_ST_STM32MP15x) += \ stm32mp157a-dk1.dtb \ stm32mp157c-dk2.dtb \ stm32mp157c-ed1.dtb \ stm32mp157c-ev1.dtb dtb-$(TARGET_DH_STM32MP1_PDK2) += \ stm32mp15xx-dhcom-pdk2.dtb \ stm32mp15xx-dhcor-avenger96.dtb > dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb k3-am654-r5-base- > board.dtb > dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \ diff --git > a/arch/arm/dts/stm32mp157a-avenger96.dts b/arch/arm/dts/stm32mp157a- > avenger96.dts > index 4fa20bc31d..9c165104fb 100644 > --- a/arch/arm/dts/stm32mp157a-avenger96.dts > +++ b/arch/arm/dts/stm32mp157a-avenger96.dts > @@ -4,422 +4,5 @@ > * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > */ > > -/dts-v1/; > - > -#include "stm32mp157c.dtsi" > -#include "stm32mp157xac-pinctrl.dtsi" > -#include <dt-bindings/gpio/gpio.h> > -#include <dt-bindings/mfd/st,stpmic1.h> > - > -/ { > - model = "Arrow Electronics STM32MP157A Avenger96 board"; > - compatible = "arrow,stm32mp157a-avenger96", "st,stm32mp157"; > - > - aliases { > - ethernet0 = ðernet0; > - mmc0 = &sdmmc1; > - serial0 = &uart4; > - serial1 = &uart7; > - spi0 = &qspi; > - }; > - > - chosen { > - stdout-path = "serial0:115200n8"; > - }; > - > - memory at c0000000 { > - device_type = "memory"; > - reg = <0xc0000000 0x40000000>; > - }; > - > - led { > - compatible = "gpio-leds"; > - led1 { > - label = "green:user1"; > - gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "heartbeat"; > - default-state = "off"; > - }; > - > - led2 { > - label = "green:user2"; > - gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "mmc0"; > - default-state = "off"; > - }; > - > - led3 { > - label = "green:user3"; > - gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "mmc1"; > - default-state = "off"; > - }; > - > - led4 { > - label = "green:user3"; > - gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "none"; > - default-state = "off"; > - panic-indicator; > - }; > - > - led5 { > - label = "yellow:wifi"; > - gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "phy0tx"; > - default-state = "off"; > - }; > - > - led6 { > - label = "blue:bt"; > - gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; > - linux,default-trigger = "bluetooth-power"; > - default-state = "off"; > - }; > - }; > - > - sd_switch: regulator-sd_switch { > - compatible = "regulator-gpio"; > - regulator-name = "sd_switch"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <2900000>; > - regulator-type = "voltage"; > - regulator-always-on; > - > - gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>; > - gpios-states = <0>; > - states = <1800000 0x1>, > - <2900000 0x0>; > - }; > - > - /* Enpirion EP3A8LQI U2 on the DHCOR */ > - vdd_io: regulator-buck-io { > - compatible = "regulator-fixed"; > - regulator-name = "buck-io"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <1800000>; > - regulator-always-on; > - regulator-boot-on; > - vin-supply = <&vdd>; > - }; > -}; > - > -ðernet0 { > - status = "okay"; > - pinctrl-0 = <ðernet0_rgmii_pins_b>; > - pinctrl-1 = <ðernet0_rgmii_pins_sleep_b>; > - pinctrl-names = "default", "sleep"; > - phy-mode = "rgmii"; > - max-speed = <1000>; > - phy-handle = <&phy0>; > - phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; > - > - mdio0 { > - #address-cells = <1>; > - #size-cells = <0>; > - compatible = "snps,dwmac-mdio"; > - phy0: ethernet-phy at 7 { > - reg = <7>; > - }; > - }; > -}; > - > -&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; > -}; > - > -&i2c2 { > - pinctrl-names = "default"; > - pinctrl-0 = <&i2c2_pins_b1 &i2c2_pins_b2>; > - i2c-scl-rising-time-ns = <185>; > - i2c-scl-falling-time-ns = <20>; > - status = "okay"; > - /delete-property/dmas; > - /delete-property/dma-names; > -}; > - > -&i2c4 { > - pinctrl-names = "default"; > - pinctrl-0 = <&i2c4_pins_a>; > - i2c-scl-rising-time-ns = <185>; > - i2c-scl-falling-time-ns = <20>; > - status = "okay"; > - /delete-property/dmas; > - /delete-property/dma-names; > - > - pmic: stpmic at 33 { > - compatible = "st,stpmic1"; > - reg = <0x33>; > - interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; > - interrupt-controller; > - #interrupt-cells = <2>; > - status = "okay"; > - > - st,main-control-register = <0x04>; > - st,vin-control-register = <0xc0>; > - st,usb-control-register = <0x30>; > - > - regulators { > - compatible = "st,stpmic1-regulators"; > - > - ldo1-supply = <&v3v3>; > - ldo2-supply = <&v3v3>; > - ldo3-supply = <&vdd_ddr>; > - ldo5-supply = <&v3v3>; > - 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 = <2900000>; > - regulator-max-microvolt = <2900000>; > - 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>; > - }; > - > - vdda: ldo1 { > - regulator-name = "vdda"; > - regulator-min-microvolt = <2900000>; > - regulator-max-microvolt = <2900000>; > - interrupts = <IT_CURLIM_LDO1 0>; > - interrupt-parent = <&pmic>; > - }; > - > - v2v8: ldo2 { > - regulator-name = "v2v8"; > - regulator-min-microvolt = <2800000>; > - regulator-max-microvolt = <2800000>; > - interrupts = <IT_CURLIM_LDO2 0>; > - interrupt-parent = <&pmic>; > - }; > - > - 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>; > - interrupt-parent = <&pmic>; > - }; > - > - vdd_sd: ldo5 { > - regulator-name = "vdd_sd"; > - regulator-min-microvolt = <2900000>; > - regulator-max-microvolt = <2900000>; > - interrupts = <IT_CURLIM_LDO5 0>; > - interrupt-parent = <&pmic>; > - regulator-boot-on; > - }; > - > - v1v8: ldo6 { > - regulator-name = "v1v8"; > - regulator-min-microvolt = <1800000>; > - regulator-max-microvolt = <1800000>; > - interrupts = <IT_CURLIM_LDO6 0>; > - interrupt-parent = <&pmic>; > - regulator-enable-ramp-delay = <300000>; > - }; > - > - 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>; > - interrupt-parent = <&pmic>; > - }; > - > - vbus_otg: pwr_sw1 { > - regulator-name = "vbus_otg"; > - interrupts = <IT_OCP_OTG 0>; > - interrupt-parent = <&pmic>; > - regulator-active-discharge = <1>; > - }; > - > - vbus_sw: pwr_sw2 { > - regulator-name = "vbus_sw"; > - interrupts = <IT_OCP_SWOUT 0>; > - interrupt-parent = <&pmic>; > - regulator-active-discharge = <1>; > - }; > - }; > - > - onkey { > - compatible = "st,stpmic1-onkey"; > - interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>; > - interrupt-names = "onkey-falling", "onkey-rising"; > - status = "okay"; > - }; > - > - watchdog { > - compatible = "st,stpmic1-wdt"; > - status = "disabled"; > - }; > - }; > - > - eeprom at 53 { > - compatible = "atmel,24c02"; > - reg = <0x53>; > - pagesize = <16>; > - }; > -}; > - > -&iwdg2 { > - timeout-sec = <32>; > - status = "okay"; > -}; > - > -&pwr_regulators { > - vdd-supply = <&vdd_io>; > - vdd_3v3_usbfs-supply = <&vdd_usb>; > -}; > - > -&qspi { > - pinctrl-names = "default", "sleep"; > - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; > - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; > - reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; > - #address-cells = <1>; > - #size-cells = <0>; > - status = "okay"; > - > - flash0: spi-flash at 0 { > - compatible = "jedec,spi-nor"; > - reg = <0>; > - spi-rx-bus-width = <4>; > - spi-max-frequency = <108000000>; > - #address-cells = <1>; > - #size-cells = <1>; > - }; > -}; > - > -&rng1 { > - status = "okay"; > -}; > - > -&rtc { > - status = "okay"; > -}; > - > -&sdmmc1 { > - pinctrl-names = "default", "opendrain", "sleep"; > - pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>; > - pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>; > - pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>; > - cd-gpios = <&gpioi 8 GPIO_ACTIVE_LOW>; > - disable-wp; > - st,sig-dir; > - st,neg-edge; > - st,use-ckin; > - sd-uhs-sdr104; > - bus-width = <4>; > - vmmc-supply = <&vdd_sd>; > - vqmmc-supply = <&sd_switch>; > - status = "okay"; > -}; > - > -&sdmmc2 { > - pinctrl-names = "default"; > - pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; > - non-removable; > - no-sd; > - no-sdio; > - st,neg-edge; > - bus-width = <8>; > - vmmc-supply = <&v3v3>; > - mmc-ddr-3_3v; > - status = "okay"; > -}; > - > -&spi2 { > - pinctrl-names = "default"; > - pinctrl-0 = <&spi2_pins_a>; > - status = "okay"; > -}; > - > -&uart4 { > - /* On Low speed expansion header */ > - label = "LS-UART1"; > - pinctrl-names = "default"; > - pinctrl-0 = <&uart4_pins_b>; > - status = "okay"; > -}; > - > -&uart7 { > - /* On Low speed expansion header */ > - label = "LS-UART0"; > - pinctrl-names = "default"; > - pinctrl-0 = <&uart7_pins_a>; > - status = "okay"; > -}; > - > -&usbh_ehci { > - phys = <&usbphyc_port0>; > - phy-names = "usb"; > - status = "okay"; > -}; > - > -&usbotg_hs { > - dr_mode = "peripheral"; > - phys = <&usbphyc_port1 0>; > - phy-names = "usb2-phy"; > - status = "okay"; > -}; > - > -&usbphyc { > - status = "okay"; > -}; > - > -&usbphyc_port0 { > - phy-supply = <&vdd_usb>; > -}; > - > -&usbphyc_port1 { > - phy-supply = <&vdd_usb>; > -}; When this file will be removed ? why kept this file..... I propose to completely remove this file (no device tree for same board) > +/* This is kept for backward compatibility and will be removed */ > +#include "stm32mp15xx-dhcor-avenger96.dts" Missing u-boot file to avoid issue...... +#include " stm32mp15xx-dhcor-avenger96-u-boot.dtsi" > diff --git a/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > b/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > new file mode 100644 > index 0000000000..4207a96618 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi > @@ -0,0 +1,80 @@ > +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause > +/* > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> */ > + > +#include "stm32mp15xx-dhcor-u-boot.dtsi" > + > +/ { > + aliases { > + mmc0 = &sdmmc1; > + mmc1 = &sdmmc2; > + usb0 = &usbotg_hs; > + }; > + > + config { > + u-boot,boot-led = "led1"; > + u-boot,error-led = "led4"; > + }; > +}; > + > +&sdmmc1 { > + u-boot,dm-spl; > +}; > + > +&sdmmc1_b4_pins_a { > + u-boot,dm-spl; > + pins { > + 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_b { > + u-boot,dm-spl; > + pins { > + u-boot,dm-spl; > + }; > +}; > + > +&uart4 { > + u-boot,dm-pre-reloc; > +}; > + > +&uart4_pins_b { > + u-boot,dm-pre-reloc; > + pins1 { > + u-boot,dm-pre-reloc; > + }; > + pins2 { > + u-boot,dm-pre-reloc; > + }; > +}; > + > +&usbotg_hs { > + u-boot,force-b-session-valid; > + hnp-srp-disable; > +}; > diff --git a/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > new file mode 100644 > index 0000000000..9d859e1d09 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > @@ -0,0 +1,211 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) > +/* > + * Copyright (C) Linaro Ltd 2019 - All Rights Reserved > + * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> */ > + > +/dts-v1/; > + > +#include "stm32mp15xx-dhcor.dtsi" > +#include "stm32mp15xx-dhcor-avenger96-u-boot.dtsi" > + > +/ { > + model = "Arrow Electronics STM32MP15xx Avenger96 board"; > + compatible = "arrow,stm32mp15xx-avenger96", "st,stm32mp15x"; > + > + aliases { > + eeprom0 = &eeprom0; > + ethernet0 = ðernet0; > + mmc0 = &sdmmc1; > + serial0 = &uart4; > + serial1 = &uart7; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + led { > + compatible = "gpio-leds"; > + led1 { > + label = "green:user1"; > + gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "heartbeat"; > + default-state = "off"; > + }; > + > + led2 { > + label = "green:user2"; > + gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "mmc0"; > + default-state = "off"; > + }; > + > + led3 { > + label = "green:user3"; > + gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "mmc1"; > + default-state = "off"; > + }; > + > + led4 { > + label = "green:user3"; > + gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "none"; > + default-state = "off"; > + panic-indicator; > + }; > + > + led5 { > + label = "yellow:wifi"; > + gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "phy0tx"; > + default-state = "off"; > + }; > + > + led6 { > + label = "blue:bt"; > + gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "bluetooth-power"; > + default-state = "off"; > + }; > + }; > + > + sd_switch: regulator-sd_switch { > + compatible = "regulator-gpio"; > + regulator-name = "sd_switch"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <2900000>; > + regulator-type = "voltage"; > + regulator-always-on; > + > + gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>; > + gpios-states = <0>; > + states = <1800000 0x1>, > + <2900000 0x0>; > + }; > +}; > + > +ðernet0 { > + status = "okay"; > + pinctrl-0 = <ðernet0_rgmii_pins_b>; > + pinctrl-1 = <ðernet0_rgmii_pins_sleep_b>; > + pinctrl-names = "default", "sleep"; > + phy-mode = "rgmii"; > + max-speed = <1000>; > + phy-handle = <&phy0>; > + phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; > + > + mdio0 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "snps,dwmac-mdio"; > + phy0: ethernet-phy at 7 { > + reg = <7>; > + }; > + }; > +}; > + > +&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; > +}; > + > +&i2c2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&i2c2_pins_b1 &i2c2_pins_b2>; > + i2c-scl-rising-time-ns = <185>; > + i2c-scl-falling-time-ns = <20>; > + status = "okay"; > + /delete-property/dmas; > + /delete-property/dma-names; > +}; > + > +&i2c4 { > + eeprom0: eeprom at 53 { > + compatible = "atmel,24c02"; > + reg = <0x53>; > + pagesize = <16>; > + }; > +}; > + > +&sdmmc1 { > + pinctrl-names = "default", "opendrain", "sleep"; > + pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>; > + pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>; > + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>; > + disable-wp; > + st,sig-dir; > + st,neg-edge; > + st,use-ckin; > + bus-width = <4>; > + vmmc-supply = <&vdd_sd>; > + vqmmc-supply = <&sd_switch>; > + status = "okay"; > +}; > + > +&sdmmc2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; > + non-removable; > + no-sd; > + no-sdio; > + st,neg-edge; > + bus-width = <8>; > + vmmc-supply = <&v3v3>; > + mmc-ddr-3_3v; > + status = "okay"; > +}; > + > +&spi2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&spi2_pins_a>; > + status = "okay"; > +}; > + > +&uart4 { > + /* On Low speed expansion header */ > + label = "LS-UART1"; > + pinctrl-names = "default"; > + pinctrl-0 = <&uart4_pins_b>; > + status = "okay"; > +}; > + > +&uart7 { > + /* On Low speed expansion header */ > + label = "LS-UART0"; > + pinctrl-names = "default"; > + pinctrl-0 = <&uart7_pins_a>; > + status = "okay"; > +}; > + > +&usbh_ehci { > + phys = <&usbphyc_port0>; > + phy-names = "usb"; > + status = "okay"; > +}; > + > +&usbotg_hs { > + dr_mode = "peripheral"; > + phys = <&usbphyc_port1 0>; > + phy-names = "usb2-phy"; > + status = "okay"; > +}; > + > +&usbphyc { > + status = "okay"; > +}; > + > +&usbphyc_port0 { > + phy-supply = <&vdd_usb>; > +}; > + > +&usbphyc_port1 { > + phy-supply = <&vdd_usb>; > +}; > diff --git a/arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi > b/arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi > similarity index 75% > rename from arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi > rename to arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi > index 320132a01e..02dad81b0b 100644 > --- a/arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi > +++ b/arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi > @@ -4,25 +4,13 @@ > * > * Copyright (C) Linaro Ltd 2019 - All Rights Reserved > * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> > */ > > #include <dt-bindings/clock/stm32mp1-clksrc.h> > #include "stm32mp157-u-boot.dtsi" > #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi" > > -/ { > - aliases { > - mmc0 = &sdmmc1; > - mmc1 = &sdmmc2; > - usb0 = &usbotg_hs; > - }; > - > - config { > - u-boot,boot-led = "led1"; > - u-boot,error-led = "led4"; > - }; > -}; > - > &i2c4 { > u-boot,dm-pre-reloc; > }; > @@ -38,6 +26,10 @@ > u-boot,dm-pre-reloc; > }; > > +&qspi { > + u-boot,dm-spl; > +}; > + > &rcc { > st,clksrc = < > CLK_MPU_PLL1P > @@ -139,67 +131,6 @@ > }; > }; > > -&sdmmc1 { > - u-boot,dm-spl; > -}; > - > -&sdmmc1_b4_pins_a { > - u-boot,dm-spl; > - pins { > - 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_b { > - u-boot,dm-spl; > - pins { > - u-boot,dm-spl; > - }; > -}; > - > -&uart4 { > - u-boot,dm-pre-reloc; > -}; > - > -&uart4_pins_b { > - u-boot,dm-pre-reloc; > - pins1 { > - u-boot,dm-pre-reloc; > - }; > - pins2 { > - u-boot,dm-pre-reloc; > - }; > -}; > - > -&usbotg_hs { > - u-boot,force-b-session-valid; > - hnp-srp-disable; > -}; > - > &v3v3 { > regulator-always-on; > }; > diff --git a/arch/arm/dts/stm32mp15xx-dhcor.dtsi b/arch/arm/dts/stm32mp15xx- > dhcor.dtsi > new file mode 100644 > index 0000000000..9d4e92ebb1 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor.dtsi > @@ -0,0 +1,231 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) > +/* > + * Copyright (C) Linaro Ltd 2019 - All Rights Reserved > + * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> > + * Copyright (C) 2020 Marek Vasut <marex at denx.de> */ /dts-v1/; > + > +#include "stm32mp157c.dtsi" > +#include "stm32mp157xac-pinctrl.dtsi" > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/mfd/st,stpmic1.h> > + > +/ { > + aliases { > + spi0 = &qspi; > + }; > + > + memory at c0000000 { > + device_type = "memory"; > + reg = <0xc0000000 0x40000000>; > + }; > + > + /* Enpirion EP3A8LQI U2 on the DHCOR */ > + vdd_io: regulator-buck-io { > + compatible = "regulator-fixed"; > + regulator-name = "buck-io"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + regulator-boot-on; > + vin-supply = <&vdd>; > + }; > +}; > + > +&i2c4 { > + pinctrl-names = "default"; > + pinctrl-0 = <&i2c4_pins_a>; > + i2c-scl-rising-time-ns = <185>; > + i2c-scl-falling-time-ns = <20>; > + status = "okay"; > + /delete-property/dmas; > + /delete-property/dma-names; > + > + pmic: stpmic at 33 { > + compatible = "st,stpmic1"; > + reg = <0x33>; > + interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; > + interrupt-controller; > + #interrupt-cells = <2>; > + status = "okay"; > + > + st,main-control-register = <0x04>; > + st,vin-control-register = <0xc0>; > + st,usb-control-register = <0x30>; > + > + regulators { > + compatible = "st,stpmic1-regulators"; > + > + ldo1-supply = <&v3v3>; > + ldo2-supply = <&v3v3>; > + ldo3-supply = <&vdd_ddr>; > + ldo5-supply = <&v3v3>; > + 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 = <2900000>; > + regulator-max-microvolt = <2900000>; > + 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>; > + }; > + > + vdda: ldo1 { > + regulator-name = "vdda"; > + regulator-min-microvolt = <2900000>; > + regulator-max-microvolt = <2900000>; > + interrupts = <IT_CURLIM_LDO1 0>; > + interrupt-parent = <&pmic>; > + }; > + > + v2v8: ldo2 { > + regulator-name = "v2v8"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + interrupts = <IT_CURLIM_LDO2 0>; > + interrupt-parent = <&pmic>; > + }; > + > + 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>; > + interrupt-parent = <&pmic>; > + }; > + > + vdd_sd: ldo5 { > + regulator-name = "vdd_sd"; > + regulator-min-microvolt = <2900000>; > + regulator-max-microvolt = <2900000>; > + interrupts = <IT_CURLIM_LDO5 0>; > + interrupt-parent = <&pmic>; > + regulator-boot-on; > + }; > + > + v1v8: ldo6 { > + regulator-name = "v1v8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + interrupts = <IT_CURLIM_LDO6 0>; > + interrupt-parent = <&pmic>; > + regulator-enable-ramp-delay = <300000>; > + }; > + > + 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>; > + interrupt-parent = <&pmic>; > + }; > + > + vbus_otg: pwr_sw1 { > + regulator-name = "vbus_otg"; > + interrupts = <IT_OCP_OTG 0>; > + interrupt-parent = <&pmic>; > + regulator-active-discharge = <1>; > + }; > + > + vbus_sw: pwr_sw2 { > + regulator-name = "vbus_sw"; > + interrupts = <IT_OCP_SWOUT 0>; > + interrupt-parent = <&pmic>; > + regulator-active-discharge = <1>; > + }; > + }; > + > + onkey { > + compatible = "st,stpmic1-onkey"; > + interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>; > + interrupt-names = "onkey-falling", "onkey-rising"; > + status = "okay"; > + }; > + > + watchdog { > + compatible = "st,stpmic1-wdt"; > + status = "disabled"; > + }; > + }; > +}; > + > +&iwdg2 { > + timeout-sec = <32>; > + status = "okay"; > +}; > + > +&pwr_regulators { > + vdd-supply = <&vdd_io>; > + vdd_3v3_usbfs-supply = <&vdd_usb>; > +}; > + > +&qspi { > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; > + pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; > + reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; > + #address-cells = <1>; > + #size-cells = <0>; > + status = "okay"; > + > + flash0: spi-flash at 0 { > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-rx-bus-width = <4>; > + spi-max-frequency = <108000000>; > + #address-cells = <1>; > + #size-cells = <1>; > + }; > +}; > + > +&rng1 { > + status = "okay"; > +}; > + > +&rtc { > + status = "okay"; > +}; > diff --git a/doc/board/st/stm32mp1.rst b/doc/board/st/stm32mp1.rst index > 1640bf910e..73195134f1 100644 > --- a/doc/board/st/stm32mp1.rst > +++ b/doc/board/st/stm32mp1.rst > @@ -43,11 +43,11 @@ And the necessary drivers > > Currently the following boards are supported: > > - + stm32mp157a-avenger96.dts > + stm32mp157a-dk1.dts > + stm32mp157c-dk2.dts > + stm32mp157c-ed1.dts > + stm32mp157c-ev1.dts > + + stm32mp15xx-dhcor-avenger96.dts > > Boot Sequences > -------------- > @@ -145,9 +145,9 @@ the supported device trees for STM32MP15x are: > > + stm32mp157c-dk2 > > -+ avenger96: Avenger96 board from Arrow Electronics > ++ avenger96: Avenger96 board from Arrow Electronics based on DH Elec. > ++ DHCOR SoM > > - + stm32mp157a-avenger96 > + + stm32mp15xx-dhcor-avenger96 > > Build Procedure > --------------- > @@ -229,7 +229,7 @@ Build Procedure > > # export KBUILD_OUTPUT=stm32mp15_basic > # make stm32mp15_basic_defconfig > - # make DEVICE_TREE=stm32mp157a-avenger96 all > + # make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 all > > 6. Output files Reference could be removed if support if done by stm32mp15_dhcom_basic_defconfig / dh_stm32mp1 board > -- > 2.25.1
On 3/31/20 4:59 PM, Patrick DELAUNAY wrote: > Hi, Hi, >> It is also highly recommended to configure the board for the DHCOM make >> stm32mp15_dhcom_basic_defconfig make DEVICE_TREE=stm32mp15xx-dhcor- >> avenger96 >> as that permits reusing the board code for the DH components, like accessing and >> reading out the ethernet MAC from EEPROM. > > Recommended or mandatory... Both work, the later provides more complete solution. > For my point of view > > - board/st/stm32mp1 manage the ST board (STM32MP15x-DKX and STM32MP15x-EV1) > Can be used as starting point for customer new board > > - board/dhelectronics/dh_stm32mp1 manage the board based on DHCOR SoM or can be a starting point of SoM user > > For AV96, the first upstream was directly based on ST board, but I agree : it is clearly not a perfect solution (MAC address issue for example) Yes indeed. > => support on this board should be in dh_stm32mp1 board or create a new board AV96 based on it. > > And I need to continue to move in st/common the part common for all the STM32MP157 boards.... [...] >> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index >> 9c593b2c98..2564f790de 100644 >> --- a/arch/arm/dts/Makefile >> +++ b/arch/arm/dts/Makefile >> @@ -884,7 +884,8 @@ dtb-$(CONFIG_STM32MP15x) += \ >> stm32mp157c-dk2.dtb \ >> stm32mp157c-ed1.dtb \ >> stm32mp157c-ev1.dtb \ >> - stm32mp15xx-dhcom-pdk2.dtb >> + stm32mp15xx-dhcom-pdk2.dtb \ >> + stm32mp15xx-dhcor-avenger96.dtb > > Force device tree support for each target ? > Avoid to mix incompatible device tree and defconfig.... > > dtb-$(TARGET_ST_STM32MP15x) += \ > stm32mp157a-dk1.dtb \ > stm32mp157c-dk2.dtb \ > stm32mp157c-ed1.dtb \ > stm32mp157c-ev1.dtb > > dtb-$(TARGET_DH_STM32MP1_PDK2) += \ > stm32mp15xx-dhcom-pdk2.dtb \ > stm32mp15xx-dhcor-avenger96.dtb You probably want to build all DTs for STM32MP1 when building STM32MP1 platforms ? [...] (please, learn to trim the responses in email) >> -&usbphyc { >> - status = "okay"; >> -}; >> - >> -&usbphyc_port0 { >> - phy-supply = <&vdd_usb>; >> -}; >> - >> -&usbphyc_port1 { >> - phy-supply = <&vdd_usb>; >> -}; > > When this file will be removed ? why kept this file..... > I propose to completely remove this file (no device tree for same board) Backward compatibility, I'd keep it in for a release or two. But if removing it is fine, then so be it. >> +/* This is kept for backward compatibility and will be removed */ >> +#include "stm32mp15xx-dhcor-avenger96.dts" > > Missing u-boot file to avoid issue...... > > +#include " stm32mp15xx-dhcor-avenger96-u-boot.dtsi" That's actually included via the avenger96.dts, so should be OK. Although I am not real happy with that. [...] >> Build Procedure >> --------------- >> @@ -229,7 +229,7 @@ Build Procedure >> >> # export KBUILD_OUTPUT=stm32mp15_basic >> # make stm32mp15_basic_defconfig >> - # make DEVICE_TREE=stm32mp157a-avenger96 all >> + # make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 all >> >> 6. Output files > > Reference could be removed if support if done by stm32mp15_dhcom_basic_defconfig / dh_stm32mp1 board See my first question about the defconfig.
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 9c593b2c98..2564f790de 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -884,7 +884,8 @@ dtb-$(CONFIG_STM32MP15x) += \ stm32mp157c-dk2.dtb \ stm32mp157c-ed1.dtb \ stm32mp157c-ev1.dtb \ - stm32mp15xx-dhcom-pdk2.dtb + stm32mp15xx-dhcom-pdk2.dtb \ + stm32mp15xx-dhcor-avenger96.dtb dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb k3-am654-r5-base-board.dtb dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \ diff --git a/arch/arm/dts/stm32mp157a-avenger96.dts b/arch/arm/dts/stm32mp157a-avenger96.dts index 4fa20bc31d..9c165104fb 100644 --- a/arch/arm/dts/stm32mp157a-avenger96.dts +++ b/arch/arm/dts/stm32mp157a-avenger96.dts @@ -4,422 +4,5 @@ * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> */ -/dts-v1/; - -#include "stm32mp157c.dtsi" -#include "stm32mp157xac-pinctrl.dtsi" -#include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/mfd/st,stpmic1.h> - -/ { - model = "Arrow Electronics STM32MP157A Avenger96 board"; - compatible = "arrow,stm32mp157a-avenger96", "st,stm32mp157"; - - aliases { - ethernet0 = ðernet0; - mmc0 = &sdmmc1; - serial0 = &uart4; - serial1 = &uart7; - spi0 = &qspi; - }; - - chosen { - stdout-path = "serial0:115200n8"; - }; - - memory at c0000000 { - device_type = "memory"; - reg = <0xc0000000 0x40000000>; - }; - - led { - compatible = "gpio-leds"; - led1 { - label = "green:user1"; - gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "heartbeat"; - default-state = "off"; - }; - - led2 { - label = "green:user2"; - gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "mmc0"; - default-state = "off"; - }; - - led3 { - label = "green:user3"; - gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "mmc1"; - default-state = "off"; - }; - - led4 { - label = "green:user3"; - gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "none"; - default-state = "off"; - panic-indicator; - }; - - led5 { - label = "yellow:wifi"; - gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "phy0tx"; - default-state = "off"; - }; - - led6 { - label = "blue:bt"; - gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "bluetooth-power"; - default-state = "off"; - }; - }; - - sd_switch: regulator-sd_switch { - compatible = "regulator-gpio"; - regulator-name = "sd_switch"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <2900000>; - regulator-type = "voltage"; - regulator-always-on; - - gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>; - gpios-states = <0>; - states = <1800000 0x1>, - <2900000 0x0>; - }; - - /* Enpirion EP3A8LQI U2 on the DHCOR */ - vdd_io: regulator-buck-io { - compatible = "regulator-fixed"; - regulator-name = "buck-io"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - regulator-boot-on; - vin-supply = <&vdd>; - }; -}; - -ðernet0 { - status = "okay"; - pinctrl-0 = <ðernet0_rgmii_pins_b>; - pinctrl-1 = <ðernet0_rgmii_pins_sleep_b>; - pinctrl-names = "default", "sleep"; - phy-mode = "rgmii"; - max-speed = <1000>; - phy-handle = <&phy0>; - phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; - - mdio0 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "snps,dwmac-mdio"; - phy0: ethernet-phy at 7 { - reg = <7>; - }; - }; -}; - -&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; -}; - -&i2c2 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_pins_b1 &i2c2_pins_b2>; - i2c-scl-rising-time-ns = <185>; - i2c-scl-falling-time-ns = <20>; - status = "okay"; - /delete-property/dmas; - /delete-property/dma-names; -}; - -&i2c4 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c4_pins_a>; - i2c-scl-rising-time-ns = <185>; - i2c-scl-falling-time-ns = <20>; - status = "okay"; - /delete-property/dmas; - /delete-property/dma-names; - - pmic: stpmic at 33 { - compatible = "st,stpmic1"; - reg = <0x33>; - interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; - interrupt-controller; - #interrupt-cells = <2>; - status = "okay"; - - st,main-control-register = <0x04>; - st,vin-control-register = <0xc0>; - st,usb-control-register = <0x30>; - - regulators { - compatible = "st,stpmic1-regulators"; - - ldo1-supply = <&v3v3>; - ldo2-supply = <&v3v3>; - ldo3-supply = <&vdd_ddr>; - ldo5-supply = <&v3v3>; - 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 = <2900000>; - regulator-max-microvolt = <2900000>; - 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>; - }; - - vdda: ldo1 { - regulator-name = "vdda"; - regulator-min-microvolt = <2900000>; - regulator-max-microvolt = <2900000>; - interrupts = <IT_CURLIM_LDO1 0>; - interrupt-parent = <&pmic>; - }; - - v2v8: ldo2 { - regulator-name = "v2v8"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - interrupts = <IT_CURLIM_LDO2 0>; - interrupt-parent = <&pmic>; - }; - - 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>; - interrupt-parent = <&pmic>; - }; - - vdd_sd: ldo5 { - regulator-name = "vdd_sd"; - regulator-min-microvolt = <2900000>; - regulator-max-microvolt = <2900000>; - interrupts = <IT_CURLIM_LDO5 0>; - interrupt-parent = <&pmic>; - regulator-boot-on; - }; - - v1v8: ldo6 { - regulator-name = "v1v8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - interrupts = <IT_CURLIM_LDO6 0>; - interrupt-parent = <&pmic>; - regulator-enable-ramp-delay = <300000>; - }; - - 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>; - interrupt-parent = <&pmic>; - }; - - vbus_otg: pwr_sw1 { - regulator-name = "vbus_otg"; - interrupts = <IT_OCP_OTG 0>; - interrupt-parent = <&pmic>; - regulator-active-discharge = <1>; - }; - - vbus_sw: pwr_sw2 { - regulator-name = "vbus_sw"; - interrupts = <IT_OCP_SWOUT 0>; - interrupt-parent = <&pmic>; - regulator-active-discharge = <1>; - }; - }; - - onkey { - compatible = "st,stpmic1-onkey"; - interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>; - interrupt-names = "onkey-falling", "onkey-rising"; - status = "okay"; - }; - - watchdog { - compatible = "st,stpmic1-wdt"; - status = "disabled"; - }; - }; - - eeprom at 53 { - compatible = "atmel,24c02"; - reg = <0x53>; - pagesize = <16>; - }; -}; - -&iwdg2 { - timeout-sec = <32>; - status = "okay"; -}; - -&pwr_regulators { - vdd-supply = <&vdd_io>; - vdd_3v3_usbfs-supply = <&vdd_usb>; -}; - -&qspi { - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; - reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; - #address-cells = <1>; - #size-cells = <0>; - status = "okay"; - - flash0: spi-flash at 0 { - compatible = "jedec,spi-nor"; - reg = <0>; - spi-rx-bus-width = <4>; - spi-max-frequency = <108000000>; - #address-cells = <1>; - #size-cells = <1>; - }; -}; - -&rng1 { - status = "okay"; -}; - -&rtc { - status = "okay"; -}; - -&sdmmc1 { - pinctrl-names = "default", "opendrain", "sleep"; - pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>; - pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>; - pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>; - cd-gpios = <&gpioi 8 GPIO_ACTIVE_LOW>; - disable-wp; - st,sig-dir; - st,neg-edge; - st,use-ckin; - sd-uhs-sdr104; - bus-width = <4>; - vmmc-supply = <&vdd_sd>; - vqmmc-supply = <&sd_switch>; - status = "okay"; -}; - -&sdmmc2 { - pinctrl-names = "default"; - pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; - non-removable; - no-sd; - no-sdio; - st,neg-edge; - bus-width = <8>; - vmmc-supply = <&v3v3>; - mmc-ddr-3_3v; - status = "okay"; -}; - -&spi2 { - pinctrl-names = "default"; - pinctrl-0 = <&spi2_pins_a>; - status = "okay"; -}; - -&uart4 { - /* On Low speed expansion header */ - label = "LS-UART1"; - pinctrl-names = "default"; - pinctrl-0 = <&uart4_pins_b>; - status = "okay"; -}; - -&uart7 { - /* On Low speed expansion header */ - label = "LS-UART0"; - pinctrl-names = "default"; - pinctrl-0 = <&uart7_pins_a>; - status = "okay"; -}; - -&usbh_ehci { - phys = <&usbphyc_port0>; - phy-names = "usb"; - status = "okay"; -}; - -&usbotg_hs { - dr_mode = "peripheral"; - phys = <&usbphyc_port1 0>; - phy-names = "usb2-phy"; - status = "okay"; -}; - -&usbphyc { - status = "okay"; -}; - -&usbphyc_port0 { - phy-supply = <&vdd_usb>; -}; - -&usbphyc_port1 { - phy-supply = <&vdd_usb>; -}; +/* This is kept for backward compatibility and will be removed */ +#include "stm32mp15xx-dhcor-avenger96.dts" diff --git a/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi b/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi new file mode 100644 index 0000000000..4207a96618 --- /dev/null +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause +/* + * Copyright (C) 2020 Marek Vasut <marex at denx.de> + */ + +#include "stm32mp15xx-dhcor-u-boot.dtsi" + +/ { + aliases { + mmc0 = &sdmmc1; + mmc1 = &sdmmc2; + usb0 = &usbotg_hs; + }; + + config { + u-boot,boot-led = "led1"; + u-boot,error-led = "led4"; + }; +}; + +&sdmmc1 { + u-boot,dm-spl; +}; + +&sdmmc1_b4_pins_a { + u-boot,dm-spl; + pins { + 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_b { + u-boot,dm-spl; + pins { + u-boot,dm-spl; + }; +}; + +&uart4 { + u-boot,dm-pre-reloc; +}; + +&uart4_pins_b { + u-boot,dm-pre-reloc; + pins1 { + u-boot,dm-pre-reloc; + }; + pins2 { + u-boot,dm-pre-reloc; + }; +}; + +&usbotg_hs { + u-boot,force-b-session-valid; + hnp-srp-disable; +}; diff --git a/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts new file mode 100644 index 0000000000..9d859e1d09 --- /dev/null +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts @@ -0,0 +1,211 @@ +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) +/* + * Copyright (C) Linaro Ltd 2019 - All Rights Reserved + * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> + * Copyright (C) 2020 Marek Vasut <marex at denx.de> + */ + +/dts-v1/; + +#include "stm32mp15xx-dhcor.dtsi" +#include "stm32mp15xx-dhcor-avenger96-u-boot.dtsi" + +/ { + model = "Arrow Electronics STM32MP15xx Avenger96 board"; + compatible = "arrow,stm32mp15xx-avenger96", "st,stm32mp15x"; + + aliases { + eeprom0 = &eeprom0; + ethernet0 = ðernet0; + mmc0 = &sdmmc1; + serial0 = &uart4; + serial1 = &uart7; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + led { + compatible = "gpio-leds"; + led1 { + label = "green:user1"; + gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "off"; + }; + + led2 { + label = "green:user2"; + gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "mmc0"; + default-state = "off"; + }; + + led3 { + label = "green:user3"; + gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "mmc1"; + default-state = "off"; + }; + + led4 { + label = "green:user3"; + gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "none"; + default-state = "off"; + panic-indicator; + }; + + led5 { + label = "yellow:wifi"; + gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tx"; + default-state = "off"; + }; + + led6 { + label = "blue:bt"; + gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "bluetooth-power"; + default-state = "off"; + }; + }; + + sd_switch: regulator-sd_switch { + compatible = "regulator-gpio"; + regulator-name = "sd_switch"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2900000>; + regulator-type = "voltage"; + regulator-always-on; + + gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>; + gpios-states = <0>; + states = <1800000 0x1>, + <2900000 0x0>; + }; +}; + +ðernet0 { + status = "okay"; + pinctrl-0 = <ðernet0_rgmii_pins_b>; + pinctrl-1 = <ðernet0_rgmii_pins_sleep_b>; + pinctrl-names = "default", "sleep"; + phy-mode = "rgmii"; + max-speed = <1000>; + phy-handle = <&phy0>; + phy-reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; + + mdio0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + phy0: ethernet-phy at 7 { + reg = <7>; + }; + }; +}; + +&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; +}; + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pins_b1 &i2c2_pins_b2>; + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + status = "okay"; + /delete-property/dmas; + /delete-property/dma-names; +}; + +&i2c4 { + eeprom0: eeprom at 53 { + compatible = "atmel,24c02"; + reg = <0x53>; + pagesize = <16>; + }; +}; + +&sdmmc1 { + pinctrl-names = "default", "opendrain", "sleep"; + pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_b>; + pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_b>; + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_b>; + disable-wp; + st,sig-dir; + st,neg-edge; + st,use-ckin; + bus-width = <4>; + vmmc-supply = <&vdd_sd>; + vqmmc-supply = <&sd_switch>; + status = "okay"; +}; + +&sdmmc2 { + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; + non-removable; + no-sd; + no-sdio; + st,neg-edge; + bus-width = <8>; + vmmc-supply = <&v3v3>; + mmc-ddr-3_3v; + status = "okay"; +}; + +&spi2 { + pinctrl-names = "default"; + pinctrl-0 = <&spi2_pins_a>; + status = "okay"; +}; + +&uart4 { + /* On Low speed expansion header */ + label = "LS-UART1"; + pinctrl-names = "default"; + pinctrl-0 = <&uart4_pins_b>; + status = "okay"; +}; + +&uart7 { + /* On Low speed expansion header */ + label = "LS-UART0"; + pinctrl-names = "default"; + pinctrl-0 = <&uart7_pins_a>; + status = "okay"; +}; + +&usbh_ehci { + phys = <&usbphyc_port0>; + phy-names = "usb"; + status = "okay"; +}; + +&usbotg_hs { + dr_mode = "peripheral"; + phys = <&usbphyc_port1 0>; + phy-names = "usb2-phy"; + status = "okay"; +}; + +&usbphyc { + status = "okay"; +}; + +&usbphyc_port0 { + phy-supply = <&vdd_usb>; +}; + +&usbphyc_port1 { + phy-supply = <&vdd_usb>; +}; diff --git a/arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi b/arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi similarity index 75% rename from arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi rename to arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi index 320132a01e..02dad81b0b 100644 --- a/arch/arm/dts/stm32mp157a-avenger96-u-boot.dtsi +++ b/arch/arm/dts/stm32mp15xx-dhcor-u-boot.dtsi @@ -4,25 +4,13 @@ * * Copyright (C) Linaro Ltd 2019 - All Rights Reserved * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> + * Copyright (C) 2020 Marek Vasut <marex at denx.de> */ #include <dt-bindings/clock/stm32mp1-clksrc.h> #include "stm32mp157-u-boot.dtsi" #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi" -/ { - aliases { - mmc0 = &sdmmc1; - mmc1 = &sdmmc2; - usb0 = &usbotg_hs; - }; - - config { - u-boot,boot-led = "led1"; - u-boot,error-led = "led4"; - }; -}; - &i2c4 { u-boot,dm-pre-reloc; }; @@ -38,6 +26,10 @@ u-boot,dm-pre-reloc; }; +&qspi { + u-boot,dm-spl; +}; + &rcc { st,clksrc = < CLK_MPU_PLL1P @@ -139,67 +131,6 @@ }; }; -&sdmmc1 { - u-boot,dm-spl; -}; - -&sdmmc1_b4_pins_a { - u-boot,dm-spl; - pins { - 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_b { - u-boot,dm-spl; - pins { - u-boot,dm-spl; - }; -}; - -&uart4 { - u-boot,dm-pre-reloc; -}; - -&uart4_pins_b { - u-boot,dm-pre-reloc; - pins1 { - u-boot,dm-pre-reloc; - }; - pins2 { - u-boot,dm-pre-reloc; - }; -}; - -&usbotg_hs { - u-boot,force-b-session-valid; - hnp-srp-disable; -}; - &v3v3 { regulator-always-on; }; diff --git a/arch/arm/dts/stm32mp15xx-dhcor.dtsi b/arch/arm/dts/stm32mp15xx-dhcor.dtsi new file mode 100644 index 0000000000..9d4e92ebb1 --- /dev/null +++ b/arch/arm/dts/stm32mp15xx-dhcor.dtsi @@ -0,0 +1,231 @@ +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) +/* + * Copyright (C) Linaro Ltd 2019 - All Rights Reserved + * Author: Manivannan Sadhasivam <manivannan.sadhasivam at linaro.org> + * Copyright (C) 2020 Marek Vasut <marex at denx.de> + */ +/dts-v1/; + +#include "stm32mp157c.dtsi" +#include "stm32mp157xac-pinctrl.dtsi" +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/mfd/st,stpmic1.h> + +/ { + aliases { + spi0 = &qspi; + }; + + memory at c0000000 { + device_type = "memory"; + reg = <0xc0000000 0x40000000>; + }; + + /* Enpirion EP3A8LQI U2 on the DHCOR */ + vdd_io: regulator-buck-io { + compatible = "regulator-fixed"; + regulator-name = "buck-io"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + vin-supply = <&vdd>; + }; +}; + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_pins_a>; + i2c-scl-rising-time-ns = <185>; + i2c-scl-falling-time-ns = <20>; + status = "okay"; + /delete-property/dmas; + /delete-property/dma-names; + + pmic: stpmic at 33 { + compatible = "st,stpmic1"; + reg = <0x33>; + interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + status = "okay"; + + st,main-control-register = <0x04>; + st,vin-control-register = <0xc0>; + st,usb-control-register = <0x30>; + + regulators { + compatible = "st,stpmic1-regulators"; + + ldo1-supply = <&v3v3>; + ldo2-supply = <&v3v3>; + ldo3-supply = <&vdd_ddr>; + ldo5-supply = <&v3v3>; + 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 = <2900000>; + regulator-max-microvolt = <2900000>; + 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>; + }; + + vdda: ldo1 { + regulator-name = "vdda"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + interrupts = <IT_CURLIM_LDO1 0>; + interrupt-parent = <&pmic>; + }; + + v2v8: ldo2 { + regulator-name = "v2v8"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + interrupts = <IT_CURLIM_LDO2 0>; + interrupt-parent = <&pmic>; + }; + + 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>; + interrupt-parent = <&pmic>; + }; + + vdd_sd: ldo5 { + regulator-name = "vdd_sd"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + interrupts = <IT_CURLIM_LDO5 0>; + interrupt-parent = <&pmic>; + regulator-boot-on; + }; + + v1v8: ldo6 { + regulator-name = "v1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + interrupts = <IT_CURLIM_LDO6 0>; + interrupt-parent = <&pmic>; + regulator-enable-ramp-delay = <300000>; + }; + + 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>; + interrupt-parent = <&pmic>; + }; + + vbus_otg: pwr_sw1 { + regulator-name = "vbus_otg"; + interrupts = <IT_OCP_OTG 0>; + interrupt-parent = <&pmic>; + regulator-active-discharge = <1>; + }; + + vbus_sw: pwr_sw2 { + regulator-name = "vbus_sw"; + interrupts = <IT_OCP_SWOUT 0>; + interrupt-parent = <&pmic>; + regulator-active-discharge = <1>; + }; + }; + + onkey { + compatible = "st,stpmic1-onkey"; + interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 1>; + interrupt-names = "onkey-falling", "onkey-rising"; + status = "okay"; + }; + + watchdog { + compatible = "st,stpmic1-wdt"; + status = "disabled"; + }; + }; +}; + +&iwdg2 { + timeout-sec = <32>; + status = "okay"; +}; + +&pwr_regulators { + vdd-supply = <&vdd_io>; + vdd_3v3_usbfs-supply = <&vdd_usb>; +}; + +&qspi { + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; + pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; + reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + flash0: spi-flash at 0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-rx-bus-width = <4>; + spi-max-frequency = <108000000>; + #address-cells = <1>; + #size-cells = <1>; + }; +}; + +&rng1 { + status = "okay"; +}; + +&rtc { + status = "okay"; +}; diff --git a/doc/board/st/stm32mp1.rst b/doc/board/st/stm32mp1.rst index 1640bf910e..73195134f1 100644 --- a/doc/board/st/stm32mp1.rst +++ b/doc/board/st/stm32mp1.rst @@ -43,11 +43,11 @@ And the necessary drivers Currently the following boards are supported: - + stm32mp157a-avenger96.dts + stm32mp157a-dk1.dts + stm32mp157c-dk2.dts + stm32mp157c-ed1.dts + stm32mp157c-ev1.dts + + stm32mp15xx-dhcor-avenger96.dts Boot Sequences -------------- @@ -145,9 +145,9 @@ the supported device trees for STM32MP15x are: + stm32mp157c-dk2 -+ avenger96: Avenger96 board from Arrow Electronics ++ avenger96: Avenger96 board from Arrow Electronics based on DH Elec. DHCOR SoM - + stm32mp157a-avenger96 + + stm32mp15xx-dhcor-avenger96 Build Procedure --------------- @@ -229,7 +229,7 @@ Build Procedure # export KBUILD_OUTPUT=stm32mp15_basic # make stm32mp15_basic_defconfig - # make DEVICE_TREE=stm32mp157a-avenger96 all + # make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 all 6. Output files
The AV96 is in fact an assembly of DH Electronics DHCOR SoM on top of an AV96 reference board. Split the DTs to reflect that and make sure to DHCOR SoM can be reused on other boards easily. It is also highly recommended to configure the board for the DHCOM make stm32mp15_dhcom_basic_defconfig make DEVICE_TREE=stm32mp15xx-dhcor-avenger96 as that permits reusing the board code for the DH components, like accessing and reading out the ethernet MAC from EEPROM. Signed-off-by: Marek Vasut <marex at denx.de> Cc: Patrick Delaunay <patrick.delaunay at st.com> Cc: Patrice Chotard <patrice.chotard at st.com> --- V2: No change --- arch/arm/dts/Makefile | 3 +- arch/arm/dts/stm32mp157a-avenger96.dts | 421 +----------------- .../stm32mp15xx-dhcor-avenger96-u-boot.dtsi | 80 ++++ arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts | 211 +++++++++ ...oot.dtsi => stm32mp15xx-dhcor-u-boot.dtsi} | 79 +--- arch/arm/dts/stm32mp15xx-dhcor.dtsi | 231 ++++++++++ doc/board/st/stm32mp1.rst | 8 +- 7 files changed, 535 insertions(+), 498 deletions(-) create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-avenger96-u-boot.dtsi create mode 100644 arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts rename arch/arm/dts/{stm32mp157a-avenger96-u-boot.dtsi => stm32mp15xx-dhcor-u-boot.dtsi} (75%) create mode 100644 arch/arm/dts/stm32mp15xx-dhcor.dtsi