• 周一. 5月 5th, 2025

dts — rk3128.dtsi

关键词:rk3128.dtsi ,linux_3.10,rockchip,dts

dts — rk3128.dtsi

/*
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This file is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This file is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

#include "rk312x.dtsi"

/ {
	compatible = "rockchip,rk3128";

	qos_ebc: qos@1012f080 {
		compatible = "syscon";
		reg = <0x1012f080 0x20>;
	};

	hdmi: hdmi@20034000 {
		compatible = "rockchip,rk3128-inno-hdmi";
		reg = <0x20034000 0x4000>;
		interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru ACLK_VIO0>, <&cru  PCLK_HDMI>;
		clock-names = "aclk", "pclk";
		rockchip,grf = <&grf>;
		pinctrl-names = "default";
		pinctrl-0 = <&hdmii2c_xfer &hdmi_hpd &hdmi_cec>;
		#address-cells = <1>;
		#size-cells = <0>;
		#sound-dai-cells = <0>;
		status = "disabled";
		hdmi_in: port {
			#address-cells = <1>;
			#size-cells = <0>;
			hdmi_in_vop: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&vop_out_hdmi>;
			};
		};
	};
};

&codec {
	/*
	 * Override the i2s_clk since codec connects to i2s_8ch in rk3128,
	 * which is different from rk3126.
	 */
	clock-names = "g_pclk_acodec", "i2s_clk";
	clocks = <&cru PCLK_ACODEC>, <&cru SCLK_I2S0>;
};

&pd_vio {
	pm_qos = <&qos_rga>,
		 <&qos_ebc>,
		 <&qos_iep>,
		 <&qos_lcdc0>,
		 <&qos_vip0>;
};

&vop_mmu {
	rockchip,skip-mmu-read;
};

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

	vop_out_dsi: endpoint@0 {
		reg = <0>;
		remote-endpoint = <&dsi_in_vop>;
	};

	vop_out_lvds: endpoint@1 {
		reg = <1>;
		remote-endpoint = <&lvds_in_vop>;
	};

	vop_out_hdmi: endpoint@2 {
		reg = <2>;
		remote-endpoint = <&hdmi_in_vop>;
	};
};
pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&hym8563>;
		clock-names = "ext_clock";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_enable_h>;

		/*
		 * On the module itself this is one of these (depending
		 * on the actual card populated):
		 * - SDIO_RESET_L_WL_REG_ON
		 * - PDN (power down when low)
		 */
		reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
	};

	vcc_lcd: vcc-lcd {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio7 3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&lcd_en>;
		regulator-name = "vcc_lcd";
		vin-supply = <&vcc_io>;
	};

	vcc_wl: vcc-wl {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio7 9 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_pwr>;
		regulator-name = "vcc_wl";
		vin-supply = <&vcc_18>;
	};
};

&cif_isp0 {
	rockchip,camera-modules-attached = <&camera0>;
	status = "disabled";
};

&cpu0 {
	cpu-supply = <&vdd_cpu>;
};

&dfi {
	status = "okay";
};

&dmc {
	center-supply = <&vdd_log>;
	status = "okay";
};

&edp {
	vcc-supply = <&vdd10_lcd>;
	vccio-supply = <&vcc18_lcd>;
	status = "okay";
};

&edp_phy {
	status = "okay";
};

&edp_panel {
	compatible ="lg,lp079qx1-sp0v", "simple-panel";
	backlight = <&backlight>;
	enable-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
	enable-delay-ms = <120>;
	pinctrl-0 = <&lcd_cs>;
	power-supply = <&vcc_lcd>;
	status = "okay";

	disp_timings: 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>;
		};
	};
};

&gpu {
	status = "okay";
	mali-supply = <&vdd_gpu>;
};

&i2c0 {
	clock-frequency = <400000>;

	vdd_cpu: syr827@40 {
		compatible = "silergy,syr827";
		fcs,suspend-voltage-selector = <1>;
		reg = <0x40>;
		regulator-name = "vdd_cpu";
		regulator-min-microvolt = <850000>;
		regulator-max-microvolt = <1350000>;
		regulator-always-on;
		regulator-boot-on;
		regulator-enable-ramp-delay = <300>;
		regulator-ramp-delay = <8000>;
		vin-supply = <&vcc_sys>;
		regulator-state-mem {
			regulator-off-in-suspend;
		};
	};

	vdd_gpu: syr828@41 {
		compatible = "silergy,syr828";
		fcs,suspend-voltage-selector = <1>;
		reg = <0x41>;
		regulator-name = "vdd_gpu";
		regulator-min-microvolt = <850000>;
		regulator-max-microvolt = <1350000>;
		regulator-always-on;
		regulator-ramp-delay = <6000>;
		vin-supply = <&vcc_sys>;
		regulator-state-mem {
			regulator-off-in-suspend;
		};
	};

	hym8563: hym8563@51 {
		compatible = "haoyu,hym8563";
		reg = <0x51>;

		interrupt-parent = <&gpio0>;
		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;

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

		#clock-cells = <0>;
		clock-output-names = "xin32k";
	};

	act8846: act8846@5a {
		compatible = "active-semi,act8846";
		reg = <0x5a>;
		status = "okay";

		vp1-supply = <&vcc_sys>;
		vp2-supply = <&vcc_sys>;
		vp3-supply = <&vcc_sys>;
		vp4-supply = <&vcc_sys>;
		inl1-supply = <&vcc_io>;
		inl2-supply = <&vcc_sys>;
		inl3-supply = <&vcc_20>;

		regulators {
			vcc_ddr: REG1 {
				regulator-name = "VCC_DDR";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
			};

			vcc_io: REG2 {
				regulator-name = "VCC_IO";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vdd_log: REG3 {
				regulator-name = "VDD_LOG";
				regulator-min-microvolt = <1150000>;
				regulator-max-microvolt = <1150000>;
				regulator-always-on;
			};

			vcc_20: REG4 {
				regulator-name = "VCC_20";
				regulator-min-microvolt = <2000000>;
				regulator-max-microvolt = <2000000>;
				regulator-always-on;
			};

			vccio_sd: REG5 {
				regulator-name = "VCCIO_SD";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vdd10_lcd: REG6 {
				regulator-name = "VDD10_LCD";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			vcca_codec: REG7 {
				regulator-name = "VCCA_CODEC";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vcca_tp: REG8 {
				regulator-name = "VCCA_TP";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vccio_pmu: REG9 {
				regulator-name = "VCCIO_PMU";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vdd_10: REG10 {
				regulator-name = "VDD_10";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
			};

			vcc_18: REG11 {
				regulator-name = "VCC_18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};

			vcc18_lcd: REG12 {
				regulator-name = "VCC18_LCD";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};
		};
	};
};

&i2c1 {
	status = "okay";
	clock-frequency = <400000>;

	mpu6050@68 {
		compatible = "invensense,mpu6050";
		status = "okay";
		pinctrl-names = "default";
		pinctrl-0 = <&mpu6050_irq_gpio>;
		reg = <0x68>;
		irq-gpio = <&gpio8 0 IRQ_TYPE_EDGE_RISING>;
		mpu-int_config = <0x10>;
		mpu-level_shifter = <0>;
		mpu-orientation = <0 1 0 1 0 0 0 0 1>;
		orientation-x= <0>;
		orientation-y= <1>;
		orientation-z= <0>;
		support-hw-poweroff = <1>;
		mpu-debug = <1>;
	};
};

&i2c3 {
	status = "okay";

	camera0: camera-module@10 {
		status = "disabled";

		compatible = "omnivision,ov8858-v4l2-i2c-subdev";
		reg = <0x10>;
		device_type = "v4l2-i2c-subdev";

		clocks = <&cru SCLK_VIP_OUT>;
		clock-names = "clk_cif_out";

		pinctrl-names = "rockchip,camera_default",
			"rockchip,camera_sleep";
		pinctrl-0 = <&cam0_default_pins>;
		pinctrl-1 = <&cam0_sleep_pins>;

		rockchip,pd-gpio = <&gpio2 15 GPIO_ACTIVE_LOW>;
		rockchip,pwr-gpio = <&gpio0 17 GPIO_ACTIVE_HIGH>;

		rockchip,camera-module-mclk-name = "clk_cif_out";
		rockchip,camera-module-dovdd = "1.8v";
		rockchip,camera-module-facing = "back";
		rockchip,camera-module-name = "cmk-cb0695-fv1";
		rockchip,camera-module-len-name = "lg9569a2";
		rockchip,camera-module-fov-h = "66.0";
		rockchip,camera-module-fov-v = "50.1";
		rockchip,camera-module-orientation = <0>;
		rockchip,camera-module-iq-flip = <0>;
		rockchip,camera-module-iq-mirror = <0>;
		rockchip,camera-module-flip = <0>;
		rockchip,camera-module-mirror = <0>;

		/* resolution.w, resolution.h, defrect.left, defrect.top, defrect.w, defrect.h */
		rockchip,camera-module-defrect0 = <3264 2448 0 0 3264 2448>;
		rockchip,camera-module-flash-support = <0>;
		rockchip,camera-module-mipi-dphy-index = <0>;
	};
};

&i2c4 {
	status = "okay";

	ts@01 {
		compatible = "ct,vtl_ts";
		reg = <0x01>;
		screen_max_x = <1536>;
		screen_max_y = <2048>;
		xy_swap = <1>;
		x_reverse = <0>;
		y_reverse = <0>;
		x_mul = <2>;
		y_mul = <2>;
		bin_ver = <0>;
		irq_gpio_number = <&gpio7 6 IRQ_TYPE_LEVEL_LOW>;
		rst_gpio_number = <&gpio7 5 GPIO_ACTIVE_HIGH>;
	};
};

&lvds_panel {
	power-supply = <&vcc_lcd>;
};

&rga {
	status = "okay";
};

&rockchip_suspend {
	status = "okay";
};

&route_edp {
	status = "okay";
};

&sound {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&pinctrl {
	backlight {
		bl_en: bl-en {
			rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

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

	cam_pins {
		cam0_default_pins: cam0-default-pins {
			rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_pull_none>,
					<2 15 RK_FUNC_GPIO &pcfg_pull_none>,
					<2 11 RK_FUNC_1 &pcfg_pull_none>;
		};
		cam0_sleep_pins: cam0-sleep-pins {
			rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_pull_none>,
					<2 15 RK_FUNC_GPIO &pcfg_pull_none>,
					<2 11 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	lcd {
		lcd_en: lcd-en  {
			rockchip,pins = <7 3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	wifi {
		wifi_pwr: wifi-pwr {
			rockchip,pins = <7 9 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	mpu6050 {
		mpu6050_irq_gpio: mpu6050-irq-gpio {
			rockchip,pins = <8 0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};
;

		led19: led@19 {
			label = "led19";
			reg = <19>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <600>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led20: led@20 {
			label = "led20";
			reg = <20>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <600>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led21: led@21 {
			label = "led21";
			reg = <21>;
			led-max-microamp = <10000>;
			linux,default-trigger = "default-on";
		};

		led22: led@22 {
			label = "led22";
			reg = <22>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <700>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led23: led@23 {
			label = "led23";
			reg = <23>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <700>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led124: led@24 {
			label = "led24";
			reg = <24>;
			led-max-microamp = <10000>;
			linux,default-trigger = "default-on";
		};

		led25: led@25 {
			label = "led25";
			reg = <25>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <800>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led26: led@26 {
			label = "led26";
			reg = <26>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <800>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led27: led@27 {
			label = "led27";
			reg = <27>;
			led-max-microamp = <10000>;
			linux,default-trigger = "default-on";
		};

		led28: led@28 {
			label = "led28";
			reg = <28>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <900>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led29: led@29 {
			label = "led29";
			reg = <29>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <900>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led30: led@30 {
			label = "led30";
			reg = <30>;
			led-max-microamp = <10000>;
			linux,default-trigger = "default-on";
		};

		led31: led@31 {
			label = "led31";
			reg = <31>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <1000>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led32: led@32 {
			label = "led32";
			reg = <32>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <1000>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led33: led@33 {
			label = "led33";
			reg = <33>;
			led-max-microamp = <10000>;
			linux,default-trigger = "default-on";
		};

		led34: led@34 {
			label = "led34";
			reg = <34>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <1100>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led35: led@35 {
			label = "led35";
			reg = <35>;
			led-max-microamp = <10000>;
			linux,default-trigger = "timer";
			linux,default-trigger-delay-ms = <1100>;
			linux,blink-delay-on-ms = <100>;
			linux,blink-delay-off-ms = <1200>;
		};

		led36: led@36 {
			label = "led36";
			reg = <36>;
			led-max-microamp = <10000>;
			linux,default-trigger = "default-on";
		};
	};
};

&i2s {
	#sound-dai-cells = <0>;
	status = "okay";
};

&sdio {
	status = "okay";

	bus-width = <4>;
	cap-sd-highspeed;
	cap-sdio-irq;
	default-sample-phase = <90>;
	keep-power-in-suspend;
	mmc-pwrseq = <&sdio_pwrseq>;
	non-removable;
	num-slots = <1>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdio_clk &sdio_cmd &sdio_bus4>;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	supports-sdio;
};

&sdmmc {
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	card-detect-delay = <200>;
	disable-wp;
	num-slots = <1>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
};

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

&uart2 {
	status = "disabled";
};

&usb_host {
	status = "okay";
};

&usb_otg {
	status = "okay";
};

&vop {
	status = "okay";
};

&vop_mmu {
	status = "okay";
};

&vpu_combo {
	status = "okay";
};

&vpu_mmu {
	status = "okay";
};

&wdt {
	status = "okay";
};

&pinctrl {
	pmic {
		pmic_int: pmic-int {
			rockchip,pins = <0 1 RK_FUNC_GPIO &pcfg_pull_default>;
		};
	};

	keys {
		pwr_key: pwr-key {
			rockchip,pins = <2 25 RK_FUNC_GPIO &pcfg_pull_default>;
		};
	};

	sdio {
		bt_wake_h: bt-wake-h {
			rockchip,pins = <2 8 RK_FUNC_GPIO &pcfg_pull_default>;
		};
	};

	sdmmc {
		sdmmc_pwr: sdmmc-pwr {
			rockchip,pins = <2 28 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	sleep {
		global_pwroff: global-pwroff {
			rockchip,pins = <2 7 RK_FUNC_1 &pcfg_pull_none>;
		};
	};

	wireless-bluetooth {
		uart0_gpios: uart0-gpios {
			rockchip,pins = <0 19 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

发表评论

您的电子邮箱地址不会被公开。