xref: /openbmc/linux/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi (revision 43ffb52862c631ebdf7ec8a12fe826f5d531c88e)
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";
174*43ffb528SJerome 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",
178*43ffb528SJerome Brunet				"TDM_A Playback", "TDMOUT_A OUT",
179*43ffb528SJerome Brunet				"TDMIN_A IN 0", "TDM_A Capture",
180*43ffb528SJerome Brunet				"TDMIN_A IN 3", "TDM_A Loopback",
181*43ffb528SJerome Brunet				"TODDR_A IN 0", "TDMIN_A OUT",
182*43ffb528SJerome Brunet				"TODDR_B IN 0", "TDMIN_A OUT",
183*43ffb528SJerome 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		status = "okay";
1937c9c0624SJerome Brunet
1947c9c0624SJerome Brunet		dai-link-0 {
1957c9c0624SJerome Brunet			sound-dai = <&frddr_a>;
1967c9c0624SJerome Brunet		};
1977c9c0624SJerome Brunet
1987c9c0624SJerome Brunet		dai-link-1 {
1997c9c0624SJerome Brunet			sound-dai = <&frddr_b>;
2007c9c0624SJerome Brunet		};
2017c9c0624SJerome Brunet
2027c9c0624SJerome Brunet		dai-link-2 {
2037c9c0624SJerome Brunet			sound-dai = <&frddr_c>;
2047c9c0624SJerome Brunet		};
2057c9c0624SJerome Brunet
2067c9c0624SJerome Brunet		dai-link-3 {
207*43ffb528SJerome Brunet			sound-dai = <&toddr_a>;
208*43ffb528SJerome Brunet		};
209*43ffb528SJerome Brunet
210*43ffb528SJerome Brunet		dai-link-4 {
211*43ffb528SJerome Brunet			sound-dai = <&toddr_b>;
212*43ffb528SJerome Brunet		};
213*43ffb528SJerome Brunet
214*43ffb528SJerome Brunet		dai-link-5 {
215*43ffb528SJerome Brunet			sound-dai = <&toddr_c>;
216*43ffb528SJerome Brunet		};
217*43ffb528SJerome Brunet
218*43ffb528SJerome Brunet		/* 8ch hdmi interface */
219*43ffb528SJerome Brunet		dai-link-6 {
2207c9c0624SJerome Brunet			sound-dai = <&tdmif_a>;
2217c9c0624SJerome Brunet			dai-format = "i2s";
2227c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-0 = <1 1>;
2237c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-1 = <1 1>;
2247c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-2 = <1 1>;
2257c9c0624SJerome Brunet			dai-tdm-slot-tx-mask-3 = <1 1>;
2267c9c0624SJerome Brunet			mclk-fs = <256>;
2277c9c0624SJerome Brunet
2287c9c0624SJerome Brunet			codec {
2297c9c0624SJerome Brunet				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
2307c9c0624SJerome Brunet			};
2317c9c0624SJerome Brunet		};
2327c9c0624SJerome Brunet
2337c9c0624SJerome Brunet		/* hdmi glue */
234*43ffb528SJerome Brunet		dai-link-7 {
2357c9c0624SJerome Brunet			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
2367c9c0624SJerome Brunet
2377c9c0624SJerome Brunet			codec {
2387c9c0624SJerome Brunet				sound-dai = <&hdmi_tx>;
2397c9c0624SJerome Brunet			};
2407c9c0624SJerome Brunet		};
2417c9c0624SJerome Brunet	};
2427c9c0624SJerome Brunet
2434f26cc1cSNeil Armstrong	wifi32k: wifi32k {
2444f26cc1cSNeil Armstrong		compatible = "pwm-clock";
2454f26cc1cSNeil Armstrong		#clock-cells = <0>;
2464f26cc1cSNeil Armstrong		clock-frequency = <32768>;
2474f26cc1cSNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
2484f26cc1cSNeil Armstrong	};
2494f26cc1cSNeil Armstrong};
2504f26cc1cSNeil Armstrong
2517c9c0624SJerome Brunet&arb {
2527c9c0624SJerome Brunet	status = "okay";
2537c9c0624SJerome Brunet};
2547c9c0624SJerome Brunet
2557c9c0624SJerome Brunet&clkc_audio {
2567c9c0624SJerome Brunet	status = "okay";
2577c9c0624SJerome Brunet};
2587c9c0624SJerome Brunet
2594f26cc1cSNeil Armstrong&cec_AO {
2604f26cc1cSNeil Armstrong	pinctrl-0 = <&cec_ao_a_h_pins>;
2614f26cc1cSNeil Armstrong	pinctrl-names = "default";
2624f26cc1cSNeil Armstrong	status = "disabled";
2634f26cc1cSNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
2644f26cc1cSNeil Armstrong};
2654f26cc1cSNeil Armstrong
2664f26cc1cSNeil Armstrong&cecb_AO {
2674f26cc1cSNeil Armstrong	pinctrl-0 = <&cec_ao_b_h_pins>;
2684f26cc1cSNeil Armstrong	pinctrl-names = "default";
2694f26cc1cSNeil Armstrong	status = "okay";
2704f26cc1cSNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
2714f26cc1cSNeil Armstrong};
2724f26cc1cSNeil Armstrong
273cabb1f38SNeil Armstrong&cpu_thermal {
274cabb1f38SNeil Armstrong	trips {
275cabb1f38SNeil Armstrong		cpu_active: cpu-active {
276cabb1f38SNeil Armstrong			temperature = <80000>; /* millicelsius */
277cabb1f38SNeil Armstrong			hysteresis = <2000>; /* millicelsius */
278cabb1f38SNeil Armstrong			type = "active";
279cabb1f38SNeil Armstrong		};
280cabb1f38SNeil Armstrong	};
281cabb1f38SNeil Armstrong
282cabb1f38SNeil Armstrong	cooling-maps {
283cabb1f38SNeil Armstrong		map {
284cabb1f38SNeil Armstrong			trip = <&cpu_active>;
285cabb1f38SNeil Armstrong			cooling-device = <&khadas_mcu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
286cabb1f38SNeil Armstrong		};
287cabb1f38SNeil Armstrong	};
288cabb1f38SNeil Armstrong};
289cabb1f38SNeil Armstrong
2904f26cc1cSNeil Armstrong&ext_mdio {
2914f26cc1cSNeil Armstrong	external_phy: ethernet-phy@0 {
2924f26cc1cSNeil Armstrong		/* Realtek RTL8211F (0x001cc916) */
2934f26cc1cSNeil Armstrong		reg = <0>;
2944f26cc1cSNeil Armstrong		max-speed = <1000>;
2954f26cc1cSNeil Armstrong
2964f26cc1cSNeil Armstrong		interrupt-parent = <&gpio_intc>;
2974f26cc1cSNeil Armstrong		/* MAC_INTR on GPIOZ_14 */
2984f26cc1cSNeil Armstrong		interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
2994f26cc1cSNeil Armstrong	};
3004f26cc1cSNeil Armstrong};
3014f26cc1cSNeil Armstrong
3024f26cc1cSNeil Armstrong&ethmac {
3034f26cc1cSNeil Armstrong	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
3044f26cc1cSNeil Armstrong	pinctrl-names = "default";
3054f26cc1cSNeil Armstrong	status = "okay";
3064f26cc1cSNeil Armstrong	phy-mode = "rgmii";
3074f26cc1cSNeil Armstrong	phy-handle = <&external_phy>;
3084f26cc1cSNeil Armstrong	amlogic,tx-delay-ns = <2>;
3094f26cc1cSNeil Armstrong};
3104f26cc1cSNeil Armstrong
3117c9c0624SJerome Brunet&frddr_a {
3127c9c0624SJerome Brunet	status = "okay";
3137c9c0624SJerome Brunet};
3147c9c0624SJerome Brunet
3157c9c0624SJerome Brunet&frddr_b {
3167c9c0624SJerome Brunet	status = "okay";
3177c9c0624SJerome Brunet};
3187c9c0624SJerome Brunet
3197c9c0624SJerome Brunet&frddr_c {
3207c9c0624SJerome Brunet	status = "okay";
3217c9c0624SJerome Brunet};
3227c9c0624SJerome Brunet
3234f26cc1cSNeil Armstrong&hdmi_tx {
3244f26cc1cSNeil Armstrong	status = "okay";
3254f26cc1cSNeil Armstrong	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
3264f26cc1cSNeil Armstrong	pinctrl-names = "default";
3274f26cc1cSNeil Armstrong	hdmi-supply = <&vcc_5v>;
3284f26cc1cSNeil Armstrong};
3294f26cc1cSNeil Armstrong
3304f26cc1cSNeil Armstrong&hdmi_tx_tmds_port {
3314f26cc1cSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
3324f26cc1cSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
3334f26cc1cSNeil Armstrong	};
3344f26cc1cSNeil Armstrong};
3354f26cc1cSNeil Armstrong
3364f26cc1cSNeil Armstrong&i2c_AO {
3374f26cc1cSNeil Armstrong	status = "okay";
3384f26cc1cSNeil Armstrong	pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>;
3394f26cc1cSNeil Armstrong	pinctrl-names = "default";
3404f26cc1cSNeil Armstrong
341cabb1f38SNeil Armstrong	khadas_mcu: system-controller@18 {
342cabb1f38SNeil Armstrong		compatible = "khadas,mcu";
343cabb1f38SNeil Armstrong		reg = <0x18>;
344cabb1f38SNeil Armstrong		#cooling-cells = <2>;
345cabb1f38SNeil Armstrong	};
346cabb1f38SNeil Armstrong
3474f26cc1cSNeil Armstrong	gpio_expander: gpio-controller@20 {
3484f26cc1cSNeil Armstrong		compatible = "ti,tca6408";
3494f26cc1cSNeil Armstrong		reg = <0x20>;
3504f26cc1cSNeil Armstrong		vcc-supply = <&vcc_3v3>;
3514f26cc1cSNeil Armstrong		gpio-controller;
3524f26cc1cSNeil Armstrong		#gpio-cells = <2>;
3534f26cc1cSNeil Armstrong	};
3544f26cc1cSNeil Armstrong
355a6077652SChristian Hewitt	rtc: rtc@51 {
3564f26cc1cSNeil Armstrong		compatible = "haoyu,hym8563";
3574f26cc1cSNeil Armstrong		reg = <0x51>;
3584f26cc1cSNeil Armstrong		#clock-cells = <0>;
3594f26cc1cSNeil Armstrong	};
3604f26cc1cSNeil Armstrong};
3614f26cc1cSNeil Armstrong
3624f26cc1cSNeil Armstrong&ir {
3634f26cc1cSNeil Armstrong	status = "okay";
3644f26cc1cSNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
3654f26cc1cSNeil Armstrong	pinctrl-names = "default";
3664f26cc1cSNeil Armstrong	linux,rc-map-name = "rc-khadas";
3674f26cc1cSNeil Armstrong};
3684f26cc1cSNeil Armstrong
36907a634bfSNeil Armstrong&pcie {
37007a634bfSNeil Armstrong	reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>;
37107a634bfSNeil Armstrong};
37207a634bfSNeil Armstrong
3734f26cc1cSNeil Armstrong&pwm_ef {
3744f26cc1cSNeil Armstrong	status = "okay";
3754f26cc1cSNeil Armstrong	pinctrl-0 = <&pwm_e_pins>;
3764f26cc1cSNeil Armstrong	pinctrl-names = "default";
3774f26cc1cSNeil Armstrong};
3784f26cc1cSNeil Armstrong
3794f26cc1cSNeil Armstrong&saradc {
3804f26cc1cSNeil Armstrong	status = "okay";
3814f26cc1cSNeil Armstrong	vref-supply = <&vddao_1v8>;
3824f26cc1cSNeil Armstrong};
3834f26cc1cSNeil Armstrong
3844f26cc1cSNeil Armstrong/* SDIO */
3854f26cc1cSNeil Armstrong&sd_emmc_a {
3864f26cc1cSNeil Armstrong	status = "okay";
3874f26cc1cSNeil Armstrong	pinctrl-0 = <&sdio_pins>;
3884f26cc1cSNeil Armstrong	pinctrl-1 = <&sdio_clk_gate_pins>;
3894f26cc1cSNeil Armstrong	pinctrl-names = "default", "clk-gate";
3904f26cc1cSNeil Armstrong	#address-cells = <1>;
3914f26cc1cSNeil Armstrong	#size-cells = <0>;
3924f26cc1cSNeil Armstrong
3934f26cc1cSNeil Armstrong	bus-width = <4>;
3944f26cc1cSNeil Armstrong	cap-sd-highspeed;
3954f26cc1cSNeil Armstrong	max-frequency = <100000000>;
3964f26cc1cSNeil Armstrong
3974f26cc1cSNeil Armstrong	non-removable;
3984f26cc1cSNeil Armstrong	disable-wp;
3994f26cc1cSNeil Armstrong
400ec9037c0SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
401ec9037c0SNeil Armstrong	keep-power-in-suspend;
402ec9037c0SNeil Armstrong
4034f26cc1cSNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
4044f26cc1cSNeil Armstrong
4054f26cc1cSNeil Armstrong	vmmc-supply = <&vsys_3v3>;
4064f26cc1cSNeil Armstrong	vqmmc-supply = <&vddao_1v8>;
4074f26cc1cSNeil Armstrong
4084f26cc1cSNeil Armstrong	brcmf: wifi@1 {
4094f26cc1cSNeil Armstrong		reg = <1>;
4104f26cc1cSNeil Armstrong		compatible = "brcm,bcm4329-fmac";
4114f26cc1cSNeil Armstrong	};
4124f26cc1cSNeil Armstrong};
4134f26cc1cSNeil Armstrong
4144f26cc1cSNeil Armstrong/* SD card */
4154f26cc1cSNeil Armstrong&sd_emmc_b {
4164f26cc1cSNeil Armstrong	status = "okay";
4174f26cc1cSNeil Armstrong	pinctrl-0 = <&sdcard_c_pins>;
4184f26cc1cSNeil Armstrong	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
4194f26cc1cSNeil Armstrong	pinctrl-names = "default", "clk-gate";
4204f26cc1cSNeil Armstrong
4214f26cc1cSNeil Armstrong	bus-width = <4>;
4224f26cc1cSNeil Armstrong	cap-sd-highspeed;
4234f26cc1cSNeil Armstrong	max-frequency = <50000000>;
4244f26cc1cSNeil Armstrong	disable-wp;
4254f26cc1cSNeil Armstrong
4264f26cc1cSNeil Armstrong	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
4274f26cc1cSNeil Armstrong	vmmc-supply = <&vsys_3v3>;
4284f26cc1cSNeil Armstrong	vqmmc-supply = <&vsys_3v3>;
4294f26cc1cSNeil Armstrong};
4304f26cc1cSNeil Armstrong
4314f26cc1cSNeil Armstrong/* eMMC */
4324f26cc1cSNeil Armstrong&sd_emmc_c {
4334f26cc1cSNeil Armstrong	status = "okay";
4344d2cb376SNeil Armstrong	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
4354f26cc1cSNeil Armstrong	pinctrl-1 = <&emmc_clk_gate_pins>;
4364f26cc1cSNeil Armstrong	pinctrl-names = "default", "clk-gate";
4374f26cc1cSNeil Armstrong
4384f26cc1cSNeil Armstrong	bus-width = <8>;
4394f26cc1cSNeil Armstrong	cap-mmc-highspeed;
4404f26cc1cSNeil Armstrong	mmc-ddr-1_8v;
4414f26cc1cSNeil Armstrong	mmc-hs200-1_8v;
4424f26cc1cSNeil Armstrong	max-frequency = <200000000>;
4434f26cc1cSNeil Armstrong	disable-wp;
4444f26cc1cSNeil Armstrong
4454f26cc1cSNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
4464f26cc1cSNeil Armstrong	vmmc-supply = <&vcc_3v3>;
4474f26cc1cSNeil Armstrong	vqmmc-supply = <&emmc_1v8>;
4484f26cc1cSNeil Armstrong};
4494f26cc1cSNeil Armstrong
4500e1610e7SNeil Armstrong/*
4510e1610e7SNeil Armstrong * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR CS
4520e1610e7SNeil Armstrong * and eMMC Data 4 to 7 pins.
4530e1610e7SNeil Armstrong * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
4540e1610e7SNeil Armstrong * and change bus-width to 4 then spifc can be enabled.
4550e1610e7SNeil Armstrong */
4560e1610e7SNeil Armstrong&spifc {
4570e1610e7SNeil Armstrong	status = "disabled";
4580e1610e7SNeil Armstrong	pinctrl-0 = <&nor_pins>;
4590e1610e7SNeil Armstrong	pinctrl-names = "default";
4600e1610e7SNeil Armstrong
461d57c69caSChristian Hewitt	w25q128: spi-flash@0 {
4620e1610e7SNeil Armstrong		#address-cells = <1>;
4630e1610e7SNeil Armstrong		#size-cells = <1>;
4640e1610e7SNeil Armstrong		compatible = "winbond,w25q128fw", "jedec,spi-nor";
4650e1610e7SNeil Armstrong		reg = <0>;
4660e1610e7SNeil Armstrong		spi-max-frequency = <104000000>;
4670e1610e7SNeil Armstrong	};
4680e1610e7SNeil Armstrong};
4697c9c0624SJerome Brunet
4707c9c0624SJerome Brunet&tdmif_a {
4717c9c0624SJerome Brunet	status = "okay";
4727c9c0624SJerome Brunet};
4737c9c0624SJerome Brunet
474*43ffb528SJerome Brunet&tdmin_a {
475*43ffb528SJerome Brunet	status = "okay";
476*43ffb528SJerome Brunet};
477*43ffb528SJerome Brunet
4787c9c0624SJerome Brunet&tdmout_a {
4797c9c0624SJerome Brunet	status = "okay";
4807c9c0624SJerome Brunet};
4817c9c0624SJerome Brunet
482*43ffb528SJerome Brunet&toddr_a {
483*43ffb528SJerome Brunet	status = "okay";
484*43ffb528SJerome Brunet};
485*43ffb528SJerome Brunet
486*43ffb528SJerome Brunet&toddr_b {
487*43ffb528SJerome Brunet	status = "okay";
488*43ffb528SJerome Brunet};
489*43ffb528SJerome Brunet
490*43ffb528SJerome Brunet&toddr_c {
491*43ffb528SJerome Brunet	status = "okay";
492*43ffb528SJerome Brunet};
493*43ffb528SJerome Brunet
4947c9c0624SJerome Brunet&tohdmitx {
4957c9c0624SJerome Brunet	status = "okay";
4967c9c0624SJerome Brunet};
4977c9c0624SJerome Brunet
4984f26cc1cSNeil Armstrong&uart_A {
4994f26cc1cSNeil Armstrong	status = "okay";
5004f26cc1cSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
5014f26cc1cSNeil Armstrong	pinctrl-names = "default";
5024f26cc1cSNeil Armstrong	uart-has-rtscts;
5034f26cc1cSNeil Armstrong
5044f26cc1cSNeil Armstrong	bluetooth {
5054f26cc1cSNeil Armstrong		compatible = "brcm,bcm43438-bt";
5064f26cc1cSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
5074f26cc1cSNeil Armstrong		max-speed = <2000000>;
5084f26cc1cSNeil Armstrong		clocks = <&wifi32k>;
5094f26cc1cSNeil Armstrong		clock-names = "lpo";
5104f26cc1cSNeil Armstrong	};
5114f26cc1cSNeil Armstrong};
5124f26cc1cSNeil Armstrong
5134f26cc1cSNeil Armstrong&uart_AO {
5144f26cc1cSNeil Armstrong	status = "okay";
5154f26cc1cSNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
5164f26cc1cSNeil Armstrong	pinctrl-names = "default";
5174f26cc1cSNeil Armstrong};
5184f26cc1cSNeil Armstrong
5194f26cc1cSNeil Armstrong&usb2_phy0 {
5204f26cc1cSNeil Armstrong	phy-supply = <&dc_in>;
5214f26cc1cSNeil Armstrong};
5224f26cc1cSNeil Armstrong
5234f26cc1cSNeil Armstrong&usb2_phy1 {
5244f26cc1cSNeil Armstrong	phy-supply = <&usb_pwr>;
5254f26cc1cSNeil Armstrong};
5264f26cc1cSNeil Armstrong
5274f26cc1cSNeil Armstrong&usb3_pcie_phy {
5284f26cc1cSNeil Armstrong	phy-supply = <&usb_pwr>;
5294f26cc1cSNeil Armstrong};
5304f26cc1cSNeil Armstrong
5314f26cc1cSNeil Armstrong&usb {
5324f26cc1cSNeil Armstrong	status = "okay";
5334f26cc1cSNeil Armstrong	dr_mode = "peripheral";
5344f26cc1cSNeil Armstrong};
535