1b4b8f2c9SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2cabbaed7SClément Péron// Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.xyz>
3cabbaed7SClément Péron// Based on sun50i-h5-orangepi-pc2.dts, which is:
4cabbaed7SClément Péron//   Copyright (C) 2016 ARM Ltd.
52ff28361SIcenowy Zheng
62ff28361SIcenowy Zheng/dts-v1/;
72ff28361SIcenowy Zheng#include "sun50i-h5.dtsi"
82ff28361SIcenowy Zheng
92ff28361SIcenowy Zheng#include <dt-bindings/gpio/gpio.h>
102ff28361SIcenowy Zheng#include <dt-bindings/input/input.h>
112ff28361SIcenowy Zheng
122ff28361SIcenowy Zheng/ {
132ff28361SIcenowy Zheng	model = "Xunlong Orange Pi Prime";
142ff28361SIcenowy Zheng	compatible = "xunlong,orangepi-prime", "allwinner,sun50i-h5";
152ff28361SIcenowy Zheng
162ff28361SIcenowy Zheng	aliases {
1744a94c7eSCorentin Labbe		ethernet0 = &emac;
182ff28361SIcenowy Zheng		serial0 = &uart0;
192ff28361SIcenowy Zheng	};
202ff28361SIcenowy Zheng
212ff28361SIcenowy Zheng	chosen {
222ff28361SIcenowy Zheng		stdout-path = "serial0:115200n8";
232ff28361SIcenowy Zheng	};
242ff28361SIcenowy Zheng
2522821975SJernej Skrabec	connector {
2622821975SJernej Skrabec		compatible = "hdmi-connector";
2722821975SJernej Skrabec		type = "a";
2822821975SJernej Skrabec
2922821975SJernej Skrabec		port {
3022821975SJernej Skrabec			hdmi_con_in: endpoint {
3122821975SJernej Skrabec				remote-endpoint = <&hdmi_out_con>;
3222821975SJernej Skrabec			};
3322821975SJernej Skrabec		};
3422821975SJernej Skrabec	};
3522821975SJernej Skrabec
362ff28361SIcenowy Zheng	leds {
372ff28361SIcenowy Zheng		compatible = "gpio-leds";
382ff28361SIcenowy Zheng
39e299e6ddSMaxime Ripard		led-0 {
402ff28361SIcenowy Zheng			label = "orangepi:green:pwr";
412ff28361SIcenowy Zheng			gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
422ff28361SIcenowy Zheng			default-state = "on";
432ff28361SIcenowy Zheng		};
442ff28361SIcenowy Zheng
45e299e6ddSMaxime Ripard		led-1 {
462ff28361SIcenowy Zheng			label = "orangepi:red:status";
472ff28361SIcenowy Zheng			gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
482ff28361SIcenowy Zheng		};
492ff28361SIcenowy Zheng	};
502ff28361SIcenowy Zheng
51*a0bdaf59SKrzysztof Kozlowski	gpio-keys {
522ff28361SIcenowy Zheng		compatible = "gpio-keys";
532ff28361SIcenowy Zheng
54*a0bdaf59SKrzysztof Kozlowski		key-sw4 {
552ff28361SIcenowy Zheng			label = "sw4";
562ff28361SIcenowy Zheng			linux,code = <BTN_0>;
572ff28361SIcenowy Zheng			gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
582ff28361SIcenowy Zheng		};
592ff28361SIcenowy Zheng	};
602ff28361SIcenowy Zheng
614b157a5cSIcenowy Zheng	reg_gmac_3v3: gmac-3v3 {
624b157a5cSIcenowy Zheng		compatible = "regulator-fixed";
634b157a5cSIcenowy Zheng		regulator-name = "gmac-3v3";
644b157a5cSIcenowy Zheng		regulator-min-microvolt = <3300000>;
654b157a5cSIcenowy Zheng		regulator-max-microvolt = <3300000>;
664b157a5cSIcenowy Zheng		startup-delay-us = <100000>;
674b157a5cSIcenowy Zheng		enable-active-high;
684b157a5cSIcenowy Zheng		gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
694b157a5cSIcenowy Zheng	};
704b157a5cSIcenowy Zheng
719907da07SIcenowy Zheng	reg_vcc3v3: vcc3v3 {
729907da07SIcenowy Zheng		compatible = "regulator-fixed";
739907da07SIcenowy Zheng		regulator-name = "vcc3v3";
749907da07SIcenowy Zheng		regulator-min-microvolt = <3300000>;
759907da07SIcenowy Zheng		regulator-max-microvolt = <3300000>;
769907da07SIcenowy Zheng	};
779907da07SIcenowy Zheng
782ff28361SIcenowy Zheng	reg_usb0_vbus: usb0-vbus {
792ff28361SIcenowy Zheng		compatible = "regulator-fixed";
802ff28361SIcenowy Zheng		regulator-name = "usb0-vbus";
812ff28361SIcenowy Zheng		regulator-min-microvolt = <5000000>;
822ff28361SIcenowy Zheng		regulator-max-microvolt = <5000000>;
832ff28361SIcenowy Zheng		enable-active-high;
842ff28361SIcenowy Zheng		gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
852ff28361SIcenowy Zheng		status = "okay";
862ff28361SIcenowy Zheng	};
872ff28361SIcenowy Zheng
882ff28361SIcenowy Zheng	wifi_pwrseq: wifi_pwrseq {
892ff28361SIcenowy Zheng		compatible = "mmc-pwrseq-simple";
902ff28361SIcenowy Zheng		reset-gpios = <&pio 2 14 GPIO_ACTIVE_LOW>; /* PC14 */
912ff28361SIcenowy Zheng	};
922ff28361SIcenowy Zheng};
932ff28361SIcenowy Zheng
942ff28361SIcenowy Zheng&codec {
952ff28361SIcenowy Zheng	allwinner,audio-routing =
962ff28361SIcenowy Zheng		"Line Out", "LINEOUT",
972ff28361SIcenowy Zheng		"MIC1", "Mic",
982ff28361SIcenowy Zheng		"Mic",  "MBIAS";
992ff28361SIcenowy Zheng	status = "okay";
1002ff28361SIcenowy Zheng};
1012ff28361SIcenowy Zheng
10222821975SJernej Skrabec&de {
10322821975SJernej Skrabec	status = "okay";
10422821975SJernej Skrabec};
10522821975SJernej Skrabec
1062ff28361SIcenowy Zheng&ehci0 {
1072ff28361SIcenowy Zheng	status = "okay";
1082ff28361SIcenowy Zheng};
1092ff28361SIcenowy Zheng
1102ff28361SIcenowy Zheng&ehci1 {
1112ff28361SIcenowy Zheng	status = "okay";
1122ff28361SIcenowy Zheng};
1132ff28361SIcenowy Zheng
1142ff28361SIcenowy Zheng&ehci2 {
1152ff28361SIcenowy Zheng	status = "okay";
1162ff28361SIcenowy Zheng};
1172ff28361SIcenowy Zheng
1182ff28361SIcenowy Zheng&ehci3 {
1192ff28361SIcenowy Zheng	status = "okay";
1202ff28361SIcenowy Zheng};
1212ff28361SIcenowy Zheng
12244a94c7eSCorentin Labbe&emac {
12344a94c7eSCorentin Labbe	pinctrl-names = "default";
12444a94c7eSCorentin Labbe	pinctrl-0 = <&emac_rgmii_pins>;
12544a94c7eSCorentin Labbe	phy-supply = <&reg_gmac_3v3>;
12644a94c7eSCorentin Labbe	phy-handle = <&ext_rgmii_phy>;
127107954afSNenad Peric	phy-mode = "rgmii-id";
12844a94c7eSCorentin Labbe	status = "okay";
12944a94c7eSCorentin Labbe};
13044a94c7eSCorentin Labbe
13144a94c7eSCorentin Labbe&external_mdio {
13244a94c7eSCorentin Labbe	ext_rgmii_phy: ethernet-phy@1 {
13344a94c7eSCorentin Labbe		compatible = "ethernet-phy-ieee802.3-c22";
13444a94c7eSCorentin Labbe		reg = <1>;
13544a94c7eSCorentin Labbe	};
13644a94c7eSCorentin Labbe};
13744a94c7eSCorentin Labbe
13822821975SJernej Skrabec&hdmi {
13922821975SJernej Skrabec	status = "okay";
14022821975SJernej Skrabec};
14122821975SJernej Skrabec
14222821975SJernej Skrabec&hdmi_out {
14322821975SJernej Skrabec	hdmi_out_con: endpoint {
14422821975SJernej Skrabec		remote-endpoint = <&hdmi_con_in>;
14522821975SJernej Skrabec	};
14622821975SJernej Skrabec};
14722821975SJernej Skrabec
1482ff28361SIcenowy Zheng&ir {
1492ff28361SIcenowy Zheng	pinctrl-names = "default";
150a4dc7919SMaxime Ripard	pinctrl-0 = <&r_ir_rx_pin>;
1512ff28361SIcenowy Zheng	status = "okay";
1522ff28361SIcenowy Zheng};
1532ff28361SIcenowy Zheng
1542ff28361SIcenowy Zheng&mmc0 {
1552ff28361SIcenowy Zheng	vmmc-supply = <&reg_vcc3v3>;
1562ff28361SIcenowy Zheng	bus-width = <4>;
1572ff28361SIcenowy Zheng	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
1582ff28361SIcenowy Zheng	status = "okay";
1592ff28361SIcenowy Zheng};
1602ff28361SIcenowy Zheng
1612ff28361SIcenowy Zheng&mmc1 {
1622ff28361SIcenowy Zheng	vmmc-supply = <&reg_vcc3v3>;
1632ff28361SIcenowy Zheng	mmc-pwrseq = <&wifi_pwrseq>;
1642ff28361SIcenowy Zheng	bus-width = <4>;
1652ff28361SIcenowy Zheng	non-removable;
1662ff28361SIcenowy Zheng	status = "okay";
1672ff28361SIcenowy Zheng};
1682ff28361SIcenowy Zheng
1692ff28361SIcenowy Zheng&ohci0 {
1702ff28361SIcenowy Zheng	status = "okay";
1712ff28361SIcenowy Zheng};
1722ff28361SIcenowy Zheng
1732ff28361SIcenowy Zheng&ohci1 {
1742ff28361SIcenowy Zheng	status = "okay";
1752ff28361SIcenowy Zheng};
1762ff28361SIcenowy Zheng
1772ff28361SIcenowy Zheng&ohci2 {
1782ff28361SIcenowy Zheng	status = "okay";
1792ff28361SIcenowy Zheng};
1802ff28361SIcenowy Zheng
1812ff28361SIcenowy Zheng&ohci3 {
1822ff28361SIcenowy Zheng	status = "okay";
1832ff28361SIcenowy Zheng};
1842ff28361SIcenowy Zheng
1852ff28361SIcenowy Zheng&uart0 {
1862ff28361SIcenowy Zheng	pinctrl-names = "default";
187a4dc7919SMaxime Ripard	pinctrl-0 = <&uart0_pa_pins>;
1882ff28361SIcenowy Zheng	status = "okay";
1892ff28361SIcenowy Zheng};
1902ff28361SIcenowy Zheng
1912ff28361SIcenowy Zheng&uart1 {
1922ff28361SIcenowy Zheng	pinctrl-names = "default";
1932ff28361SIcenowy Zheng	pinctrl-0 = <&uart1_pins>;
1942ff28361SIcenowy Zheng	status = "disabled";
1952ff28361SIcenowy Zheng};
1962ff28361SIcenowy Zheng
1972ff28361SIcenowy Zheng&uart2 {
1982ff28361SIcenowy Zheng	pinctrl-names = "default";
1992ff28361SIcenowy Zheng	pinctrl-0 = <&uart2_pins>;
2002ff28361SIcenowy Zheng	status = "disabled";
2012ff28361SIcenowy Zheng};
2022ff28361SIcenowy Zheng
2032ff28361SIcenowy Zheng&usb_otg {
2042ff28361SIcenowy Zheng	dr_mode = "otg";
2052ff28361SIcenowy Zheng	status = "okay";
2062ff28361SIcenowy Zheng};
2072ff28361SIcenowy Zheng
2082ff28361SIcenowy Zheng&usbphy {
2092ff28361SIcenowy Zheng	/* USB Type-A ports' VBUS is always on */
2102ff28361SIcenowy Zheng	usb0_id_det-gpios = <&pio 0 21 GPIO_ACTIVE_HIGH>; /* PA21 */
2112ff28361SIcenowy Zheng	usb0_vbus-supply = <&reg_usb0_vbus>;
2122ff28361SIcenowy Zheng	status = "okay";
2132ff28361SIcenowy Zheng};
214