Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
// Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd.

/dts-v1/;

#include "rk3399-excavator-sapphire.dtsi"
#include "rk3399-linux.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "Rockchip RK3399 Excavator Board (Linux Opensource)";
	compatible = "rockchip,rk3399-excavator-linux", "rockchip,rk3399";

	vcc_lcd: vcc-lcd {
		compatible = "regulator-fixed";
		regulator-name = "vcc_lcd";
		gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
		startup-delay-us = <20000>;
		enable-active-high;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		vin-supply = <&vcc5v0_sys>;
	};

	panel: panel {
		compatible = "simple-panel";
		backlight = <&backlight>;
		power-supply = <&vcc_lcd>;
		enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
		prepare-delay-ms = <20>;
		enable-delay-ms = <20>;

		display-timings {
			native-mode = <&timing0>;

			timing0: timing0 {
				clock-frequency = <200000000>;
				hactive = <1536>;
				vactive = <2048>;
				hfront-porch = <12>;
				hsync-len = <16>;
				hback-porch = <48>;
				vfront-porch = <8>;
				vsync-len = <4>;
				vback-porch = <8>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};

		ports {
			panel_in: endpoint {
				remote-endpoint = <&edp_out>;
			};
		};
	};

	hdmi_sound: hdmi-sound {
		status = "okay";
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		autorepeat;

		pinctrl-names = "default";
		pinctrl-0 = <&pwrbtn>;

		button@0 {
			gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			label = "GPIO Key Power";
			linux,input-type = <1>;
			gpio-key,wakeup = <1>;
			debounce-interval = <100>;
		};
	};

	vccadc_ref: vccadc-ref {
		compatible = "regulator-fixed";
		regulator-name = "vcc1v8_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	ext_cam_clk: external-camera-clock {
		compatible = "fixed-clock";
		clock-frequency = <27000000>;
		clock-output-names = "CLK_CAMERA_27MHZ";
		#clock-cells = <0>;
	};

	adc-keys {
		compatible = "adc-keys";
		io-channels = <&saradc 1>;
		io-channel-names = "buttons";
		poll-interval = <100>;
		keyup-threshold-microvolt = <1800000>;

		button-up {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
			press-threshold-microvolt = <100000>;
		};

		button-down {
			label = "Volume Down";
			linux,code = <KEY_VOLUMEDOWN>;
			press-threshold-microvolt = <300000>;
		};

		back {
			label = "Back";
			linux,code = <KEY_BACK>;
			press-threshold-microvolt = <985000>;
		};

		menu {
			label = "Menu";
			linux,code = <KEY_MENU>;
			press-threshold-microvolt = <1314000>;
		};
	};
};

&dfi {
	status = "okay";
};

&dmc {
	status = "okay";
	center-supply = <&vdd_center>;
	upthreshold = <40>;
	downdifferential = <20>;
	system-status-freq = <
		/*system status         freq(KHz)*/
		SYS_STATUS_NORMAL       856000
		SYS_STATUS_REBOOT       856000
		SYS_STATUS_SUSPEND      328000
		SYS_STATUS_VIDEO_1080P  666000
		SYS_STATUS_VIDEO_4K     856000
		SYS_STATUS_VIDEO_4K_10B 856000
		SYS_STATUS_PERFORMANCE  856000
		SYS_STATUS_BOOST        856000
		SYS_STATUS_DUALVIEW     856000
		SYS_STATUS_ISP          856000
	>;
	vop-bw-dmc-freq = <
	/* min_bw(MB/s) max_bw(MB/s) freq(KHz) */
		0       762      416000
		763     3012     666000
		3013    99999    856000
	>;

	vop-pn-msch-readlatency = <
		0	0x20
		4	0x20
	>;

	auto-min-freq = <328000>;
	auto-freq-en = <0>;
};

&dmc_opp_table {
		compatible = "operating-points-v2";

		opp-200000000 {
			opp-hz = /bits/ 64 <200000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
		opp-300000000 {
			opp-hz = /bits/ 64 <300000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
		opp-328000000 {
			opp-hz = /bits/ 64 <328000000>;
			opp-microvolt = <900000>;
		};
		opp-400000000 {
			opp-hz = /bits/ 64 <400000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
		opp-416000000 {
			opp-hz = /bits/ 64 <416000000>;
			opp-microvolt = <900000>;
		};
		opp-528000000 {
			opp-hz = /bits/ 64 <528000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
		opp-600000000 {
			opp-hz = /bits/ 64 <600000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
		opp-666000000 {
			opp-hz = /bits/ 64 <666000000>;
			opp-microvolt = <900000>;
		};
		opp-800000000 {
			opp-hz = /bits/ 64 <800000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
		opp-856000000 {
			opp-hz = /bits/ 64 <856000000>;
			opp-microvolt = <900000>;
		};
		opp-928000000 {
			opp-hz = /bits/ 64 <928000000>;
			opp-microvolt = <900000>;
			status = "disabled";
		};
};

&rkisp1_0 {
	status = "okay";

	port {
		#address-cells = <1>;
		#size-cells = <0>;

		isp0_mipi_in: endpoint@0 {
			reg = <0>;
			remote-endpoint = <&dphy_rx0_out>;
		};
	};
};

&mipi_dphy_rx0 {
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi_in_ucam0: endpoint@1 {
				reg = <1>;
				remote-endpoint = <&ucam_out0>;
				data-lanes = <1 2>;
			};
		};

		port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			dphy_rx0_out: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&isp0_mipi_in>;
			};
		};
	};
};

&isp0_mmu {
	status = "okay";
};

&rkisp1_1 {
	status = "okay";

	port {
		#address-cells = <1>;
		#size-cells = <0>;

		isp1_mipi_in: endpoint@0 {
			reg = <0>;
			remote-endpoint = <&dphy_tx1rx1_out>;
		};
	};
};

&mipi_dphy_tx1rx1 {
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi_in_ucam1: endpoint@1 {
				reg = <1>;
				/* Unlinked camera */
				//remote-endpoint = <&ucam_out1>;
				data-lanes = <1 2>;
			};
		};

		port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			dphy_tx1rx1_out: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&isp1_mipi_in>;
			};
		};
	};
};

&isp1_mmu {
	status = "okay";
};

&saradc {
	vref-supply = <&vccadc_ref>;
};

&backlight {
	status = "okay";
	enable-gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
};

&cdn_dp {
	status = "okay";
	extcon = <&fusb0>;
	phys = <&tcphy0_dp>;
};

&display_subsystem {
	status = "okay";
};

&route_edp {
	status = "okay";
};

&edp {
	status = "okay";
	force-hpd;

	ports {
		port@1 {
			reg = <1>;

			edp_out: endpoint {
				remote-endpoint = <&panel_in>;
			};
		};
	};
};

&edp_in_vopb {
	status = "disabled";
};

&hdmi {
	pinctrl-names = "default";
	pinctrl-0 = <&hdmi_i2c_xfer>, <&hdmi_cec>;
	#address-cells = <1>;
	#size-cells = <0>;
	#sound-dai-cells = <0>;
	status = "okay";
};

&hdmi_in_vopl {
	status = "disabled";
};

&i2c1 {
	status = "okay";

	gsl3673: gsl3673@40 {
		compatible = "GSL,GSL3673";
		reg = <0x40>;
		screen_max_x = <1536>;
		screen_max_y = <2048>;
		irq_gpio_number = <&gpio1 20 IRQ_TYPE_LEVEL_LOW>;
		rst_gpio_number = <&gpio4 22 GPIO_ACTIVE_HIGH>;
	};

	tc358749x: tc358749x@f {
		compatible = "toshiba,tc358749";
		reg = <0xf>;
		clocks = <&ext_cam_clk>;
		clock-names = "refclk";
		reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
		interrupt-parent = <&gpio2>;
		interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&hdmiin_gpios>;
		status = "disabled";
		port {
			hdmiin_out0: endpoint {
				/* Unlinked mipi dphy rx0 */
				//remote-endpoint = <&mipi_in_ucam0>;
				data-lanes = <1 2 3 4>;
				clock-noncontinuous;
				link-frequencies =
					/bits/ 64 <297000000>;
			};
		};
	};

	ov13850: ov13850@10 {
		compatible = "ovti,ov13850";
		status = "okay";
		reg = <0x10>;
		clocks = <&cru SCLK_CIF_OUT>;
		clock-names = "xvclk";

		/* conflict with csi-ctl-gpios */
		reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
		pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "rockchip,camera_default";
		pinctrl-0 = <&cif_clkout>;

		port {
			ucam_out0: endpoint {
				remote-endpoint = <&mipi_in_ucam0>;
				data-lanes = <1 2>;
			};
		};
	};
};

&i2c4 {
	status = "okay";
};

&pcie_phy {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&vopb {
	status = "okay";
	assigned-clocks = <&cru DCLK_VOP0_DIV>;
	assigned-clock-parents = <&cru PLL_CPLL>;
};

&vopb_mmu {
	status = "okay";
};

&vopl {
	status = "okay";
	assigned-clocks = <&cru DCLK_VOP1_DIV>;
	assigned-clock-parents = <&cru PLL_VPLL>;
};

&vopl_mmu {
	status = "okay";
};

&pinctrl {
	buttons {
		pwrbtn: pwrbtn {
			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	lcd-panel {
		lcd_panel_reset: lcd-panel-reset {
			rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	hdmiin {
		hdmiin_gpios: hdmiin-gpios {
			rockchip,pins =
				<2 RK_PA5 RK_FUNC_GPIO &pcfg_output_high>,
				<2 RK_PA6 RK_FUNC_GPIO &pcfg_output_high>,
				<2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>,
				<2 RK_PB0 RK_FUNC_GPIO &pcfg_output_high>,
				<2 RK_PB1 RK_FUNC_GPIO &pcfg_output_high>,
				<2 RK_PB2 RK_FUNC_GPIO &pcfg_output_low>,
				<2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};