// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) /* * Copyright (C) Linaro Ltd 2019 - All Rights Reserved * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> * Copyright (C) 2020 Marek Vasut <marex@denx.de> */ /* Avenger96 uses DHCOR SoM configured for 1V8 IO operation */ #include "stm32mp15xx-dhcor-io1v8.dtsi" / { aliases { ethernet0 = ðernet0; mmc0 = &sdmmc1; serial0 = &uart4; serial1 = &uart7; serial2 = &usart2; spi0 = &qspi; }; /* XTal Q1 */ cec_clock: clk-cec-fixed { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <24000000>; }; chosen { stdout-path = "serial0:115200n8"; }; hdmi-out { compatible = "hdmi-connector"; type = "a"; port { hdmi_con: endpoint { remote-endpoint = <&adv7513_out>; }; }; }; led { compatible = "gpio-leds"; led1 { label = "green:user0"; gpios = <&gpioz 7 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; default-state = "off"; }; led2 { label = "green:user1"; gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>; linux,default-trigger = "mmc0"; default-state = "off"; }; led3 { label = "green:user2"; gpios = <&gpiog 0 GPIO_ACTIVE_HIGH>; linux,default-trigger = "mmc1"; default-state = "off"; }; led4 { label = "green:user3"; gpios = <&gpiog 1 GPIO_ACTIVE_HIGH>; default-state = "off"; panic-indicator; }; }; 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>; }; sound { compatible = "audio-graph-card"; label = "STM32-AV96-HDMI"; dais = <&sai2a_port>; status = "okay"; }; wlan_pwr: regulator-wlan { compatible = "regulator-fixed"; regulator-name = "wl-reg"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpioz 3 GPIO_ACTIVE_HIGH>; enable-active-high; }; }; &adc { pinctrl-names = "default"; pinctrl-0 = <&adc12_ain_pins_b>; vdd-supply = <&vdd>; vdda-supply = <&vdda>; vref-supply = <&vdda>; status = "okay"; }; &adc1 { channel@0 { reg = <0>; st,min-sample-time-ns = <5000>; }; channel@1 { reg = <1>; st,min-sample-time-ns = <5000>; }; channel@6 { reg = <6>; st,min-sample-time-ns = <5000>; }; }; &adc2 { channel@0 { reg = <0>; st,min-sample-time-ns = <5000>; }; channel@1 { reg = <1>; st,min-sample-time-ns = <5000>; }; channel@2 { reg = <2>; st,min-sample-time-ns = <5000>; }; }; &dcmi { pinctrl-names = "default", "sleep"; pinctrl-0 = <&dcmi_pins_c>; pinctrl-1 = <&dcmi_sleep_pins_c>; status = "disabled"; port { dcmi_0: endpoint { remote-endpoint = <&stmipi_2>; bus-type = <5>; bus-width = <8>; pclk-sample = <0>; }; }; }; ðernet0 { status = "okay"; pinctrl-0 = <ðernet0_rgmii_pins_c>; pinctrl-1 = <ðernet0_rgmii_sleep_pins_c>; pinctrl-names = "default", "sleep"; phy-mode = "rgmii"; max-speed = <1000>; phy-handle = <&phy0>; mdio { #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; reset-delay-us = <1000>; reset-post-delay-us = <1000>; phy0: ethernet-phy@7 { reg = <7>; rxc-skew-ps = <1500>; rxdv-skew-ps = <540>; rxd0-skew-ps = <420>; rxd1-skew-ps = <420>; rxd2-skew-ps = <420>; rxd3-skew-ps = <420>; txc-skew-ps = <1440>; txen-skew-ps = <540>; txd0-skew-ps = <420>; txd1-skew-ps = <420>; txd2-skew-ps = <420>; txd3-skew-ps = <420>; }; }; }; &gpioa { gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "AV96-K", "AV96-I", "", "AV96-A", ""; }; &gpiob { gpio-line-names = "", "", "", "", "", "AV96-J", "", "", "", "", "", "AV96-B", "", "AV96-L", "", ""; }; &gpioc { gpio-line-names = "", "", "", "AV96-C", "", "", "", "", "", "", "", "", "", "", "", ""; }; &gpiod { gpio-line-names = "", "", "", "", "", "", "", "", "AV96-D", "", "", "", "", "", "AV96-E", "AV96-F"; }; &gpiof { gpio-line-names = "", "", "", "", "", "", "", "", "", "", "", "", "AV96-G", "AV96-H", "", ""; }; &i2c1 { /* X6 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 { /* X6 I2C2 */ pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins_c>; i2c-scl-rising-time-ns = <185>; i2c-scl-falling-time-ns = <20>; status = "okay"; /delete-property/dmas; /delete-property/dma-names; }; &i2c4 { stmipi: stmipi@14 { compatible = "st,st-mipid02"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&mco1_pins_a>; pinctrl-1 = <&mco1_sleep_pins_a>; reg = <0x14>; clocks = <&rcc CK_MCO1>; clock-names = "xclk"; assigned-clocks = <&rcc CK_MCO1>; assigned-clock-parents = <&rcc CK_HSE>; assigned-clock-rates = <24000000>; VDDE-supply = <&v1v8>; VDDIN-supply = <&v1v8>; reset-gpios = <&gpioz 0 GPIO_ACTIVE_LOW>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; stmipi_0: endpoint { }; }; port@2 { reg = <2>; stmipi_2: endpoint { bus-width = <8>; hsync-active = <0>; vsync-active = <0>; pclk-sample = <0>; remote-endpoint = <&dcmi_0>; }; }; }; }; hdmi-transmitter@3d { compatible = "adi,adv7513"; reg = <0x3d>, <0x4d>, <0x2d>, <0x5d>; reg-names = "main", "edid", "cec", "packet"; clocks = <&cec_clock>; clock-names = "cec"; avdd-supply = <&v3v3>; dvdd-supply = <&v3v3>; pvdd-supply = <&v3v3>; dvdd-3v-supply = <&v3v3>; bgvdd-supply = <&v3v3>; interrupts = <9 IRQ_TYPE_EDGE_FALLING>; interrupt-parent = <&gpiog>; status = "okay"; adi,input-depth = <8>; adi,input-colorspace = "rgb"; adi,input-clock = "1x"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; adv7513_in: endpoint { remote-endpoint = <<dc_ep0_out>; }; }; port@1 { reg = <1>; adv7513_out: endpoint { remote-endpoint = <&hdmi_con>; }; }; port@2 { reg = <2>; adv7513_i2s0: endpoint { remote-endpoint = <&sai2a_endpoint>; }; }; }; }; dh_mac_eeprom: eeprom@53 { compatible = "atmel,24c02"; reg = <0x53>; pagesize = <16>; }; }; <dc { pinctrl-names = "default", "sleep"; pinctrl-0 = <<dc_pins_d>; pinctrl-1 = <<dc_sleep_pins_d>; status = "okay"; port { ltdc_ep0_out: endpoint { remote-endpoint = <&adv7513_in>; }; }; }; &sai2 { clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&sai2a_pins_c>; pinctrl-1 = <&sai2a_sleep_pins_c>; clock-names = "pclk", "x8k", "x11k"; status = "okay"; sai2a: audio-controller@4400b004 { #clock-cells = <0>; dma-names = "tx"; clocks = <&rcc SAI2_K>; clock-names = "sai_ck"; status = "okay"; sai2a_port: port { sai2a_endpoint: endpoint { remote-endpoint = <&adv7513_i2s0>; dai-format = "i2s"; mclk-fs = <256>; }; }; }; }; &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 | GPIO_PULL_UP)>; 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", "opendrain", "sleep"; pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>; pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>; pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>; bus-width = <8>; mmc-ddr-1_8v; no-sd; no-sdio; non-removable; st,neg-edge; vmmc-supply = <&v3v3>; vqmmc-supply = <&vdd_io>; status = "okay"; }; &sdmmc3 { pinctrl-names = "default", "opendrain", "sleep"; pinctrl-0 = <&sdmmc3_b4_pins_b>; pinctrl-1 = <&sdmmc3_b4_od_pins_b>; pinctrl-2 = <&sdmmc3_b4_sleep_pins_b>; broken-cd; non-removable; st,neg-edge; bus-width = <4>; vmmc-supply = <&wlan_pwr>; status = "okay"; #address-cells = <1>; #size-cells = <0>; brcmf: bcrmf@1 { reg = <1>; compatible = "brcm,bcm4329-fmac"; }; }; &spi2 { pinctrl-names = "default"; pinctrl-0 = <&spi2_pins_a>; cs-gpios = <&gpioi 0 0>; status = "disabled"; /delete-property/dmas; /delete-property/dma-names; }; &uart4 { /* On Low speed expansion header */ label = "LS-UART1"; pinctrl-names = "default"; pinctrl-0 = <&uart4_pins_b>; /delete-property/dmas; /delete-property/dma-names; status = "okay"; }; &uart7 { /* On Low speed expansion header */ label = "LS-UART0"; pinctrl-names = "default"; pinctrl-0 = <&uart7_pins_a>; uart-has-rtscts; /delete-property/dmas; /delete-property/dma-names; status = "okay"; }; /* Bluetooth */ &usart2 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&usart2_pins_a>; pinctrl-1 = <&usart2_sleep_pins_a>; uart-has-rtscts; /delete-property/dmas; /delete-property/dma-names; status = "okay"; bluetooth { compatible = "brcm,bcm43438-bt"; max-speed = <3000000>; shutdown-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; }; }; &usbh_ehci { phys = <&usbphyc_port0>; phy-names = "usb"; status = "okay"; }; &usbotg_hs { pinctrl-0 = <&usbotg_hs_pins_a>; pinctrl-names = "default"; phy-names = "usb2-phy"; phys = <&usbphyc_port1 0>; status = "okay"; vbus-supply = <&vbus_otg>; }; &usbphyc { status = "okay"; }; &usbphyc_port0 { phy-supply = <&vdd_usb>; }; &usbphyc_port1 { phy-supply = <&vdd_usb>; };