| // 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>; |
| linux,default-trigger = "none"; |
| 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 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| ltdc_ep0_out: endpoint@0 { |
| reg = <0>; |
| 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>; |
| 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>; |
| st,hw-flow-ctrl; |
| /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>; |
| }; |