1700ab8d8SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2700ab8d8SNeil Armstrong/* 3700ab8d8SNeil Armstrong * Copyright (c) 2019 BayLibre, SAS 4700ab8d8SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com> 5700ab8d8SNeil Armstrong */ 6700ab8d8SNeil Armstrong 7700ab8d8SNeil Armstrong/dts-v1/; 8700ab8d8SNeil Armstrong 9700ab8d8SNeil Armstrong#include "meson-sm1.dtsi" 10700ab8d8SNeil Armstrong#include "meson-khadas-vim3.dtsi" 11b8b85d01SChristian Hewitt#include <dt-bindings/sound/meson-g12a-tohdmitx.h> 12700ab8d8SNeil Armstrong 13700ab8d8SNeil Armstrong/ { 14700ab8d8SNeil Armstrong compatible = "khadas,vim3l", "amlogic,sm1"; 15700ab8d8SNeil Armstrong model = "Khadas VIM3L"; 16700ab8d8SNeil Armstrong 17700ab8d8SNeil Armstrong vddcpu: regulator-vddcpu { 18700ab8d8SNeil Armstrong /* 19700ab8d8SNeil Armstrong * Silergy SY8030DEC Regulator. 20700ab8d8SNeil Armstrong */ 21700ab8d8SNeil Armstrong compatible = "pwm-regulator"; 22700ab8d8SNeil Armstrong 23700ab8d8SNeil Armstrong regulator-name = "VDDCPU"; 24700ab8d8SNeil Armstrong regulator-min-microvolt = <690000>; 25700ab8d8SNeil Armstrong regulator-max-microvolt = <1050000>; 26700ab8d8SNeil Armstrong 27700ab8d8SNeil Armstrong vin-supply = <&vsys_3v3>; 28700ab8d8SNeil Armstrong 29700ab8d8SNeil Armstrong pwms = <&pwm_AO_cd 1 1250 0>; 30700ab8d8SNeil Armstrong pwm-dutycycle-range = <100 0>; 31700ab8d8SNeil Armstrong 32700ab8d8SNeil Armstrong regulator-boot-on; 33700ab8d8SNeil Armstrong regulator-always-on; 34700ab8d8SNeil Armstrong }; 35b8b85d01SChristian Hewitt 36b8b85d01SChristian Hewitt sound { 37b8b85d01SChristian Hewitt compatible = "amlogic,axg-sound-card"; 38b8b85d01SChristian Hewitt model = "SM1-KHADAS-VIM3L"; 39b8b85d01SChristian Hewitt audio-aux-devs = <&tdmout_a>; 40b8b85d01SChristian Hewitt audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", 41b8b85d01SChristian Hewitt "TDMOUT_A IN 1", "FRDDR_B OUT 0", 42b8b85d01SChristian Hewitt "TDMOUT_A IN 2", "FRDDR_C OUT 0", 43b8b85d01SChristian Hewitt "TDM_A Playback", "TDMOUT_A OUT"; 44b8b85d01SChristian Hewitt 45b8b85d01SChristian Hewitt assigned-clocks = <&clkc CLKID_MPLL2>, 46b8b85d01SChristian Hewitt <&clkc CLKID_MPLL0>, 47b8b85d01SChristian Hewitt <&clkc CLKID_MPLL1>; 48b8b85d01SChristian Hewitt assigned-clock-parents = <0>, <0>, <0>; 49b8b85d01SChristian Hewitt assigned-clock-rates = <294912000>, 50b8b85d01SChristian Hewitt <270950400>, 51b8b85d01SChristian Hewitt <393216000>; 52b8b85d01SChristian Hewitt status = "okay"; 53b8b85d01SChristian Hewitt 54b8b85d01SChristian Hewitt dai-link-0 { 55b8b85d01SChristian Hewitt sound-dai = <&frddr_a>; 56b8b85d01SChristian Hewitt }; 57b8b85d01SChristian Hewitt 58b8b85d01SChristian Hewitt dai-link-1 { 59b8b85d01SChristian Hewitt sound-dai = <&frddr_b>; 60b8b85d01SChristian Hewitt }; 61b8b85d01SChristian Hewitt 62b8b85d01SChristian Hewitt dai-link-2 { 63b8b85d01SChristian Hewitt sound-dai = <&frddr_c>; 64b8b85d01SChristian Hewitt }; 65b8b85d01SChristian Hewitt 66b8b85d01SChristian Hewitt /* 8ch hdmi interface */ 67b8b85d01SChristian Hewitt dai-link-3 { 68b8b85d01SChristian Hewitt sound-dai = <&tdmif_a>; 69b8b85d01SChristian Hewitt dai-format = "i2s"; 70b8b85d01SChristian Hewitt dai-tdm-slot-tx-mask-0 = <1 1>; 71b8b85d01SChristian Hewitt dai-tdm-slot-tx-mask-1 = <1 1>; 72b8b85d01SChristian Hewitt dai-tdm-slot-tx-mask-2 = <1 1>; 73b8b85d01SChristian Hewitt dai-tdm-slot-tx-mask-3 = <1 1>; 74b8b85d01SChristian Hewitt mclk-fs = <256>; 75b8b85d01SChristian Hewitt 76b8b85d01SChristian Hewitt codec { 77b8b85d01SChristian Hewitt sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; 78b8b85d01SChristian Hewitt }; 79b8b85d01SChristian Hewitt }; 80b8b85d01SChristian Hewitt 81b8b85d01SChristian Hewitt /* hdmi glue */ 82b8b85d01SChristian Hewitt dai-link-4 { 83b8b85d01SChristian Hewitt sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 84b8b85d01SChristian Hewitt 85b8b85d01SChristian Hewitt codec { 86b8b85d01SChristian Hewitt sound-dai = <&hdmi_tx>; 87b8b85d01SChristian Hewitt }; 88b8b85d01SChristian Hewitt }; 89b8b85d01SChristian Hewitt }; 90b8b85d01SChristian Hewitt}; 91b8b85d01SChristian Hewitt 92b8b85d01SChristian Hewitt&arb { 93b8b85d01SChristian Hewitt status = "okay"; 94b8b85d01SChristian Hewitt}; 95b8b85d01SChristian Hewitt 96b8b85d01SChristian Hewitt&clkc_audio { 97b8b85d01SChristian Hewitt status = "okay"; 98700ab8d8SNeil Armstrong}; 99700ab8d8SNeil Armstrong 100700ab8d8SNeil Armstrong&cpu0 { 101700ab8d8SNeil Armstrong cpu-supply = <&vddcpu>; 102700ab8d8SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 103700ab8d8SNeil Armstrong clocks = <&clkc CLKID_CPU_CLK>; 104700ab8d8SNeil Armstrong clock-latency = <50000>; 105700ab8d8SNeil Armstrong}; 106700ab8d8SNeil Armstrong 107700ab8d8SNeil Armstrong&cpu1 { 108700ab8d8SNeil Armstrong cpu-supply = <&vddcpu>; 109700ab8d8SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 110700ab8d8SNeil Armstrong clocks = <&clkc CLKID_CPU1_CLK>; 111700ab8d8SNeil Armstrong clock-latency = <50000>; 112700ab8d8SNeil Armstrong}; 113700ab8d8SNeil Armstrong 114700ab8d8SNeil Armstrong&cpu2 { 115700ab8d8SNeil Armstrong cpu-supply = <&vddcpu>; 116700ab8d8SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 117700ab8d8SNeil Armstrong clocks = <&clkc CLKID_CPU2_CLK>; 118700ab8d8SNeil Armstrong clock-latency = <50000>; 119700ab8d8SNeil Armstrong}; 120700ab8d8SNeil Armstrong 121700ab8d8SNeil Armstrong&cpu3 { 122700ab8d8SNeil Armstrong cpu-supply = <&vddcpu>; 123700ab8d8SNeil Armstrong operating-points-v2 = <&cpu_opp_table>; 124700ab8d8SNeil Armstrong clocks = <&clkc CLKID_CPU3_CLK>; 125700ab8d8SNeil Armstrong clock-latency = <50000>; 126700ab8d8SNeil Armstrong}; 127700ab8d8SNeil Armstrong 128b8b85d01SChristian Hewitt&frddr_a { 129b8b85d01SChristian Hewitt status = "okay"; 130b8b85d01SChristian Hewitt}; 131b8b85d01SChristian Hewitt 132b8b85d01SChristian Hewitt&frddr_b { 133b8b85d01SChristian Hewitt status = "okay"; 134b8b85d01SChristian Hewitt}; 135b8b85d01SChristian Hewitt 136b8b85d01SChristian Hewitt&frddr_c { 137b8b85d01SChristian Hewitt status = "okay"; 138b8b85d01SChristian Hewitt}; 139b8b85d01SChristian Hewitt 140700ab8d8SNeil Armstrong&pwm_AO_cd { 141700ab8d8SNeil Armstrong pinctrl-0 = <&pwm_ao_d_e_pins>; 142700ab8d8SNeil Armstrong pinctrl-names = "default"; 143700ab8d8SNeil Armstrong clocks = <&xtal>; 144700ab8d8SNeil Armstrong clock-names = "clkin1"; 145700ab8d8SNeil Armstrong status = "okay"; 146700ab8d8SNeil Armstrong}; 147ba1f8af7SNeil Armstrong 148ba1f8af7SNeil Armstrong/* 149ba1f8af7SNeil Armstrong * The VIM3 on-board MCU can mux the PCIe/USB3.0 shared differential 150ba1f8af7SNeil Armstrong * lines using a FUSB340TMX USB 3.1 SuperSpeed Data Switch between 151ba1f8af7SNeil Armstrong * an USB3.0 Type A connector and a M.2 Key M slot. 152ba1f8af7SNeil Armstrong * The PHY driving these differential lines is shared between 153ba1f8af7SNeil Armstrong * the USB3.0 controller and the PCIe Controller, thus only 154ba1f8af7SNeil Armstrong * a single controller can use it. 155ba1f8af7SNeil Armstrong * If the MCU is configured to mux the PCIe/USB3.0 differential lines 156ba1f8af7SNeil Armstrong * to the M.2 Key M slot, uncomment the following block to disable 157ba1f8af7SNeil Armstrong * USB3.0 from the USB Complex and enable the PCIe controller. 158ba1f8af7SNeil Armstrong * The End User is not expected to uncomment the following except for 159ba1f8af7SNeil Armstrong * testing purposes, but instead rely on the firmware/bootloader to 160ba1f8af7SNeil Armstrong * update these nodes accordingly if PCIe mode is selected by the MCU. 161ba1f8af7SNeil Armstrong */ 162ba1f8af7SNeil Armstrong/* 163ba1f8af7SNeil Armstrong&pcie { 164ba1f8af7SNeil Armstrong status = "okay"; 165ba1f8af7SNeil Armstrong}; 166ba1f8af7SNeil Armstrong 167ba1f8af7SNeil Armstrong&usb { 168ba1f8af7SNeil Armstrong phys = <&usb2_phy0>, <&usb2_phy1>; 169ba1f8af7SNeil Armstrong phy-names = "usb2-phy0", "usb2-phy1"; 170ba1f8af7SNeil Armstrong}; 171ba1f8af7SNeil Armstrong */ 172b8b85d01SChristian Hewitt 173b8b85d01SChristian Hewitt&tdmif_a { 174b8b85d01SChristian Hewitt status = "okay"; 175b8b85d01SChristian Hewitt}; 176b8b85d01SChristian Hewitt 177b8b85d01SChristian Hewitt&tdmout_a { 178b8b85d01SChristian Hewitt status = "okay"; 179b8b85d01SChristian Hewitt}; 180b8b85d01SChristian Hewitt 181b8b85d01SChristian Hewitt&tohdmitx { 182b8b85d01SChristian Hewitt status = "okay"; 183b8b85d01SChristian Hewitt}; 184