Commit 50c51bc2 authored by Jianfeng Liu's avatar Jianfeng Liu Committed by Heiko Stuebner
Browse files

arm64: dts: rockchip: Add ArmSoM W3 board



W3 is the carrier board for LM7 System on Module.

W3 features:
- 1x 2.5GbE Realtek RTL8125 Ethernet
- 2x HDMI Type A out
- 1x HDMI Type A in
- 1x USB 3.1 Type C
- 2x USB 2.0 Type A
- 2x USB 3.0 Type A
- 1x PCIE 2.0 M.2 E Key (1 lane)
- 1x PCIE 3.0 PCIe (4 lanes)
- 1x TF scard slot
- 1x MIPI CSI
- 1x MIPI DSI
- 1x ES8316 audio jack
- 1x FAN connector
- 1x RTC
- 40-pin expansion header

Add support for ArmSoM LM7 board.

Signed-off-by: default avatarJianfeng Liu <liujianfeng1994@gmail.com>
Link: https://lore.kernel.org/r/20240918165008.169917-4-liujianfeng1994@gmail.com


Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
parent 4b6167b3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-display-vz.dtbo
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-io-expander.dtbo
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-armsom-sige7.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-armsom-w3.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-coolpi-cm5-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-coolpi-cm5-genbook.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-io.dtb
+408 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include "rk3588-armsom-lm7.dtsi"

/ {
	model = "ArmSoM W3";
	compatible = "armsom,w3", "armsom,lm7", "rockchip,rk3588";

	aliases {
		mmc1 = &sdmmc;
		mmc2 = &sdio;
	};

	analog-sound {
		compatible = "audio-graph-card";
		label = "rk3588-es8316";

		widgets = "Microphone", "Mic Jack",
			  "Headphone", "Headphones";

		routing = "MIC2", "Mic Jack",
			  "Headphones", "HPOL",
			  "Headphones", "HPOR";

		dais = <&i2s0_8ch_p0>;
		hp-det-gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&hp_detect>;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_rgb_b>;

		led-rgb-b {
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		led-rgb-r {
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_RED>;
			gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "none";
		};
	};

	fan: pwm-fan {
		compatible = "pwm-fan";
		cooling-levels = <0 120 150 180 210 240 255>;
		fan-supply = <&vcc5v0_sys>;
		pwms = <&pwm1 0 50000 0>;
		#cooling-cells = <2>;
	};

	rfkill {
		compatible = "rfkill-gpio";
		label = "rfkill-pcie-wlan";
		radio-type = "wlan";
		shutdown-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
	};

	rfkill-bt {
		compatible = "rfkill-gpio";
		label = "rfkill-m2-bt";
		radio-type = "bluetooth";
		shutdown-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
	};

	vcc3v3_pcie2x1l0: vcc3v3-pcie2x1l0-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pcie2_0_vcc3v3_en>;
		regulator-name = "vcc3v3_pcie2x1l0";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		startup-delay-us = <50000>;
		vin-supply = <&vcc5v0_sys>;
	};

	vcc3v3_pcie2x1l2: vcc3v3-pcie2x1l2-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_pcie2x1l2";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		startup-delay-us = <5000>;
		vin-supply = <&vcc_3v3_s3>;
	};

	vcc3v3_pcie30: vcc3v3-pcie30-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pcie3_vcc3v3_en>;
		regulator-name = "vcc3v3_pcie30";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		startup-delay-us = <5000>;
		vin-supply = <&vcc5v0_sys>;
	};

	vcc5v0_host: vcc5v0-host-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_host";
		regulator-boot-on;
		regulator-always-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&vcc5v0_host_en>;
		vin-supply = <&vcc5v0_sys>;
	};
};

&combphy0_ps {
	status = "okay";
};

&combphy1_ps {
	status = "okay";
};

&combphy2_psu {
	status = "okay";
};

&i2c6 {
	status = "okay";

	hym8563: rtc@51 {
		compatible = "haoyu,hym8563";
		reg = <0x51>;
		#clock-cells = <0>;
		clock-output-names = "hym8563";
		pinctrl-names = "default";
		pinctrl-0 = <&hym8563_int>;
		interrupt-parent = <&gpio0>;
		interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
		wakeup-source;
	};
};

&i2c7 {
	status = "okay";

	es8316: audio-codec@11 {
		compatible = "everest,es8316";
		reg = <0x11>;
		clocks = <&cru I2S0_8CH_MCLKOUT>;
		clock-names = "mclk";
		assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
		assigned-clock-rates = <12288000>;
		#sound-dai-cells = <0>;

		port {
			es8316_p0_0: endpoint {
				remote-endpoint = <&i2s0_8ch_p0_0>;
			};
		};
	};
};

&i2s0_8ch {
	pinctrl-names = "default";
	pinctrl-0 = <&i2s0_lrck
		     &i2s0_mclk
		     &i2s0_sclk
		     &i2s0_sdi0
		     &i2s0_sdo0>;
	status = "okay";

	i2s0_8ch_p0: port {
		i2s0_8ch_p0_0: endpoint {
			dai-format = "i2s";
			mclk-fs = <256>;
			remote-endpoint = <&es8316_p0_0>;
		};
	};
};

&package_thermal {
	polling-delay = <1000>;

	trips {
		package_fan0: package-fan0 {
			temperature = <55000>;
			hysteresis = <2000>;
			type = "active";
		};

		package_fan1: package-fan1 {
			temperature = <65000>;
			hysteresis = <2000>;
			type = "active";
		};
	};

	cooling-maps {
		map0 {
			trip = <&package_fan0>;
			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
		};

		map1 {
			trip = <&package_fan1>;
			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
		};
	};
};

&pcie2x1l0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie2_0_rst>;
	reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
	vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
	status = "okay";
};

&pcie2x1l2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie2_2_rst>;
	reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
	vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
	status = "okay";
};

&pcie30phy {
	status = "okay";
};

&pcie3x4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie3_rst>;
	reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
	vpcie3v3-supply = <&vcc3v3_pcie30>;
	status = "okay";
};

&pinctrl {
	hym8563 {
		hym8563_int: hym8563-int {
			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	leds {
		led_rgb_b: led-rgb-b {
			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	sound {
		hp_detect: hp-detect {
			rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	pcie2 {
		pcie2_0_rst: pcie2-0-rst {
			rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		pcie2_0_vcc3v3_en: pcie2-0-vcc-en {
			rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		pcie2_2_rst: pcie2-2-rst {
			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	pcie3 {
		pcie3_rst: pcie3-rst {
			rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		pcie3_vcc3v3_en: pcie3-vcc3v3-en {
			rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	usb {
		vcc5v0_host_en: vcc5v0-host-en {
			rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&pwm1 {
	status = "okay";
};

&sdmmc {
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
	disable-wp;
	max-frequency = <200000000>;
	no-sdio;
	no-mmc;
	sd-uhs-sdr104;
	vmmc-supply = <&vcc_3v3_s3>;
	vqmmc-supply = <&vccio_sd_s0>;
	status = "okay";
};

&sdio {
	bus-width = <4>;
	cap-sdio-irq;
	disable-wp;
	keep-power-in-suspend;
	max-frequency = <200000000>;
	no-sd;
	no-mmc;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&sdiom0_pins>;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	vmmc-supply = <&vcc3v3_pcie2x1l0>;
	vqmmc-supply = <&vcc_1v8_s3>;
	wakeup-source;
	status = "okay";
};

&uart2 {
	pinctrl-0 = <&uart2m0_xfer>;
	status = "okay";
};

&uart6 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart6m1_xfer &uart6m1_ctsn &uart6m1_rtsn>;
	status = "okay";
};

&u2phy1 {
	status = "okay";
};

&u2phy1_otg {
	status = "okay";
};

&u2phy2 {
	status = "okay";
};

&u2phy2_host {
	/* connected to USB hub, which is powered by vcc5v0_sys */
	phy-supply = <&vcc5v0_sys>;
	status = "okay";
};

&u2phy3 {
	status = "okay";
};

&u2phy3_host {
	phy-supply = <&vcc5v0_host>;
	status = "okay";
};

&usbdp_phy1 {
	status = "okay";
};

&usb_host0_ehci {
	status = "okay";
};

&usb_host0_ohci {
	status = "okay";
};

&usb_host1_ehci {
	status = "okay";
};

&usb_host1_ohci {
	status = "okay";
};

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

&usb_host2_xhci {
	status = "okay";
};