Message ID | 20200326234239.641677-1-marex@denx.de |
---|---|
State | Superseded |
Headers | show |
Series | ARM: dts: stm32: Split AV96 into DHCOR SoM and AV96 board | expand |
Hi Marek On 3/27/20 12:42 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> > --- > arch/arm/dts/Makefile | 3 +- > arch/arm/dts/stm32mp157a-avenger96.dts | 393 +----------------- > .../stm32mp15xx-dhcor-avenger96-u-boot.dtsi | 80 ++++ > arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts | 196 +++++++++ > ...oot.dtsi => stm32mp15xx-dhcor-u-boot.dtsi} | 79 +--- > arch/arm/dts/stm32mp15xx-dhcor.dtsi | 220 ++++++++++ > doc/board/st/stm32mp1.rst | 8 +- > 7 files changed, 509 insertions(+), 470 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 8e36df8787..9c165104fb 100644 > --- a/arch/arm/dts/stm32mp157a-avenger96.dts > +++ b/arch/arm/dts/stm32mp157a-avenger96.dts > @@ -4,394 +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"; > - }; > - }; > -}; > - > -ð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 = <2500000>; > - regulator-max-microvolt = <2500000>; > - 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 = <0>; > - regulator-max-microvolt = <1000000>; > - 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>; > - 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: mx66l51235l 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_a>; > - pinctrl-1 = <&sdmmc1_b4_od_pins_a>; > - pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; > - broken-cd; > - st,sig-dir; > - st,neg-edge; > - st,use-ckin; > - bus-width = <4>; > - vmmc-supply = <&vdd_sd>; > - 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..484f1436b8 > --- /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_a { > + 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_a { > + 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..c912818ac9 > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts > @@ -0,0 +1,196 @@ > +// 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"; > + }; > + }; > +}; > + > +ð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_a>; > + pinctrl-1 = <&sdmmc1_b4_od_pins_a>; > + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; > + broken-cd; > + st,sig-dir; > + st,neg-edge; > + st,use-ckin; > + bus-width = <4>; > + vmmc-supply = <&vdd_sd>; > + 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 8dcd8866e8..70b35e79e5 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_a { > - 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_a { > - 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..ff55505bfc > --- /dev/null > +++ b/arch/arm/dts/stm32mp15xx-dhcor.dtsi > @@ -0,0 +1,220 @@ > +// 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>; > + }; > +}; > + > +&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 = <2500000>; > + regulator-max-microvolt = <2500000>; > + 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 = <0>; > + regulator-max-microvolt = <1000000>; > + 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>; > + 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: mx66l51235l 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 > Reviewed-by: Patrice Chotard <patrice.chotard at st.com> Thanks
On 3/30/20 2:32 PM, Patrice CHOTARD wrote: > Hi Marek Hi, [...] >> 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 >> > > Reviewed-by: Patrice Chotard <patrice.chotard at st.com> > > Thanks It would be nice to get these AV96 fixes into 2020.04 release, because without all these, the board doesn't even boot :-( Do you have a branch with these patches applied, so I can check if something is missing ? btw. please clip the email with [...], so it's easy to find the comments.
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 8e36df8787..9c165104fb 100644 --- a/arch/arm/dts/stm32mp157a-avenger96.dts +++ b/arch/arm/dts/stm32mp157a-avenger96.dts @@ -4,394 +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"; - }; - }; -}; - -ð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 = <2500000>; - regulator-max-microvolt = <2500000>; - 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 = <0>; - regulator-max-microvolt = <1000000>; - 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>; - 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: mx66l51235l 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_a>; - pinctrl-1 = <&sdmmc1_b4_od_pins_a>; - pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; - broken-cd; - st,sig-dir; - st,neg-edge; - st,use-ckin; - bus-width = <4>; - vmmc-supply = <&vdd_sd>; - 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..484f1436b8 --- /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_a { + 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_a { + 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..c912818ac9 --- /dev/null +++ b/arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts @@ -0,0 +1,196 @@ +// 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"; + }; + }; +}; + +ð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_a>; + pinctrl-1 = <&sdmmc1_b4_od_pins_a>; + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; + broken-cd; + st,sig-dir; + st,neg-edge; + st,use-ckin; + bus-width = <4>; + vmmc-supply = <&vdd_sd>; + 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 8dcd8866e8..70b35e79e5 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_a { - 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_a { - 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..ff55505bfc --- /dev/null +++ b/arch/arm/dts/stm32mp15xx-dhcor.dtsi @@ -0,0 +1,220 @@ +// 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>; + }; +}; + +&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 = <2500000>; + regulator-max-microvolt = <2500000>; + 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 = <0>; + regulator-max-microvolt = <1000000>; + 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>; + 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: mx66l51235l 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> --- arch/arm/dts/Makefile | 3 +- arch/arm/dts/stm32mp157a-avenger96.dts | 393 +----------------- .../stm32mp15xx-dhcor-avenger96-u-boot.dtsi | 80 ++++ arch/arm/dts/stm32mp15xx-dhcor-avenger96.dts | 196 +++++++++ ...oot.dtsi => stm32mp15xx-dhcor-u-boot.dtsi} | 79 +--- arch/arm/dts/stm32mp15xx-dhcor.dtsi | 220 ++++++++++ doc/board/st/stm32mp1.rst | 8 +- 7 files changed, 509 insertions(+), 470 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