Commit 6d9a7bd6 authored by Levin Du's avatar Levin Du Committed by Heiko Stuebner
Browse files

arm64: dts: rockchip: add support for Firefly ROC-RK3399-PC-PLUS



ROC-RK3399-PC-PLUS is the board inside the portable Firefly Station P1 Geek
PC. As a redesign after the ROC-RK3399-PC, it uses DC-12V as power input
and spares a USB 3 host port. It is also equipped with a USB WiFi chip and
audio codec without the mezzanine board.

- Rockchip RK3399 SoC
- 4GB LPDDR4 RAM
- 16MB SPI-Flash
- eMMC slot
- TF card slot
- USB 3.0 Port x 1, USB 2.0 Port x 1, TypeC Port x 1
- HDMI
- Gigabit Ethernet
- WiFi: RTL8723DU
- Audio: ES8388
- Key: Recovery
- LED: WORK, DIY
- IR

Signed-off-by: default avatarKongxin Deng <dkx@t-chip.com.cn>
Signed-off-by: default avatarLevin Du <djw@t-chip.com.cn>
Link: https://lore.kernel.org/r/20210628035402.16812-3-djw@t-chip.com.cn


Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
parent 311864f6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ 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-roc-pc-mezzanine.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc-plus.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4a.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4c.dtb
+218 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2017 T-Chip Intelligent Technology Co., Ltd
 */

/dts-v1/;
#include "rk3399-roc-pc.dtsi"

/*
 * Notice:
 * 1. rk3399-roc-pc-plus is powered by dc_12v directly.
 * 2. rk3399-roc-pc-plus has only vcc_bus_typec0 in schematic, which is coresponding
 *    to vcc_vbus_typec1 in rk3399-roc-pc.
 *    For simplicity, reserve the node name of vcc_vbus_typec1.
 * 3. vcc5v0_host is actually 2 regulators (host0, 1) controlled by the same gpio.
 */

/delete-node/ &fusb1;
/delete-node/ &hub_rst;
/delete-node/ &mp8859;
/delete-node/ &vcc_sys_en;
/delete-node/ &vcc_vbus_typec0;
/delete-node/ &yellow_led;

/ {
	model = "Firefly ROC-RK3399-PC-PLUS Board";
	compatible = "firefly,roc-rk3399-pc-plus", "rockchip,rk3399";

	dc_12v: dc-12v {
		compatible = "regulator-fixed";
		regulator-name = "dc_12v";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
	};

	es8388-sound {
		compatible = "simple-audio-card";
		pinctrl-names = "default";
		pinctrl-0 = <&hp_det_pin>;
		simple-audio-card,name = "rockchip,es8388-codec";
		simple-audio-card,format = "i2s";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,widgets =
			"Microphone", "Mic Jack",
			"Headphone", "Headphones";
		simple-audio-card,routing =
			"LINPUT1", "Mic Jack",
			"Headphone Amp INL", "LOUT2",
			"Headphone Amp INR", "ROUT2",
			"Headphones", "Headphone Amp OUTL",
			"Headphones", "Headphone Amp OUTR";
		simple-audio-card,hp-det-gpio = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
		simple-audio-card,aux-devs = <&headphones_amp>;
		simple-audio-card,pin-switches = "Headphones";

		simple-audio-card,codec {
			sound-dai = <&es8388>;
		};

		simple-audio-card,cpu {
			sound-dai = <&i2s1>;
		};
	};

	gpio-fan {
		#cooling-cells = <2>;
		compatible = "gpio-fan";
		gpio-fan,speed-map = <0 0 3000 1>;
		gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
	};

	/delete-node/ gpio-keys;

	/* not amplifier, used as switcher only */
	headphones_amp: headphones-amp {
		compatible = "simple-audio-amplifier";
		pinctrl-names = "default";
		pinctrl-0 = <&ear_ctl_pin>;
		enable-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
		sound-name-prefix = "Headphone Amp";
		VCC-supply = <&vcca3v0_codec>;
	};

	ir-receiver {
		linux,rc-map-name = "rc-khadas";
	};

	leds {
		pinctrl-names = "default";
		pinctrl-0 = <&work_led_pin>, <&diy_led_pin>;
	};
};

&fusb0 {
	vbus-supply = <&vcc_vbus_typec1>;
};

&i2c0 {
	hym8563: hym8563@51 {
		compatible = "haoyu,hym8563";
		reg = <0x51>;
		interrupt-parent = <&gpio0>;
		interrupts = <RK_PA5 IRQ_TYPE_EDGE_FALLING>;
		#clock-cells = <0>;
		clock-frequency = <32768>;
		clock-output-names = "xin32k";
		pinctrl-names = "default";
		pinctrl-0 = <&hym8563_int>;
	};
};

&i2c1 {
	es8388: es8388@11 {
		compatible = "everest,es8388";
		reg = <0x11>;
		clock-names = "mclk";
		clocks = <&cru SCLK_I2S_8CH_OUT>;
		#sound-dai-cells = <0>;
	};
};

/* <4 RK_PA0 1 &pcfg_pull_none> is used as i2s_8ch_mclk_pin */
&i2s0_8ch_bus {
	rockchip,pins =
		<3 RK_PD0 1 &pcfg_pull_none>,
		<3 RK_PD1 1 &pcfg_pull_none>,
		<3 RK_PD2 1 &pcfg_pull_none>,
		<3 RK_PD3 1 &pcfg_pull_none>,
		<3 RK_PD4 1 &pcfg_pull_none>,
		<3 RK_PD5 1 &pcfg_pull_none>,
		<3 RK_PD6 1 &pcfg_pull_none>,
		<3 RK_PD7 1 &pcfg_pull_none>;
};

&i2s1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2s_8ch_mclk_pin>, <&i2s1_2ch_bus>;
	rockchip,playback-channels = <2>;
	rockchip,capture-channels = <2>;
	status = "okay";
};

&pinctrl {
	es8388 {
		ear_ctl_pin: ear-ctl-pin {
			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_output_high>;
		};

		hp_det_pin: hp-det-pin {
			rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_down>;
		};
	};

	hym8563 {
		hym8563_int: hym8563-int {
			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	i2s1 {
		i2s_8ch_mclk_pin: i2s-8ch-mclk-pin {
			rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>;
		};
	};
};

&u2phy0 {
	status = "okay";

	u2phy0_otg: otg-port {
		phy-supply = <&vcc_vbus_typec1>;
		status = "okay";
	};

	u2phy0_host: host-port {
		phy-supply = <&vcc5v0_host>;
		status = "okay";
	};
};

&u2phy1 {
	status = "okay";

	u2phy1_otg: otg-port {
		phy-supply = <&vcc5v0_host>;
		status = "okay";
	};

	u2phy1_host: host-port {
		phy-supply = <&vcc5v0_host>;
		status = "okay";
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
	status = "okay";
};

&usbdrd_dwc3_0 {
	dr_mode = "host";
	status = "okay";
};

&vcc_sys {
	/* vcc_sys is fixed, not controlled by any gpio */
	/delete-property/ gpio;
	/delete-property/ pinctrl-names;
	/delete-property/ pinctrl-0;
};

&vcc5v0_host {
	pinctrl-names = "default";
	pinctrl-0 = <&vcc5v0_host_en>;
};