build/patch/kernel/archive/rockchip64-6.4/add-board-helios64.patch

1344 lines
30 KiB
Diff
Raw Normal View History

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Aditya Prayoga <aditya@kobol.io>
Date: Tue, 15 Sep 2020 20:04:22 +0700
Subject: Add board Helios64
note: rpardini: this patch was rebased on top of 6.3.1, finally admitting
that it used to blindly overwrite the mainline dts (it was added when helios64
was not in the tree, and thus a "file addition"). the resulting patch
is the complete set of changes actually done.
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
---
arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts | 996 +++++++---
1 file changed, 764 insertions(+), 232 deletions(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
index 1eb287a3f8c0..ac0da7b7f43c 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
@@ -1,53 +1,37 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
- * Copyright (c) 2020 Aditya Prayoga <aditya@kobol.io>
- */
-
-/*
- * The Kobol Helios64 is a board designed to operate as a NAS and optionally
- * ships with an enclosing that can host five 2.5" hard disks.
- *
- * See https://wiki.kobol.io/helios64/intro/ for further details.
+ * Copyright (c) 2020 Aditya Prayoga (aditya@kobol.io)
*/
/dts-v1/;
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/usb/pd.h>
#include "rk3399.dtsi"
#include "rk3399-opp.dtsi"
/ {
- model = "Kobol Helios64";
+ model = "Helios64";
compatible = "kobol,helios64", "rockchip,rk3399";
- aliases {
- mmc0 = &sdmmc;
- mmc1 = &sdhci;
- spi1 = &spi1;
- spi2 = &spi2;
- spi5 = &spi5;
- };
-
- avdd_0v9_s0: avdd-0v9-s0 {
- compatible = "regulator-fixed";
- regulator-name = "avdd_0v9_s0";
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <900000>;
- regulator-max-microvolt = <900000>;
- vin-supply = <&vcc1v8_sys_s3>;
- };
-
- avdd_1v8_s0: avdd-1v8-s0 {
- compatible = "regulator-fixed";
- regulator-name = "avdd_1v8_s0";
- regulator-always-on;
- regulator-boot-on;
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- vin-supply = <&vcc3v3_sys_s3>;
+ adc-keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 1>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1800000>;
+ poll-interval = <100>;
+
+ user2-button {
+ label = "User Button 2";
+ linux,code = <BTN_1>;
+ press-threshold-microvolt = <100000>;
+ };
};
- chosen {
- stdout-path = "serial2:1500000n8";
+ beeper: beeper {
+ compatible = "gpio-beeper";
+ gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
};
clkin_gmac: external-gmac-clock {
@@ -57,107 +41,86 @@ clkin_gmac: external-gmac-clock {
#clock-cells = <0>;
};
- fan1 {
- /* fan connected to P7 */
- compatible = "pwm-fan";
- pwms = <&pwm0 0 40000 0>;
- cooling-levels = <0 80 170 255>;
- };
-
- fan2 {
- /* fan connected to P6 */
- compatible = "pwm-fan";
- pwms = <&pwm1 0 40000 0>;
- cooling-levels = <0 80 170 255>;
+ vcc12v_dcin: vcc12v-dcin {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc12v_dcin";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
};
- leds {
- compatible = "gpio-leds";
- pinctrl-names = "default";
- pinctrl-0 = <&sys_grn_led_on &sys_red_led_on>;
-
- led-0 {
- label = "helios64:green:status";
- gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
- default-state = "on";
- };
-
- led-1 {
- label = "helios64:red:fault";
- gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
- default-state = "keep";
- };
+ vcc12v_dcin_bkup: vcc12v-dcin-bkup {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc12v_dcin_bkup";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ vin-supply = <&vcc12v_dcin>;
};
- hdd_a_power: hdd-a-power {
+ vcc12v_hdd: vcc12v-hdd {
compatible = "regulator-fixed";
- enable-active-high;
- gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
- pinctrl-0 = <&hdd_a_power_en>;
- pinctrl-names = "default";
+ regulator-name = "vcc12v_hdd";
regulator-always-on;
regulator-boot-on;
- regulator-name = "hdd_a_power";
- startup-delay-us = <2000000>;
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ vin-supply = <&vcc12v_dcin_bkup>;
};
- hdd_b_power: hdd-b-power {
+ /* switched by pmic_sleep */
+ vcc1v8_sys_s0: vcc1v8-sys-s0 {
compatible = "regulator-fixed";
- enable-active-high;
- gpio = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
- pinctrl-0 = <&hdd_b_power_en>;
- pinctrl-names = "default";
+ regulator-name = "vcc1v8_sys_s0";
regulator-always-on;
regulator-boot-on;
- regulator-name = "hdd_b_power";
- startup-delay-us = <2000000>;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vcc1v8_sys_s3>;
};
- pcie_power: pcie-power {
+ vcc0v9_s3: vcc0v9-s3 {
compatible = "regulator-fixed";
- enable-active-high;
- gpio = <&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>;
- pinctrl-0 = <&pcie_pwr>;
- pinctrl-names = "default";
+ regulator-name = "vcc0v9_s3";
+ regulator-always-on;
regulator-boot-on;
- regulator-name = "pcie_power";
- startup-delay-us = <10000>;
- vin-supply = <&vcc5v0_perdev>;
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <900000>;
+ vin-supply = <&vcc3v3_sys_s3>;
};
- usblan_power: usblan-power {
+ avdd_0v9_s0: avdd-0v9-s0 {
compatible = "regulator-fixed";
- enable-active-high;
- gpio = <&gpio1 RK_PC7 GPIO_ACTIVE_HIGH>;
- pinctrl-names = "default";
- pinctrl-0 = <&usb_lan_en>;
- regulator-name = "usblan_power";
+ regulator-name = "avdd_0v9_s0";
regulator-always-on;
regulator-boot-on;
- vin-supply = <&vcc5v0_usb>;
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <900000>;
+ vin-supply = <&vcc1v8_sys_s3>;
};
- vcc1v8_sys_s0: vcc1v8-sys-s0 {
+ avdd_1v8_s0: avdd-1v8-s0 {
compatible = "regulator-fixed";
- regulator-name = "vcc1v8_sys_s0";
+ regulator-name = "avdd_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- vin-supply = <&vcc1v8_sys_s3>;
+ vin-supply = <&vcc3v3_sys_s3>;
};
- vcc3v0_sd: vcc3v0-sd {
+ pcie_power: pcie-power {
compatible = "regulator-fixed";
enable-active-high;
- gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
- regulator-name = "vcc3v0_sd";
- regulator-boot-on;
- regulator-min-microvolt = <3000000>;
- regulator-max-microvolt = <3000000>;
+ gpio = <&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
- pinctrl-0 = <&sdmmc0_pwr_h>;
- vin-supply = <&vcc3v3_sys_s3>;
+ pinctrl-0 = <&pcie_pwr_en>;
+ regulator-name = "pcie_power";
+ regulator-boot-on;
+ startup-delay-us = <10000>;
+ vin-supply = <&vcc5v0_perdev>;
};
vcc3v3_sys_s3: vcc_lan: vcc3v3-sys-s3 {
@@ -174,6 +137,39 @@ regulator-state-mem {
};
};
+ vcc3v0_sd: vcc3v0-sd {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v0_sd";
+ regulator-boot-on;
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ vin-supply = <&vcc3v3_sys_s3>;
+ };
+
+ vcc5v0_usb: vcc5v0-usb {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vcc5v0_usb_en>;
+ regulator-name = "vcc5v0_usb";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc5v0_perdev>;
+ };
+
+ vcc5v0_typec: vcc5v0-typec-regulator {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&fusb0_vbus_en>;
+ regulator-name = "vcc5v0_typec";
+ vin-supply = <&vcc5v0_usb>;
+ };
+
vcc5v0_perdev: vcc5v0-perdev {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_perdev";
@@ -184,6 +180,16 @@ vcc5v0_perdev: vcc5v0-perdev {
vin-supply = <&vcc12v_dcin_bkup>;
};
+ vcc5v0_hdd: vcc5v0-hdd {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc5v0_hdd";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc12v_dcin_bkup>;
+ };
+
vcc5v0_sys: vcc5v0-sys {
compatible = "regulator-fixed";
regulator-name = "vcc5v0_sys";
@@ -198,68 +204,213 @@ regulator-state-mem {
};
};
- vcc5v0_usb: vcc5v0-usb {
+ vdd_log: vdd-log {
+ compatible = "pwm-regulator";
+ pwms = <&pwm2 0 25000 1>;
+ pwm-supply = <&vcc5v0_sys>;
+ regulator-name = "vdd_log";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <830000>;
+ regulator-max-microvolt = <1400000>;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <900000>;
+ };
+ };
+
+ power_hdd_a: power-hdd-a {
compatible = "regulator-fixed";
enable-active-high;
- gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>;
+ gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
- pinctrl-0 = <&vcc5v0_usb_en>;
- regulator-name = "vcc5v0_usb";
+ pinctrl-0 = <&hdd_a_power>;
+ regulator-name = "power_hdd_a";
regulator-always-on;
regulator-boot-on;
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- vin-supply = <&vcc5v0_perdev>;
};
- vcc12v_dcin: vcc12v-dcin {
+ power_hdd_b: power-hdd-b {
compatible = "regulator-fixed";
- regulator-name = "vcc12v_dcin";
+ enable-active-high;
+ gpio = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&hdd_b_power>;
+ regulator-name = "power_hdd_b";
regulator-always-on;
regulator-boot-on;
- regulator-min-microvolt = <12000000>;
- regulator-max-microvolt = <12000000>;
};
- vcc12v_dcin_bkup: vcc12v-dcin-bkup {
+ usblan_power: usblan-power {
compatible = "regulator-fixed";
- regulator-name = "vcc12v_dcin_bkup";
+ enable-active-high;
+ gpio = <&gpio1 RK_PC7 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&usb_lan_en>;
+ regulator-name = "usblan_power";
regulator-always-on;
regulator-boot-on;
- regulator-min-microvolt = <12000000>;
- regulator-max-microvolt = <12000000>;
- vin-supply = <&vcc12v_dcin>;
+ vin-supply = <&vcc5v0_usb>;
};
-};
-/*
- * The system doesn't run stable with cpu freq enabled, so disallow the lower
- * frequencies until this problem is properly understood and resolved.
- */
-&cluster0_opp {
- /delete-node/ opp00;
- /delete-node/ opp01;
- /delete-node/ opp02;
- /delete-node/ opp03;
- /delete-node/ opp04;
-};
+ fan1: p7-fan {
+ compatible = "pwm-fan";
+ pwms = <&pwm0 0 40000 0>;
+ cooling-min-state = <0>;
+ cooling-max-state = <3>;
+ #cooling-cells = <2>;
+ cooling-levels = <0 80 170 255>;
+ };
-&cluster1_opp {
- /delete-node/ opp00;
- /delete-node/ opp01;
- /delete-node/ opp02;
- /delete-node/ opp03;
- /delete-node/ opp04;
- /delete-node/ opp05;
- /delete-node/ opp06;
-};
+ fan2: p6-fan {
+ compatible = "pwm-fan";
+ pwms = <&pwm1 0 40000 0>;
+ cooling-min-state = <0>;
+ cooling-max-state = <3>;
+ #cooling-cells = <2>;
+ cooling-levels = <0 80 170 255>;
+ };
-&cpu_b0 {
- cpu-supply = <&vdd_cpu_b>;
+ gpio-charger {
+ compatible = "gpio-charger";
+ charger-type = "mains";
+ gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
+ charge-status-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&ac_present_ap>, <&charger_status>;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ autorepeat;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwrbtn>, <&user1btn>, <&wake_on_lan>;
+
+ power {
+ debounce-interval = <100>;
+ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
+ label = "Power";
+ linux,code = <KEY_POWER>;
+ wakeup-source;
+ };
+
+ user1-button {
+ debounce-interval = <100>;
+ gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>;
+ label = "User Button 1";
+ linux,code = <BTN_0>;
+ wakeup-source;
+ };
+ };
+
+ hdmi_dp_sound: hdmi-dp-sound {
+ status = "okay";
+ compatible = "rockchip,rk3399-hdmi-dp";
+ rockchip,cpu = <&i2s2>;
+ rockchip,codec = <&cdn_dp>;
+ };
+
+ io_leds: io-gpio-leds {
+ status = "okay";
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&network_act>, <&usb3_act>,
+ <&sata_act>, <&sata_err_led>;
+
+ network {
+ label = "helios64:blue:net";
+ gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "netdev";
+ default-state = "off";
+ };
+
+ sata {
+ label = "helios64:blue:hdd-status";
+ gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "disk-activity";
+ default-state = "off";
+ };
+
+ sata_err1 {
+ label = "helios64:red:ata1-err";
+ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
+ default-state = "keep";
+ };
+
+ sata_err2 {
+ label = "helios64:red:ata2-err";
+ gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_HIGH>;
+ default-state = "keep";
+ };
+
+ sata_err3 {
+ label = "helios64:red:ata3-err";
+ gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>;
+ default-state = "keep";
+ };
+
+ sata_err4 {
+ label = "helios64:red:ata4-err";
+ gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_HIGH>;
+ default-state = "keep";
+ };
+
+ sata_err5 {
+ label = "helios64:red:ata5-err";
+ gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
+ default-state = "keep";
+ };
+
+ usb3 {
+ label = "helios64:blue:usb3";
+ gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
+ trigger-sources = <&int_hub_port1>,
+ <&int_hub_port2>,
+ <&int_hub_port3>;
+ linux,default-trigger = "usbport";
+ default-state = "off";
+ };
+ };
+
+ pwmleds {
+ compatible = "pwm-leds";
+ status = "okay";
+
+ power-led {
+ label = "helios64:blue:power-status";
+ pwms = <&pwm3 0 2000000000 0>;
+ max-brightness = <255>;
+ };
+ };
+
+ system_leds: system-gpio-leds {
+ status = "okay";
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&system_led>;
+
+ status-led {
+ label = "helios64::status";
+ gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "none";
+ default-state = "on";
+ mode = <0x23>;
+ };
+
+ fault-led {
+ label = "helios64:red:fault";
+ gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "panic";
+ default-state = "keep";
+ mode = <0x23>;
+ };
+ };
};
-&cpu_b1 {
- cpu-supply = <&vdd_cpu_b>;
+&cdn_dp {
+ status = "okay";
+ extcon = <&fusb0>;
+ phys = <&tcphy0_dp>;
};
&cpu_l0 {
@@ -278,23 +429,36 @@ &cpu_l3 {
cpu-supply = <&vdd_cpu_l>;
};
+&cpu_b0 {
+ cpu-supply = <&vdd_cpu_b>;
+};
+
+&cpu_b1 {
+ cpu-supply = <&vdd_cpu_b>;
+};
+
&emmc_phy {
status = "okay";
};
&gmac {
- assigned-clock-parents = <&clkin_gmac>;
assigned-clocks = <&cru SCLK_RMII_SRC>;
+ assigned-clock-parents = <&clkin_gmac>;
clock_in_out = "input";
- phy-mode = "rgmii";
phy-supply = <&vcc_lan>;
+ phy-mode = "rgmii";
pinctrl-names = "default";
- pinctrl-0 = <&rgmii_pins &gphy_reset>;
- rx_delay = <0x20>;
- tx_delay = <0x28>;
+ pinctrl-0 = <&rgmii_pins &rgmii_phy_reset>;
+ snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>;
- snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
+ tx_delay = <0x28>;
+ rx_delay = <0x20>;
+ status = "okay";
+};
+
+&gpu {
+ mali-supply = <&vdd_gpu>;
status = "okay";
};
@@ -307,12 +471,15 @@ &i2c0 {
rk808: pmic@1b {
compatible = "rockchip,rk808";
reg = <0x1b>;
+ #clock-cells = <1>;
+ clock-output-names = "xin32k", "rk808-clkout2";
interrupt-parent = <&gpio0>;
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
- clock-output-names = "xin32k", "rk808-clkout2";
pinctrl-names = "default";
pinctrl-0 = <&pmic_int_l>;
rockchip,system-power-controller;
+ wakeup-source;
+
vcc1-supply = <&vcc5v0_sys>;
vcc2-supply = <&vcc5v0_sys>;
vcc3-supply = <&vcc5v0_sys>;
@@ -325,10 +492,21 @@ rk808: pmic@1b {
vcc11-supply = <&vcc5v0_sys>;
vcc12-supply = <&vcc3v3_sys_s3>;
vddio-supply = <&vcc3v0_s3>;
- wakeup-source;
- #clock-cells = <1>;
regulators {
+ vdd_center: DCDC_REG1 {
+ regulator-name = "vdd_center";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-ramp-delay = <6001>;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <950000>;
+ };
+ };
+
vdd_cpu_l: DCDC_REG2 {
regulator-name = "vdd_cpu_l";
regulator-always-on;
@@ -336,19 +514,48 @@ vdd_cpu_l: DCDC_REG2 {
regulator-min-microvolt = <750000>;
regulator-max-microvolt = <1350000>;
regulator-ramp-delay = <6001>;
-
regulator-state-mem {
regulator-off-in-suspend;
};
};
+ vcc_ddr_s3: DCDC_REG3 {
+ regulator-name = "vcc_ddr_s3";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
vcc1v8_sys_s3: DCDC_REG4 {
regulator-name = "vcc1v8_sys_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <1800000>;
+ };
+ };
+
+ /* not used */
+ vcc1v8_dvp: LDO_REG1 {
+ regulator-name = "vcc1v8_dvp";
+ };
+
+ /* not used */
+ vcc3v0_touch: LDO_REG2 {
+ regulator-name = "vcc3v0_touch";
+ };
+ vcc1v8_s3: LDO_REG3 {
+ regulator-name = "vcc1v8_s3";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <1800000>;
@@ -361,25 +568,61 @@ vcc_sdio_s0: LDO_REG4 {
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3000000>;
-
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3000000>;
};
};
+ /* not used */
+ vcca3v0_codec: LDO_REG5 {
+ regulator-name = "vcca3v0_codec";
+ };
+
+ vcc1v5_s3: LDO_REG6 {
+ regulator-name = "vcc1v5_s3";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <1500000>;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <1500000>;
+ };
+ };
+
+ /* not used */
+ vcca1v8_codec: LDO_REG7 {
+ regulator-name = "vcca1v8_codec";
+ };
+
vcc3v0_s3: LDO_REG8 {
regulator-name = "vcc3v0_s3";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
-
regulator-state-mem {
regulator-on-in-suspend;
regulator-suspend-microvolt = <3000000>;
};
};
+
+ vcc3v3_sys_s0: SWITCH_REG1 {
+ regulator-name = "vcc3v3_sys_s0";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ /* not used */
+ vcc3v3_s0: SWITCH_REG2 {
+ regulator-name = "vcc3v3_s0";
+ };
};
};
@@ -387,12 +630,33 @@ vdd_cpu_b: regulator@40 {
compatible = "silergy,syr827";
reg = <0x40>;
fcs,suspend-voltage-selector = <1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vsel1_gpio>;
regulator-name = "vdd_cpu_b";
+ regulator-min-microvolt = <712500>;
+ regulator-max-microvolt = <1500000>;
+ regulator-ramp-delay = <40000>;
regulator-always-on;
regulator-boot-on;
+ vin-supply = <&vcc5v0_sys>;
+
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ vdd_gpu: regulator@41 {
+ compatible = "silergy,syr828";
+ reg = <0x41>;
+ fcs,suspend-voltage-selector = <1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&vsel2_gpio>;
+ regulator-name = "vdd_gpu";
regulator-min-microvolt = <712500>;
regulator-max-microvolt = <1500000>;
regulator-ramp-delay = <1000>;
+ regulator-always-on;
+ regulator-boot-on;
vin-supply = <&vcc5v0_sys>;
regulator-state-mem {
@@ -407,56 +671,222 @@ &i2c2 {
i2c-scl-falling-time-ns = <30>;
status = "okay";
+ gpio-expander@20 {
+ compatible = "nxp,pca9555";
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pca0_pins>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ vcc-supply = <&vcc3v3_sys_s3>;
+ };
+
temp@4c {
- compatible = "national,lm75";
+ compatible = "onnn,lm75";
reg = <0x4c>;
};
};
-&io_domains {
- audio-supply = <&vcc1v8_sys_s0>;
- bt656-supply = <&vcc1v8_sys_s0>;
- gpio1830-supply = <&vcc3v0_s3>;
- sdmmc-supply = <&vcc_sdio_s0>;
+&i2c4 {
+ clock-frequency = <400000>;
+ i2c-scl-rising-time-ns = <160>;
+ i2c-scl-falling-time-ns = <30>;
+ status = "okay";
+
+ fusb0: typec-portc@22 {
+ compatible = "fcs,fusb302";
+ reg = <0x22>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&fusb0_int>;
+ vbus-supply = <&vcc5v0_typec>;
+
+ connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ data-role = "dual";
+ try-power-role = "sink";
+ source-pdos = <PDO_FIXED(5000, 1200, PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 500, PDO_FIXED_USB_COMM)>;
+ op-sink-microwatt = <5000000>;
+
+ extcon-cables = <1 2 5 6 9 10 12 44>;
+ typec-altmodes = <0xff01 1 0x001c0000 1>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ usb_con_hs: endpoint {
+ remote-endpoint = <&u2phy0_typec_hs>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usb_con_ss: endpoint {
+ remote-endpoint = <&tcphy0_typec_ss>;
+ };
+ };
+ port@2 {
+ reg = <2>;
+ usb_con_sbu: endpoint {
+ remote-endpoint = <&tcphy0_typec_dp>;
+ };
+ };
+ };
+ };
+ };
+};
+
+/* I2C on UEXT */
+&i2c7 {
status = "okay";
};
-&pcie_phy {
+/* External I2C */
+&i2c8 {
+ status = "okay";
+};
+
+&i2s2 {
+ #sound-dai-cells = <0>;
status = "okay";
};
+&io_domains {
+ status = "okay";
+ bt656-supply = <&vcc1v8_sys_s0>;
+ audio-supply = <&vcc1v8_sys_s0>;
+ sdmmc-supply = <&vcc_sdio_s0>;
+ gpio1830-supply = <&vcc3v0_s3>;
+};
+
&pcie0 {
ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
- max-link-speed = <2>;
num-lanes = <2>;
+ max-link-speed = <2>;
pinctrl-names = "default";
- status = "okay";
-
+ pinctrl-0 = <&pcie_prst &pcie_clkreqn_cpm>;
vpcie12v-supply = <&vcc12v_dcin>;
vpcie3v3-supply = <&pcie_power>;
vpcie1v8-supply = <&avdd_1v8_s0>;
vpcie0v9-supply = <&avdd_0v9_s0>;
+ status = "okay";
+};
+
+&pcie_phy {
+ status = "okay";
};
&pinctrl {
+ buttons {
+ pwrbtn: pwrbtn {
+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+
+ user1btn: usr1btn {
+ rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ charger {
+ ac_present_ap: ac-present-ap {
+ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+
+ charger_status: charger-status {
+ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ fan {
+ fan1_sense: fan1-sense {
+ rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+
+ fan2_sense: fan2-sense {
+ rockchip,pins = <4 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ fusb30x {
+ fusb0_int: fusb0-int {
+ rockchip,pins =
+ <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+
+ fusb0_vbus_en: fusb0-vbus-en {
+ rockchip,pins =
+ <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+ };
+
gmac {
- gphy_reset: gphy-reset {
- rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>;
+ rgmii_phy_reset: rgmii-phy-reset {
+ rockchip,pins =
+ <3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>;
};
};
leds {
- sys_grn_led_on: sys-grn-led-on {
- rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
+ network_act: network-act {
+ rockchip,pins =
+ <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+
+ usb3_act: usb3-act {
+ rockchip,pins =
+ <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+
+ sata_act: sata-act {
+ rockchip,pins =
+ <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+
+ system_led: sys-led {
+ rockchip,pins =
+ <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>,
+ <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+
+ sata_err_led: sata-err-led {
+ rockchip,pins =
+ <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_down>,
+ <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_down>,
+ <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>,
+ <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_down>,
+ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+ };
+
+ misc {
+ pca0_pins: pca0-pins {
+ rockchip,pins =
+ <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
};
- sys_red_led_on: sys-red-led-on {
- rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
+ wake_on_lan: wake-on-lan {
+ rockchip,pins =
+ <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
pcie {
- pcie_pwr: pcie-pwr {
+ pcie_prst: pcie-prst {
+ rockchip,pins =
+ <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+
+ pcie_pwr_en: pcie-pwr-en {
rockchip,pins =
<1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
};
@@ -464,31 +894,45 @@ pcie_pwr: pcie-pwr {
pmic {
pmic_int_l: pmic-int-l {
- rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+ rockchip,pins =
+ <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
+ };
+
+ vsel1_gpio: vsel1-gpio {
+ rockchip,pins =
+ <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
+ };
+
+ vsel2_gpio: vsel2-gpio {
+ rockchip,pins =
+ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
- power {
- hdd_a_power_en: hdd-a-power-en {
- rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+ power {
+ hdd_a_power: hdd-a-power {
+ rockchip,pins =
+ <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
};
- hdd_b_power_en: hdd-b-power-en {
- rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+ hdd_b_power: hdd-b-power {
+ rockchip,pins =
+ <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
};
vcc5v0_usb_en: vcc5v0-usb-en {
- rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+ rockchip,pins =
+ <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
- usb_lan_en: usb-lan-en {
- rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
+ sdmmc0_pwr_h: sdmmc0-pwr-h {
+ rockchip,pins =
+ <0 RK_PA1 RK_FUNC_GPIO &pcfg_output_high>;
};
- };
- vcc3v0-sd {
- sdmmc0_pwr_h: sdmmc0-pwr-h {
- rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
+ usb_lan_en: usb-lan-en {
+ rockchip,pins =
+ <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
@@ -499,28 +943,46 @@ &pmu_io_domains {
};
&pwm0 {
- /* pwm-fan on P7 */
status = "okay";
};
&pwm1 {
- /* pwm-fan on P6 */
+ status = "okay";
+};
+
+&pwm2 {
+ status = "okay";
+};
+
+&pwm3 {
+ status = "okay";
+};
+
+&saradc {
+ vref-supply = <&vcc1v8_s3>;
status = "okay";
};
&sdhci {
+ assigned-clock-rates = <150000000>;
bus-width = <8>;
mmc-hs200-1_8v;
+ // hs400 is broken on Helios64 since 5.10.60
+ // mmc-hs400-1_8v;
+ // mmc-hs400-enhanced-strobe;
+ supports-emmc;
non-removable;
- vqmmc-supply = <&vcc1v8_sys_s0>;
+ disable-wp;
status = "okay";
+ vqmmc-supply = <&vcc1v8_sys_s0>;
};
&sdmmc {
bus-width = <4>;
cap-sd-highspeed;
- cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
+ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; // TODO: verify what needs to be done to use implicit CD definition
disable-wp;
+ sd-uhs-sdr104;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
vmmc-supply = <&vcc3v0_sd>;
@@ -530,14 +992,6 @@ &sdmmc {
&spi1 {
status = "okay";
-
- spiflash: flash@0 {
- compatible = "jedec,spi-nor";
- reg = <0x0>;
- spi-max-frequency = <25000000>;
- status = "okay";
- m25p,fast-read;
- };
};
/* UEXT connector */
@@ -549,8 +1003,28 @@ &spi5 {
status = "okay";
};
+&tcphy0 {
+ extcon = <&fusb0>;
+ status = "okay";
+};
+
+&tcphy0_dp {
+ port {
+ tcphy0_typec_dp: endpoint {
+ remote-endpoint = <&usb_con_sbu>;
+ };
+ };
+};
+
+&tcphy0_usb3 {
+ port {
+ tcphy0_typec_ss: endpoint {
+ remote-endpoint = <&usb_con_ss>;
+ };
+ };
+};
+
&tcphy1 {
- /* phy for &usbdrd_dwc3_1 */
status = "okay";
};
@@ -562,61 +1036,119 @@ &tsadc {
status = "okay";
};
-&u2phy1 {
+&u2phy0 {
status = "okay";
- otg-port {
- /* phy for &usbdrd_dwc3_1 */
+ u2phy0_otg: otg-port {
+ status = "okay";
+ };
+
+ u2phy0_host: host-port {
phy-supply = <&vcc5v0_usb>;
status = "okay";
};
+
+ port {
+ u2phy0_typec_hs: endpoint {
+ remote-endpoint = <&usb_con_hs>;
+ };
+ };
+};
+
+&u2phy1 {
+ status = "okay";
+
+ u2phy1_otg: otg-port {
+ status = "okay";
+ };
+};
+
+&uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0_xfer>;
+ status = "okay";
};
&uart2 {
status = "okay";
};
+&usb_host0_ehci {
+ status = "okay";
+};
+
+&usb_host0_ohci {
+ status = "okay";
+};
+
+&usbdrd3_0 {
+ status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+ status = "okay";
+ dr_mode = "otg";
+};
+
&usbdrd3_1 {
status = "okay";
+};
- usb@fe900000 {
- dr_mode = "host";
- status = "okay";
+&usbdrd_dwc3_1 {
+ status = "okay";
+ dr_mode = "host";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ int_hub: hub@1 {
+ compatible = "usb2109,0815";
+ reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
- hub@1 {
- compatible = "usb2109,0815";
+ int_hub_port1: port@1 {
reg = <1>;
- #address-cells = <1>;
- #size-cells = <0>;
+ #trigger-source-cells = <0>;
+ };
- port@1 {
- reg = <1>;
- #trigger-source-cells = <0>;
- };
+ int_hub_port2: port@2 {
+ reg = <2>;
+ #trigger-source-cells = <0>;
+ };
- port@2 {
- reg = <2>;
- #trigger-source-cells = <0>;
- };
+ int_hub_port3: port@3 {
+ reg = <3>;
+ #trigger-source-cells = <0>;
+ };
- port@3 {
- reg = <3>;
- #trigger-source-cells = <0>;
- };
+ usb_lan: device@4 {
+ compatible = "usbbda,8156";
+ reg = <4>;
- device@4 {
- compatible = "usbbda,8156";
- reg = <4>;
- #address-cells = <2>;
- #size-cells = <0>;
+ #address-cells = <2>;
+ #size-cells = <0>;
- interface@0 { /* interface 0 of configuration 1 */
- compatible = "usbbda,8156.config1.0";
- reg = <0 1>;
- };
+ interface@0 { /* interface 0 of configuration 1 */
+ compatible = "usbbda,8156.config1.0";
+ reg = <0 1>;
};
};
};
};
+
+&vopb {
+ status = "okay";
+};
+
+&vopb_mmu {
+ status = "okay";
+};
+
+&vopl {
+ status = "okay";
+};
+
+&vopl_mmu {
+ status = "okay";
+};
\ No newline at end of file
--
Armbian