1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
20a072362SAndreas Färber/*
30a072362SAndreas Färber * Copyright (c) 2016-2017 Andreas Färber
40a072362SAndreas Färber *
50a072362SAndreas Färber * Based on nexbox-a1:
60a072362SAndreas Färber *
70a072362SAndreas Färber * Copyright (c) 2016 BayLibre, SAS.
80a072362SAndreas Färber * Author: Neil Armstrong <narmstrong@baylibre.com>
90a072362SAndreas Färber *
100a072362SAndreas Färber * Copyright (c) 2016 Endless Computers, Inc.
110a072362SAndreas Färber * Author: Carlo Caione <carlo@endlessm.com>
120a072362SAndreas Färber */
130a072362SAndreas Färber
140a072362SAndreas Färber/dts-v1/;
150a072362SAndreas Färber
160a072362SAndreas Färber#include "meson-gxm.dtsi"
170a072362SAndreas Färber
180a072362SAndreas Färber/ {
190a072362SAndreas Färber	compatible = "kingnovel,r-box-pro", "amlogic,s912", "amlogic,meson-gxm";
200a072362SAndreas Färber	model = "R-Box Pro";
210a072362SAndreas Färber
220a072362SAndreas Färber	aliases {
230a072362SAndreas Färber		serial0 = &uart_AO;
24059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
250a072362SAndreas Färber	};
260a072362SAndreas Färber
270a072362SAndreas Färber	chosen {
280a072362SAndreas Färber		stdout-path = "serial0:115200n8";
290a072362SAndreas Färber	};
300a072362SAndreas Färber
310a072362SAndreas Färber	memory@0 {
320a072362SAndreas Färber		device_type = "memory";
330a072362SAndreas Färber		reg = <0x0 0x0 0x0 0x80000000>; /* 2 GiB or 3 GiB */
340a072362SAndreas Färber	};
350a072362SAndreas Färber
360a072362SAndreas Färber	leds {
370a072362SAndreas Färber		compatible = "gpio-leds";
380a072362SAndreas Färber
3908dc0e5dSNeil Armstrong		led-blue {
400a072362SAndreas Färber			label = "rbox-pro:blue:on";
410a072362SAndreas Färber			gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
420a072362SAndreas Färber			default-state = "on";
430a072362SAndreas Färber		};
440a072362SAndreas Färber
4508dc0e5dSNeil Armstrong		led-red {
460a072362SAndreas Färber			label = "rbox-pro:red:standby";
470a072362SAndreas Färber			gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>;
480a072362SAndreas Färber			default-state = "off";
490a072362SAndreas Färber			retain-state-suspended;
500a072362SAndreas Färber			panic-indicator;
510a072362SAndreas Färber		};
520a072362SAndreas Färber	};
530a072362SAndreas Färber
540a072362SAndreas Färber	vddio_boot: regulator-vddio-boot {
550a072362SAndreas Färber		compatible = "regulator-fixed";
560a072362SAndreas Färber		regulator-name = "VDDIO_BOOT";
570a072362SAndreas Färber		regulator-min-microvolt = <1800000>;
580a072362SAndreas Färber		regulator-max-microvolt = <1800000>;
590a072362SAndreas Färber	};
600a072362SAndreas Färber
610a072362SAndreas Färber	vddao_3v3: regulator-vddao-3v3 {
620a072362SAndreas Färber		compatible = "regulator-fixed";
630a072362SAndreas Färber		regulator-name = "VDDAO_3V3";
640a072362SAndreas Färber		regulator-min-microvolt = <3300000>;
650a072362SAndreas Färber		regulator-max-microvolt = <3300000>;
660a072362SAndreas Färber	};
670a072362SAndreas Färber
680a072362SAndreas Färber	vcc_3v3: regulator-vcc-3v3 {
690a072362SAndreas Färber		compatible = "regulator-fixed";
700a072362SAndreas Färber		regulator-name = "VCC_3V3";
710a072362SAndreas Färber		regulator-min-microvolt = <3300000>;
720a072362SAndreas Färber		regulator-max-microvolt = <3300000>;
730a072362SAndreas Färber	};
740a072362SAndreas Färber
750a072362SAndreas Färber	emmc_pwrseq: emmc-pwrseq {
760a072362SAndreas Färber		compatible = "mmc-pwrseq-emmc";
770a072362SAndreas Färber		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
780a072362SAndreas Färber	};
790a072362SAndreas Färber
800a072362SAndreas Färber	wifi32k: wifi32k {
810a072362SAndreas Färber		compatible = "pwm-clock";
820a072362SAndreas Färber		#clock-cells = <0>;
830a072362SAndreas Färber		clock-frequency = <32768>;
840a072362SAndreas Färber		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
850a072362SAndreas Färber	};
860a072362SAndreas Färber
870a072362SAndreas Färber	sdio_pwrseq: sdio-pwrseq {
880a072362SAndreas Färber		compatible = "mmc-pwrseq-simple";
890a072362SAndreas Färber		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
900a072362SAndreas Färber		clocks = <&wifi32k>;
910a072362SAndreas Färber		clock-names = "ext_clock";
920a072362SAndreas Färber	};
930a072362SAndreas Färber};
940a072362SAndreas Färber
950a072362SAndreas Färber&ethmac {
960a072362SAndreas Färber	status = "okay";
970a072362SAndreas Färber
980a072362SAndreas Färber	pinctrl-0 = <&eth_pins>;
990a072362SAndreas Färber	pinctrl-names = "default";
1000a072362SAndreas Färber
1010a072362SAndreas Färber	/* Select external PHY by default */
1020a072362SAndreas Färber	phy-handle = <&external_phy>;
1030a072362SAndreas Färber
1040a072362SAndreas Färber	amlogic,tx-delay-ns = <2>;
1050a072362SAndreas Färber
1060a072362SAndreas Färber	/* External PHY is in RGMII */
1070a072362SAndreas Färber	phy-mode = "rgmii";
1080a072362SAndreas Färber};
1090a072362SAndreas Färber
1100a072362SAndreas Färber&external_mdio {
1110a072362SAndreas Färber	external_phy: ethernet-phy@0 {
112890265c9SMartin Blumenstingl		/* Realtek RTL8211F (0x001cc916) */
1130a072362SAndreas Färber		reg = <0>;
1140a072362SAndreas Färber		max-speed = <1000>;
115f29cabf2SMartin Blumenstingl
116f29cabf2SMartin Blumenstingl		reset-assert-us = <10000>;
117*c183c406SStefan Agner		reset-deassert-us = <80000>;
118f29cabf2SMartin Blumenstingl		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
1190a072362SAndreas Färber	};
1200a072362SAndreas Färber};
1210a072362SAndreas Färber
1220a072362SAndreas Färber&ir {
1230a072362SAndreas Färber	status = "okay";
1240a072362SAndreas Färber	pinctrl-0 = <&remote_input_ao_pins>;
1250a072362SAndreas Färber	pinctrl-names = "default";
1260a072362SAndreas Färber};
1270a072362SAndreas Färber
1280a072362SAndreas Färber&pwm_ef {
1290a072362SAndreas Färber	status = "okay";
1300a072362SAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
1310a072362SAndreas Färber	pinctrl-names = "default";
1320a072362SAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
1330a072362SAndreas Färber	clock-names = "clkin0";
1340a072362SAndreas Färber};
1350a072362SAndreas Färber
1360a072362SAndreas Färber/* Wireless SDIO Module */
1370a072362SAndreas Färber&sd_emmc_a {
1380a072362SAndreas Färber	status = "okay";
1390a072362SAndreas Färber	pinctrl-0 = <&sdio_pins>;
1400a072362SAndreas Färber	pinctrl-names = "default";
1410a072362SAndreas Färber	#address-cells = <1>;
1420a072362SAndreas Färber	#size-cells = <0>;
1430a072362SAndreas Färber
1440a072362SAndreas Färber	bus-width = <4>;
1450a072362SAndreas Färber	cap-sd-highspeed;
146adc52bf7SJerome Brunet	max-frequency = <50000000>;
1470a072362SAndreas Färber
1480a072362SAndreas Färber	non-removable;
1490a072362SAndreas Färber	disable-wp;
1500a072362SAndreas Färber
151e326c967SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
152e326c967SNeil Armstrong	keep-power-in-suspend;
153e326c967SNeil Armstrong
1540a072362SAndreas Färber	mmc-pwrseq = <&sdio_pwrseq>;
1550a072362SAndreas Färber
1560a072362SAndreas Färber	vmmc-supply = <&vddao_3v3>;
1570a072362SAndreas Färber	vqmmc-supply = <&vddio_boot>;
1580a072362SAndreas Färber
1590a072362SAndreas Färber	brcmf: brcmf@1 {
1600a072362SAndreas Färber		reg = <1>;
1610a072362SAndreas Färber		compatible = "brcm,bcm4329-fmac";
1620a072362SAndreas Färber	};
1630a072362SAndreas Färber};
1640a072362SAndreas Färber
1650a072362SAndreas Färber/* SD card */
1660a072362SAndreas Färber&sd_emmc_b {
1670a072362SAndreas Färber	status = "okay";
1680a072362SAndreas Färber	pinctrl-0 = <&sdcard_pins>;
1690a072362SAndreas Färber	pinctrl-names = "default";
1700a072362SAndreas Färber
1710a072362SAndreas Färber	bus-width = <4>;
1720a072362SAndreas Färber	cap-sd-highspeed;
173adc52bf7SJerome Brunet	max-frequency = <50000000>;
1740a072362SAndreas Färber	disable-wp;
1750a072362SAndreas Färber
176f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
1770a072362SAndreas Färber
1780a072362SAndreas Färber	vmmc-supply = <&vddao_3v3>;
1790a072362SAndreas Färber	vqmmc-supply = <&vddio_boot>;
1800a072362SAndreas Färber};
1810a072362SAndreas Färber
1820a072362SAndreas Färber/* eMMC */
1830a072362SAndreas Färber&sd_emmc_c {
1840a072362SAndreas Färber	status = "okay";
185ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
1860a072362SAndreas Färber	pinctrl-names = "default";
1870a072362SAndreas Färber
1880a072362SAndreas Färber	bus-width = <8>;
1890a072362SAndreas Färber	cap-mmc-highspeed;
1900a072362SAndreas Färber	max-frequency = <200000000>;
1910a072362SAndreas Färber	non-removable;
1920a072362SAndreas Färber	disable-wp;
1930a072362SAndreas Färber	mmc-ddr-1_8v;
1940a072362SAndreas Färber	mmc-hs200-1_8v;
1950a072362SAndreas Färber
1960a072362SAndreas Färber	mmc-pwrseq = <&emmc_pwrseq>;
1970a072362SAndreas Färber	vmmc-supply = <&vcc_3v3>;
1980a072362SAndreas Färber	vqmmc-supply = <&vddio_boot>;
1990a072362SAndreas Färber};
2000a072362SAndreas Färber
2010a072362SAndreas Färber&uart_AO {
2020a072362SAndreas Färber	status = "okay";
2030a072362SAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
2040a072362SAndreas Färber	pinctrl-names = "default";
2050a072362SAndreas Färber};
206