1b4b8f2c9SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
22ff28361SIcenowy Zheng/*
32ff28361SIcenowy Zheng * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.xyz>
42ff28361SIcenowy Zheng *
52ff28361SIcenowy Zheng * Based on sun50i-h5-orangepi-pc2.dts, which is:
62ff28361SIcenowy Zheng *   Copyright (C) 2016 ARM Ltd.
72ff28361SIcenowy Zheng */
82ff28361SIcenowy Zheng
92ff28361SIcenowy Zheng/dts-v1/;
102ff28361SIcenowy Zheng#include "sun50i-h5.dtsi"
112ff28361SIcenowy Zheng
122ff28361SIcenowy Zheng#include <dt-bindings/gpio/gpio.h>
132ff28361SIcenowy Zheng#include <dt-bindings/input/input.h>
142ff28361SIcenowy Zheng
152ff28361SIcenowy Zheng/ {
162ff28361SIcenowy Zheng	model = "Xunlong Orange Pi Prime";
172ff28361SIcenowy Zheng	compatible = "xunlong,orangepi-prime", "allwinner,sun50i-h5";
182ff28361SIcenowy Zheng
192ff28361SIcenowy Zheng	aliases {
2044a94c7eSCorentin Labbe		ethernet0 = &emac;
212ff28361SIcenowy Zheng		serial0 = &uart0;
222ff28361SIcenowy Zheng	};
232ff28361SIcenowy Zheng
242ff28361SIcenowy Zheng	chosen {
252ff28361SIcenowy Zheng		stdout-path = "serial0:115200n8";
262ff28361SIcenowy Zheng	};
272ff28361SIcenowy Zheng
2822821975SJernej Skrabec	connector {
2922821975SJernej Skrabec		compatible = "hdmi-connector";
3022821975SJernej Skrabec		type = "a";
3122821975SJernej Skrabec
3222821975SJernej Skrabec		port {
3322821975SJernej Skrabec			hdmi_con_in: endpoint {
3422821975SJernej Skrabec				remote-endpoint = <&hdmi_out_con>;
3522821975SJernej Skrabec			};
3622821975SJernej Skrabec		};
3722821975SJernej Skrabec	};
3822821975SJernej Skrabec
392ff28361SIcenowy Zheng	leds {
402ff28361SIcenowy Zheng		compatible = "gpio-leds";
412ff28361SIcenowy Zheng
422ff28361SIcenowy Zheng		pwr {
432ff28361SIcenowy Zheng			label = "orangepi:green:pwr";
442ff28361SIcenowy Zheng			gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
452ff28361SIcenowy Zheng			default-state = "on";
462ff28361SIcenowy Zheng		};
472ff28361SIcenowy Zheng
482ff28361SIcenowy Zheng		status {
492ff28361SIcenowy Zheng			label = "orangepi:red:status";
502ff28361SIcenowy Zheng			gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
512ff28361SIcenowy Zheng		};
522ff28361SIcenowy Zheng	};
532ff28361SIcenowy Zheng
542ff28361SIcenowy Zheng	r-gpio-keys {
552ff28361SIcenowy Zheng		compatible = "gpio-keys";
562ff28361SIcenowy Zheng
572ff28361SIcenowy Zheng		sw4 {
582ff28361SIcenowy Zheng			label = "sw4";
592ff28361SIcenowy Zheng			linux,code = <BTN_0>;
602ff28361SIcenowy Zheng			gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
612ff28361SIcenowy Zheng		};
622ff28361SIcenowy Zheng	};
632ff28361SIcenowy Zheng
644b157a5cSIcenowy Zheng	reg_gmac_3v3: gmac-3v3 {
654b157a5cSIcenowy Zheng		compatible = "regulator-fixed";
664b157a5cSIcenowy Zheng		regulator-name = "gmac-3v3";
674b157a5cSIcenowy Zheng		regulator-min-microvolt = <3300000>;
684b157a5cSIcenowy Zheng		regulator-max-microvolt = <3300000>;
694b157a5cSIcenowy Zheng		startup-delay-us = <100000>;
704b157a5cSIcenowy Zheng		enable-active-high;
714b157a5cSIcenowy Zheng		gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
724b157a5cSIcenowy Zheng	};
734b157a5cSIcenowy Zheng
749907da07SIcenowy Zheng	reg_vcc3v3: vcc3v3 {
759907da07SIcenowy Zheng		compatible = "regulator-fixed";
769907da07SIcenowy Zheng		regulator-name = "vcc3v3";
779907da07SIcenowy Zheng		regulator-min-microvolt = <3300000>;
789907da07SIcenowy Zheng		regulator-max-microvolt = <3300000>;
799907da07SIcenowy Zheng	};
809907da07SIcenowy Zheng
812ff28361SIcenowy Zheng	reg_usb0_vbus: usb0-vbus {
822ff28361SIcenowy Zheng		compatible = "regulator-fixed";
832ff28361SIcenowy Zheng		regulator-name = "usb0-vbus";
842ff28361SIcenowy Zheng		regulator-min-microvolt = <5000000>;
852ff28361SIcenowy Zheng		regulator-max-microvolt = <5000000>;
862ff28361SIcenowy Zheng		enable-active-high;
872ff28361SIcenowy Zheng		gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
882ff28361SIcenowy Zheng		status = "okay";
892ff28361SIcenowy Zheng	};
902ff28361SIcenowy Zheng
912ff28361SIcenowy Zheng	wifi_pwrseq: wifi_pwrseq {
922ff28361SIcenowy Zheng		compatible = "mmc-pwrseq-simple";
932ff28361SIcenowy Zheng		reset-gpios = <&pio 2 14 GPIO_ACTIVE_LOW>; /* PC14 */
942ff28361SIcenowy Zheng	};
952ff28361SIcenowy Zheng};
962ff28361SIcenowy Zheng
972ff28361SIcenowy Zheng&codec {
982ff28361SIcenowy Zheng	allwinner,audio-routing =
992ff28361SIcenowy Zheng		"Line Out", "LINEOUT",
1002ff28361SIcenowy Zheng		"MIC1", "Mic",
1012ff28361SIcenowy Zheng		"Mic",  "MBIAS";
1022ff28361SIcenowy Zheng	status = "okay";
1032ff28361SIcenowy Zheng};
1042ff28361SIcenowy Zheng
10522821975SJernej Skrabec&de {
10622821975SJernej Skrabec	status = "okay";
10722821975SJernej Skrabec};
10822821975SJernej Skrabec
1092ff28361SIcenowy Zheng&ehci0 {
1102ff28361SIcenowy Zheng	status = "okay";
1112ff28361SIcenowy Zheng};
1122ff28361SIcenowy Zheng
1132ff28361SIcenowy Zheng&ehci1 {
1142ff28361SIcenowy Zheng	status = "okay";
1152ff28361SIcenowy Zheng};
1162ff28361SIcenowy Zheng
1172ff28361SIcenowy Zheng&ehci2 {
1182ff28361SIcenowy Zheng	status = "okay";
1192ff28361SIcenowy Zheng};
1202ff28361SIcenowy Zheng
1212ff28361SIcenowy Zheng&ehci3 {
1222ff28361SIcenowy Zheng	status = "okay";
1232ff28361SIcenowy Zheng};
1242ff28361SIcenowy Zheng
12544a94c7eSCorentin Labbe&emac {
12644a94c7eSCorentin Labbe	pinctrl-names = "default";
12744a94c7eSCorentin Labbe	pinctrl-0 = <&emac_rgmii_pins>;
12844a94c7eSCorentin Labbe	phy-supply = <&reg_gmac_3v3>;
12944a94c7eSCorentin Labbe	phy-handle = <&ext_rgmii_phy>;
13044a94c7eSCorentin Labbe	phy-mode = "rgmii";
13144a94c7eSCorentin Labbe	status = "okay";
13244a94c7eSCorentin Labbe};
13344a94c7eSCorentin Labbe
13444a94c7eSCorentin Labbe&external_mdio {
13544a94c7eSCorentin Labbe	ext_rgmii_phy: ethernet-phy@1 {
13644a94c7eSCorentin Labbe		compatible = "ethernet-phy-ieee802.3-c22";
13744a94c7eSCorentin Labbe		reg = <1>;
13844a94c7eSCorentin Labbe	};
13944a94c7eSCorentin Labbe};
14044a94c7eSCorentin Labbe
14122821975SJernej Skrabec&hdmi {
14222821975SJernej Skrabec	status = "okay";
14322821975SJernej Skrabec};
14422821975SJernej Skrabec
14522821975SJernej Skrabec&hdmi_out {
14622821975SJernej Skrabec	hdmi_out_con: endpoint {
14722821975SJernej Skrabec		remote-endpoint = <&hdmi_con_in>;
14822821975SJernej Skrabec	};
14922821975SJernej Skrabec};
15022821975SJernej Skrabec
1512ff28361SIcenowy Zheng&ir {
1522ff28361SIcenowy Zheng	pinctrl-names = "default";
153a4dc7919SMaxime Ripard	pinctrl-0 = <&r_ir_rx_pin>;
1542ff28361SIcenowy Zheng	status = "okay";
1552ff28361SIcenowy Zheng};
1562ff28361SIcenowy Zheng
1572ff28361SIcenowy Zheng&mmc0 {
1582ff28361SIcenowy Zheng	vmmc-supply = <&reg_vcc3v3>;
1592ff28361SIcenowy Zheng	bus-width = <4>;
1602ff28361SIcenowy Zheng	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
1612ff28361SIcenowy Zheng	status = "okay";
1622ff28361SIcenowy Zheng};
1632ff28361SIcenowy Zheng
1642ff28361SIcenowy Zheng&mmc1 {
1652ff28361SIcenowy Zheng	vmmc-supply = <&reg_vcc3v3>;
1662ff28361SIcenowy Zheng	mmc-pwrseq = <&wifi_pwrseq>;
1672ff28361SIcenowy Zheng	bus-width = <4>;
1682ff28361SIcenowy Zheng	non-removable;
1692ff28361SIcenowy Zheng	status = "okay";
1702ff28361SIcenowy Zheng};
1712ff28361SIcenowy Zheng
1722ff28361SIcenowy Zheng&ohci0 {
1732ff28361SIcenowy Zheng	status = "okay";
1742ff28361SIcenowy Zheng};
1752ff28361SIcenowy Zheng
1762ff28361SIcenowy Zheng&ohci1 {
1772ff28361SIcenowy Zheng	status = "okay";
1782ff28361SIcenowy Zheng};
1792ff28361SIcenowy Zheng
1802ff28361SIcenowy Zheng&ohci2 {
1812ff28361SIcenowy Zheng	status = "okay";
1822ff28361SIcenowy Zheng};
1832ff28361SIcenowy Zheng
1842ff28361SIcenowy Zheng&ohci3 {
1852ff28361SIcenowy Zheng	status = "okay";
1862ff28361SIcenowy Zheng};
1872ff28361SIcenowy Zheng
1882ff28361SIcenowy Zheng&uart0 {
1892ff28361SIcenowy Zheng	pinctrl-names = "default";
190a4dc7919SMaxime Ripard	pinctrl-0 = <&uart0_pa_pins>;
1912ff28361SIcenowy Zheng	status = "okay";
1922ff28361SIcenowy Zheng};
1932ff28361SIcenowy Zheng
1942ff28361SIcenowy Zheng&uart1 {
1952ff28361SIcenowy Zheng	pinctrl-names = "default";
1962ff28361SIcenowy Zheng	pinctrl-0 = <&uart1_pins>;
1972ff28361SIcenowy Zheng	status = "disabled";
1982ff28361SIcenowy Zheng};
1992ff28361SIcenowy Zheng
2002ff28361SIcenowy Zheng&uart2 {
2012ff28361SIcenowy Zheng	pinctrl-names = "default";
2022ff28361SIcenowy Zheng	pinctrl-0 = <&uart2_pins>;
2032ff28361SIcenowy Zheng	status = "disabled";
2042ff28361SIcenowy Zheng};
2052ff28361SIcenowy Zheng
2062ff28361SIcenowy Zheng&usb_otg {
2072ff28361SIcenowy Zheng	dr_mode = "otg";
2082ff28361SIcenowy Zheng	status = "okay";
2092ff28361SIcenowy Zheng};
2102ff28361SIcenowy Zheng
2112ff28361SIcenowy Zheng&usbphy {
2122ff28361SIcenowy Zheng	/* USB Type-A ports' VBUS is always on */
2132ff28361SIcenowy Zheng	usb0_id_det-gpios = <&pio 0 21 GPIO_ACTIVE_HIGH>; /* PA21 */
2142ff28361SIcenowy Zheng	usb0_vbus-supply = <&reg_usb0_vbus>;
2152ff28361SIcenowy Zheng	status = "okay";
2162ff28361SIcenowy Zheng};
217