xref: /openbmc/linux/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
14f26cc1cSNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
24f26cc1cSNeil Armstrong/*
34f26cc1cSNeil Armstrong * Copyright (c) 2019 BayLibre, SAS
44f26cc1cSNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
54f26cc1cSNeil Armstrong * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com>
64f26cc1cSNeil Armstrong */
74f26cc1cSNeil Armstrong
84f26cc1cSNeil Armstrong#include <dt-bindings/input/input.h>
96714f281SChristian Hewitt#include <dt-bindings/leds/common.h>
104f26cc1cSNeil Armstrong#include <dt-bindings/gpio/meson-g12a-gpio.h>
117c9c0624SJerome Brunet#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
124f26cc1cSNeil Armstrong
134f26cc1cSNeil Armstrong/ {
144f26cc1cSNeil Armstrong	aliases {
154f26cc1cSNeil Armstrong		serial0 = &uart_AO;
164f26cc1cSNeil Armstrong		ethernet0 = &ethmac;
17a6077652SChristian Hewitt		rtc0 = &rtc;
18a6077652SChristian Hewitt		rtc1 = &vrtc;
194f26cc1cSNeil Armstrong	};
204f26cc1cSNeil Armstrong
214f26cc1cSNeil Armstrong	chosen {
224f26cc1cSNeil Armstrong		stdout-path = "serial0:115200n8";
234f26cc1cSNeil Armstrong	};
244f26cc1cSNeil Armstrong
254f26cc1cSNeil Armstrong	memory@0 {
264f26cc1cSNeil Armstrong		device_type = "memory";
274f26cc1cSNeil Armstrong		reg = <0x0 0x0 0x0 0x80000000>;
284f26cc1cSNeil Armstrong	};
294f26cc1cSNeil Armstrong
304f26cc1cSNeil Armstrong	adc-keys {
314f26cc1cSNeil Armstrong		compatible = "adc-keys";
324f26cc1cSNeil Armstrong		io-channels = <&saradc 2>;
334f26cc1cSNeil Armstrong		io-channel-names = "buttons";
344f26cc1cSNeil Armstrong		keyup-threshold-microvolt = <1710000>;
354f26cc1cSNeil Armstrong
364f26cc1cSNeil Armstrong		button-function {
374f26cc1cSNeil Armstrong			label = "Function";
384f26cc1cSNeil Armstrong			linux,code = <KEY_FN>;
394f26cc1cSNeil Armstrong			press-threshold-microvolt = <10000>;
404f26cc1cSNeil Armstrong		};
414f26cc1cSNeil Armstrong	};
424f26cc1cSNeil Armstrong
434f26cc1cSNeil Armstrong	leds {
444f26cc1cSNeil Armstrong		compatible = "gpio-leds";
454f26cc1cSNeil Armstrong
46d9421d6cSKevin Hilman		led-white {
476714f281SChristian Hewitt			color = <LED_COLOR_ID_WHITE>;
486714f281SChristian Hewitt			function = LED_FUNCTION_STATUS;
491f9d87d0SJerome Brunet			gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>;
504f26cc1cSNeil Armstrong			linux,default-trigger = "heartbeat";
514f26cc1cSNeil Armstrong		};
524f26cc1cSNeil Armstrong
53d9421d6cSKevin Hilman		led-red {
546714f281SChristian Hewitt			color = <LED_COLOR_ID_RED>;
556714f281SChristian Hewitt			function = LED_FUNCTION_STATUS;
561f9d87d0SJerome Brunet			gpios = <&gpio_expander 5 GPIO_ACTIVE_HIGH>;
574f26cc1cSNeil Armstrong		};
584f26cc1cSNeil Armstrong	};
594f26cc1cSNeil Armstrong
604f26cc1cSNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
614f26cc1cSNeil Armstrong		compatible = "mmc-pwrseq-emmc";
624f26cc1cSNeil Armstrong		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
634f26cc1cSNeil Armstrong	};
644f26cc1cSNeil Armstrong
654f26cc1cSNeil Armstrong	gpio-keys-polled {
664f26cc1cSNeil Armstrong		compatible = "gpio-keys-polled";
674f26cc1cSNeil Armstrong		poll-interval = <100>;
684f26cc1cSNeil Armstrong
694f26cc1cSNeil Armstrong		power-button {
704f26cc1cSNeil Armstrong			label = "power";
714f26cc1cSNeil Armstrong			linux,code = <KEY_POWER>;
724f26cc1cSNeil Armstrong			gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_LOW>;
734f26cc1cSNeil Armstrong		};
744f26cc1cSNeil Armstrong	};
754f26cc1cSNeil Armstrong
764f26cc1cSNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
774f26cc1cSNeil Armstrong		compatible = "mmc-pwrseq-simple";
784f26cc1cSNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
794f26cc1cSNeil Armstrong		clocks = <&wifi32k>;
804f26cc1cSNeil Armstrong		clock-names = "ext_clock";
814f26cc1cSNeil Armstrong	};
824f26cc1cSNeil Armstrong
834f26cc1cSNeil Armstrong	dc_in: regulator-dc_in {
844f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
854f26cc1cSNeil Armstrong		regulator-name = "DC_IN";
864f26cc1cSNeil Armstrong		regulator-min-microvolt = <5000000>;
874f26cc1cSNeil Armstrong		regulator-max-microvolt = <5000000>;
884f26cc1cSNeil Armstrong		regulator-always-on;
894f26cc1cSNeil Armstrong	};
904f26cc1cSNeil Armstrong
914f26cc1cSNeil Armstrong	vcc_5v: regulator-vcc_5v {
924f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
934f26cc1cSNeil Armstrong		regulator-name = "VCC_5V";
944f26cc1cSNeil Armstrong		regulator-min-microvolt = <5000000>;
954f26cc1cSNeil Armstrong		regulator-max-microvolt = <5000000>;
964f26cc1cSNeil Armstrong		vin-supply = <&dc_in>;
974f26cc1cSNeil Armstrong
984f26cc1cSNeil Armstrong		gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
994f26cc1cSNeil Armstrong		enable-active-high;
1004f26cc1cSNeil Armstrong	};
1014f26cc1cSNeil Armstrong
1024f26cc1cSNeil Armstrong	vcc_1v8: regulator-vcc_1v8 {
1034f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
1044f26cc1cSNeil Armstrong		regulator-name = "VCC_1V8";
1054f26cc1cSNeil Armstrong		regulator-min-microvolt = <1800000>;
1064f26cc1cSNeil Armstrong		regulator-max-microvolt = <1800000>;
1074f26cc1cSNeil Armstrong		vin-supply = <&vcc_3v3>;
1084f26cc1cSNeil Armstrong		regulator-always-on;
1094f26cc1cSNeil Armstrong	};
1104f26cc1cSNeil Armstrong
1114f26cc1cSNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
1124f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
1134f26cc1cSNeil Armstrong		regulator-name = "VCC_3V3";
1144f26cc1cSNeil Armstrong		regulator-min-microvolt = <3300000>;
1154f26cc1cSNeil Armstrong		regulator-max-microvolt = <3300000>;
1164f26cc1cSNeil Armstrong		vin-supply = <&vsys_3v3>;
1174f26cc1cSNeil Armstrong		regulator-always-on;
1184f26cc1cSNeil Armstrong		/* FIXME: actually controlled by VDDCPU_B_EN */
1194f26cc1cSNeil Armstrong	};
1204f26cc1cSNeil Armstrong
1214f26cc1cSNeil Armstrong	vddao_1v8: regulator-vddao_1v8 {
1224f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
1234f26cc1cSNeil Armstrong		regulator-name = "VDDIO_AO1V8";
1244f26cc1cSNeil Armstrong		regulator-min-microvolt = <1800000>;
1254f26cc1cSNeil Armstrong		regulator-max-microvolt = <1800000>;
1264f26cc1cSNeil Armstrong		vin-supply = <&vsys_3v3>;
1274f26cc1cSNeil Armstrong		regulator-always-on;
1284f26cc1cSNeil Armstrong	};
1294f26cc1cSNeil Armstrong
1304f26cc1cSNeil Armstrong	emmc_1v8: regulator-emmc_1v8 {
1314f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
1324f26cc1cSNeil Armstrong		regulator-name = "EMMC_AO1V8";
1334f26cc1cSNeil Armstrong		regulator-min-microvolt = <1800000>;
1344f26cc1cSNeil Armstrong		regulator-max-microvolt = <1800000>;
1354f26cc1cSNeil Armstrong		vin-supply = <&vcc_3v3>;
1364f26cc1cSNeil Armstrong		regulator-always-on;
1374f26cc1cSNeil Armstrong	};
1384f26cc1cSNeil Armstrong
1394f26cc1cSNeil Armstrong	vsys_3v3: regulator-vsys_3v3 {
1404f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
1414f26cc1cSNeil Armstrong		regulator-name = "VSYS_3V3";
1424f26cc1cSNeil Armstrong		regulator-min-microvolt = <3300000>;
1434f26cc1cSNeil Armstrong		regulator-max-microvolt = <3300000>;
1444f26cc1cSNeil Armstrong		vin-supply = <&dc_in>;
1454f26cc1cSNeil Armstrong		regulator-always-on;
1464f26cc1cSNeil Armstrong	};
1474f26cc1cSNeil Armstrong
1484f26cc1cSNeil Armstrong	usb_pwr: regulator-usb_pwr {
1494f26cc1cSNeil Armstrong		compatible = "regulator-fixed";
1504f26cc1cSNeil Armstrong		regulator-name = "USB_PWR";
1514f26cc1cSNeil Armstrong		regulator-min-microvolt = <5000000>;
1524f26cc1cSNeil Armstrong		regulator-max-microvolt = <5000000>;
1534f26cc1cSNeil Armstrong		vin-supply = <&vcc_5v>;
1544f26cc1cSNeil Armstrong
1554f26cc1cSNeil Armstrong		gpio = <&gpio GPIOA_6 GPIO_ACTIVE_HIGH>;
1564f26cc1cSNeil Armstrong		enable-active-high;
1574f26cc1cSNeil Armstrong	};
1584f26cc1cSNeil Armstrong
1594f26cc1cSNeil Armstrong	hdmi-connector {
1604f26cc1cSNeil Armstrong		compatible = "hdmi-connector";
1614f26cc1cSNeil Armstrong		type = "a";
1624f26cc1cSNeil Armstrong
1634f26cc1cSNeil Armstrong		port {
1644f26cc1cSNeil Armstrong			hdmi_connector_in: endpoint {
1654f26cc1cSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
1664f26cc1cSNeil Armstrong			};
1674f26cc1cSNeil Armstrong		};
1684f26cc1cSNeil Armstrong	};
1694f26cc1cSNeil Armstrong
1707c9c0624SJerome Brunet
1717c9c0624SJerome Brunet	sound {
1727c9c0624SJerome Brunet		compatible = "amlogic,axg-sound-card";
173933b80edSChristian Hewitt		model = "KHADAS-VIM3";
17443ffb528SJerome Brunet		audio-aux-devs = <&tdmin_a>, <&tdmout_a>;
1757c9c0624SJerome Brunet		audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
1767c9c0624SJerome Brunet				"TDMOUT_A IN 1", "FRDDR_B OUT 0",
1777c9c0624SJerome Brunet				"TDMOUT_A IN 2", "FRDDR_C OUT 0",
17843ffb528SJerome Brunet				"TDM_A Playback", "TDMOUT_A OUT",
17943ffb528SJerome Brunet				"TDMIN_A IN 0", "TDM_A Capture",
18043ffb528SJerome Brunet				"TDMIN_A IN 3", "TDM_A Loopback",
18143ffb528SJerome Brunet				"TODDR_A IN 0", "TDMIN_A OUT",
18243ffb528SJerome Brunet				"TODDR_B IN 0", "TDMIN_A OUT",
18343ffb528SJerome Brunet				"TODDR_C IN 0", "TDMIN_A OUT";
1847c9c0624SJerome Brunet
1857c9c0624SJerome Brunet		assigned-clocks = <&clkc CLKID_MPLL2>,
1867c9c0624SJerome Brunet				  <&clkc CLKID_MPLL0>,
1877c9c0624SJerome Brunet				  <&clkc CLKID_MPLL1>;
1887c9c0624SJerome Brunet		assigned-clock-parents = <0>, <0>, <0>;
1897c9c0624SJerome Brunet		assigned-clock-rates = <294912000>,
1907c9c0624SJerome Brunet				       <270950400>,
1917c9c0624SJerome Brunet				       <393216000>;
1927c9c0624SJerome Brunet
1937c9c0624SJerome Brunet		dai-link-0 {
1947c9c0624SJerome Brunet			sound-dai = <&frddr_a>;
1957c9c0624SJerome Brunet		};
1967c9c0624SJerome Brunet
1977c9c0624SJerome Brunet		dai-link-1 {
1987c9c0624SJerome Brunet			sound-dai = <&frddr_b>;
1997c9c0624SJerome Brunet		};
2007c9c0624SJerome Brunet
2017c9c0624SJerome Brunet		dai-link-2 {
2027c9c0624SJerome Brunet			sound-dai = <&frddr_c>;
2037c9c0624SJerome Brunet		};
2047c9c0624SJerome Brunet
2057c9c0624SJerome Brunet		dai-link-3 {
20643ffb528SJerome Brunet			sound-dai = <&toddr_a>;
20743ffb528SJerome Brunet		};
20843ffb528SJerome Brunet
20943ffb528SJerome Brunet		dai-link-4 {
21043ffb528SJerome Brunet			sound-dai = <&toddr_b>;
21143ffb528SJerome Brunet		};
21243ffb528SJerome Brunet
21343ffb528SJerome Brunet		dai-link-5 {
21443ffb528SJerome Brunet			sound-dai = <&toddr_c>;
21543ffb528SJerome Brunet		};
21643ffb528SJerome Brunet
21743ffb528SJerome Brunet		/* 8ch hdmi interface */
21843ffb528SJerome Brunet		dai-link-6 {
2197c9c0624SJerome Brunet			sound-dai = <&tdmif_a>;
2207c9c0624SJerome Brunet			dai-format = "i2s";
2217c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-0 = <1 1>;
2227c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-1 = <1 1>;
2237c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-2 = <1 1>;
2247c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-3 = <1 1>;
2257c9c0624SJerome Brunet			mclk-fs = <256>;
2267c9c0624SJerome Brunet
2277c9c0624SJerome Brunet			codec {
2287c9c0624SJerome Brunet				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
2297c9c0624SJerome Brunet			};
2307c9c0624SJerome Brunet		};
2317c9c0624SJerome Brunet
2327c9c0624SJerome Brunet		/* hdmi glue */
23343ffb528SJerome Brunet		dai-link-7 {
2347c9c0624SJerome Brunet			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
2357c9c0624SJerome Brunet
2367c9c0624SJerome Brunet			codec {
2377c9c0624SJerome Brunet				sound-dai = <&hdmi_tx>;
2387c9c0624SJerome Brunet			};
2397c9c0624SJerome Brunet		};
2407c9c0624SJerome Brunet	};
2417c9c0624SJerome Brunet
2424f26cc1cSNeil Armstrong	wifi32k: wifi32k {
2434f26cc1cSNeil Armstrong		compatible = "pwm-clock";
2444f26cc1cSNeil Armstrong		#clock-cells = <0>;
2454f26cc1cSNeil Armstrong		clock-frequency = <32768>;
2464f26cc1cSNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
2474f26cc1cSNeil Armstrong	};
2484f26cc1cSNeil Armstrong};
2494f26cc1cSNeil Armstrong
2507c9c0624SJerome Brunet&arb {
2517c9c0624SJerome Brunet	status = "okay";
2527c9c0624SJerome Brunet};
2537c9c0624SJerome Brunet
2547c9c0624SJerome Brunet&clkc_audio {
2557c9c0624SJerome Brunet	status = "okay";
2567c9c0624SJerome Brunet};
2577c9c0624SJerome Brunet
2584f26cc1cSNeil Armstrong&cec_AO {
2594f26cc1cSNeil Armstrong	pinctrl-0 = <&cec_ao_a_h_pins>;
2604f26cc1cSNeil Armstrong	pinctrl-names = "default";
2614f26cc1cSNeil Armstrong	status = "disabled";
2624f26cc1cSNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
2634f26cc1cSNeil Armstrong};
2644f26cc1cSNeil Armstrong
2654f26cc1cSNeil Armstrong&cecb_AO {
2664f26cc1cSNeil Armstrong	pinctrl-0 = <&cec_ao_b_h_pins>;
2674f26cc1cSNeil Armstrong	pinctrl-names = "default";
2684f26cc1cSNeil Armstrong	status = "okay";
2694f26cc1cSNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
2704f26cc1cSNeil Armstrong};
2714f26cc1cSNeil Armstrong
272cabb1f38SNeil Armstrong&cpu_thermal {
273cabb1f38SNeil Armstrong	trips {
274cabb1f38SNeil Armstrong		cpu_active: cpu-active {
275cabb1f38SNeil Armstrong			temperature = <80000>; /* millicelsius */
276cabb1f38SNeil Armstrong			hysteresis = <2000>; /* millicelsius */
277cabb1f38SNeil Armstrong			type = "active";
278cabb1f38SNeil Armstrong		};
279cabb1f38SNeil Armstrong	};
280cabb1f38SNeil Armstrong
281cabb1f38SNeil Armstrong	cooling-maps {
282cabb1f38SNeil Armstrong		map {
283cabb1f38SNeil Armstrong			trip = <&cpu_active>;
284cabb1f38SNeil Armstrong			cooling-device = <&khadas_mcu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
285cabb1f38SNeil Armstrong		};
286cabb1f38SNeil Armstrong	};
287cabb1f38SNeil Armstrong};
288cabb1f38SNeil Armstrong
2894f26cc1cSNeil Armstrong&ext_mdio {
2904f26cc1cSNeil Armstrong	external_phy: ethernet-phy@0 {
2914f26cc1cSNeil Armstrong		/* Realtek RTL8211F (0x001cc916) */
2924f26cc1cSNeil Armstrong		reg = <0>;
2934f26cc1cSNeil Armstrong		max-speed = <1000>;
2944f26cc1cSNeil Armstrong
2954f26cc1cSNeil Armstrong		interrupt-parent = <&gpio_intc>;
2964f26cc1cSNeil Armstrong		/* MAC_INTR on GPIOZ_14 */
2974f26cc1cSNeil Armstrong		interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
2984f26cc1cSNeil Armstrong	};
2994f26cc1cSNeil Armstrong};
3004f26cc1cSNeil Armstrong
3014f26cc1cSNeil Armstrong&ethmac {
3024f26cc1cSNeil Armstrong	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
3034f26cc1cSNeil Armstrong	pinctrl-names = "default";
3044f26cc1cSNeil Armstrong	status = "okay";
3054f26cc1cSNeil Armstrong	phy-mode = "rgmii";
3064f26cc1cSNeil Armstrong	phy-handle = <&external_phy>;
3074f26cc1cSNeil Armstrong	amlogic,tx-delay-ns = <2>;
3084f26cc1cSNeil Armstrong};
3094f26cc1cSNeil Armstrong
3107c9c0624SJerome Brunet&frddr_a {
3117c9c0624SJerome Brunet	status = "okay";
3127c9c0624SJerome Brunet};
3137c9c0624SJerome Brunet
3147c9c0624SJerome Brunet&frddr_b {
3157c9c0624SJerome Brunet	status = "okay";
3167c9c0624SJerome Brunet};
3177c9c0624SJerome Brunet
3187c9c0624SJerome Brunet&frddr_c {
3197c9c0624SJerome Brunet	status = "okay";
3207c9c0624SJerome Brunet};
3217c9c0624SJerome Brunet
3224f26cc1cSNeil Armstrong&hdmi_tx {
3234f26cc1cSNeil Armstrong	status = "okay";
3244f26cc1cSNeil Armstrong	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
3254f26cc1cSNeil Armstrong	pinctrl-names = "default";
3264f26cc1cSNeil Armstrong	hdmi-supply = <&vcc_5v>;
3274f26cc1cSNeil Armstrong};
3284f26cc1cSNeil Armstrong
3294f26cc1cSNeil Armstrong&hdmi_tx_tmds_port {
3304f26cc1cSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
3314f26cc1cSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
3324f26cc1cSNeil Armstrong	};
3334f26cc1cSNeil Armstrong};
3344f26cc1cSNeil Armstrong
3354f26cc1cSNeil Armstrong&i2c_AO {
3364f26cc1cSNeil Armstrong	status = "okay";
3374f26cc1cSNeil Armstrong	pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>;
3384f26cc1cSNeil Armstrong	pinctrl-names = "default";
3394f26cc1cSNeil Armstrong
340cabb1f38SNeil Armstrong	khadas_mcu: system-controller@18 {
341cabb1f38SNeil Armstrong		compatible = "khadas,mcu";
342cabb1f38SNeil Armstrong		reg = <0x18>;
343cabb1f38SNeil Armstrong		#cooling-cells = <2>;
344cabb1f38SNeil Armstrong	};
345cabb1f38SNeil Armstrong
3464f26cc1cSNeil Armstrong	gpio_expander: gpio-controller@20 {
3474f26cc1cSNeil Armstrong		compatible = "ti,tca6408";
3484f26cc1cSNeil Armstrong		reg = <0x20>;
3494f26cc1cSNeil Armstrong		vcc-supply = <&vcc_3v3>;
3504f26cc1cSNeil Armstrong		gpio-controller;
3514f26cc1cSNeil Armstrong		#gpio-cells = <2>;
3524f26cc1cSNeil Armstrong	};
3534f26cc1cSNeil Armstrong
354a6077652SChristian Hewitt	rtc: rtc@51 {
3554f26cc1cSNeil Armstrong		compatible = "haoyu,hym8563";
3564f26cc1cSNeil Armstrong		reg = <0x51>;
3574f26cc1cSNeil Armstrong		#clock-cells = <0>;
3584f26cc1cSNeil Armstrong	};
3594f26cc1cSNeil Armstrong};
3604f26cc1cSNeil Armstrong
3614f26cc1cSNeil Armstrong&ir {
3624f26cc1cSNeil Armstrong	status = "okay";
3634f26cc1cSNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
3644f26cc1cSNeil Armstrong	pinctrl-names = "default";
3654f26cc1cSNeil Armstrong	linux,rc-map-name = "rc-khadas";
3664f26cc1cSNeil Armstrong};
3674f26cc1cSNeil Armstrong
36807a634bfSNeil Armstrong&pcie {
36907a634bfSNeil Armstrong	reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>;
37007a634bfSNeil Armstrong};
37107a634bfSNeil Armstrong
3724f26cc1cSNeil Armstrong&pwm_ef {
3734f26cc1cSNeil Armstrong	status = "okay";
3744f26cc1cSNeil Armstrong	pinctrl-0 = <&pwm_e_pins>;
3754f26cc1cSNeil Armstrong	pinctrl-names = "default";
3764f26cc1cSNeil Armstrong};
3774f26cc1cSNeil Armstrong
3784f26cc1cSNeil Armstrong&saradc {
3794f26cc1cSNeil Armstrong	status = "okay";
3804f26cc1cSNeil Armstrong	vref-supply = <&vddao_1v8>;
3814f26cc1cSNeil Armstrong};
3824f26cc1cSNeil Armstrong
3834f26cc1cSNeil Armstrong/* SDIO */
3844f26cc1cSNeil Armstrong&sd_emmc_a {
3854f26cc1cSNeil Armstrong	status = "okay";
3864f26cc1cSNeil Armstrong	pinctrl-0 = <&sdio_pins>;
3874f26cc1cSNeil Armstrong	pinctrl-1 = <&sdio_clk_gate_pins>;
3884f26cc1cSNeil Armstrong	pinctrl-names = "default", "clk-gate";
3894f26cc1cSNeil Armstrong	#address-cells = <1>;
3904f26cc1cSNeil Armstrong	#size-cells = <0>;
3914f26cc1cSNeil Armstrong
3924f26cc1cSNeil Armstrong	bus-width = <4>;
3934f26cc1cSNeil Armstrong	cap-sd-highspeed;
3944f26cc1cSNeil Armstrong	max-frequency = <100000000>;
3954f26cc1cSNeil Armstrong
3964f26cc1cSNeil Armstrong	non-removable;
3974f26cc1cSNeil Armstrong	disable-wp;
3984f26cc1cSNeil Armstrong
399ec9037c0SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
400ec9037c0SNeil Armstrong	keep-power-in-suspend;
401ec9037c0SNeil Armstrong
4024f26cc1cSNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
4034f26cc1cSNeil Armstrong
4044f26cc1cSNeil Armstrong	vmmc-supply = <&vsys_3v3>;
4054f26cc1cSNeil Armstrong	vqmmc-supply = <&vddao_1v8>;
4064f26cc1cSNeil Armstrong
4074f26cc1cSNeil Armstrong	brcmf: wifi@1 {
4084f26cc1cSNeil Armstrong		reg = <1>;
4094f26cc1cSNeil Armstrong		compatible = "brcm,bcm4329-fmac";
4104f26cc1cSNeil Armstrong	};
4114f26cc1cSNeil Armstrong};
4124f26cc1cSNeil Armstrong
4134f26cc1cSNeil Armstrong/* SD card */
4144f26cc1cSNeil Armstrong&sd_emmc_b {
4154f26cc1cSNeil Armstrong	status = "okay";
4164f26cc1cSNeil Armstrong	pinctrl-0 = <&sdcard_c_pins>;
4174f26cc1cSNeil Armstrong	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
4184f26cc1cSNeil Armstrong	pinctrl-names = "default", "clk-gate";
4194f26cc1cSNeil Armstrong
4204f26cc1cSNeil Armstrong	bus-width = <4>;
4214f26cc1cSNeil Armstrong	cap-sd-highspeed;
4224f26cc1cSNeil Armstrong	max-frequency = <50000000>;
4234f26cc1cSNeil Armstrong	disable-wp;
4244f26cc1cSNeil Armstrong
4254f26cc1cSNeil Armstrong	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
4264f26cc1cSNeil Armstrong	vmmc-supply = <&vsys_3v3>;
4274f26cc1cSNeil Armstrong	vqmmc-supply = <&vsys_3v3>;
4284f26cc1cSNeil Armstrong};
4294f26cc1cSNeil Armstrong
4304f26cc1cSNeil Armstrong/* eMMC */
4314f26cc1cSNeil Armstrong&sd_emmc_c {
4324f26cc1cSNeil Armstrong	status = "okay";
4334d2cb376SNeil Armstrong	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
4344f26cc1cSNeil Armstrong	pinctrl-1 = <&emmc_clk_gate_pins>;
4354f26cc1cSNeil Armstrong	pinctrl-names = "default", "clk-gate";
4364f26cc1cSNeil Armstrong
4374f26cc1cSNeil Armstrong	bus-width = <8>;
4384f26cc1cSNeil Armstrong	cap-mmc-highspeed;
4394f26cc1cSNeil Armstrong	mmc-ddr-1_8v;
4404f26cc1cSNeil Armstrong	mmc-hs200-1_8v;
4414f26cc1cSNeil Armstrong	max-frequency = <200000000>;
4424f26cc1cSNeil Armstrong	disable-wp;
4434f26cc1cSNeil Armstrong
4444f26cc1cSNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
4454f26cc1cSNeil Armstrong	vmmc-supply = <&vcc_3v3>;
4464f26cc1cSNeil Armstrong	vqmmc-supply = <&emmc_1v8>;
4474f26cc1cSNeil Armstrong};
4484f26cc1cSNeil Armstrong
4490e1610e7SNeil Armstrong/*
4500e1610e7SNeil Armstrong * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR CS
4510e1610e7SNeil Armstrong * and eMMC Data 4 to 7 pins.
4520e1610e7SNeil Armstrong * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
4530e1610e7SNeil Armstrong * and change bus-width to 4 then spifc can be enabled.
4540e1610e7SNeil Armstrong */
4550e1610e7SNeil Armstrong&spifc {
4560e1610e7SNeil Armstrong	status = "disabled";
4570e1610e7SNeil Armstrong	pinctrl-0 = <&nor_pins>;
4580e1610e7SNeil Armstrong	pinctrl-names = "default";
4590e1610e7SNeil Armstrong
460*8771ce5eSKrzysztof Kozlowski	w25q128: flash@0 {
4610e1610e7SNeil Armstrong		#address-cells = <1>;
4620e1610e7SNeil Armstrong		#size-cells = <1>;
4630e1610e7SNeil Armstrong		compatible = "winbond,w25q128fw", "jedec,spi-nor";
4640e1610e7SNeil Armstrong		reg = <0>;
4650e1610e7SNeil Armstrong		spi-max-frequency = <104000000>;
4660e1610e7SNeil Armstrong	};
4670e1610e7SNeil Armstrong};
4687c9c0624SJerome Brunet
4697c9c0624SJerome Brunet&tdmif_a {
4707c9c0624SJerome Brunet	status = "okay";
4717c9c0624SJerome Brunet};
4727c9c0624SJerome Brunet
47343ffb528SJerome Brunet&tdmin_a {
47443ffb528SJerome Brunet	status = "okay";
47543ffb528SJerome Brunet};
47643ffb528SJerome Brunet
4777c9c0624SJerome Brunet&tdmout_a {
4787c9c0624SJerome Brunet	status = "okay";
4797c9c0624SJerome Brunet};
4807c9c0624SJerome Brunet
48143ffb528SJerome Brunet&toddr_a {
48243ffb528SJerome Brunet	status = "okay";
48343ffb528SJerome Brunet};
48443ffb528SJerome Brunet
48543ffb528SJerome Brunet&toddr_b {
48643ffb528SJerome Brunet	status = "okay";
48743ffb528SJerome Brunet};
48843ffb528SJerome Brunet
48943ffb528SJerome Brunet&toddr_c {
49043ffb528SJerome Brunet	status = "okay";
49143ffb528SJerome Brunet};
49243ffb528SJerome Brunet
4937c9c0624SJerome Brunet&tohdmitx {
4947c9c0624SJerome Brunet	status = "okay";
4957c9c0624SJerome Brunet};
4967c9c0624SJerome Brunet
4974f26cc1cSNeil Armstrong&uart_A {
4984f26cc1cSNeil Armstrong	status = "okay";
4994f26cc1cSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
5004f26cc1cSNeil Armstrong	pinctrl-names = "default";
5014f26cc1cSNeil Armstrong	uart-has-rtscts;
5024f26cc1cSNeil Armstrong
5034f26cc1cSNeil Armstrong	bluetooth {
5044f26cc1cSNeil Armstrong		compatible = "brcm,bcm43438-bt";
5054f26cc1cSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
5064f26cc1cSNeil Armstrong		max-speed = <2000000>;
5074f26cc1cSNeil Armstrong		clocks = <&wifi32k>;
5084f26cc1cSNeil Armstrong		clock-names = "lpo";
5094f26cc1cSNeil Armstrong	};
5104f26cc1cSNeil Armstrong};
5114f26cc1cSNeil Armstrong
5124f26cc1cSNeil Armstrong&uart_AO {
5134f26cc1cSNeil Armstrong	status = "okay";
5144f26cc1cSNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
5154f26cc1cSNeil Armstrong	pinctrl-names = "default";
5164f26cc1cSNeil Armstrong};
5174f26cc1cSNeil Armstrong
5184f26cc1cSNeil Armstrong&usb2_phy0 {
5194f26cc1cSNeil Armstrong	phy-supply = <&dc_in>;
5204f26cc1cSNeil Armstrong};
5214f26cc1cSNeil Armstrong
5224f26cc1cSNeil Armstrong&usb2_phy1 {
5234f26cc1cSNeil Armstrong	phy-supply = <&usb_pwr>;
5244f26cc1cSNeil Armstrong};
5254f26cc1cSNeil Armstrong
5264f26cc1cSNeil Armstrong&usb3_pcie_phy {
5274f26cc1cSNeil Armstrong	phy-supply = <&usb_pwr>;
5284f26cc1cSNeil Armstrong};
5294f26cc1cSNeil Armstrong
5304f26cc1cSNeil Armstrong&usb {
5314f26cc1cSNeil Armstrong	status = "okay";
5324f26cc1cSNeil Armstrong	dr_mode = "peripheral";
5334f26cc1cSNeil Armstrong};
534