On 2020-03-24, Vagrant Cascadian wrote: > I've got a backported linux patch to support pinebook pro with > linux-libre 5.4.x. It's very limited support... no LCD, no battery > status, no RTC, etc. but it works! > > The one reason I haven't pushed the patch is it would cause useless > rebuilds of linux-libre for x86_64, i686 and armhf; I've been trying to > make that conditional for aarch64 and not been very successful at it; if > someone could help with that, or give me the go-ahead to merge as is > ... that'd be great! Since 5.4.28 was just pushed and not yet built, I went ahead and pushed this patch without figuring out how to do the conditional. live well, vagrant > > live well, > vagrant > From 8a5e3cf012634bda0df4e7562494d3bab43004a2 Mon Sep 17 00:00:00 2001 > From: Vagrant Cascadian > Date: Sat, 14 Mar 2020 23:20:12 -0700 > Subject: [PATCH] gnu: linux-libre-5.4-source: Add patch to support pinebook > pro. > > * gnu/packages/patches/linux-libre-Add-initial-support-for-Pinebook-.patch: > New file. > * gnu/local.mk (dist_patch_DATA): Update accordingly. > * gnu/packages/linux (linux-libre-5.4-source): Add patch. > --- > gnu/local.mk | 1 + > gnu/packages/linux.scm | 6 +- > ...re-Add-initial-support-for-Pinebook-.patch | 1135 +++++++++++++++++ > 3 files changed, 1141 insertions(+), 1 deletion(-) > create mode 100644 gnu/packages/patches/linux-libre-Add-initial-support-for-Pinebook-.patch > > diff --git a/gnu/local.mk b/gnu/local.mk > index 7cce60b7c0..345d72090e 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -1158,6 +1158,7 @@ dist_patch_DATA = \ > %D%/packages/patches/lierolibre-remove-arch-warning.patch \ > %D%/packages/patches/lierolibre-try-building-other-arch.patch \ > %D%/packages/patches/linkchecker-tests-require-network.patch \ > + %D%/packages/patches/linux-libre-Add-initial-support-for-Pinebook-.patch \ > %D%/packages/patches/linux-pam-no-setfsuid.patch \ > %D%/packages/patches/lirc-localstatedir.patch \ > %D%/packages/patches/lirc-reproducible-build.patch \ > diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm > index f2dcc325ff..dfddf366eb 100644 > --- a/gnu/packages/linux.scm > +++ b/gnu/packages/linux.scm > @@ -433,7 +433,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." > (define-public linux-libre-5.4-source > (source-with-patches linux-libre-5.4-pristine-source > (list %boot-logo-patch > - %linux-libre-arm-export-__sync_icache_dcache-patch))) > + %linux-libre-arm-export-__sync_icache_dcache-patch > + ;; Pinebook Pro patch from linux-next, > + ;; can be dropped for linux-libre 5.7 > + (search-patch > + "linux-libre-Add-initial-support-for-Pinebook-.patch")))) > > (define-public linux-libre-4.19-source > (source-with-patches linux-libre-4.19-pristine-source > diff --git a/gnu/packages/patches/linux-libre-Add-initial-support-for-Pinebook-.patch b/gnu/packages/patches/linux-libre-Add-initial-support-for-Pinebook-.patch > new file mode 100644 > index 0000000000..659e10cba6 > --- /dev/null > +++ b/gnu/packages/patches/linux-libre-Add-initial-support-for-Pinebook-.patch > @@ -0,0 +1,1135 @@ > +From d87a8072e8129a579246d8d31a591ca2aec05275 Mon Sep 17 00:00:00 2001 > +From: Tobias Schramm > +Date: Wed, 4 Mar 2020 22:30:23 +0100 > +Subject: [PATCH] arm64: dts: rockchip: Add initial support for Pinebook Pro > + > +This commit adds initial dt support for the rk3399 based Pinebook Pro. > + > +Signed-off-by: Tobias Schramm > +Link: https://lore.kernel.org/r/20200304213023.689983-3-t.schramm@manjaro.org > +Signed-off-by: Heiko Stuebner > + > +Taken from next-20200313 commit 5a65505a6988443b211d3bf3f5bb5b79907c33b9 > +--- > + arch/arm64/boot/dts/rockchip/Makefile | 1 + > + .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 1096 +++++++++++++++++ > + 2 files changed, 1097 insertions(+) > + create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts > + > +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile > +index 1f18a9392d15..7de9b61d6415 100644 > +--- a/arch/arm64/boot/dts/rockchip/Makefile > ++++ b/arch/arm64/boot/dts/rockchip/Makefile > +@@ -25,6 +25,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb > + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb > + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb > + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb > ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb > + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb > + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc.dtb > + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4.dtb > +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts > +new file mode 100644 > +index 000000000000..5ea281b55fe2 > +--- /dev/null > ++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts > +@@ -0,0 +1,1096 @@ > ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > ++/* > ++ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. > ++ * Copyright (c) 2018 Akash Gajjar > ++ * Copyright (c) 2020 Tobias Schramm > ++ */ > ++ > ++/dts-v1/; > ++#include > ++#include > ++#include > ++#include > ++#include > ++#include "rk3399.dtsi" > ++#include "rk3399-opp.dtsi" > ++ > ++/ { > ++ model = "Pine64 Pinebook Pro"; > ++ compatible = "pine64,pinebook-pro", "rockchip,rk3399"; > ++ > ++ chosen { > ++ stdout-path = "serial2:1500000n8"; > ++ }; > ++ > ++ backlight: edp-backlight { > ++ compatible = "pwm-backlight"; > ++ power-supply = <&vcc_12v>; > ++ pwms = <&pwm0 0 740740 0>; > ++ }; > ++ > ++ edp_panel: edp-panel { > ++ compatible = "boe,nv140fhmn49"; > ++ backlight = <&backlight>; > ++ enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&panel_en_gpio>; > ++ power-supply = <&vcc3v3_panel>; > ++ > ++ ports { > ++ #address-cells = <1>; > ++ #size-cells = <0>; > ++ > ++ port@0 { > ++ reg = <0>; > ++ #address-cells = <1>; > ++ #size-cells = <0>; > ++ > ++ panel_in_edp: endpoint@0 { > ++ reg = <0>; > ++ remote-endpoint = <&edp_out_panel>; > ++ }; > ++ }; > ++ }; > ++ }; > ++ > ++ /* > ++ * Use separate nodes for gpio-keys to allow for selective deactivation > ++ * of wakeup sources via sysfs without disabling the whole key > ++ */ > ++ gpio-key-lid { > ++ compatible = "gpio-keys"; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&lidbtn_gpio>; > ++ > ++ lid { > ++ debounce-interval = <20>; > ++ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>; > ++ label = "Lid"; > ++ linux,code = ; > ++ linux,input-type = ; > ++ wakeup-event-action = ; > ++ wakeup-source; > ++ }; > ++ }; > ++ > ++ gpio-key-power { > ++ compatible = "gpio-keys"; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&pwrbtn_gpio>; > ++ > ++ power { > ++ debounce-interval = <20>; > ++ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; > ++ label = "Power"; > ++ linux,code = ; > ++ wakeup-source; > ++ }; > ++ }; > ++ > ++ leds { > ++ compatible = "gpio-leds"; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&pwrled_gpio &slpled_gpio>; > ++ > ++ green-led { > ++ color = ; > ++ default-state = "on"; > ++ function = LED_FUNCTION_POWER; > ++ gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; > ++ label = "green:power"; > ++ }; > ++ > ++ red-led { > ++ color = ; > ++ default-state = "off"; > ++ function = LED_FUNCTION_STANDBY; > ++ gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; > ++ label = "red:standby"; > ++ panic-indicator; > ++ retain-state-suspended; > ++ }; > ++ }; > ++ > ++ /* Power sequence for SDIO WiFi module */ > ++ sdio_pwrseq: sdio-pwrseq { > ++ compatible = "mmc-pwrseq-simple"; > ++ clocks = <&rk808 1>; > ++ clock-names = "ext_clock"; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&wifi_enable_h_gpio>; > ++ post-power-on-delay-ms = <100>; > ++ power-off-delay-us = <500000>; > ++ > ++ /* WL_REG_ON on module */ > ++ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; > ++ }; > ++ > ++ /* Audio components */ > ++ es8316-sound { > ++ compatible = "simple-audio-card"; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&hp_det_gpio>; > ++ simple-audio-card,name = "rockchip,es8316-codec"; > ++ simple-audio-card,format = "i2s"; > ++ simple-audio-card,mclk-fs = <256>; > ++ > ++ simple-audio-card,widgets = > ++ "Microphone", "Mic Jack", > ++ "Headphone", "Headphones", > ++ "Speaker", "Speaker"; > ++ simple-audio-card,routing = > ++ "MIC1", "Mic Jack", > ++ "Headphones", "HPOL", > ++ "Headphones", "HPOR", > ++ "Speaker Amplifier INL", "HPOL", > ++ "Speaker Amplifier INR", "HPOR", > ++ "Speaker", "Speaker Amplifier OUTL", > ++ "Speaker", "Speaker Amplifier OUTR"; > ++ > ++ simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; > ++ simple-audio-card,aux-devs = <&speaker_amp>; > ++ simple-audio-card,pin-switches = "Speaker"; > ++ > ++ simple-audio-card,cpu { > ++ sound-dai = <&i2s1>; > ++ }; > ++ > ++ simple-audio-card,codec { > ++ sound-dai = <&es8316>; > ++ }; > ++ }; > ++ > ++ speaker_amp: speaker-amplifier { > ++ compatible = "simple-audio-amplifier"; > ++ enable-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; > ++ sound-name-prefix = "Speaker Amplifier"; > ++ VCC-supply = <&pa_5v>; > ++ }; > ++ > ++ /* Power tree */ > ++ /* Root power source */ > ++ vcc_sysin: vcc-sysin { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcc_sysin"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ }; > ++ > ++ /* Regulators supplied by vcc_sysin */ > ++ /* LCD backlight supply */ > ++ vcc_12v: vcc-12v { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcc_12v"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <12000000>; > ++ regulator-max-microvolt = <12000000>; > ++ vin-supply = <&vcc_sysin>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ /* Main 3.3 V supply */ > ++ vcc3v3_sys: wifi_bat: vcc3v3-sys { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcc3v3_sys"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <3300000>; > ++ regulator-max-microvolt = <3300000>; > ++ vin-supply = <&vcc_sysin>; > ++ > ++ regulator-state-mem { > ++ regulator-on-in-suspend; > ++ }; > ++ }; > ++ > ++ /* 5 V USB power supply */ > ++ vcc5v0_usb: pa_5v: vcc5v0-usb-regulator { > ++ compatible = "regulator-fixed"; > ++ enable-active-high; > ++ gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&pwr_5v_gpio>; > ++ regulator-name = "vcc5v0_usb"; > ++ regulator-always-on; > ++ regulator-min-microvolt = <5000000>; > ++ regulator-max-microvolt = <5000000>; > ++ vin-supply = <&vcc_sysin>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ /* RK3399 logic supply */ > ++ vdd_log: vdd-log { > ++ compatible = "pwm-regulator"; > ++ pwms = <&pwm2 0 25000 1>; > ++ regulator-name = "vdd_log"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <800000>; > ++ regulator-max-microvolt = <1400000>; > ++ vin-supply = <&vcc_sysin>; > ++ > ++ regulator-state-mem { > ++ regulator-on-in-suspend; > ++ }; > ++ }; > ++ > ++ /* Regulators supplied by vcc3v3_sys */ > ++ /* 0.9 V supply, always on */ > ++ vcc_0v9: vcc-0v9 { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcc_0v9"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <900000>; > ++ regulator-max-microvolt = <900000>; > ++ vin-supply = <&vcc3v3_sys>; > ++ }; > ++ > ++ /* S3 1.8 V supply, switched by vcc1v8_s3 */ > ++ vcca1v8_s3: vcc1v8-s3 { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcca1v8_s3"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <1800000>; > ++ regulator-max-microvolt = <1800000>; > ++ vin-supply = <&vcc3v3_sys>; > ++ }; > ++ > ++ /* micro SD card power */ > ++ vcc3v0_sd: vcc3v0-sd { > ++ compatible = "regulator-fixed"; > ++ enable-active-high; > ++ gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&sdmmc0_pwr_h_gpio>; > ++ regulator-name = "vcc3v0_sd"; > ++ regulator-always-on; > ++ regulator-min-microvolt = <3000000>; > ++ regulator-max-microvolt = <3000000>; > ++ vin-supply = <&vcc3v3_sys>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ /* LCD panel power, called VCC3V3_S0 in schematic */ > ++ vcc3v3_panel: vcc3v3-panel { > ++ compatible = "regulator-fixed"; > ++ enable-active-high; > ++ gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&lcdvcc_en_gpio>; > ++ regulator-name = "vcc3v3_panel"; > ++ regulator-always-on; > ++ regulator-min-microvolt = <3300000>; > ++ regulator-max-microvolt = <3300000>; > ++ regulator-enable-ramp-delay = <100000>; > ++ vin-supply = <&vcc3v3_sys>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ /* M.2 adapter power, switched by vcc1v8_s3 */ > ++ vcc3v3_ssd: vcc3v3-ssd { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcc3v3_ssd"; > ++ regulator-min-microvolt = <3300000>; > ++ regulator-max-microvolt = <3300000>; > ++ vin-supply = <&vcc3v3_sys>; > ++ }; > ++ > ++ /* Regulators supplied by vcc5v0_usb */ > ++ /* USB 3 port power supply regulator */ > ++ vcc5v0_otg: vcc5v0-otg { > ++ compatible = "regulator-fixed"; > ++ enable-active-high; > ++ gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&vcc5v0_host_en_gpio>; > ++ regulator-name = "vcc5v0_otg"; > ++ regulator-always-on; > ++ regulator-min-microvolt = <5000000>; > ++ regulator-max-microvolt = <5000000>; > ++ vin-supply = <&vcc5v0_usb>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ /* Regulators supplied by vcc5v0_usb */ > ++ /* Type C port power supply regulator */ > ++ vbus_5vout: vbus_typec: vbus-5vout { > ++ compatible = "regulator-fixed"; > ++ enable-active-high; > ++ gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&vcc5v0_typec0_en_gpio>; > ++ regulator-name = "vbus_5vout"; > ++ regulator-min-microvolt = <5000000>; > ++ regulator-max-microvolt = <5000000>; > ++ vin-supply = <&vcc5v0_usb>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ /* Regulators supplied by vcc_1v8 */ > ++ /* Primary 0.9 V LDO */ > ++ vcca0v9_s3: vcca0v9-s3 { > ++ compatible = "regulator-fixed"; > ++ regulator-name = "vcc0v9_s3"; > ++ regulator-min-microvolt = <5000000>; > ++ regulator-max-microvolt = <5000000>; > ++ vin-supply = <&vcc_1v8>; > ++ > ++ regulator-state-mem { > ++ regulator-on-in-suspend; > ++ }; > ++ }; > ++ > ++ mains_charger: dc-charger { > ++ compatible = "gpio-charger"; > ++ charger-type = "mains"; > ++ gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>; > ++ > ++ /* Also triggered by USB charger */ > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&dc_det_gpio>; > ++ }; > ++}; > ++ > ++&cdn_dp { > ++ status = "okay"; > ++}; > ++ > ++&cpu_b0 { > ++ cpu-supply = <&vdd_cpu_b>; > ++}; > ++ > ++&cpu_b1 { > ++ cpu-supply = <&vdd_cpu_b>; > ++}; > ++ > ++&cpu_l0 { > ++ cpu-supply = <&vdd_cpu_l>; > ++}; > ++ > ++&cpu_l1 { > ++ cpu-supply = <&vdd_cpu_l>; > ++}; > ++ > ++&cpu_l2 { > ++ cpu-supply = <&vdd_cpu_l>; > ++}; > ++ > ++&cpu_l3 { > ++ cpu-supply = <&vdd_cpu_l>; > ++}; > ++ > ++&edp { > ++ force-hpd; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&edp_hpd>; > ++ status = "okay"; > ++ > ++ ports { > ++ edp_out: port@1 { > ++ reg = <1>; > ++ #address-cells = <1>; > ++ #size-cells = <0>; > ++ > ++ edp_out_panel: endpoint@0 { > ++ reg = <0>; > ++ remote-endpoint = <&panel_in_edp>; > ++ }; > ++ }; > ++ }; > ++}; > ++ > ++&emmc_phy { > ++ status = "okay"; > ++}; > ++ > ++&gpu { > ++ mali-supply = <&vdd_gpu>; > ++ status = "okay"; > ++}; > ++ > ++&hdmi_sound { > ++ status = "okay"; > ++}; > ++ > ++&i2c0 { > ++ clock-frequency = <400000>; > ++ i2c-scl-falling-time-ns = <4>; > ++ i2c-scl-rising-time-ns = <168>; > ++ status = "okay"; > ++ > ++ rk808: pmic@1b { > ++ compatible = "rockchip,rk808"; > ++ reg = <0x1b>; > ++ #clock-cells = <1>; > ++ clock-output-names = "xin32k", "rk808-clkout2"; > ++ interrupt-parent = <&gpio3>; > ++ interrupts = <10 IRQ_TYPE_LEVEL_LOW>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&pmic_int_l_gpio>; > ++ rockchip,system-power-controller; > ++ wakeup-source; > ++ > ++ vcc1-supply = <&vcc_sysin>; > ++ vcc2-supply = <&vcc_sysin>; > ++ vcc3-supply = <&vcc_sysin>; > ++ vcc4-supply = <&vcc_sysin>; > ++ vcc6-supply = <&vcc_sysin>; > ++ vcc7-supply = <&vcc_sysin>; > ++ vcc8-supply = <&vcc3v3_sys>; > ++ vcc9-supply = <&vcc_sysin>; > ++ vcc10-supply = <&vcc_sysin>; > ++ vcc11-supply = <&vcc_sysin>; > ++ vcc12-supply = <&vcc3v3_sys>; > ++ vcc13-supply = <&vcc_sysin>; > ++ vcc14-supply = <&vcc_sysin>; > ++ > ++ regulators { > ++ /* rk3399 center logic supply */ > ++ vdd_center: DCDC_REG1 { > ++ regulator-name = "vdd_center"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <750000>; > ++ regulator-max-microvolt = <1350000>; > ++ regulator-ramp-delay = <6001>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ vdd_cpu_l: DCDC_REG2 { > ++ regulator-name = "vdd_cpu_l"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <750000>; > ++ regulator-max-microvolt = <1350000>; > ++ regulator-ramp-delay = <6001>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ vcc_ddr: DCDC_REG3 { > ++ regulator-name = "vcc_ddr"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ > ++ regulator-state-mem { > ++ regulator-on-in-suspend; > ++ }; > ++ }; > ++ > ++ vcc_1v8: vcc_wl: DCDC_REG4 { > ++ regulator-name = "vcc_1v8"; > ++ 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 */ > ++ LDO_REG1 { > ++ }; > ++ > ++ /* not used */ > ++ LDO_REG2 { > ++ }; > ++ > ++ vcc1v8_pmupll: LDO_REG3 { > ++ regulator-name = "vcc1v8_pmupll"; > ++ 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>; > ++ }; > ++ }; > ++ > ++ vcc_sdio: LDO_REG4 { > ++ regulator-name = "vcc_sdio"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <1800000>; > ++ regulator-max-microvolt = <3000000>; > ++ > ++ regulator-state-mem { > ++ regulator-on-in-suspend; > ++ regulator-suspend-microvolt = <3000000>; > ++ }; > ++ }; > ++ > ++ vcca3v0_codec: LDO_REG5 { > ++ regulator-name = "vcca3v0_codec"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <3000000>; > ++ regulator-max-microvolt = <3000000>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ vcc_1v5: LDO_REG6 { > ++ regulator-name = "vcc_1v5"; > ++ 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>; > ++ }; > ++ }; > ++ > ++ vcca1v8_codec: LDO_REG7 { > ++ regulator-name = "vcca1v8_codec"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <1800000>; > ++ regulator-max-microvolt = <1800000>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ vcc_3v0: LDO_REG8 { > ++ regulator-name = "vcc_3v0"; > ++ 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_s3: SWITCH_REG1 { > ++ regulator-name = "vcc3v3_s3"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ > ++ vcc3v3_s0: SWITCH_REG2 { > ++ regulator-name = "vcc3v3_s0"; > ++ regulator-always-on; > ++ regulator-boot-on; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++ }; > ++ }; > ++ > ++ 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-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <712500>; > ++ regulator-max-microvolt = <1500000>; > ++ regulator-ramp-delay = <1000>; > ++ vin-supply = <&vcc_1v8>; > ++ > ++ 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-always-on; > ++ regulator-boot-on; > ++ regulator-min-microvolt = <712500>; > ++ regulator-max-microvolt = <1500000>; > ++ regulator-ramp-delay = <1000>; > ++ vin-supply = <&vcc_1v8>; > ++ > ++ regulator-state-mem { > ++ regulator-off-in-suspend; > ++ }; > ++ }; > ++}; > ++ > ++&i2c1 { > ++ clock-frequency = <100000>; > ++ i2c-scl-falling-time-ns = <4>; > ++ i2c-scl-rising-time-ns = <168>; > ++ status = "okay"; > ++ > ++ es8316: es8316@11 { > ++ compatible = "everest,es8316"; > ++ reg = <0x11>; > ++ clocks = <&cru SCLK_I2S_8CH_OUT>; > ++ clock-names = "mclk"; > ++ #sound-dai-cells = <0>; > ++ }; > ++}; > ++ > ++&i2c3 { > ++ i2c-scl-falling-time-ns = <15>; > ++ i2c-scl-rising-time-ns = <450>; > ++ status = "okay"; > ++}; > ++ > ++&i2c4 { > ++ i2c-scl-falling-time-ns = <20>; > ++ i2c-scl-rising-time-ns = <600>; > ++ status = "okay"; > ++ > ++ fusb0: fusb30x@22 { > ++ compatible = "fcs,fusb302"; > ++ reg = <0x22>; > ++ fcs,int_n = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&fusb0_int_gpio>; > ++ vbus-supply = <&vbus_typec>; > ++ > ++ connector { > ++ compatible = "usb-c-connector"; > ++ data-role = "host"; > ++ label = "USB-C"; > ++ op-sink-microwatt = <1000000>; > ++ power-role = "dual"; > ++ sink-pdos = > ++ ; > ++ source-pdos = > ++ ; > ++ try-power-role = "sink"; > ++ > ++ ports { > ++ #address-cells = <1>; > ++ #size-cells = <0>; > ++ > ++ port@0 { > ++ reg = <0>; > ++ > ++ usbc_hs: endpoint { > ++ remote-endpoint = > ++ <&u2phy0_typec_hs>; > ++ }; > ++ }; > ++ > ++ port@1 { > ++ reg = <1>; > ++ > ++ usbc_ss: endpoint { > ++ remote-endpoint = > ++ <&tcphy0_typec_ss>; > ++ }; > ++ }; > ++ > ++ port@2 { > ++ reg = <2>; > ++ > ++ usbc_dp: endpoint { > ++ remote-endpoint = > ++ <&tcphy0_typec_dp>; > ++ }; > ++ }; > ++ }; > ++ }; > ++ }; > ++}; > ++ > ++&i2s1 { > ++ #sound-dai-cells = <0>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&i2s_8ch_mclk_gpio>, <&i2s1_2ch_bus>; > ++ rockchip,capture-channels = <8>; > ++ rockchip,playback-channels = <8>; > ++ status = "okay"; > ++}; > ++ > ++&io_domains { > ++ audio-supply = <&vcc_3v0>; > ++ gpio1830-supply = <&vcc_3v0>; > ++ sdmmc-supply = <&vcc_sdio>; > ++ status = "okay"; > ++}; > ++ > ++&pcie_phy { > ++ status = "okay"; > ++}; > ++ > ++&pcie0 { > ++ bus-scan-delay-ms = <1000>; > ++ ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; > ++ max-link-speed = <2>; > ++ num-lanes = <4>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&pcie_clkreqn_cpm>; > ++ vpcie0v9-supply = <&vcca0v9_s3>; > ++ vpcie1v8-supply = <&vcca1v8_s3>; > ++ vpcie3v3-supply = <&vcc3v3_ssd>; > ++ status = "okay"; > ++}; > ++ > ++&pinctrl { > ++ buttons { > ++ pwrbtn_gpio: pwrbtn-gpio { > ++ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; > ++ }; > ++ > ++ lidbtn_gpio: lidbtn-gpio { > ++ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; > ++ }; > ++ }; > ++ > ++ dc-charger { > ++ dc_det_gpio: dc-det-gpio { > ++ rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ }; > ++ > ++ es8316 { > ++ hp_det_gpio: hp-det-gpio { > ++ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; > ++ }; > ++ }; > ++ > ++ fusb302x { > ++ fusb0_int_gpio: fusb0-int-gpio { > ++ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; > ++ }; > ++ }; > ++ > ++ i2s1 { > ++ i2s_8ch_mclk_gpio: i2s-8ch-mclk-gpio { > ++ rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>; > ++ }; > ++ }; > ++ > ++ lcd-panel { > ++ lcdvcc_en_gpio: lcdvcc-en-gpio { > ++ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ panel_en_gpio: panel-en-gpio { > ++ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ lcd_panel_reset_gpio: lcd-panel-reset-gpio { > ++ rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; > ++ }; > ++ }; > ++ > ++ leds { > ++ pwrled_gpio: pwrled_gpio { > ++ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ slpled_gpio: slpled_gpio { > ++ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ }; > ++ > ++ pmic { > ++ pmic_int_l_gpio: pmic-int-l-gpio { > ++ rockchip,pins = <3 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>; > ++ }; > ++ }; > ++ > ++ sdcard { > ++ sdmmc0_pwr_h_gpio: sdmmc0-pwr-h-gpio { > ++ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ }; > ++ > ++ sdio-pwrseq { > ++ wifi_enable_h_gpio: wifi-enable-h-gpio { > ++ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ }; > ++ > ++ usb-typec { > ++ vcc5v0_typec0_en_gpio: vcc5v0-typec0-en-gpio { > ++ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; > ++ }; > ++ }; > ++ > ++ usb2 { > ++ pwr_5v_gpio: pwr-5v-gpio { > ++ rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ vcc5v0_host_en_gpio: vcc5v0-host-en-gpio { > ++ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ }; > ++ > ++ wireless-bluetooth { > ++ bt_wake_gpio: bt-wake-gpio { > ++ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ bt_host_wake_gpio: bt-host-wake-gpio { > ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ > ++ bt_reset_gpio: bt-reset-gpio { > ++ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; > ++ }; > ++ }; > ++}; > ++ > ++&pmu_io_domains { > ++ pmu1830-supply = <&vcc_3v0>; > ++ status = "okay"; > ++}; > ++ > ++&pwm0 { > ++ status = "okay"; > ++}; > ++ > ++&pwm2 { > ++ status = "okay"; > ++}; > ++ > ++&saradc { > ++ vref-supply = <&vcca1v8_s3>; > ++ status = "okay"; > ++}; > ++ > ++&sdmmc { > ++ bus-width = <4>; > ++ cap-mmc-highspeed; > ++ cap-sd-highspeed; > ++ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; > ++ disable-wp; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; > ++ sd-uhs-sdr104; > ++ vmmc-supply = <&vcc3v0_sd>; > ++ vqmmc-supply = <&vcc_sdio>; > ++ status = "okay"; > ++}; > ++ > ++&sdio0 { > ++ bus-width = <4>; > ++ cap-sd-highspeed; > ++ cap-sdio-irq; > ++ keep-power-in-suspend; > ++ mmc-pwrseq = <&sdio_pwrseq>; > ++ non-removable; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; > ++ sd-uhs-sdr104; > ++ status = "okay"; > ++}; > ++ > ++&sdhci { > ++ bus-width = <8>; > ++ mmc-hs200-1_8v; > ++ non-removable; > ++ status = "okay"; > ++}; > ++ > ++&spi1 { > ++ max-freq = <10000000>; > ++ status = "okay"; > ++ > ++ spiflash: flash@0 { > ++ compatible = "jedec,spi-nor"; > ++ reg = <0>; > ++ m25p,fast-read; > ++ spi-max-frequency = <10000000>; > ++ }; > ++}; > ++ > ++&tcphy0 { > ++ status = "okay"; > ++}; > ++ > ++&tcphy0_dp { > ++ port { > ++ tcphy0_typec_dp: endpoint { > ++ remote-endpoint = <&usbc_dp>; > ++ }; > ++ }; > ++}; > ++ > ++&tcphy0_usb3 { > ++ port { > ++ tcphy0_typec_ss: endpoint { > ++ remote-endpoint = <&usbc_ss>; > ++ }; > ++ }; > ++}; > ++ > ++&tcphy1 { > ++ status = "okay"; > ++}; > ++ > ++&tsadc { > ++ /* tshut mode 0:CRU 1:GPIO */ > ++ rockchip,hw-tshut-mode = <1>; > ++ /* tshut polarity 0:LOW 1:HIGH */ > ++ rockchip,hw-tshut-polarity = <1>; > ++ status = "okay"; > ++}; > ++ > ++&u2phy0 { > ++ status = "okay"; > ++ > ++ u2phy0_otg: otg-port { > ++ status = "okay"; > ++ }; > ++ > ++ u2phy0_host: host-port { > ++ phy-supply = <&vcc5v0_otg>; > ++ status = "okay"; > ++ }; > ++ > ++ port { > ++ u2phy0_typec_hs: endpoint { > ++ remote-endpoint = <&usbc_hs>; > ++ }; > ++ }; > ++}; > ++ > ++&u2phy1 { > ++ status = "okay"; > ++ > ++ u2phy1_otg: otg-port { > ++ status = "okay"; > ++ }; > ++ > ++ u2phy1_host: host-port { > ++ phy-supply = <&vcc5v0_otg>; > ++ status = "okay"; > ++ }; > ++}; > ++ > ++&uart0 { > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; > ++ uart-has-rtscts; > ++ status = "okay"; > ++ > ++ bluetooth { > ++ compatible = "brcm,bcm4345c5"; > ++ clocks = <&rk808 1>; > ++ clock-names = "lpo"; > ++ device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; > ++ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; > ++ max-speed = <1500000>; > ++ pinctrl-names = "default"; > ++ pinctrl-0 = <&bt_host_wake_gpio &bt_wake_gpio &bt_reset_gpio>; > ++ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; > ++ vbat-supply = <&wifi_bat>; > ++ vddio-supply = <&vcc_wl>; > ++ }; > ++}; > ++ > ++&uart2 { > ++ status = "okay"; > ++}; > ++ > ++&usb_host0_ehci { > ++ status = "okay"; > ++}; > ++ > ++&usb_host0_ohci { > ++ status = "okay"; > ++}; > ++ > ++&usb_host1_ehci { > ++ status = "okay"; > ++}; > ++ > ++&usb_host1_ohci { > ++ status = "okay"; > ++}; > ++ > ++&usbdrd3_0 { > ++ status = "okay"; > ++}; > ++ > ++&usbdrd_dwc3_0 { > ++ dr_mode = "host"; > ++ status = "okay"; > ++}; > ++ > ++&usbdrd3_1 { > ++ status = "okay"; > ++}; > ++ > ++&usbdrd_dwc3_1 { > ++ dr_mode = "host"; > ++ status = "okay"; > ++}; > ++ > ++&vopb { > ++ status = "okay"; > ++}; > ++ > ++&vopb_mmu { > ++ status = "okay"; > ++}; > ++ > ++&vopl { > ++ status = "okay"; > ++}; > ++ > ++&vopl_mmu { > ++ status = "okay"; > ++}; > +-- > +2.25.1 > + > -- > 2.20.1