1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2bb51b535SNeil Armstrong/* 3bb51b535SNeil Armstrong * Copyright (c) 2016 Endless Computers, Inc. 4bb51b535SNeil Armstrong * Author: Carlo Caione <carlo@endlessm.com> 5bb51b535SNeil Armstrong */ 6bb51b535SNeil Armstrong 7bb51b535SNeil Armstrong/* Common DTSI for same Amlogic Q200/Q201 and P230/P231 boards using either 8bb51b535SNeil Armstrong * the pin-compatible S912 (GXM) or S905D (GXL) SoCs. 9bb51b535SNeil Armstrong */ 10bb51b535SNeil Armstrong 113ffeb953SJerome Brunet#include <dt-bindings/sound/meson-aiu.h> 123ffeb953SJerome Brunet 13bb51b535SNeil Armstrong/ { 14bb51b535SNeil Armstrong aliases { 15bb51b535SNeil Armstrong serial0 = &uart_AO; 16059a58fcSJorge Ramirez-Ortiz ethernet0 = ðmac; 17bb51b535SNeil Armstrong }; 18bb51b535SNeil Armstrong 19*f3c35382SJerome Brunet dio2133: analog-amplifier { 20*f3c35382SJerome Brunet compatible = "simple-audio-amplifier"; 21*f3c35382SJerome Brunet sound-name-prefix = "AU2"; 22*f3c35382SJerome Brunet VCC-supply = <&hdmi_5v>; 23*f3c35382SJerome Brunet enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>; 24*f3c35382SJerome Brunet }; 25*f3c35382SJerome Brunet 263ffeb953SJerome Brunet spdif_dit: audio-codec-0 { 273ffeb953SJerome Brunet #sound-dai-cells = <0>; 283ffeb953SJerome Brunet compatible = "linux,spdif-dit"; 293ffeb953SJerome Brunet status = "okay"; 303ffeb953SJerome Brunet sound-name-prefix = "DIT"; 313ffeb953SJerome Brunet }; 323ffeb953SJerome Brunet 33bb51b535SNeil Armstrong chosen { 34bb51b535SNeil Armstrong stdout-path = "serial0:115200n8"; 35bb51b535SNeil Armstrong }; 36bb51b535SNeil Armstrong 37bb51b535SNeil Armstrong memory@0 { 38bb51b535SNeil Armstrong device_type = "memory"; 39bb51b535SNeil Armstrong reg = <0x0 0x0 0x0 0x80000000>; 40bb51b535SNeil Armstrong }; 41bb51b535SNeil Armstrong 42b409f625SNeil Armstrong hdmi_5v: regulator-hdmi-5v { 43b409f625SNeil Armstrong compatible = "regulator-fixed"; 44b409f625SNeil Armstrong 45b409f625SNeil Armstrong regulator-name = "HDMI_5V"; 46b409f625SNeil Armstrong regulator-min-microvolt = <5000000>; 47b409f625SNeil Armstrong regulator-max-microvolt = <5000000>; 48b409f625SNeil Armstrong 49b409f625SNeil Armstrong gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>; 50b409f625SNeil Armstrong enable-active-high; 51b409f625SNeil Armstrong regulator-always-on; 52b409f625SNeil Armstrong }; 53b409f625SNeil Armstrong 5441ed2e0dSMartin Blumenstingl vddio_ao18: regulator-vddio_ao18 { 5541ed2e0dSMartin Blumenstingl compatible = "regulator-fixed"; 5641ed2e0dSMartin Blumenstingl regulator-name = "VDDIO_AO18"; 5741ed2e0dSMartin Blumenstingl regulator-min-microvolt = <1800000>; 5841ed2e0dSMartin Blumenstingl regulator-max-microvolt = <1800000>; 5941ed2e0dSMartin Blumenstingl }; 6041ed2e0dSMartin Blumenstingl 61bb51b535SNeil Armstrong vddio_boot: regulator-vddio_boot { 62bb51b535SNeil Armstrong compatible = "regulator-fixed"; 63bb51b535SNeil Armstrong regulator-name = "VDDIO_BOOT"; 64bb51b535SNeil Armstrong regulator-min-microvolt = <1800000>; 65bb51b535SNeil Armstrong regulator-max-microvolt = <1800000>; 66bb51b535SNeil Armstrong }; 67bb51b535SNeil Armstrong 68bb51b535SNeil Armstrong vddao_3v3: regulator-vddao_3v3 { 69bb51b535SNeil Armstrong compatible = "regulator-fixed"; 70bb51b535SNeil Armstrong regulator-name = "VDDAO_3V3"; 71bb51b535SNeil Armstrong regulator-min-microvolt = <3300000>; 72bb51b535SNeil Armstrong regulator-max-microvolt = <3300000>; 73bb51b535SNeil Armstrong }; 74bb51b535SNeil Armstrong 75bb51b535SNeil Armstrong vcc_3v3: regulator-vcc_3v3 { 76bb51b535SNeil Armstrong compatible = "regulator-fixed"; 77bb51b535SNeil Armstrong regulator-name = "VCC_3V3"; 78bb51b535SNeil Armstrong regulator-min-microvolt = <3300000>; 79bb51b535SNeil Armstrong regulator-max-microvolt = <3300000>; 80bb51b535SNeil Armstrong }; 81bb51b535SNeil Armstrong 82bb51b535SNeil Armstrong emmc_pwrseq: emmc-pwrseq { 83bb51b535SNeil Armstrong compatible = "mmc-pwrseq-emmc"; 84bb51b535SNeil Armstrong reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 85bb51b535SNeil Armstrong }; 86bb51b535SNeil Armstrong 87bb51b535SNeil Armstrong wifi32k: wifi32k { 88bb51b535SNeil Armstrong compatible = "pwm-clock"; 89bb51b535SNeil Armstrong #clock-cells = <0>; 90bb51b535SNeil Armstrong clock-frequency = <32768>; 91bb51b535SNeil Armstrong pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ 92bb51b535SNeil Armstrong }; 93bb51b535SNeil Armstrong 94bb51b535SNeil Armstrong sdio_pwrseq: sdio-pwrseq { 95bb51b535SNeil Armstrong compatible = "mmc-pwrseq-simple"; 96bb51b535SNeil Armstrong reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; 97bb51b535SNeil Armstrong clocks = <&wifi32k>; 98bb51b535SNeil Armstrong clock-names = "ext_clock"; 99bb51b535SNeil Armstrong }; 1006939db7eSNeil Armstrong 1016939db7eSNeil Armstrong cvbs-connector { 1026939db7eSNeil Armstrong compatible = "composite-video-connector"; 1036939db7eSNeil Armstrong 1046939db7eSNeil Armstrong port { 1056939db7eSNeil Armstrong cvbs_connector_in: endpoint { 1066939db7eSNeil Armstrong remote-endpoint = <&cvbs_vdac_out>; 1076939db7eSNeil Armstrong }; 1086939db7eSNeil Armstrong }; 1096939db7eSNeil Armstrong }; 1106939db7eSNeil Armstrong 1116939db7eSNeil Armstrong hdmi-connector { 1126939db7eSNeil Armstrong compatible = "hdmi-connector"; 1136939db7eSNeil Armstrong type = "a"; 1146939db7eSNeil Armstrong 1156939db7eSNeil Armstrong port { 1166939db7eSNeil Armstrong hdmi_connector_in: endpoint { 1176939db7eSNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 1186939db7eSNeil Armstrong }; 1196939db7eSNeil Armstrong }; 1206939db7eSNeil Armstrong }; 1213ffeb953SJerome Brunet 1223ffeb953SJerome Brunet sound { 1233ffeb953SJerome Brunet compatible = "amlogic,gx-sound-card"; 1243ffeb953SJerome Brunet model = "GX-P230-Q200"; 125*f3c35382SJerome Brunet audio-aux-devs = <&dio2133>; 126*f3c35382SJerome Brunet audio-widgets = "Line", "Lineout"; 127*f3c35382SJerome Brunet audio-routing = "AU2 INL", "ACODEC LOLP", 128*f3c35382SJerome Brunet "AU2 INR", "ACODEC LORP", 129*f3c35382SJerome Brunet "AU2 INL", "ACODEC LOLN", 130*f3c35382SJerome Brunet "AU2 INR", "ACODEC LORN", 131*f3c35382SJerome Brunet "Lineout", "AU2 OUTL", 132*f3c35382SJerome Brunet "Lineout", "AU2 OUTR"; 1333ffeb953SJerome Brunet assigned-clocks = <&clkc CLKID_MPLL0>, 1343ffeb953SJerome Brunet <&clkc CLKID_MPLL1>, 1353ffeb953SJerome Brunet <&clkc CLKID_MPLL2>; 1363ffeb953SJerome Brunet assigned-clock-parents = <0>, <0>, <0>; 1373ffeb953SJerome Brunet assigned-clock-rates = <294912000>, 1383ffeb953SJerome Brunet <270950400>, 1393ffeb953SJerome Brunet <393216000>; 1403ffeb953SJerome Brunet status = "okay"; 1413ffeb953SJerome Brunet 1423ffeb953SJerome Brunet dai-link-0 { 1433ffeb953SJerome Brunet sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; 1443ffeb953SJerome Brunet }; 1453ffeb953SJerome Brunet 1463ffeb953SJerome Brunet dai-link-1 { 1473ffeb953SJerome Brunet sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>; 1483ffeb953SJerome Brunet }; 1493ffeb953SJerome Brunet 1503ffeb953SJerome Brunet dai-link-2 { 1513ffeb953SJerome Brunet sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; 1523ffeb953SJerome Brunet dai-format = "i2s"; 1533ffeb953SJerome Brunet mclk-fs = <256>; 1543ffeb953SJerome Brunet 1553ffeb953SJerome Brunet codec-0 { 1563ffeb953SJerome Brunet sound-dai = <&aiu AIU_HDMI CTRL_I2S>; 1573ffeb953SJerome Brunet }; 158*f3c35382SJerome Brunet 159*f3c35382SJerome Brunet codec-1 { 160*f3c35382SJerome Brunet sound-dai = <&aiu AIU_ACODEC CTRL_I2S>; 161*f3c35382SJerome Brunet }; 1623ffeb953SJerome Brunet }; 1633ffeb953SJerome Brunet 1643ffeb953SJerome Brunet dai-link-3 { 1653ffeb953SJerome Brunet sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>; 1663ffeb953SJerome Brunet 1673ffeb953SJerome Brunet codec-0 { 1683ffeb953SJerome Brunet sound-dai = <&spdif_dit>; 1693ffeb953SJerome Brunet }; 1703ffeb953SJerome Brunet }; 1713ffeb953SJerome Brunet 1723ffeb953SJerome Brunet dai-link-4 { 1733ffeb953SJerome Brunet sound-dai = <&aiu AIU_HDMI CTRL_OUT>; 1743ffeb953SJerome Brunet 1753ffeb953SJerome Brunet codec-0 { 1763ffeb953SJerome Brunet sound-dai = <&hdmi_tx>; 1773ffeb953SJerome Brunet }; 1783ffeb953SJerome Brunet }; 179*f3c35382SJerome Brunet 180*f3c35382SJerome Brunet dai-link-5 { 181*f3c35382SJerome Brunet sound-dai = <&aiu AIU_ACODEC CTRL_OUT>; 182*f3c35382SJerome Brunet 183*f3c35382SJerome Brunet codec-0 { 184*f3c35382SJerome Brunet sound-dai = <&acodec>; 1853ffeb953SJerome Brunet }; 1863ffeb953SJerome Brunet }; 187*f3c35382SJerome Brunet }; 188*f3c35382SJerome Brunet}; 189*f3c35382SJerome Brunet 190*f3c35382SJerome Brunet&acodec { 191*f3c35382SJerome Brunet AVDD-supply = <&vddio_ao18>; 192*f3c35382SJerome Brunet status = "okay"; 193*f3c35382SJerome Brunet}; 1943ffeb953SJerome Brunet 1953ffeb953SJerome Brunet&aiu { 1963ffeb953SJerome Brunet status = "okay"; 1973ffeb953SJerome Brunet pinctrl-0 = <&spdif_out_h_pins>; 1983ffeb953SJerome Brunet pinctrl-names = "default"; 1993ffeb953SJerome Brunet 200bb51b535SNeil Armstrong}; 201bb51b535SNeil Armstrong 202b16c71c9SNeil Armstrong&cec_AO { 203b16c71c9SNeil Armstrong status = "okay"; 204b16c71c9SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 205b16c71c9SNeil Armstrong pinctrl-names = "default"; 206b16c71c9SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 207b16c71c9SNeil Armstrong}; 208b16c71c9SNeil Armstrong 209d5463d25SAndreas Färber&cvbs_vdac_port { 210d5463d25SAndreas Färber cvbs_vdac_out: endpoint { 211d5463d25SAndreas Färber remote-endpoint = <&cvbs_connector_in>; 212d5463d25SAndreas Färber }; 213d5463d25SAndreas Färber}; 214d5463d25SAndreas Färber 215d5463d25SAndreas Färberðmac { 216bb51b535SNeil Armstrong status = "okay"; 217d5463d25SAndreas Färber}; 218d5463d25SAndreas Färber 219d5463d25SAndreas Färber&hdmi_tx { 220d5463d25SAndreas Färber status = "okay"; 221d5463d25SAndreas Färber pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 222bb51b535SNeil Armstrong pinctrl-names = "default"; 223e1f2163dSNeil Armstrong hdmi-supply = <&hdmi_5v>; 224bb51b535SNeil Armstrong}; 225bb51b535SNeil Armstrong 226d5463d25SAndreas Färber&hdmi_tx_tmds_port { 227d5463d25SAndreas Färber hdmi_tx_tmds_out: endpoint { 228d5463d25SAndreas Färber remote-endpoint = <&hdmi_connector_in>; 229d5463d25SAndreas Färber }; 230d5463d25SAndreas Färber}; 231d5463d25SAndreas Färber 232bb51b535SNeil Armstrong&ir { 233bb51b535SNeil Armstrong status = "okay"; 234bb51b535SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 235bb51b535SNeil Armstrong pinctrl-names = "default"; 236bb51b535SNeil Armstrong}; 237bb51b535SNeil Armstrong 238d5463d25SAndreas Färber&pwm_ef { 239d5463d25SAndreas Färber status = "okay"; 240d5463d25SAndreas Färber pinctrl-0 = <&pwm_e_pins>; 241d5463d25SAndreas Färber pinctrl-names = "default"; 242d5463d25SAndreas Färber clocks = <&clkc CLKID_FCLK_DIV4>; 243d5463d25SAndreas Färber clock-names = "clkin0"; 244d5463d25SAndreas Färber}; 245d5463d25SAndreas Färber 24641ed2e0dSMartin Blumenstingl&saradc { 24741ed2e0dSMartin Blumenstingl status = "okay"; 24841ed2e0dSMartin Blumenstingl vref-supply = <&vddio_ao18>; 24941ed2e0dSMartin Blumenstingl}; 25041ed2e0dSMartin Blumenstingl 251bb51b535SNeil Armstrong/* Wireless SDIO Module */ 252bb51b535SNeil Armstrong&sd_emmc_a { 253bb51b535SNeil Armstrong status = "okay"; 254bb51b535SNeil Armstrong pinctrl-0 = <&sdio_pins>; 25567e7607fSJerome Brunet pinctrl-1 = <&sdio_clk_gate_pins>; 25667e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 257bb51b535SNeil Armstrong #address-cells = <1>; 258bb51b535SNeil Armstrong #size-cells = <0>; 259bb51b535SNeil Armstrong 260bb51b535SNeil Armstrong bus-width = <4>; 261bb51b535SNeil Armstrong cap-sd-highspeed; 262adc52bf7SJerome Brunet max-frequency = <50000000>; 263bb51b535SNeil Armstrong 264bb51b535SNeil Armstrong non-removable; 265bb51b535SNeil Armstrong disable-wp; 266bb51b535SNeil Armstrong 26786b8eaa2SNeil Armstrong /* WiFi firmware requires power to be kept while in suspend */ 26886b8eaa2SNeil Armstrong keep-power-in-suspend; 26986b8eaa2SNeil Armstrong 270bb51b535SNeil Armstrong mmc-pwrseq = <&sdio_pwrseq>; 271bb51b535SNeil Armstrong 272bb51b535SNeil Armstrong vmmc-supply = <&vddao_3v3>; 273bb51b535SNeil Armstrong vqmmc-supply = <&vddio_boot>; 274bb51b535SNeil Armstrong}; 275bb51b535SNeil Armstrong 276bb51b535SNeil Armstrong/* SD card */ 277bb51b535SNeil Armstrong&sd_emmc_b { 278bb51b535SNeil Armstrong status = "okay"; 279bb51b535SNeil Armstrong pinctrl-0 = <&sdcard_pins>; 28067e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 28167e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 282bb51b535SNeil Armstrong 283bb51b535SNeil Armstrong bus-width = <4>; 284bb51b535SNeil Armstrong cap-sd-highspeed; 285adc52bf7SJerome Brunet max-frequency = <50000000>; 286bb51b535SNeil Armstrong disable-wp; 287bb51b535SNeil Armstrong 288f29200c8SLoys Ollivier cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 289bb51b535SNeil Armstrong 290bb51b535SNeil Armstrong vmmc-supply = <&vddao_3v3>; 291bb51b535SNeil Armstrong vqmmc-supply = <&vddio_boot>; 292bb51b535SNeil Armstrong}; 293bb51b535SNeil Armstrong 294bb51b535SNeil Armstrong/* eMMC */ 295bb51b535SNeil Armstrong&sd_emmc_c { 296bb51b535SNeil Armstrong status = "okay"; 297ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 29867e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 29967e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 300bb51b535SNeil Armstrong 301bb51b535SNeil Armstrong bus-width = <8>; 302bb51b535SNeil Armstrong cap-mmc-highspeed; 303bb51b535SNeil Armstrong max-frequency = <200000000>; 304bb51b535SNeil Armstrong non-removable; 305bb51b535SNeil Armstrong disable-wp; 306bb51b535SNeil Armstrong mmc-ddr-1_8v; 307bb51b535SNeil Armstrong mmc-hs200-1_8v; 308bb51b535SNeil Armstrong 309bb51b535SNeil Armstrong mmc-pwrseq = <&emmc_pwrseq>; 310bb51b535SNeil Armstrong vmmc-supply = <&vcc_3v3>; 311bb51b535SNeil Armstrong vqmmc-supply = <&vddio_boot>; 312bb51b535SNeil Armstrong}; 313bb51b535SNeil Armstrong 314d5463d25SAndreas Färber/* This UART is brought out to the DB9 connector */ 315d5463d25SAndreas Färber&uart_AO { 316bb51b535SNeil Armstrong status = "okay"; 317d5463d25SAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 318bb51b535SNeil Armstrong pinctrl-names = "default"; 3196939db7eSNeil Armstrong}; 320972cd12aSMartin Blumenstingl 3212f9139c2SMartin Blumenstingl&usb { 322972cd12aSMartin Blumenstingl status = "okay"; 3232f9139c2SMartin Blumenstingl dr_mode = "otg"; 324972cd12aSMartin Blumenstingl}; 325