xref: /linux/arch/arm64/boot/dts/allwinner/sun50i-h64-remix-mini-pc.dts (revision e091caf99f3a5006c95baec24330bac6f7f17193)
14d39a8ebSAndre Przywara// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
24d39a8ebSAndre Przywara// Copyright (c) 2023 ARM Ltd.
34d39a8ebSAndre Przywara
44d39a8ebSAndre Przywara/dts-v1/;
54d39a8ebSAndre Przywara
64d39a8ebSAndre Przywara#include "sun50i-a64.dtsi"
74d39a8ebSAndre Przywara#include "sun50i-a64-cpu-opp.dtsi"
84d39a8ebSAndre Przywara
94d39a8ebSAndre Przywara#include <dt-bindings/gpio/gpio.h>
104d39a8ebSAndre Przywara
114d39a8ebSAndre Przywara/ {
124d39a8ebSAndre Przywara	model = "Remix Mini PC";
134d39a8ebSAndre Przywara	compatible = "jide,remix-mini-pc", "allwinner,sun50i-h64",
144d39a8ebSAndre Przywara		     "allwinner,sun50i-a64";
154d39a8ebSAndre Przywara
164d39a8ebSAndre Przywara	aliases {
174d39a8ebSAndre Przywara		ethernet1 = &rtl8723bs;
184d39a8ebSAndre Przywara		serial0 = &uart0;
194d39a8ebSAndre Przywara	};
204d39a8ebSAndre Przywara
214d39a8ebSAndre Przywara	chosen {
224d39a8ebSAndre Przywara		stdout-path = "serial0:115200n8";
234d39a8ebSAndre Przywara	};
244d39a8ebSAndre Przywara
254d39a8ebSAndre Przywara	hdmi-connector {
264d39a8ebSAndre Przywara		compatible = "hdmi-connector";
274d39a8ebSAndre Przywara		type = "a";
284d39a8ebSAndre Przywara
294d39a8ebSAndre Przywara		port {
304d39a8ebSAndre Przywara			hdmi_con_in: endpoint {
314d39a8ebSAndre Przywara				remote-endpoint = <&hdmi_out_con>;
324d39a8ebSAndre Przywara			};
334d39a8ebSAndre Przywara		};
344d39a8ebSAndre Przywara	};
354d39a8ebSAndre Przywara
364d39a8ebSAndre Przywara	reg_vcc5v: regulator-5v {
374d39a8ebSAndre Przywara		/* board wide 5V supply directly from the DC input */
384d39a8ebSAndre Przywara		compatible = "regulator-fixed";
394d39a8ebSAndre Przywara		regulator-name = "vcc-5v";
404d39a8ebSAndre Przywara		regulator-min-microvolt = <5000000>;
414d39a8ebSAndre Przywara		regulator-max-microvolt = <5000000>;
424d39a8ebSAndre Przywara		regulator-always-on;
434d39a8ebSAndre Przywara	};
444d39a8ebSAndre Przywara
455dfdedf0SKrzysztof Kozlowski	wifi_pwrseq: pwrseq {
464d39a8ebSAndre Przywara		compatible = "mmc-pwrseq-simple";
474d39a8ebSAndre Przywara		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
484d39a8ebSAndre Przywara		post-power-on-delay-ms = <200>;
494d39a8ebSAndre Przywara	};
504d39a8ebSAndre Przywara};
514d39a8ebSAndre Przywara
524d39a8ebSAndre Przywara&codec {
534d39a8ebSAndre Przywara	status = "okay";
544d39a8ebSAndre Przywara};
554d39a8ebSAndre Przywara
564d39a8ebSAndre Przywara&codec_analog {
574d39a8ebSAndre Przywara	cpvdd-supply = <&reg_eldo1>;
584d39a8ebSAndre Przywara	status = "okay";
594d39a8ebSAndre Przywara};
604d39a8ebSAndre Przywara
614d39a8ebSAndre Przywara&cpu0 {
624d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
634d39a8ebSAndre Przywara};
644d39a8ebSAndre Przywara
654d39a8ebSAndre Przywara&cpu1 {
664d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
674d39a8ebSAndre Przywara};
684d39a8ebSAndre Przywara
694d39a8ebSAndre Przywara&cpu2 {
704d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
714d39a8ebSAndre Przywara};
724d39a8ebSAndre Przywara
734d39a8ebSAndre Przywara&cpu3 {
744d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
754d39a8ebSAndre Przywara};
764d39a8ebSAndre Przywara
774d39a8ebSAndre Przywara&dai {
784d39a8ebSAndre Przywara	status = "okay";
794d39a8ebSAndre Przywara};
804d39a8ebSAndre Przywara
814d39a8ebSAndre Przywara&de {
824d39a8ebSAndre Przywara	status = "okay";
834d39a8ebSAndre Przywara};
844d39a8ebSAndre Przywara
854d39a8ebSAndre Przywara&ehci0 {
864d39a8ebSAndre Przywara	status = "okay";
874d39a8ebSAndre Przywara};
884d39a8ebSAndre Przywara
894d39a8ebSAndre Przywara&ehci1 {
904d39a8ebSAndre Przywara	status = "okay";
914d39a8ebSAndre Przywara};
924d39a8ebSAndre Przywara
934d39a8ebSAndre Przywara&hdmi {
944d39a8ebSAndre Przywara	hvcc-supply = <&reg_dldo1>;
954d39a8ebSAndre Przywara	status = "okay";
964d39a8ebSAndre Przywara};
974d39a8ebSAndre Przywara
984d39a8ebSAndre Przywara&hdmi_out {
994d39a8ebSAndre Przywara	hdmi_out_con: endpoint {
1004d39a8ebSAndre Przywara		remote-endpoint = <&hdmi_con_in>;
1014d39a8ebSAndre Przywara	};
1024d39a8ebSAndre Przywara};
1034d39a8ebSAndre Przywara
1044d39a8ebSAndre Przywara/* Connects to the AC200 chip */
1054d39a8ebSAndre Przywara&i2c0 {
1064d39a8ebSAndre Przywara	pinctrl-names = "default";
1074d39a8ebSAndre Przywara	pinctrl-0 = <&i2c0_pins>;
1084d39a8ebSAndre Przywara	status = "okay";
1094d39a8ebSAndre Przywara};
1104d39a8ebSAndre Przywara
1114d39a8ebSAndre Przywara&i2c0_pins {
1124d39a8ebSAndre Przywara	bias-pull-up;
1134d39a8ebSAndre Przywara};
1144d39a8ebSAndre Przywara
1154d39a8ebSAndre Przywara&mmc0 {
1164d39a8ebSAndre Przywara	pinctrl-names = "default";
1174d39a8ebSAndre Przywara	pinctrl-0 = <&mmc0_pins>;
1184d39a8ebSAndre Przywara	vmmc-supply = <&reg_dcdc1>;
1194d39a8ebSAndre Przywara	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
1204d39a8ebSAndre Przywara	disable-wp;
1214d39a8ebSAndre Przywara	bus-width = <4>;
1224d39a8ebSAndre Przywara	status = "okay";
1234d39a8ebSAndre Przywara};
1244d39a8ebSAndre Przywara
1254d39a8ebSAndre Przywara&mmc1 {
1264d39a8ebSAndre Przywara	pinctrl-names = "default";
1274d39a8ebSAndre Przywara	pinctrl-0 = <&mmc1_pins>;
1284d39a8ebSAndre Przywara	vmmc-supply = <&reg_aldo1>;
1294d39a8ebSAndre Przywara	vqmmc-supply = <&reg_dldo4>;
1304d39a8ebSAndre Przywara	mmc-pwrseq = <&wifi_pwrseq>;
1314d39a8ebSAndre Przywara	bus-width = <4>;
1324d39a8ebSAndre Przywara	non-removable;
1334d39a8ebSAndre Przywara	status = "okay";
1344d39a8ebSAndre Przywara
1354d39a8ebSAndre Przywara	rtl8723bs: wifi@1 {
1364d39a8ebSAndre Przywara		reg = <1>;
1374d39a8ebSAndre Przywara		interrupt-parent = <&r_pio>;
1384d39a8ebSAndre Przywara		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
1394d39a8ebSAndre Przywara		interrupt-names = "host-wake";
1404d39a8ebSAndre Przywara	};
1414d39a8ebSAndre Przywara};
1424d39a8ebSAndre Przywara
1434d39a8ebSAndre Przywara&mmc2 {
1444d39a8ebSAndre Przywara	pinctrl-names = "default";
1454d39a8ebSAndre Przywara	pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
1464d39a8ebSAndre Przywara	vmmc-supply = <&reg_dcdc1>;
1474d39a8ebSAndre Przywara	vqmmc-supply = <&reg_eldo1>;
1484d39a8ebSAndre Przywara	bus-width = <8>;
1494d39a8ebSAndre Przywara	non-removable;
1504d39a8ebSAndre Przywara	mmc-hs200-1_8v;
1514d39a8ebSAndre Przywara	mmc-hs400-1_8v;
1524d39a8ebSAndre Przywara	cap-mmc-hw-reset;
1534d39a8ebSAndre Przywara	status = "okay";
1544d39a8ebSAndre Przywara};
1554d39a8ebSAndre Przywara
1564d39a8ebSAndre Przywara&ohci0 {
1574d39a8ebSAndre Przywara	status = "okay";
1584d39a8ebSAndre Przywara};
1594d39a8ebSAndre Przywara
1604d39a8ebSAndre Przywara&ohci1 {
1614d39a8ebSAndre Przywara	status = "okay";
1624d39a8ebSAndre Przywara};
1634d39a8ebSAndre Przywara
1644d39a8ebSAndre Przywara&pio {
1654d39a8ebSAndre Przywara	vcc-pb-supply = <&reg_dcdc1>;
1664d39a8ebSAndre Przywara	vcc-pc-supply = <&reg_dcdc1>;
1674d39a8ebSAndre Przywara	vcc-pd-supply = <&reg_dcdc1>;
1684d39a8ebSAndre Przywara	vcc-pe-supply = <&reg_dcdc1>;
1694d39a8ebSAndre Przywara	vcc-pf-supply = <&reg_dcdc1>;
1704d39a8ebSAndre Przywara	vcc-pg-supply = <&reg_dldo4>;
1714d39a8ebSAndre Przywara	vcc-ph-supply = <&reg_dcdc1>;
1724d39a8ebSAndre Przywara};
1734d39a8ebSAndre Przywara
1744d39a8ebSAndre Przywara&r_ir {
1754d39a8ebSAndre Przywara	status = "okay";
1764d39a8ebSAndre Przywara};
1774d39a8ebSAndre Przywara
1784d39a8ebSAndre Przywara&r_pio {
1794d39a8ebSAndre Przywara	/*
1804d39a8ebSAndre Przywara	 * We cannot add that supply for now since it would create a circular
1814d39a8ebSAndre Przywara	 * dependency between pinctrl, the regulator and the RSB Bus.
1824d39a8ebSAndre Przywara	 *
1834d39a8ebSAndre Przywara	 * vcc-pl-supply = <&reg_aldo2>;
1844d39a8ebSAndre Przywara	 */
1854d39a8ebSAndre Przywara};
1864d39a8ebSAndre Przywara
1874d39a8ebSAndre Przywara&r_rsb {
1884d39a8ebSAndre Przywara	status = "okay";
1894d39a8ebSAndre Przywara
1904d39a8ebSAndre Przywara	axp803: pmic@3a3 {
1914d39a8ebSAndre Przywara		compatible = "x-powers,axp803";
1924d39a8ebSAndre Przywara		reg = <0x3a3>;
1934d39a8ebSAndre Przywara		interrupt-parent = <&r_intc>;
194*5b36166eSAndre Przywara		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
1954d39a8ebSAndre Przywara		x-powers,drive-vbus-en;
1964d39a8ebSAndre Przywara
1974d39a8ebSAndre Przywara		vin1-supply = <&reg_vcc5v>;
1984d39a8ebSAndre Przywara		vin2-supply = <&reg_vcc5v>;
1994d39a8ebSAndre Przywara		vin3-supply = <&reg_vcc5v>;
2004d39a8ebSAndre Przywara		vin5-supply = <&reg_vcc5v>;
2014d39a8ebSAndre Przywara		vin6-supply = <&reg_vcc5v>;
2024d39a8ebSAndre Przywara		aldoin-supply = <&reg_vcc5v>;
2034d39a8ebSAndre Przywara		dldoin-supply = <&reg_vcc5v>;
2044d39a8ebSAndre Przywara		eldoin-supply = <&reg_vcc5v>;
2054d39a8ebSAndre Przywara		fldoin-supply = <&reg_vcc5v>;
2064d39a8ebSAndre Przywara		drivevbus-supply = <&reg_vcc5v>;
2074d39a8ebSAndre Przywara		ips-supply = <&reg_vcc5v>;
2084d39a8ebSAndre Przywara
2094d39a8ebSAndre Przywara		status = "okay";
2104d39a8ebSAndre Przywara	};
2114d39a8ebSAndre Przywara};
2124d39a8ebSAndre Przywara
2134d39a8ebSAndre Przywara#include "axp803.dtsi"
2144d39a8ebSAndre Przywara
2154d39a8ebSAndre Przywara&ac_power_supply {
2164d39a8ebSAndre Przywara	status = "okay";
2174d39a8ebSAndre Przywara};
2184d39a8ebSAndre Przywara
2194d39a8ebSAndre Przywara&reg_dcdc1 {
2204d39a8ebSAndre Przywara	regulator-always-on;
2214d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
2224d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
2234d39a8ebSAndre Przywara	regulator-name = "vcc-3v3";
2244d39a8ebSAndre Przywara};
2254d39a8ebSAndre Przywara
2264d39a8ebSAndre Przywara&reg_dcdc2 {
2274d39a8ebSAndre Przywara	regulator-always-on;
2284d39a8ebSAndre Przywara	regulator-min-microvolt = <1040000>;
2294d39a8ebSAndre Przywara	regulator-max-microvolt = <1300000>;
2304d39a8ebSAndre Przywara	regulator-name = "vdd-cpux";
2314d39a8ebSAndre Przywara};
2324d39a8ebSAndre Przywara
2334d39a8ebSAndre Przywara/* DCDC3 is polyphased with DCDC2 */
2344d39a8ebSAndre Przywara
2354d39a8ebSAndre Przywara&reg_dcdc5 {
2364d39a8ebSAndre Przywara	regulator-always-on;
2374d39a8ebSAndre Przywara	regulator-min-microvolt = <1500000>;
2384d39a8ebSAndre Przywara	regulator-max-microvolt = <1500000>;
2394d39a8ebSAndre Przywara	regulator-name = "vcc-dram";
2404d39a8ebSAndre Przywara};
2414d39a8ebSAndre Przywara
2424d39a8ebSAndre Przywara/* Deviates from the reset default of 1.1V. */
2434d39a8ebSAndre Przywara&reg_dcdc6 {
2444d39a8ebSAndre Przywara	regulator-always-on;
2454d39a8ebSAndre Przywara	regulator-min-microvolt = <1200000>;
2464d39a8ebSAndre Przywara	regulator-max-microvolt = <1200000>;
2474d39a8ebSAndre Przywara	regulator-name = "vdd-sys";
2484d39a8ebSAndre Przywara};
2494d39a8ebSAndre Przywara
2504d39a8ebSAndre Przywara&reg_aldo1 {
2514d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
2524d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
2534d39a8ebSAndre Przywara	regulator-name = "vcc-wifi";
2544d39a8ebSAndre Przywara};
2554d39a8ebSAndre Przywara
2564d39a8ebSAndre Przywara&reg_aldo2 {
2574d39a8ebSAndre Przywara	/* Specifying R_PIO consumer would create circular dependency. */
2584d39a8ebSAndre Przywara	regulator-always-on;
2594d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
2604d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
2614d39a8ebSAndre Przywara	regulator-name = "vcc-pl";
2624d39a8ebSAndre Przywara};
2634d39a8ebSAndre Przywara
2644d39a8ebSAndre Przywara&reg_aldo3 {
2654d39a8ebSAndre Przywara	regulator-always-on;
2664d39a8ebSAndre Przywara	regulator-min-microvolt = <3000000>;
2674d39a8ebSAndre Przywara	regulator-max-microvolt = <3000000>;
2684d39a8ebSAndre Przywara	regulator-name = "vcc-pll-avcc";
2694d39a8ebSAndre Przywara};
2704d39a8ebSAndre Przywara
2714d39a8ebSAndre Przywara/* AC200 power supply */
2724d39a8ebSAndre Przywara&reg_dldo1 {
2734d39a8ebSAndre Przywara	regulator-always-on;
2744d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
2754d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
2764d39a8ebSAndre Przywara	regulator-name = "vcc-ave-33";
2774d39a8ebSAndre Przywara};
2784d39a8ebSAndre Przywara
2794d39a8ebSAndre Przywara&reg_dldo4 {
2804d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
2814d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
2824d39a8ebSAndre Przywara	regulator-name = "vcc-wifi-io";
2834d39a8ebSAndre Przywara};
2844d39a8ebSAndre Przywara
2854d39a8ebSAndre Przywara&reg_drivevbus {
2864d39a8ebSAndre Przywara	regulator-name = "usb0-vbus";
2874d39a8ebSAndre Przywara	status = "okay";
2884d39a8ebSAndre Przywara};
2894d39a8ebSAndre Przywara
2904d39a8ebSAndre Przywara&reg_eldo1 {
2914d39a8ebSAndre Przywara	regulator-always-on;
2924d39a8ebSAndre Przywara	regulator-min-microvolt = <1800000>;
2934d39a8ebSAndre Przywara	regulator-max-microvolt = <1800000>;
2944d39a8ebSAndre Przywara	regulator-name = "vcc-cpvdd-dram-emmc";
2954d39a8ebSAndre Przywara};
2964d39a8ebSAndre Przywara
2974d39a8ebSAndre Przywara/* Supplies the arisc management core, needed by TF-A to power off cores. */
2984d39a8ebSAndre Przywara&reg_fldo2 {
2994d39a8ebSAndre Przywara	regulator-always-on;
3004d39a8ebSAndre Przywara	regulator-min-microvolt = <1100000>;
3014d39a8ebSAndre Przywara	regulator-max-microvolt = <1100000>;
3024d39a8ebSAndre Przywara	regulator-name = "vdd-cpus";
3034d39a8ebSAndre Przywara};
3044d39a8ebSAndre Przywara
3054d39a8ebSAndre Przywara&reg_rtc_ldo {
3064d39a8ebSAndre Przywara	regulator-name = "vcc-rtc";
3074d39a8ebSAndre Przywara};
3084d39a8ebSAndre Przywara
3094d39a8ebSAndre Przywara&simplefb_hdmi {
3104d39a8ebSAndre Przywara	vcc-hdmi-supply = <&reg_dcdc1>;
3114d39a8ebSAndre Przywara};
3124d39a8ebSAndre Przywara
3134d39a8ebSAndre Przywara&sound {
3144d39a8ebSAndre Przywara	simple-audio-card,aux-devs = <&codec_analog>;
3154d39a8ebSAndre Przywara	simple-audio-card,widgets = "Microphone", "Microphone Jack",
3164d39a8ebSAndre Przywara				    "Headphone", "Headphone Jack";
3174d39a8ebSAndre Przywara	simple-audio-card,routing =
3184d39a8ebSAndre Przywara			"Left DAC", "DACL",
3194d39a8ebSAndre Przywara			"Right DAC", "DACR",
3204d39a8ebSAndre Przywara			"Headphone Jack", "HP",
3214d39a8ebSAndre Przywara			"ADCL", "Left ADC",
3224d39a8ebSAndre Przywara			"ADCR", "Right ADC",
3234d39a8ebSAndre Przywara			"MIC2", "Microphone Jack";
3244d39a8ebSAndre Przywara	status = "okay";
3254d39a8ebSAndre Przywara};
3264d39a8ebSAndre Przywara
3274d39a8ebSAndre Przywara/* On the (unpopulated) UART pads. */
3284d39a8ebSAndre Przywara&uart0 {
3294d39a8ebSAndre Przywara	pinctrl-names = "default";
3304d39a8ebSAndre Przywara	pinctrl-0 = <&uart0_pb_pins>;
3314d39a8ebSAndre Przywara	status = "okay";
3324d39a8ebSAndre Przywara};
3334d39a8ebSAndre Przywara
3344d39a8ebSAndre Przywara&uart1 {
3354d39a8ebSAndre Przywara	pinctrl-names = "default";
3364d39a8ebSAndre Przywara	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
3374d39a8ebSAndre Przywara	uart-has-rtscts;
3384d39a8ebSAndre Przywara	status = "okay";
3394d39a8ebSAndre Przywara
3404d39a8ebSAndre Przywara	bluetooth {
3414d39a8ebSAndre Przywara		compatible = "realtek,rtl8723bs-bt";
3424d39a8ebSAndre Przywara		enable-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
3434d39a8ebSAndre Przywara		max-speed = <1500000>;
3444d39a8ebSAndre Przywara	};
3454d39a8ebSAndre Przywara};
3464d39a8ebSAndre Przywara
3474d39a8ebSAndre Przywara&usb_otg {
3484d39a8ebSAndre Przywara	dr_mode = "host";
3494d39a8ebSAndre Przywara	status = "okay";
3504d39a8ebSAndre Przywara};
3514d39a8ebSAndre Przywara
3524d39a8ebSAndre Przywara&usbphy {
3534d39a8ebSAndre Przywara	usb0_vbus-supply = <&reg_drivevbus>;
3544d39a8ebSAndre Przywara	usb1_vbus-supply = <&reg_drivevbus>;
3554d39a8ebSAndre Przywara	status = "okay";
3564d39a8ebSAndre Przywara};
357