dts: arm64: add t6d device tree support [1/1]

PD#SWPL-184920

Problem:
t6d arm64 bringup

Solution:
add t6d device tree

Verify:
t6d br301

Change-Id: I82609f88eb4cfd262056b3b0048494e8f54a876d
Signed-off-by: Jian Hu <jian.hu@amlogic.com>
diff --git a/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts b/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts
index 376a168..5395a4e 100644
--- a/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts
+++ b/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts
@@ -4,6 +4,7 @@
  */
 
 /dts-v1/;
+
 #include "mesont6d.dtsi"
 #include "mesont6d_drm.dtsi"
 #include "firmware_ab.dtsi"
@@ -600,7 +601,7 @@
 			};
 			tdmbcodec: codec {
 				prefix-names = "AMP";
-				sound-dai = </*&ad82128*/ &acodec>;
+				sound-dai = </*&ad82120b*/ &acodec>;
 			};
 		};
 
@@ -953,6 +954,28 @@
 	};
 };
 
+&spi_nfc {
+	status = "disabled";
+	pinctrl-names = "default";
+	pinctrl-0 = <&spinf_pins>;
+	spi-nand@0 {
+		compatible = "spi-nand";
+		status = "disabled";
+		reg = <0>;
+		spi-max-frequency = <83000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+	};
+	spi-nor@0 {
+		compatible = "spi-nor";
+		status = "disabled";
+		reg = <0>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+		spi-max-frequency = <83000000>;
+	};
+};
+
 &periphs_pinctrl {
 	/*backlight*/
 	bl_pwm_vs_on_pins:bl_pwm_vs_on_pin {
@@ -1004,59 +1027,6 @@
 	};
 };
 
-&mtd_nand {
-	status = "disabled"; /* disabled as default */
-	#address-cells = <1>;
-	#size-cells = <0>;
-
-	pinctrl-names = "nand_norb_mod","nand_cs_only";
-	pinctrl-0 = <&all_nand_pins>;
-	pinctrl-1 = <&nand_cs_pins>;
-	bl_mode = <1>;
-	fip_copies = <4>;
-	fip_size = <0x200000>;
-	ship_bad_block = <1>;
-	disa_irq_flag = <1>;
-	nand@bootloader {
-		reg = <0>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-		nand-ecc-maximize;
-		partition@0 {
-			label = "bl2";
-			reg = <0x0 0x00000000>;
-		};
-	};
-	nand@normal {
-		reg = <0>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-		nand-ecc-maximize;
-	};
-};
-
-&spi_nfc {
-	status = "disabled";
-	pinctrl-names = "default";
-	pinctrl-0 = <&spinf_pins>;
-	spi-nand@0 {
-		compatible = "spi-nand";
-		status = "disabled";
-		reg = <0>;
-		spi-max-frequency = <83000000>;
-		spi-tx-bus-width = <4>;
-		spi-rx-bus-width = <4>;
-	};
-	spi-nor@0 {
-		compatible = "spi-nor";
-		status = "disabled";
-		reg = <0>;
-		spi-tx-bus-width = <4>;
-		spi-rx-bus-width = <4>;
-		spi-max-frequency = <83000000>;
-	};
-};
-
 &i2c2 {
 	status = "okay";
 	clock-frequency = <100000>;
diff --git a/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1g.dts b/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1g.dts
index ef1ba10..530375e 100644
--- a/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1g.dts
+++ b/arch/arm/boot/dts/amlogic/t6d_t950d5_br301_1g.dts
@@ -10,6 +10,7 @@
 #include "firmware_ab.dtsi"
 #include "mesont6d-panel.dtsi"
 #include "mesont6d_audio.dtsi"
+
 / {
 	amlogic-dt-id = "t6d_t950d5_br301-1g";
 	compatible = "t6d_t950d5_br301-1g";
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 8281f20..a465f93 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -117,3 +117,5 @@
 dtb-y += s6_s905x5_bl208.dtb
 dtb-y += s6_s905x5_bl209.dtb
 dtb-y += s6_s905x5_bn201.dtb
+dtb-y += t6d_t950d5_br301_1g.dtb
+dtb-y += t6d_t950d5_br301_1.5g.dtb
diff --git a/arch/arm64/boot/dts/amlogic/mesont6d-panel.dtsi b/arch/arm64/boot/dts/amlogic/mesont6d-panel.dtsi
new file mode 100644
index 0000000..83db38e
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/mesont6d-panel.dtsi
@@ -0,0 +1,208 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/ {
+	lcd_resman {
+		compatible = "amlogic, lcd-resman";
+		status = "okay";
+		memory-region = <&lcd_cma_reserved>;
+		memory-region-names = "lcd_cma_reserved";
+	};
+
+	lcd:lcd {
+		compatible = "amlogic, lcd-t6d";
+		status = "okay";
+		index = <0>;
+		pxp = <0>;
+		mode = "tv";
+		fr_auto_policy = <1>; /* 0=disable, 1=enable */
+		key_valid = <1>;
+		reg = <0x0 0xfe3b0000 0x0 0xd000   /* tcon */
+			0x0 0xfe004000 0x0 0x70        /* periphs */
+			0x0 0xfe002000 0x0 0xa0>;      /* reset */
+		interrupts = <0 197 1>;
+		interrupt-names = "vsync";
+		pinctrl-names = "tcon_mlvds","tcon_mlvds_off";
+		pinctrl-0 = <&lcd_tcon_mlvds_pins>;
+		pinctrl-1 = <&lcd_tcon_mlvds_off_pins>;
+
+		/* power type:(0=cpu_gpio, 2=signal, 3=extern, 0xff=ending) */
+		/* power index:(gpios_index, or extern_index, 0xff=invalid) */
+		/* power value:(0=output low, 1=output high, 2=input) */
+		/* power delay:(unit in ms) */
+		/*
+		 *	lcd_cpu-gpios = <&gpio GPIOY_0 GPIO_ACTIVE_HIGH
+		 *	&gpio GPIOY_4 GPIO_ACTIVE_HIGH
+		 *	&gpio GPIOY_6 GPIO_ACTIVE_HIGH>;
+		 *	lcd_cpu_gpio_names = "GPIOY_0","GPIOY_4","GPIOY_6";
+		 */
+		lcd_cpu-gpios = <&gpio GPIOH_7 GPIO_ACTIVE_HIGH>;
+		lcd_cpu_gpio_names = "GPIOH_7";
+
+		config_check_glb = <1>;
+		display_timing_req_min = <1  /*alert_level: 0:disable, 1:warning, 2:fatal error*/
+			45   /*hsw+hbp*/
+			0    /*hfp, 0 for no need*/
+			20   /*vsw+vbp*/
+			15>; /*vfp*/
+
+		lvds_0{
+			model_name = "1080p-vfreq";
+			interface = "lvds"; /*lcd_interface(lvds, vbyone)*/
+			basic_setting = <
+				1920 1080 /*h_active, v_active*/
+				2200 1125 /*h_period, v_period*/
+				8      /*lcd_bits */
+				16 9>; /*screen_widht, screen_height*/
+			range_setting = <
+				2132 2650  /*h_period_min,max*/
+				1120 1480  /*v_period_min,max*/
+				120000000 160000000>; /*pclk_min,max*/
+			lcd_timing = <
+				44 148 0  /*hs_width, hs_bp, hs_pol*/
+				5  20 0>; /*vs_width, vs_bp, vs_pol*/
+			clk_attr = <
+				2 /*fr_adj_type: 0=clk, 1=htotal, 2=vtotal, 3=auto, 4=hdmi */
+				0 /*clk_ss: [0:7]:level, [8:11]:freq, [12:15]: mode*/
+				1 /*clk_auto_generate*/
+				0>; /*pixel_clk(unit in Hz)*/
+			lvds_attr = <
+				1  /*lvds_repack*/
+				1  /*dual_port*/
+				0  /*pn_swap*/
+				0  /*port_swap*/
+				0>; /*lane_reverse*/
+			phy_attr=<0x3 0>; /*vswing_level, preem_level*/
+			hw_filter=<0 0>;  /* filter_time, filter_cnt*/
+
+			/* power step: type, index, value, delay(ms) */
+			power_on_step = <
+				0 0 1 50   /*panel power*/
+				2 0 0 0   /*signal enable*/
+				0xff 0 0 0>; /*ending*/
+			power_off_step = <
+				2 0 0 10  /*signal disable*/
+				0 0 0 500   /*panel power*/
+				0xff 0 0 0>; /*ending*/
+			backlight_index = <0>;
+		};
+	};
+
+	lcd_extern {
+		compatible = "amlogic, lcd_extern";
+		status = "okay";
+		index = <0>;
+		key_valid = <1>;
+		i2c_bus = "i2c_bus_2";
+
+		extern_0 {
+			index = <0>;
+			extern_name = "ext_default";
+			status = "okay";
+			type = <0>; /*0=i2c, 1=spi, 2=mipi*/
+			i2c_address = <0x33>; /*7bit i2c_addr*/
+			i2c_address2 = <0xff>;
+			cmd_size = <0xff>; /*dynamic cmd_size*/
+
+			/* init on/off:
+			 *  fixed cmd_size: (type, value...);
+			 *                  cmd_size include all data.
+			 *  dynamic cmd_size: (type, cmd_size, value...);
+			 *                    cmd_size include value.
+			 */
+			/* type: 0x00=cmd with delay(bit[3:0]=1 for address2),
+			 *       0xc0=cmd(bit[3:0]=1 for address2),
+			 *       0xf0=gpio,
+			 *       0xfd=delay,
+			 *       0xff=ending
+			 */
+			/* value: i2c or spi cmd, or gpio index & level */
+			/* delay: unit ms */
+			init_on = <
+				0xc0 43 0x00
+					0x48 0x19 0xa4 0x00 0x00 0x23 0xfc 0x66 0xfb 0x2b 0x28 0x00
+					0x10 0x10 0x07 0x07 0x3e 0xc3 0xd3 0x33 0xa2 0xde 0x2b 0x02
+					0x3d 0x21 0xa1 0xbf 0x1a 0x71 0x33 0x0f 0xd0 0xa1 0x01 0x70
+					0x0e 0x1a 0x11 0xb5 0xcd 0xf9
+				0xff 0>; /*ending*/
+			init_off = <0xff 0>; /*ending*/
+		};
+	};
+
+	backlight{
+		compatible = "amlogic, backlight-t6d";
+		status = "okay";
+		index = <0>;
+		key_valid = <1>;
+		pinctrl-names = "pwm_on","pwm_vs_on",
+				"pwm_off";
+		pinctrl-0 = <&pwm_d_pins6>;
+		pinctrl-1 = <&bl_pwm_vs_on_pins>;
+		pinctrl-2 = <&bl_pwm_off_pins>;
+		pinctrl_version = <2>; /* for uboot */
+		interrupts-extended = <&gic 0 197 1>,<&gpio_intc 121 1>;
+		interrupt-names = "vsync","ldim_pwm_vs";
+		bl_pwm_config = <&bl_pwm_conf>;
+		//memory-region = <&ldc_mem_reserved>;
+
+		/* pwm port: PWM_A, PWM_B, PWM_C, PWM_D, PWM_E, PWM_F, PWM_VS*/
+		/* power index:(point gpios_index, 0xff=invalid) */
+		/* power value:(0=output low, 1=output high, 2=input) */
+		/* power delay:(unit in ms) */
+		bl-gpios = <&gpio GPIOH_13 GPIO_ACTIVE_HIGH
+			&gpio GPIOH_12 GPIO_ACTIVE_HIGH>;
+		bl_gpio_names = "GPIOH_13","GPIOH_12";
+
+		backlight_0{
+			index = <0>;
+			bl_name = "backlight_pwm";
+			bl_level_default_uboot_kernel = <100 100>;
+			bl_level_attr = <255 10 /*max, min*/
+				128 128>; /*mid, mid_mapping*/
+			bl_ctrl_method = <1>; /*1=pwm,2=pwm_combo,3=ldim*/
+			bl_power_attr = <0 /*en_gpio_index*/
+				1 0 /*on_value, off_value*/
+				200 200>; /*on_delay(ms), off_delay(ms)*/
+			bl_pwm_port = "PWM_D";
+			bl_pwm_attr = <1 /*pwm_method(0=negative, 1=positive)*/
+				180 /*pwm_freq(pwm:Hz, pwm_vs:multiple of vs)*/
+				100 25>; /*duty_max(%), duty_min(%)*/
+			bl_pwm_power = <1 0 /*pwm_gpio_index, pwm_gpio_off*/
+				10 10>; /*pwm_on_delay(ms), pwm_off_delay(ms)*/
+			en_sequence_reverse = <0>; /* 1 for reverse */
+		};
+		backlight_1{
+			index = <1>;
+			bl_name = "backlight_pwm_vs";
+			bl_level_default_uboot_kernel = <100 100>;
+			bl_level_attr = <255 10 /*max, min*/
+				128 128>; /*mid, mid_mapping*/
+			bl_ctrl_method = <1>; /*1=pwm,2=pwm_combo,3=ldim*/
+			bl_power_attr = <0  /*en_gpio_index*/
+				1 0 /*on_value, off_value*/
+				200 200>; /* on_delay(ms), off_delay(ms)*/
+			bl_pwm_port = "PWM_VS";
+			bl_pwm_attr = <1 /*pwm_method(0=negative, 1=positive)*/
+				2 /*pwm_freq(pwm:Hz, pwm_vs:multiple of vs)*/
+				100 25>; /*duty_max(%), duty_min(%)*/
+			bl_pwm_power = <1 0 /*pwm_gpio_index, pwm_gpio_off*/
+				10 10>; /*pwm_on_delay(ms), pwm_off_delay(ms)*/
+			en_sequence_reverse = <0>; /* 1 for reverse */
+		};
+
+	};
+
+	bl_pwm_conf:bl_pwm_conf{
+		pwm_channel_0 {
+			pwm_port = "PWM_D";
+			pwms = <&pwm_d MESON_PWM_0 30040 0>;
+		};
+
+	};
+};
+
+&pwm_d {
+	status = "okay";
+};
diff --git a/arch/arm64/boot/dts/amlogic/mesont6d.dtsi b/arch/arm64/boot/dts/amlogic/mesont6d.dtsi
new file mode 100644
index 0000000..055a091
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/mesont6d.dtsi
@@ -0,0 +1,2746 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/reset/amlogic,meson-t6d-reset.h>
+#include <dt-bindings/clock/t6d-clkc.h>
+#include <dt-bindings/clock/t6d-scmi-clkc.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/gpio/meson-t6d-gpio.h>
+#include <dt-bindings/power/t6d-pd.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/pwm/meson.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/input/meson_ir.h>
+#include <dt-bindings/iio/adc/amlogic-saradc.h>
+#include "meson-ir-map.dtsi"
+#include "mesong12a-bifrost.dtsi"
+#include <dt-bindings/mailbox/t6d-mbox.h>
+#include <dt-bindings/thermal/thermal.h>
+#include <dt-bindings/hwspinlock/amlogic,hwspinlock.h>
+#include <dt-bindings/leds/leds-meson.h>
+
+/ {
+	cpus:cpus {
+		#address-cells = <2>;
+		#size-cells = <0>;
+		apu_id = <0x4>;
+		apu_hwid = <0x400>;
+
+		CPU0:cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53","arm,armv8";
+			reg = <0x0 0x0>;
+			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>;
+			dynamic-power-coefficient = <230>;
+		};
+
+		CPU1:cpu@1{
+			device_type = "cpu";
+			compatible = "arm,cortex-a53","arm,armv8";
+			reg = <0x0 0x1>;
+			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>;
+			dynamic-power-coefficient = <230>;
+		};
+
+		CPU2:cpu@2 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53","arm,armv8";
+			reg = <0x0 0x2>;
+			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>;
+			dynamic-power-coefficient = <230>;
+		};
+
+		CPU3:cpu@3 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53","arm,armv8";
+			reg = <0x0 0x3>;
+			enable-method = "psci";
+			cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>;
+			dynamic-power-coefficient = <230>;
+		};
+
+		idle-states {
+			entry-method = "arm,psci-0.2";
+			CPU_SLEEP_0: cpu-sleep-0 {
+					compatible = "arm,idle-state";
+					arm,psci-suspend-param = <0x0010000>;
+					local-timer-stop;
+					entry-latency-us = <600>;
+					exit-latency-us = <630>;
+					min-residency-us = <6140>;
+			};
+			SYSTEM_SLEEP_0: system-sleep-0 {
+					compatible = "arm,idle-state";
+					arm,psci-suspend-param = <0x0000000>;
+					entry-latency-us = <0x3fffffff>;
+					exit-latency-us = <0x40000000>;
+					min-residency-us = <0xffffffff>;
+			};
+		};
+	};
+
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupts = <GIC_PPI 13 0xff08>,
+				<GIC_PPI 14 0xff08>,
+				<GIC_PPI 11 0xff08>,
+				<GIC_PPI 10 0xff08>;
+	};
+
+	gic: interrupt-controller@fff01000 {
+		compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
+		#interrupt-cells = <3>;
+		#address-cells = <0>;
+		interrupt-controller;
+		reg = <0x0 0xfff01000 0x0 0x1000>,
+		      <0x0 0xfff02000 0x0 0x0100>;
+		interrupts = <GIC_PPI 9 0xf04>;
+	};
+
+	psci {
+		compatible = "arm,psci-0.2";
+		method = "smc";
+	};
+
+	secmon {
+		compatible = "amlogic, secmon";
+		memory-region = <&secmon_reserved>;
+		in_base_func = <0x82000020>;
+		out_base_func = <0x82000021>;
+		inout_size_func = <0x8200002a>;
+		reserve_mem_size = <0x01B00000>;
+	};
+
+	optee {
+		compatible = "linaro,optee-tz";
+		method = "smc";
+	};
+
+	meson_suspend:pm {
+		compatible = "amlogic, pm";
+		device_name = "aml_pm";
+		extend_resume_reason;
+		reg = <0x0 0xfe010288 0x0 0x4>, /*SYSCTRL_STATUS_REG2*/
+			<0x0  0xfe0102dc 0x0 0x4>; /*SYSCTRL_STICKY_REG7*/
+		status = "okay";
+	};
+
+	aml_reboot {
+		compatible = "aml, reboot";
+		sys_reset = <0x84000009>;
+		sys_poweroff = <0x84000008>;
+		dis_nb_cpus_in_shutdown;
+		extend_reboot_reason; /* Support up to 128 reboot reasons*/
+		reg = <0x0 0xfe01037c 0x0 0x4>; /* SEC_AO_SEC_SD_CFG15 */
+		status = "okay";
+	};
+
+	ram-dump {
+		compatible = "amlogic, ram_dump";
+		reg = <0x0 0xFE0102D8 0x0 4>;
+		reg-names = "SYSCTRL_STICKY_REG6";
+		store_device = "data";
+		status = "disabled";
+	};
+
+	xtal: xtal-clk {
+		compatible = "fixed-clock";
+		clock-frequency = <24000000>;
+		clock-output-names = "xtal";
+		#clock-cells = <0>;
+	};
+
+	arm_pmu {
+		compatible = "arm,cortex-a15-pmu";
+		private-interrupts;
+		interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
+				<GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>,
+				<GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>,
+				<GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>;
+	};
+
+	amfc {
+		compatible = "amlogic,amfc-t6d";
+		status = "okay";
+		/* registers and clk */
+		reg = <0x0 0xfe092000 0x0 0x200
+		       0x0 0xFDFFFF6C 0x0 0x400>;
+		interrupts = <0 185 IRQ_TYPE_EDGE_RISING
+			      0 186 IRQ_TYPE_EDGE_RISING>;
+		power-domains = <&pwrdm PDID_T6D_AMFC>;
+		interrupt-names = "amfc0", "amfc1";
+		clocks = <&clkc CLKID_AMFC>;
+		assigned-clocks = <&clkc CLKID_AMFC>;
+		assigned-clock-rates = <666666666>;
+	};
+
+	ddr_bandwidth {
+		compatible = "amlogic,ddr-bandwidth-t6d";
+		status = "okay";
+		reg = <0x0 0xfe036000 0x0 0x1000
+		       0x0 0xfe0368a8 0x0 0x4>;
+		interrupts = <0 136 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "ddr_bandwidth";
+	};
+
+	dmc_monitor {
+		compatible = "amlogic,dmc_monitor-t6d";
+		status = "okay";
+		memory-region = <&dmc_reserved>;
+		reg = <0x0 0xfe036000 0x0 0x400>;
+		reg_base = <0xfe036000>;
+		interrupts = <0 137 IRQ_TYPE_LEVEL_HIGH>;
+	};
+
+	pwrdm: power-domains {
+		compatible = "amlogic,t6d-power-domain";
+		#power-domain-cells = <1>;
+		status = "okay";
+	};
+
+	vrtc: rtc@0xfe010288 {
+		compatible = "amlogic,meson-vrtc";
+		reg = <0x0 0xfe010288 0x0 0x4>; //SYSCTRL_STATUS_REG2
+		status = "okay";
+		mboxes = <&mbox_fifo T6D_REE2AO_VRTC>;
+	};
+
+	mbox_fifo: mbox_fifo@0xfe006000 {
+		status = "okay";
+		compatible = "amlogic, t6d-mbox-fifo";
+		reg = <0x0 0xfe006000 0x0 0x800>,  /* mbox wr fifo */
+		      <0xfe007180 0x80>,   /* mbox set reg */
+		      <0xfe007200 0x80>,   /* mbox clr reg */
+		      <0xfe007280 0x80>,   /* mbox sts reg */
+		      <0xfe007040 0xc0>;   /* mbox irqctrl reg */
+		interrupts = <GIC_SPI 248 IRQ_TYPE_EDGE_RISING>;  /* mbox irq top */
+		mbox-irqmax = <32>;
+		mbox-irqctlr = <0x14>;
+		mbox-irqclr = <0x8>;
+		mbox-nums = <T6D_MBOX_NUMS>;
+		mboxids = <T6D_MBOX_AO2REE>,
+			  <T6D_MBOX_REE2AO>;
+		aocpu_sts_mboxid = <T6D_MBOX_AO2TEE>;
+		ree2aocpu_mboxid = <T6D_MBOX_REE2AO>;
+		#mbox-cells = <1>;
+		mbox-wr-same;
+	};
+
+	mbox_devfs {
+		status = "okay";
+		compatible = "amlogic, mbox-devfs";
+		mbox-nums = <1>;
+		mbox-names = "ree2aocpu";
+		mboxes = <&mbox_fifo T6D_REE2AO_DEV>;
+		mbox-dests = <MAILBOX_AOCPU>;
+	};
+
+	aml_hwspinlock: hwlock {
+		status = "okay";
+		compatible = "amlogic, hwspinlock";
+		syscon = <&aml_hwspinlock_regs 0 0x4>;
+		#hwlock-cells = <1>;
+	};
+
+	jtag {
+		compatible = "amlogic, jtag";
+		status = "okay";
+		select = "disable"; /* disable/jtag_a/jtag_b */
+		pinctrl-names="jtag_a_pins", "jtag_b_pins";
+		pinctrl-0=<&jtag_a_pins>;
+		pinctrl-1=<&jtag_b_pins>;
+	};
+
+	vbat: fixed@vbat {
+		compatible = "regulator-fixed";
+		regulator-name = "12V";
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vcc5v_reg: fixed@vcc5v_reg {
+		vin-supply = <&vbat>;
+		compatible = "regulator-fixed";
+		regulator-name = "5V/VCC_5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		gpio = <&gpio GPIO_TEST_N GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <7000>;
+		enable-active-high;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	usb_5v_reg: fixed@usb_5v_reg {
+		compatible = "regulator-fixed";
+		vin-supply = <&vcc5v_reg>;
+		regulator-name = "USB_5V/OTG_VCC5V,USBBC_PWR";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddq_reg: fixed@vddq_reg {
+		compatible = "regulator-fixed";
+		vin-supply = <&vbat>;
+		regulator-name = "VDDQ";
+		regulator-min-microvolt = <1220000>;
+		regulator-max-microvolt = <1220000>;
+		pinctrl-names = "default";
+		gpio = <&gpio GPIOD_4 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <7000>;
+		enable-active-high;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddao3v3_reg: fixed@vddao3v3_reg {
+		vin-supply = <&vbat>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDAO_3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddcpu0: pwm_b-regulator {
+		compatible = "pwm-regulator";
+		pwms = <&pwm_b MESON_PWM_0 1500 0>;
+		regulator-name = "vddcpu0";
+		regulator-min-microvolt = <689000>;
+		regulator-max-microvolt = <1049000>;
+		regulator-always-on;
+		max-duty-cycle = <1500>;
+		amlogic,vsel-step = <3>;
+		amlogic,usleep-time = <200>;
+		/* Voltage Duty-Cycle */
+		voltage-table = <1049000 0>,
+				<1039000 3>,
+				<1029000 6>,
+				<1019000 9>,
+				<1009000 12>,
+				<999000 14>,
+				<989000 17>,
+				<979000 20>,
+				<969000 23>,
+				<959000 26>,
+				<949000 29>,
+				<939000 31>,
+				<929000 34>,
+				<919000 37>,
+				<909000 40>,
+				<899000 43>,
+				<889000 45>,
+				<879000 48>,
+				<869000 51>,
+				<859000 54>,
+				<849000 56>,
+				<839000 59>,
+				<829000 62>,
+				<819000 65>,
+				<809000 68>,
+				<799000 70>,
+				<789000 73>,
+				<779000 76>,
+				<769000 79>,
+				<759000 81>,
+				<749000 84>,
+				<739000 87>,
+				<729000 89>,
+				<719000 92>,
+				<709000 95>,
+				<699000 98>,
+				<689000 100>;
+		status = "okay";
+	};
+
+	saradc_common: saradc-common@fe026000 {
+		compatible = "amlogic,saradc-common";
+		reg = <0x0 0xfe026000 0x0 0x48>;
+
+		saradc: saradc {
+			compatible = "amlogic,meson-s7-saradc",
+				     "amlogic,meson-saradc";
+			status = "disabled";
+			#io-channel-cells = <1>;
+			clocks = <&xtal>,
+				 <&clkc CLKID_SYS_SARADC>,
+				 <&clkc CLKID_SARADC>,
+				 <&clkc CLKID_SARADC_SEL>;
+			clock-names = "clkin", "core", "adc_clk", "adc_sel";
+			interrupts = <GIC_SPI 181 IRQ_TYPE_EDGE_RISING>;
+		};
+
+		pdd: pdd {
+			compatible = "amlogic,pdd";
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			clock-names = "core";
+			clocks = <&clkc CLKID_SYS_SARADC>;
+			amlogic,interrupt = <182>;
+			amlogic,digital-maps = <0x2c 26>, <0x2c 25>, <0x2c 24>;
+			amlogic,analog-maps = <0x2c 9>, <0x2c 3>, <0x2c 1>;
+			amlogic,voltage-maps = <400>, <800>, <800>, <1200>;
+			status = "okay";
+		};
+	};
+
+	shmem@50f7e00 {
+		compatible = "mmio-sram";
+		reg = <0x0 0x50f7e00 0x0 0x100>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0 0x0 0x50f7e00 0x100>;
+
+		scmi_shmem: shmem@0 {
+			compatible = "arm,scmi-shmem";
+			reg = <0x0 0x100>;
+		};
+	};
+
+	firmware {
+		scmi: scmi {
+			compatible = "arm,scmi-smc";
+			arm,smc-id = <0x820000C1>;
+			shmem = <&scmi_shmem>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			scmi_clk: protocol@14 {
+				reg = <0x14>;
+				#clock-cells = <1>;
+			};
+		};
+	};
+
+	soc {
+		compatible = "simple-bus";
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		apb4: apb4@fe000000 {
+			compatible = "simple-bus";
+			reg = <0x0 0xfe000000 0x0 0x480000>;
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+
+			reset: reset-controller@2000 {
+				compatible = "amlogic,meson-t5m-reset";
+				reg = <0x0 0x2000 0x0 0x98>;
+				#reset-cells = <1>;
+			};
+
+			watchdog@2100 {
+				compatible = "amlogic,meson-sc2-wdt";
+				/* 0:userspace, 1:kernel */
+				amlogic,feed_watchdog_mode = <1>;
+				reg = <0x0 0x2100 0x0 0x10>;
+				clocks = <&xtal>;
+			};
+
+			clkc: clock-controller {
+				compatible = "amlogic,t6d-clkc";
+				#clock-cells = <1>;
+				reg = <0x0 0x0 0x0 0x244>,
+				      <0x0 0x8000 0x0 0xe0>;
+				reg-names = "basic", "pll";
+				clocks = <&xtal>;
+				clock-names = "xtal";
+				status = "okay";
+			};
+
+			meson_clk_msr@48000 {
+				compatible = "amlogic,meson-t6d-clk-measure";
+				reg = <0x0 0x48000 0x0 0x1c>;
+				status = "okay";
+			};
+
+			uart_B: serial@78400 {
+				compatible = "amlogic,meson-uart";
+				reg = <0x0 0x78400 0x0 0x18>;
+				interrupts = <0 169 1>;
+				status = "disabled";
+				clocks = <&xtal>;
+				clock-names = "clk_uart";
+				xtal_tick_en = <2>;
+				fifosize = < 64 >;
+				support-sysrq = <1>;
+			};
+
+			periphs_pinctrl: pinctrl@4000 {
+				compatible = "amlogic,meson-t6d-periphs-pinctrl";
+				#address-cells = <2>;
+				#size-cells = <2>;
+				ranges;
+
+				gpio: bank@4000 {
+					reg = <0x0 0x4000 0x0 0x0058>,
+					      <0x0 0x40c0 0x0 0x030c>;
+					reg-names = "mux", "gpio";
+					gpio-controller;
+					#gpio-cells = <2>;
+					gpio-ranges = <&periphs_pinctrl 0 0 129>;
+				};
+			};
+
+			gpio_intc: interrupt-controller@4080 {
+				compatible = "amlogic,meson-t6d-gpio-intc",
+					     "amlogic,meson-gpio-intc";
+				reg = <0x0 0x4080 0x0 0x20>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				amlogic,channel-interrupts =
+					<10 11 12 13 14 15 16 17 18 19 20 21>;
+			};
+
+			pinctrl_analog: pinctrl@43cc {
+				compatible = "amlogic,meson-t6d-analog-pinctrl";
+				#address-cells = <2>;
+				#size-cells = <2>;
+				ranges;
+
+				gpio_analog: analog-bank@43cc {
+					reg = <0x0 0x43d4 0x0 0x0004>,
+					      <0x0 0x43cc 0x0 0x0008>;
+					reg-names = "mux", "gpio";
+					gpio-controller;
+					#gpio-cells = <2>;
+					gpio-ranges = <&pinctrl_analog 0 0 2>;
+				};
+			};
+
+			spicc0: spi@50000 {
+				compatible = "amlogic,meson-a4-spicc-v2";
+				reg = <0x0 0x50000 0x0 0x38>;
+				interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clkc CLKID_SYS_SPISG>,
+					 <&clkc CLKID_SPICC0>;
+				clock-names = "sys", "spi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
+
+			spicc1: spi@50100 {
+				compatible = "amlogic,meson-a4-spicc-v2";
+				reg = <0x0 0x50100 0x0 0x38>;
+				interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clkc CLKID_SYS_SPISG>,
+					 <&clkc CLKID_SPICC1>;
+				clock-names = "sys", "spi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
+
+			pwm_a: pwm@58000 {
+				compatible = "amlogic,meson-even-pwm";
+				reg = <0x0 0x58000 0x0 0x24>,
+					  <0x0 0x180 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_A_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			pwm_b: pwm@58200 {
+				compatible = "amlogic,meson-pwm-tee";
+				reg = <0x0 0x58200 0x0 0x24>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_B>;
+				clock-names = "clkin0";
+				tee_id = <1>;
+				status = "okay";
+			};
+
+			pwm_c: pwm@58400 {
+				compatible = "amlogic,meson-even-pwm";
+				reg = <0x0 0x58400 0x0 0x24>,
+					  <0x0 0x184 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_C_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			pwm_d: pwm@58600 {
+				compatible = "amlogic,meson-odd-pwm";
+				reg = <0x0 0x58600 0x0 0x24>,
+					  <0x0 0x184 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_D_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			pwm_e: pwm@58800 {
+				compatible = "amlogic,meson-even-pwm";
+				reg = <0x0 0x58800 0x0 0x24>,
+					  <0x0 0x188 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_E_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			pwm_f: pwm@58a00 {
+				compatible = "amlogic,meson-odd-pwm";
+				reg = <0x0 0x58a00 0x0 0x24>,
+					  <0x0 0x188 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_F_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			pwm_g: pwm@58c00 {
+				compatible = "amlogic,meson-even-pwm";
+				reg = <0x0 0x58c00 0x0 0x24>,
+					  <0x0 0x18c 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_G_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			pwm_h: pwm@58e00 {
+				compatible = "amlogic,meson-odd-pwm";
+				reg = <0x0 0x58e00 0x0 0x24>,
+					  <0x0 0x18c 0x0 0x4>;
+				#pwm-cells = <3>;
+				clocks = <&clkc CLKID_PWM_H_SEL>;
+				clock-names = "clkin0";
+				status = "disabled";
+			};
+
+			i2c0: i2c@66000 {
+				compatible = "amlogic,meson-i2c";
+				reg = <0x0 0x66000 0x0 0x28>;
+				interrupts = <GIC_SPI 160 IRQ_TYPE_EDGE_RISING>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				clocks = <&clkc CLKID_SYS_I2C_M_WRAPPER>;
+				status = "disabled";
+			};
+
+			i2c1: i2c@66400 {
+				compatible = "amlogic,meson-i2c";
+				reg = <0x0 0x66400 0x0 0x28>;
+				interrupts = <GIC_SPI 161 IRQ_TYPE_EDGE_RISING>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				clocks = <&clkc CLKID_SYS_I2C_M_WRAPPER>;
+				status = "disabled";
+			};
+
+			i2c2: i2c@66800 {
+				compatible = "amlogic,meson-i2c";
+				reg = <0x0 0x66800 0x0 0x28>;
+				interrupts = <GIC_SPI 162 IRQ_TYPE_EDGE_RISING>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				clocks = <&clkc CLKID_SYS_I2C_M_WRAPPER>;
+				status = "disabled";
+			};
+
+			i2c3: i2c@66c00 {
+				compatible = "amlogic,meson-i2c";
+				reg = <0x0 0x66c00 0x0 0x28>;
+				interrupts = <GIC_SPI 163 IRQ_TYPE_EDGE_RISING>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				clocks = <&clkc CLKID_SYS_I2C_M_WRAPPER>;
+				status = "disabled";
+			};
+
+			dcon_led: dcon_led@0x74000 {
+				compatible = "amlogic,led_unipolar_ctrl";
+				reg = <0x0 0x74000 0x0 0x88>;
+				interrupts = <GIC_SPI 30 IRQ_TYPE_EDGE_RISING>;
+				led-mode = <LED_MESON_RGB>;
+				led_number = <2>;
+				status = "disabled";
+			};
+
+			ir: ir@fe084000 {
+				compatible = "amlogic, meson-ir";
+				reg = <0x0 0x84080 0x0 0xA4>,
+					<0x0 0x84000 0x0 0x58>;
+				status = "disabled";
+				protocol = <REMOTE_TYPE_NEC>;
+				interrupts = <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
+				map = <&custom_maps>;
+				max_frame_time = <200>;
+			};
+
+			ir1: ir1@fe084180 {
+				compatible = "amlogic, meson-ir";
+				reg = <0x0 0x84200 0x0 0xA4>,
+					<0x0 0x84180 0x0 0x58>;
+				status = "disabled";
+				protocol = <REMOTE_TYPE_NEC>;
+				interrupts = <GIC_SPI 31 IRQ_TYPE_EDGE_RISING>;
+				map = <&custom_maps>;
+				max_frame_time = <200>;
+			};
+
+			irblaster: meson-irblaster@fe08410c {
+				compatible = "amlogic, meson_irblaster";
+				status = "disabled";
+				reg = <0x0 0x8410c 0x0 0x10>;
+				#irblaster-cells = <2>;
+				interrupts = <GIC_SPI 23 IRQ_TYPE_EDGE_RISING>;
+			};
+
+			eth_phy: mdio-multiplexer@380000 {
+				compatible = "amlogic,g12a-mdio-mux";
+				reg = <0x0 0x380000 0x0 0xa4>;
+
+				clocks = <&clkc CLKID_SYS_ETHPHY>,
+					<&xtal>,
+					<&clkc CLKID_MPLL_50M>;
+				clock-names = "pclk", "clkin0", "clkin1";
+				mdio-parent-bus = <&mdio0>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				enet_type = <5>;
+				phy_pll_mode = <2>;
+				phy_mode = <7>;
+				tx_amp_src = <0xFE010330>;
+
+				ext_mdio: mdio@0 {
+					reg = <0>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+				};
+
+				int_mdio: mdio@1 {
+					reg = <1>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					internal_ephy: ethernet_phy@8 {
+						compatible = "ethernet-phy-id0180.3301",
+							     "ethernet-phy-ieee802.3-c22";
+						interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+						reg = <8>;
+						max-speed = <100>;
+					};
+				};
+			};
+
+			aml_hwspinlock_regs: syscon@e2c0 {
+				compatible = "syscon";
+				reg = <0x0 0xe2c0 0x0 0x20>;
+				status = "okay";
+			};
+		};
+
+		ethmac: ethernet@388000 {
+			compatible = "amlogic,meson-axg-dwmac",
+				     "snps,dwmac-4.00";
+			reg = <0x0 0xfe388000 0x0 0x12ec>,
+			      <0x0 0xfe384000 0x0 0x8>;
+			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "macirq";
+			clocks = <&clkc CLKID_SYS_ETHPHY>,
+				 <&clkc CLKID_FCLK_DIV2>,
+				 <&clkc CLKID_MPLL_50M>;
+			clock-names = "stmmaceth", "clkin0", "clkin1";
+			rx-fifo-depth = <4096>;
+			tx-fifo-depth = <2048>;
+			/*1:inphy; 2:exphy;*/
+			internal_phy = <1>;
+			analog_version = <1>;
+			mboxes = <&mbox_fifo T6D_REE2AO_ETH>;
+
+			mdio0: mdio {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "snps,dwmac-mdio";
+			};
+		};
+
+		uart_A: serial@fe078000 {
+			compatible = "amlogic,meson-uart";
+			reg = <0x0 0xfe078000 0x0 0x18>;
+			interrupts = <0 168 1>;
+			status = "disabled";
+			clocks = <&xtal
+				&clkc CLKID_SYS_UART_WRAPPER>;
+			clock-names = "clk_uart",
+				"clk_gate";
+			xtal_tick_en = <2>;
+			fifosize = < 64 >;
+			pinctrl-names = "default";
+			pinctrl-0 = <&a_uart_pins1>;
+		};
+
+		uart_C: serial@fe078800 {
+			compatible = "amlogic,meson-uart";
+			reg = <0x0 0xfe078800 0x0 0x18>;
+			interrupts = <0 170 1>;
+			status = "disabled";
+			clocks = <&xtal
+				&clkc CLKID_SYS_UART_WRAPPER>;
+			clock-names = "clk_uart",
+				"clk_gate";
+			xtal_tick_en = <2>;
+			fifosize = < 64 >;
+			pinctrl-names = "default";
+			pinctrl-0 = <&c_uart_pins1>;
+		};
+
+		mtd_nand: nfc@fe08d000 {
+			compatible = "amlogic,meson-nfc-single-ecc-bl2ex";
+			status = "disabled";
+			reg = <0x0 0xfe08d000 0x0 0x200>;
+			interrupts = <GIC_SPI 175 IRQ_TYPE_EDGE_RISING>;
+			/* share gate of sysclk with EMMC_C */
+			clocks = <&clkc CLKID_SYS_SD_EMMC_C>,
+					<&clkc CLKID_FCLK_DIV2>;
+			clock-names = "gate", "fdiv2pll";
+			nand_clk_ctrl = <0xfe08c000>;
+			spi_cfg = <0xfe08d040>;
+		};
+
+		spi_nfc: spi@fe08d000 {
+			compatible = "amlogic,spi-nfc";
+			status = "disabled";
+			reg = <0x0 0xfe08d000 0x0 0x200>,
+				  <0xfe08c000 0xc>,
+				  <0xfe010180 0x4>;
+			clocks = <&clkc CLKID_SYS_SD_EMMC_C>,
+					<&clkc CLKID_FCLK_DIV2>;
+			clock-names = "gate", "fdiv2pll";
+			nand_clk_ctrl = <0xfe08c000>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		sd_emmc_c: mmc@fe08c000 {
+			compatible = "amlogic,meson-v8-mmc";
+			reg = <0x0 0xfe08c000 0x0 0x1000>,
+				<0x0 0xfe000168 0x0 0x4>,
+				<0x0 0xfe004000 0x0 0x4>;
+			interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
+			status = "disabled";
+			clocks = <&clkc CLKID_SYS_SD_EMMC_C>,
+				<&clkc CLKID_SD_EMMC_C_SEL>,
+				<&clkc CLKID_SD_EMMC_C>,
+				<&xtal>,
+				<&clkc CLKID_GP0_PLL>,
+				<&clkc CLKID_GP0_PLL>;
+			clock-names = "core", "mux0", "mux1",
+					"clkin0", "clkin1", "clkin2";
+
+			card_type = <1>;
+			src_clk_rate = <1152000000>;
+			mmc_debug_flag;
+			ignore_desc_busy;
+			tx_delay = <15>;
+			cap-mmc-crypto;
+			no-sd;
+			no-sdio;
+			resets = <&reset RESET_SD_EMMC_C>;
+		};
+
+		video_composer {
+			compatible = "amlogic, video_composer";
+			dev_name = "video_composer";
+			status = "okay";
+		};
+
+		di_process {
+			compatible = "amlogic, di_process";
+			dev_name = "di_process";
+			status = "okay";
+		};
+
+		vpu: vpu {
+			compatible = "amlogic, vpu-t6d";
+			status = "okay";
+			reg =   <0x0 0xfe000000 0x0 0x100    /* clk */
+				0x0 0xfe00c000 0x0 0x70     /* pwrctrl */
+				0x0 0xff800000 0x0 0xf000>; /* vcbus */
+			clocks = <&clkc CLKID_VAPB_0>,
+				<&clkc CLKID_VAPB_1>,
+				<&clkc CLKID_VAPB>,
+				<&clkc CLKID_VPU_0>,
+				<&clkc CLKID_VPU_1>,
+				<&clkc CLKID_VPU>;
+			clock-names =   "vapb_clk0",
+					"vapb_clk1",
+					"vapb_clk",
+					"vpu_clk0",
+					"vpu_clk1",
+					"vpu_clk";
+			clk_level = <6>;
+			/* 0: 24.0M  1: 100.0M    2: 166.7M    3: 200.0M    4: 250.0M */
+			/* 5: 333.3M    6: 400.0M    7: 500.0M    8: 666.7M */
+		};
+
+		/*if you want to use vdin just modify status to "ok"*/
+		vdin0: vdin0 {/*common define*/
+			status = "okay";
+			compatible = "amlogic, vdin-t6d";
+			dev_name = "vdin0";
+			/*status = "disabled";*/
+			/*memory-region = <&vdin0_cma_reserved>;*/
+			reserve-iomap = "true";
+			flag_cma = <0x10101>;/*1:share with codec_mm;2:cma alone*/
+			/*MByte, if 10bit disable: 64M(YUV422),
+			 *if 10bit enable: 64*1.5 = 96M(YUV422)
+			 *if support 4K2K-YUV444-10bit-WR:3840*2160*4*4 ~= 128M
+			 *if support 4K2K-YUV422-10bit-wr:3840*2160*3*4 ~= 96M
+			 *if support 4K2K-YUV422-8BIT-WR:3840*2160*2*4 ~= 64M
+			 *if support 1080p-YUV422-8BIT-WR:1920*1080*2*4 ~= 16M
+			 * onebuffer:
+			 * worst case:(4096*2160*3 + 2M(afbce issue)) = 27.5M
+			 * dw:960x540x3 = 1.5M
+			 * total size:(27.5+1.5)x buffernumber
+			 */
+			/*cma_size = <174>;*/
+			/*frame_buff_num = <6>;*/
+			interrupts = <0 210 1 /* vdin0 vsync */
+					/*0 214 1*/ /* vdin1 write down*/
+					/*0 206 1*/ /* vpu crash */
+					/*0 213 1*/>; /* vdin0 write down*/
+			interrupt-names = "vsync_int"
+					/*"mif2_meta_wr_done_int"*/
+					/*"vpu_crash_int",*/
+					/*"write_done_int"*/;
+			rdma-irq = <2>;
+			clocks = <&clkc CLKID_FCLK_DIV5>, <&clkc CLKID_VDIN_MEAS>;
+				clock-names = "fclk_div5", "cts_vdin_meas_clk";
+			vdin_id = <0>;
+			/*vdin write mem color depth support:
+			 * bit0:support 8bit
+			 * bit1:support 9bit
+			 * bit2:support 10bit
+			 * bit3:support 12bit
+			 * bit4:support yuv422 10bit full pack mode (from txl new add)
+			 * bit5:force yuv422 to yuv444 malloc (for vdin0 debug)
+			 * bit8:use 8bit  at 4k_50/60hz_10bit
+			 * bit9:use 10bit at 4k_50/60hz_10bit
+			 * bit10: support 10bit when double write
+			 */
+			tv_bit_mode = <0x235>;
+			/* afbce_bit_mode: (amlogic frame buff compression encoder)
+			 * bit0 -- enable afbce
+			 * bit1 -- enable afbce compression-lossy
+			 * bit4 -- afbce for 4k
+			 * bit5 -- afbce for 1080p
+			 * bit6 -- afbce for 720p
+			 * bit7 -- afbce for smaller resolution
+			 */
+			afbce_bit_mode = <0x0>;
+			chk_wr_done_en;
+			/* urgent_en; */
+			double_write_en;
+			vdin_function_sel = <0x20000>;
+			/* vdin v4l2 */
+			v4l_support_en = <0>;
+			v4l_vd_num = <70>;
+			/* v4l2 capability */
+			driver   = "vdinvideo";
+			card     = "mesont3";
+			bus_info = "vdin0 v4l2";
+			version  = <0x20220120>;
+			/* fe_ports refer to tvin.h */
+			fe_ports = <0x00001001   /* CVBS1 */
+				0x00004000   /* HDMI0 */
+				0x00004001   /* HDMI1 */
+				0x00004002>; /* HDMI2 */
+			/* vdin v4l2 end */
+		};
+
+		vdin1: vdin1 {/*common define*/
+			status = "okay";
+			compatible = "amlogic, vdin-t6d";
+			dev_name = "vdin1";
+			/*status = "disabled";*/
+			reserve-iomap = "true";
+			/*memory-region = <&vdin1_cma_reserved>;*/
+			flag_cma = <0>;/*1:share with codec_mm;0:cma alone*/
+			interrupts = <0 212 1>;
+			interrupt-names = "vsync_int"/*, "vpu_crash_int",*/
+					/*"write_done_int"*/;
+			rdma-irq = <4>;
+			/*clocks = <&clock CLK_FPLL_DIV5>,
+			 *	<&clock CLK_VDIN_MEAS_CLK>;
+			 *clock-names = "fclk_div5", "cts_vdin_meas_clk";
+			 */
+			vdin_id = <1>;
+			tv_bit_mode = <0x15>;
+			/* vdin v4l2 */
+			v4l_support_en = <0>;
+			v4l_vd_num = <71>;
+			/* v4l2 capability */
+			driver   = "vdinvideo";
+			card     = "mesont3";
+			bus_info = "vdin1 v4l2";
+			version  = <0x20220120>;
+			/* fe_ports refer to tvin.h */
+			fe_ports = <0x0000a002   /* WB0_VD1 */
+				0x0000a003   /* WB0_VD2 */
+				0x0000a004   /* WB0_OSD1 */
+				0x0000a005   /* WB0_OSD2 */
+				0x0000a006   /* WB0_VPP */
+				0x0000a007   /* WB0_VDIN_BIST */
+				0x0000a008>; /* WB0_POST_BLEND */
+			/* vdin v4l2 end */
+		};
+	};
+
+	aml_bt: aml_bt {
+		compatible = "amlogic, aml-bt";
+		status = "disabled";
+	};
+
+	aml_wifi: aml_wifi {
+		compatible = "amlogic, aml-wifi";
+		status = "disabled";
+		irq_trigger_type = "GPIO_IRQ_LOW";
+		//dhd_static_buf;
+		pwm_config = <&wifi_pwm_conf>;
+	};
+
+	wifi_pwm_conf:wifi_pwm_conf{
+		pwm_channel1_conf {
+			// pwms = <&pwm_ef 0 30550 0>;
+			duty-cycle = <15270>;
+			times = <8>;
+		};
+		pwm_channel2_conf {
+			// pwms = <&pwm_ef 2 30500 0>;
+			duty-cycle = <15250>;
+			times = <12>;
+		};
+	};
+
+	aocec: aocec {
+		compatible = "amlogic, aocec-t6d";
+		dev_name = "aocec";
+		status = "okay";
+		vendor_name = "Amlogic"; /* Max Chars: 8     */
+		/* Refer to the following URL at:
+		 * http://standards.ieee.org/develop/regauth/oui/oui.txt
+		 */
+		vendor_id = <0x000000>;
+		product_desc = "T6D"; /* Max Chars: 16    */
+		cec_osd_string = "AML_TV"; /* Max Chars: 14    */
+		cec_version = <5>;/*5:1.4;6:2.0*/
+		port_num = <4>;
+		output = <0>;
+		cec_sel = <1>;/*1:use one ip, 2:use 2 ip*/
+		ee_cec; /*use cec a or b*/
+		arc_port_mask = <0x1>;
+		interrupts = <GIC_SPI 180 IRQ_TYPE_EDGE_RISING>;/*0:snps*/
+		interrupt-names = "hdmi_aocecb";
+		pinctrl-names = "default","hdmitx_aocecb","cec_pin_sleep";
+		pinctrl-0=<&cec_b>;
+		pinctrl-1=<&cec_b>;
+		pinctrl-2=<&cec_b>;
+		clocks = <&clkc CLKID_CECB_32K_CLKOUT>;
+		clock-names = "cecb_clk";
+		reg = <0x0 0xfe044000 0x0 0x2000
+		       0x0 0xfe010000 0x0 0x2000
+		       0x0 0xfe000000 0x0 0x2000
+		       0x0 0xfe004000 0x0 0x2000>;
+		reg-names = "ao","periphs","clock","pad_reg";
+		mbox-names = "mbox_cec";
+		mboxes = <&mbox_fifo T6D_REE2AO_AOCEC>;
+	};
+
+	aml_dma {
+		compatible = "amlogic,aml_p1_dma";
+		reg = <0x0 0xfe440400 0x0 0x48>;
+		interrupts = <0 24 1>;
+		status = "okay";
+
+		aml_aes {
+			compatible = "amlogic,aes_g12a_dma";
+			dev_name = "aml_aes_dma";
+			iv_swap = /bits/ 8 <0x0>;
+			status = "okay";
+		};
+
+		aml_sha {
+			compatible = "amlogic,sha_dma";
+			dev_name = "aml_sha_dma";
+			status = "okay";
+		};
+
+		aml_tdes {
+			compatible = "amlogic,des_dma,tdes_dma";
+			dev_name = "aml_tdes_dma";
+			status = "okay";
+		};
+
+		crypto {
+			compatible = "amlogic,crypto_sc2";
+			dev_name = "aml_crypto_dev";
+			status = "okay";
+			thread = /bits/ 8 <0x5>;
+			interrupts = <0 29 1>;
+		};
+	};
+
+	rng {
+		compatible = "amlogic,meson-rng";
+		status = "disabled"; /* disabled as default */
+		#address-cells = <2>;
+		#size-cells = <2>;
+		reg = <0x0 0xfe440788 0x0 0x0c>;
+		quality = /bits/ 16 <1000>;
+		version = <2>;
+	};
+
+	vclk_serve: vclk_serve {
+		compatible = "amlogic, vclk_serve";
+		status = "okay";
+		reg = <0x0 0xfe008000 0x0 0x400    /* ana reg */
+			0x0 0xfe000000 0x0 0x4a0>; /* clk reg */
+	};
+
+	vout_mux: vout_mux {
+		compatible = "amlogic, vout_mux-t6d";
+		status = "okay";
+		clocks = <&clkc CLKID_FCLK_DIV5>, <&clkc CLKID_VDIN_MEAS>;
+		clock-names = "fclk_div5", "vdin_meas_clk";
+	};
+
+	vout: vout {
+		compatible = "amlogic, vout";
+		status = "okay";
+		interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "vsync";
+		vs_meas=<0>;
+	};
+
+	vdac: vdac {
+		compatible = "amlogic, vdac-t6d";
+		status = "okay";
+		cdac_disable = <0>;
+	};
+
+	adc: adc {
+		compatible = "amlogic, adc-t6d";
+		status = "okay";
+		reg = <0x0 0xfe072000 0x0 0x2000/* afe reg base */
+			0x0 0xfe008000 0x0 0x2000/* hiu base */
+		>;
+	};
+
+	vout2: vout2 {
+		compatible = "amlogic, vout2";
+		status = "okay";
+	};
+
+	dummy_venc: dummy_venc {
+		compatible = "amlogic, dummy_venc_t6d";
+		status = "okay";
+		dummy_venc_type = <1>; /* 0 dummyl,1 dummyp,2 dummyi */
+		ports {
+			port {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				dummyp_to_drm: endpoint@0 {
+					reg = <0>;
+					remote-endpoint = <0>;
+				};
+			};
+		};
+	};
+
+	canvas: canvas {
+		compatible = "amlogic, meson, canvas";
+		status = "okay";
+		reg = <0x0 0xfe036048 0x0 0x2000>;
+	};
+
+	meson_uvm {
+		compatible = "amlogic, meson_uvm";
+		status = "okay";
+	};
+
+	meson_videotunnel{
+		compatible = "amlogic, meson_videotunnel";
+		status = "okay";
+	};
+
+	rdma {
+		compatible = "amlogic, meson-t3, rdma";
+		status = "okay";
+		interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "rdma";
+		/* after sc2 */
+		reset-names = "rdma";
+		resets = <&reset RESET_RDMA>;
+		rdma_table_page_count = <16>;
+	};
+
+	codec_io: codec_io {
+		compatible = "amlogic, meson-t6d, codec-io";
+		status = "okay";
+		#address-cells=<2>;
+		#size-cells=<2>;
+		ranges;
+		reg =	<0x0 0xfe002000 0x0 0x2000>,
+			<0x0 0xfe320000 0x0 0x10000>,
+			<0x0 0x0 0x0 0x0>,
+			<0x0 0x0 0x0 0x00>,
+			<0x0 0xff800000 0x0 0x40000>,
+			<0x0 0xfe036000 0x0 0x2000>,
+			<0x0 0x0 0x0 0x0>,
+			<0x0 0xfe0a8000 0x0 0x2000>;
+		reg-names = "cbus",
+			    "dosbus",
+			    "hiubus",
+			    "aobus",
+			    "vcbus",
+			    "dmcbus",
+			    "efusebus",
+				"nocbus";
+	};
+
+	ge2d {
+		compatible = "amlogic, ge2d-t6d";
+		status = "okay";
+		interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "ge2d";
+		clocks = <&clkc CLKID_VAPB>,
+			<&clkc CLKID_SYS_GE2D>,
+			<&clkc CLKID_GE2D_GATE>;
+		clock-names = "clk_vapb_0",
+			"clk_ge2d",
+			"clk_ge2d_gate";
+		reg = <0x0 0xff840000 0x0 0x100>;
+		power-domains = <&pwrdm PDID_T6D_GE2D>;
+	};
+
+	amlvecm: amlvecm {
+		compatible = "amlogic, vecm-t5m";
+		status = "disabled";
+		dev_name = "aml_vecm";
+		clocks = <&clkc CLKID_VID_LOCK>;
+		clock-names = "cts_vid_lock_clk";
+	};
+
+	mesonstream {
+		compatible = "amlogic, codec, streambuf";
+		dev_name = "mesonstream";
+		status = "okay";
+	};
+
+	vdec {
+		compatible = "amlogic, vdec-pm-pd";
+		dev_name = "vdec.0";
+		status = "okay";
+		interrupts = <0 3 1
+			0 23 1
+			0 32 1
+			0 91 1
+			0 92 1
+			0 93 1
+			0 72 1>;
+		interrupt-names = "vsync",
+			"demux",
+			"parser",
+			"mailbox_0",
+			"mailbox_1",
+			"mailbox_2",
+			"parser_b";
+		power-domains = <&pwrdm PDID_T6D_DOS_HEVC>,
+			<&pwrdm PDID_T6D_DOS_HEVC>;
+		power-domain-names = "pwrc-hevc",
+			"pwrc-dummy";
+	};
+
+	vcodec_dec {
+		compatible = "amlogic, vcodec-dec";
+		dev_name = "aml-vcodec-dec";
+		status = "okay";
+	};
+
+	vcodec_dos_dev: vcodec_dos_dev {
+		compatible = "amlogic, cpu-major-id-t6d";
+		dev_name = "vcodec_dos_dev";
+		status = "okay";
+		reg = <0x0 0xfe320000 0x0 0x10000>,
+			<0x0 0xfe036000 0x0 0x2000>;
+		reg-names = "dosbus",
+			"dmcbus";
+		clocks = <&clkc CLKID_SYS_DOS
+			&clkc CLKID_HEVCB>;
+		clock-names = "vdec",
+			"clk_hevc_mux";
+		assigned-clock-parents = <&clkc CLKID_HEVCB_0>;
+		assigned-clocks = <&clkc CLKID_HEVCB>;
+	};
+
+	meson-amvideom {
+		compatible = "amlogic, amvideom-t6d";
+		dev_name = "amvideom";
+		status = "okay";
+		interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "vsync";
+	};
+
+	vpu_security {
+		compatible = "amlogic, meson-t6d, vpu_security";
+		status = "okay";
+		interrupts = <GIC_SPI 220 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "vpu_security";
+	};
+
+	multi-di {
+		compatible = "amlogic, dim-t6d";
+		status = "okay";
+		/* 0:use reserved; 1:use cma; 2:use cma as reserved */
+		flag_cma = <4>;	//<1>;
+		//memory-region = <&di_reserved>;
+		//memory-region = <&di_cma_reserved>;
+		interrupts = <0 203 1
+				0 202 1>;
+		interrupt-names = "pre_irq", "post_irq";
+		clocks = <&clkc CLKID_VPU_CLKB>,
+			<&clkc CLKID_VPU>;
+		clock-names = "vpu_clkb",
+			"vpu_mux";
+		clock-range = <334 400>;
+		/* buffer-size = <3621952>;(yuv422 8bit) */
+		buffer-size = <4074560>;/*yuv422 fullpack*/
+		/* reserve-iomap = "true"; */
+		/* if enable nr10bit, set nr10bit-support to 1 */
+		post-wr-support = <0>;
+		nr10bit-support = <1>;
+		nrds-enable = <1>;
+		pps-enable = <1>;
+		en_4k = <0>;
+		keep_dec_vf = <0>;
+		po_fmt = <0>;
+		post_nub = <11>;
+		alloc_sct = <0>;
+		hf = <0>;
+		dct = <0>;
+		sub_v = <0>;//sub version
+		afbce_loss_en = <0>;//t5w loss mode enable for DI output
+		prelink_en = <1>;
+		ponly_mode = <1>;
+		t5db_afbcd_en = <1>;
+		postlink_en = <1>;
+		/***************************************************
+		 * t5w t3 support 4k ,same with t7 ,no canvas,
+		 * post_nub---default is 11
+		 *            (T7/T3/SC2/S4 new path)
+		 *            post 11*5222400 = 56M,local 7*4075520 = 28m
+		 * flag_cma---0: use reserved; 1:use cma;
+		 *            2:use cma as reserved 4:use codec mem
+		 * en_4k :en_4k---0: not support 4K;  1: enable 4K
+		 *                2: dynamic: vdin: 4k enable,
+		 *                   other source 4k disable
+		 *                8: when 4k,
+		 *                   output with a resolution is below 1080p
+		 * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+		 *               2: dynamic keep dec vf for p,other is disable
+		 * po_fmt---1: NV21/8;  2: nv12/8;  3: AFBC 422/10BIT;
+		 *          4: dynamic(4K AFBC,10/422);
+		 *          6: dynamic(from decoder 4K source,
+		 *             out is AFBC,10/420),
+		 *             other is 422/10BIT
+		 * bypass_mem---0:nr not bypass; 1: nr bypass;
+		 *              2: when 4k input ,nr is bypass;
+		 *              3: bypass nr for 4k,but not from vdin;
+		 * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+		 * hf---0:not enable; 1: enable
+		 * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+		 * sub_v---0:major; 1: sub
+		 * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+		 ***************************************************/
+	};
+
+	cpu_tsensor: cpu_tsensor@fe022000 {
+		compatible = "amlogic, r1p1-tsensor";
+		status = "okay";
+		reg = <0x0 0xfe022000 0x0 0x50>;
+		tsensor_id = <1>;
+		cal_type = <0x11>;
+		cal_coeff = <296 396 2757 8526>;
+		rtemp = <120000>;
+		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&clkc CLKID_TS_CLK>;
+		clock-names = "ts_comp";
+		#thermal-sensor-cells = <1>;
+		reset-names = "ts_rst";
+		resets = <&reset RESET_TS_CPU>;
+	};
+
+	top_tsensor: top_tsensor@fe01c000 {
+		compatible = "amlogic, r1p1-tsensor";
+		status = "okay";
+		reg = <0x0 0xfe01c000 0x0 0x50>;
+		tsensor_id = <2>;
+		cal_type = <0x11>;
+		cal_coeff = <296 396 2757 8526>;
+		rtemp = <120000>;
+		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&clkc CLKID_TS_CLK>;
+		clock-names = "ts_comp";
+		#thermal-sensor-cells = <1>;
+		reset-names = "ts_rst";
+		resets = <&reset RESET_TS_TOP>;
+	};
+
+	meson_cooldev: meson-cooldev@0 {
+		status = "okay";
+		compatible = "amlogic, meson-cooldev";
+		cooling_devices {
+			cpucore_cool_cluster0 {
+				cluster_id = <0>;
+				node_name = "cpucore_cool0";
+				device_type = "cpucore";
+			};
+			gpufreq_cool {
+				dyn_coeff = <358>;
+				node_name = "bifrost";
+				device_type = "gpufreq";
+			};
+			ddr0_cool {
+				ddr_reg = <0xfe0364b4 0xfe0365b4>;
+				ddr_status = <13>;
+				ddr_bits = <0 15>,<0 15>;
+				ddr_data = <6232 6232 4985 3895 3116 2492 1947 1780
+					1558 1246 1038 890 779>;
+				gpu_data = <3116 3116 2492 1947 1558 1246 973 890
+					779 623 519 445 389>;
+				node_name = "ddr_cool0";
+				device_type = "ddr";
+			};
+		};
+
+		cpucore_cool0:cpucore_cool0 {
+			#cooling-cells = <2>;
+		};
+		ddr_cool0:ddr_cool0 {
+			#cooling-cells = <2>;
+		};
+	};/*meson cooling devices end*/
+
+	thermal_zones: thermal-zones {
+		soc_thermal: soc_thermal {
+			polling-delay = <1000>;
+			polling-delay-passive = <100>;
+			sustainable-power = <5160>;
+			thermal-sensors = <&cpu_tsensor 0>;
+			trips {
+				cpu_switch_on: trip-point@0 {
+					temperature = <95000>;
+					hysteresis = <5000>;
+					type = "passive";
+				};
+				cpu_control: trip-point@1 {
+					temperature = <105000>;
+					hysteresis = <5000>;
+					type = "passive";
+				};
+				cpu_hot: trip-point@2 {
+					temperature = <55000>;
+					hysteresis = <5000>;
+					type = "hot";
+				};
+				cpu_critical: trip-point@3 {
+					temperature = <115000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+			cooling-maps {
+				cpufreq_cooling_map {
+					trip = <&cpu_control>;
+					cooling-device = <&CPU0 0 8>;
+					contribution = <1024>;
+				};
+				gpufreq_cooling_map {
+					trip = <&cpu_control>;
+					cooling-device = <&gpu 0 3>;
+					contribution = <1024>;
+				};
+				ddr0_cooling_map {
+					trip = <&cpu_hot>;
+					cooling-device = <&ddr_cool0 0 THERMAL_NO_LIMIT>;
+					contribution = <1024>;
+				};
+			};
+		};
+
+		top_thermal: top_thermal {
+			polling-delay = <2000>;
+			polling-delay-passive = <1000>;
+			sustainable-power = <960>;
+			thermal-sensors = <&top_tsensor 1>;
+			trips {
+				top_switch_on: trip-point@0 {
+					temperature = <95000>;
+					hysteresis = <5000>;
+					type = "passive";
+				};
+				top_control: trip-point@1 {
+					temperature = <105000>;
+					hysteresis = <5000>;
+					type = "passive";
+				};
+				top_critical: trip-point@2 {
+					temperature = <115000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+	};/*thermal zone end*/
+
+	usb_phy20: usbphy20@fe488000 {
+		compatible = "amlogic, amlogic-crg-drd-usb2-v1";
+		status = "disable";
+		reg = <0x0 0xfe488000 0x0 0x100 /* phy_base */
+				0x0 0xfe002000 0x0 0x100 /* reset_base */
+				0x0 0xfe48c000 0x0 0x60>; /* phy_cfg_bases */
+		pll-setting-5 = <0x7>;
+		phy0-reset-level-bit = <6>;
+		phy0-reg-reset-level-bit = <0>;
+		usb-reset-bit = <1>;
+		reset-level = <0x40>;
+		clocks = <&clkc CLKID_SYS_USB_U2DRD>,
+					<&clkc CLKID_USB2_48M_PRE>,
+					<&clkc CLKID_USB2_48M_CLK>;
+		clock-names = "crg_general",
+					  "clk_soc_u2drd_48m_pre",
+					  "clk_soc_u2drd_48m";
+		/* 48m soc-digital cfg. */
+		assigned-clocks = <&clkc CLKID_USB2_48M_CLK>;
+		assigned-clock-parents = <&clkc CLKID_USB2_48M_PRE>;
+		/* 48m soc-analog cfg. */
+		//assigned-clocks = <&clkc CLKID_USB2_48M_CLK_TMP_SEL>,
+		//					<&clkc CLKID_USB2_48M_CLK>;
+		//assigned-clock-parents = <&clkc CLKID_USB_PLL>,
+		//					<&clkc CLKID_USB2_48M_CLK_TMP>;
+		phy-id = <0>;
+		usb-phy-trim-reg = <0xfe010330>;
+		pm-controller;
+	};
+
+	usb_phy30: usbphy30@fe488100 {
+		compatible = "amlogic, amlogic-usb3-phy";
+		portnum = <0>;
+		status = "disable";
+	};
+
+	usb_phy22: usbphy22@fe4a8000 {
+		compatible = "amlogic, amlogic-crg-drd-usb2-v1";
+		reg = <0x0 0xfe4a8000 0x0 0x100 /* phy_base */
+				0x0 0xfe002000 0x0 0x100 /* reset_base */
+				0x0 0xfe4ac000 0x0 0x60>; /* phy_cfg_bases */
+		pll-setting-5 = <0x7>;
+		phy0-reset-level-bit = <8>;
+		phy0-reg-reset-level-bit = <4>;
+		usb-reset-bit = <5>;
+		reset-level = <0x40>;
+		clocks = <&clkc CLKID_SYS_USB_U22H>,
+					<&clkc CLKID_USB2_48M_PRE>,
+					<&clkc CLKID_USB2_48M_CLK>;
+		clock-names = "crg_general",
+					  "clk_soc_u2drd_48m_pre",
+					  "clk_soc_u2drd_48m";
+		/* 48m soc-digital cfg. */
+		assigned-clocks = <&clkc CLKID_USB2_48M_CLK>;
+		assigned-clock-parents = <&clkc CLKID_USB2_48M_PRE>;
+		/* 48m soc-analog cfg. */
+		//assigned-clocks = <&clkc CLKID_USB2_48M_CLK_TMP_SEL>,
+		//					<&clkc CLKID_USB2_48M_CLK>;
+		//assigned-clock-parents = <&clkc CLKID_USB_PLL>,
+		//					<&clkc CLKID_USB2_48M_CLK_TMP>;
+		phy-id = <2>;
+		usb-phy-trim-reg = <0xfe010330>;
+		status = "disable";
+		pm-controller;
+	};
+
+	usb_phy32: usbphy32@fe4a8000 {
+		compatible = "amlogic, amlogic-usb3-phy";
+		portnum = <0>;
+		status = "disable";
+	};
+
+	usb_phy21: usbphy21@fe498000 {
+		compatible = "amlogic, amlogic-crg-drd-usb2-v1";
+		status = "disable";
+		reg = <0x0 0xfe498000 0x0 0x100 /* phy_base */
+				0x0 0xfe002000 0x0 0x100 /* reset_base */
+				0x0 0xfe49c000 0x0 0x60>; /* phy_cfg_bases */
+		pll-setting-5 = <0x7>;
+		phy0-reset-level-bit = <7>;
+		phy0-reg-reset-level-bit = <2>;
+		usb-reset-bit = <3>;
+		reset-level = <0x40>;
+		clocks = <&clkc CLKID_SYS_USB_U2H>;
+		clock-names = "crg_general";
+		phy-id = <1>;
+		usb-phy-trim-reg = <0xfe010330>;
+		pm-controller;
+	};
+
+	usb_phy31: usbphy31@fe498100 {
+		compatible = "amlogic, amlogic-usb3-phy";
+		portnum = <0>;
+		status = "disable";
+	};
+
+	crg20_otg: crgotg20@fe488000 {
+		compatible = "amlogic, amlogic-crg-otg";
+		status = "disabled";
+		usb2-phy-reg = <0xfe488000>;
+		usb2-phy-reg-size = <0x100>;
+		usb3-phy-reg = <0xfe488100>;
+		usb3-phy-reg-size = <0x20>;
+		interrupts = <0 130 IRQ_TYPE_EDGE_RISING>;
+		udc-name = "fe480000.crgudc";
+	};
+
+	crg20_drd: crg20@fe480000 {
+		compatible = "amlogic, crg-drd";
+		status = "disabled";
+		reg = <0x0 0xfe480000 0x0 0x8000>;
+		interrupts = <0 131 IRQ_TYPE_EDGE_RISING>;
+		usb-phy = <&usb_phy20>, <&usb_phy30>;
+		clocks = <&clkc CLKID_SYS_USB_U2DRD>;
+		clock-names = "crg_general";
+		rd-outstanding-tune = <0x8>;
+		in-nak-rty = <0x5>;
+	};
+
+	crg20_udc: crgudc20@fe480000 {
+		compatible = "amlogic, crg_udc";
+		status = "disable";
+		controller-type = <1>; /* 1: aml phy 4: m31 phy */
+		reg = <0x0 0xfe480000 0x0 0x8000>;
+		interrupts = <0 131 IRQ_TYPE_EDGE_RISING>;
+		port-speed = <3>; /* 0~3: unknown, low, full, high */
+		phy-reg = <0xfe488000>; /* phy2 base */
+		phy-reg-size = <0x10>;
+		clocks = <&clkc CLKID_SYS_USB_U2DRD>;
+		clock-names = "usb_general";
+		phy-id = <0>;
+		version = <1>; /* forbid vbus detect */
+		suspend-scheme = <0x1>;
+	};
+
+	crg22_host: crg22@fe4a0000 {
+		compatible = "amlogic, crg-host-drd";
+		status = "disabled";
+		reg = <0x0 0xfe4a0000 0x0 0x8000>;
+		interrupts = <0 55 IRQ_TYPE_EDGE_RISING>;
+		usb-phy = <&usb_phy22>, <&usb_phy32>;
+		clocks = <&clkc CLKID_SYS_USB_U22H>;
+		clock-names = "crg_general";
+		rd-outstanding-tune = <0x8>;
+		in-nak-rty = <0x5>;
+	};
+
+	crg21_host: crg21@fe490000 {
+		compatible = "amlogic, crg-host-drd";
+		status = "disabled";
+		reg = <0x0 0xfe490000 0x0 0x8000>;
+		interrupts = <0 79 IRQ_TYPE_EDGE_RISING>;
+		usb-phy = <&usb_phy21>, <&usb_phy31>;
+		clocks = <&clkc CLKID_SYS_USB_U2H>;
+		clock-names = "crg_general";
+		rd-outstanding-tune = <0x8>;
+		in-nak-rty = <0x5>;
+	};
+
+	cpu_info {
+		compatible = "amlogic, cpuinfo";
+		cpuinfo_cmd = <0x82000044>;
+	};
+
+	lut_dma:lut_dma {
+		compatible = "amlogic, meson-t7, lut_dma";
+		status = "okay";
+	};
+
+	efusecheck: efusecheck{
+		maincmd = <0x8200003E>;
+		checknum = <3>;
+		check0 = <&check_0>;
+		check1 = <&check_1>;
+		check2 = <&check_2>;
+		check_0:check_0{
+			checkname = "dgpk1";
+			subcmd = <0x1000>;
+		};
+		check_1:check_1{
+			checkname = "dgpk2";
+			subcmd = <0x1001>;
+		};
+		check_2:check_2{
+			checkname = "aud_id";
+			subcmd = <0x1002>;
+		};
+	};
+
+	efuse: efuse{
+		compatible = "amlogic, efuse";
+		reg = <0x0 0xfe440040 0x0 0x4>;
+		secureboot_mask = <0x00000c00>;
+		read_cmd = <0x82000030>;
+		write_cmd = <0x82000031>;
+		get_max_cmd = <0x82000033>;
+		mem_in_base_cmd = <0x82000020>;
+		mem_out_base_cmd = <0x82000021>;
+		efuse_pattern_size = <0x600>;
+		efuse_obj_cmd_status = <0x1>;
+		efuse_cali_item_read = <0x1>;
+		key = <&efusekey>;
+		check = <&efusecheck>;
+		clock-names = "efuse_clk";
+		status = "okay";
+	};
+
+	efusekey:efusekey{
+		keynum = <4>;
+		key0 = <&key_0>;
+		key1 = <&key_1>;
+		key2 = <&key_2>;
+		key3 = <&key_3>;
+		key_0:key_0{
+			keyname = "mac";
+			offset = <0>;
+			size = <6>;
+		};
+		key_1:key_1{
+			keyname = "mac_bt";
+			offset = <6>;
+			size = <6>;
+		};
+		key_2:key_2{
+			keyname = "mac_wifi";
+			offset = <12>;
+			size = <6>;
+		};
+		key_3:key_3{
+			keyname = "usid";
+			offset = <18>;
+			size = <16>;
+		};
+	};
+
+	state_led: state_led {
+		compatible = "amlogic,state-led-aocpu";
+		mboxes = <&mbox_fifo T6D_REE2AO_LED>;
+		status = "disabled";
+	};
+
+	chosen {
+		kaslr-seed = <0x0 0x0>;
+		bootargs = "usbcore.autosuspend=-1";
+	};
+};
+
+&periphs_pinctrl {
+	emmc_pins: emmc {
+		mux-0 {
+			groups = "emmc_d0",
+				 "emmc_d1",
+				 "emmc_d2",
+				 "emmc_d3",
+				 "emmc_d4",
+				 "emmc_d5",
+				 "emmc_d6",
+				 "emmc_d7",
+				 "emmc_cmd";
+			function = "emmc";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+
+		mux-1 {
+			groups = "emmc_clk";
+			function = "emmc";
+			bias-disable;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	emmc_ds_pins: emmc-ds {
+		mux {
+			groups = "emmc_ds";
+			function = "emmc";
+			bias-pull-down;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	emmc_clk_gate_pins: emmc_clk_gate {
+		mux {
+			groups = "GPIOB_8";
+			function = "gpio_periphs";
+			bias-pull-down;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	/* sdemmc portB */
+	sd_clk_cmd_pins:sd_clk_cmd_pins {
+		mux {
+			groups = "sdcard_cmd_c";
+			function = "sdcard";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+		mux1 {
+			groups = "sdcard_clk_c";
+			function = "sdcard";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	sd_all_pins:sd_all_pins {
+		mux {
+			groups = "sdcard_d0_c",
+				   "sdcard_d1_c",
+				   "sdcard_d2_c",
+				   "sdcard_d3_c",
+				   "sdcard_cmd_c";
+			function = "sdcard";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+		mux1 {
+			groups = "sdcard_clk_c";
+			function = "sdcard";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	sd_clk_gate_pins: sd_clk_gate {
+		mux {
+			groups = "GPIOC_4";
+			function = "gpio_periphs";
+			bias-pull-down;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	sd_all_pd_pins:sd_all_pd_pins {
+		mux {
+			groups = "GPIOC_0",
+				   "GPIOC_1",
+				   "GPIOC_2",
+				   "GPIOC_3",
+				   "GPIOC_4",
+				   "GPIOC_5";
+			function = "gpio_periphs";
+			bias-pull-down;
+			output-low;
+		};
+	};
+
+	sd_1bit_pins:sd_1bit_pins {
+		mux {
+			groups = "sdcard_d0_c",
+					"sdcard_cmd_c";
+			function = "sdcard";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+		mux1 {
+			groups = "sdcard_clk_c";
+			function = "sdcard";
+			bias-pull-up;
+			drive-strength-microamp = <4000>;
+		};
+	};
+
+	hdmirx_a_mux:hdmirx_a_mux {
+		mux {
+			groups = "hdmirx_hpd_a",
+				"hdmirx_5vdet_a",
+				"hdmirx_sda_a",
+				"hdmirx_scl_a";
+			function = "hdmirx";
+		};
+	};
+
+	hdmirx_b_mux:hdmirx_b_mux {
+		mux {
+			groups = "hdmirx_hpd_b",
+				"hdmirx_5vdet_b",
+				"hdmirx_sda_b",
+				"hdmirx_scl_b";
+			function = "hdmirx";
+		};
+	};
+
+	hdmirx_c_mux:hdmirx_c_mux {
+		mux {
+			groups = "hdmirx_hpd_c",
+				"hdmirx_5vdet_c",
+				"hdmirx_sda_c",
+				"hdmirx_scl_c";
+			function = "hdmirx";
+		};
+	};
+
+	cec_b: cec_b {
+		mux {
+			groups = "cec";
+			function = "cec";
+		};
+	};
+
+	irblaster_pins1:irblaster_pin1 {
+		mux {
+			groups = "remote_out_b";
+			function = "remote_out";
+		};
+	};
+
+	irblaster_pins2:irblaster_pin2 {
+		mux {
+			groups = "remote_out_d1";
+			function = "remote_out";
+		};
+	};
+
+	irblaster_pins3:irblaster_pin3 {
+		mux {
+			groups = "remote_out_d9";
+			function = "remote_out";
+		};
+	};
+
+	irblaster_pins4:irblaster_pin4 {
+		mux {
+			groups = "remote_out_p6";
+			function = "remote_out";
+		};
+	};
+
+	irblaster_pins5:irblaster_pin5 {
+		mux {
+			groups = "remote_out_p9";
+			function = "remote_out";
+		};
+	};
+
+	pwm_a_pins1: pwm_a_pins1 {
+		mux {
+			groups = "pwm_a_e0";
+			function = "pwm_a";
+		};
+	};
+
+	pwm_a_pins2: pwm_a_pins2 {
+		mux {
+			groups = "pwm_a_d11";
+			function = "pwm_a";
+		};
+	};
+
+	pwm_b_pins1: pwm_b_pins1 {
+		mux {
+			groups = "pwm_b_e1";
+			function = "pwm_b";
+		};
+	};
+
+	pwm_b_pins2: pwm_b_pins2 {
+		mux {
+			groups = "pwm_b_z4";
+			function = "pwm_b";
+		};
+	};
+
+	pwm_c_pins1: pwm_c_pins1 {
+		mux {
+			groups = "pwm_c_d5";
+			function = "pwm_c";
+		};
+	};
+
+	pwm_c_pins2: pwm_c_pins2 {
+		mux {
+			groups = "pwm_c_d7";
+			function = "pwm_c";
+		};
+	};
+
+	pwm_c_pins3: pwm_c_pins3 {
+		mux {
+			groups = "pwm_c_d11";
+			function = "pwm_c";
+		};
+	};
+
+	pwm_d_pins1: pwm_d_pins1 {
+		mux {
+			groups = "pwm_d_z5";
+			function = "pwm_d";
+		};
+	};
+
+	pwm_d_pins2: pwm_d_pins2 {
+		mux {
+			groups = "pwm_d_m1";
+			function = "pwm_d";
+		};
+	};
+
+	pwm_d_pins3: pwm_d_pins3 {
+		mux {
+			groups = "pwm_d_m23";
+			function = "pwm_d";
+		};
+	};
+
+	pwm_d_pins4: pwm_d_pins4 {
+		mux {
+			groups = "pwm_d_d9";
+			function = "pwm_d";
+		};
+	};
+
+	pwm_d_pins5: pwm_d_pins5 {
+		mux {
+			groups = "pwm_d_h5";
+			function = "pwm_d";
+		};
+	};
+
+	pwm_d_pins6: pwm_d_pins6 {
+		mux {
+			groups = "pwm_d_h12";
+			function = "pwm_d";
+		};
+	};
+
+	pwm_e_pins1: pwm_e_pins1 {
+		mux {
+			groups = "pwm_e_z6";
+			function = "pwm_e";
+		};
+	};
+
+	pwm_e_pins2: pwm_e_pins2 {
+		mux {
+			groups = "pwm_e_h13";
+			function = "pwm_e";
+		};
+	};
+
+	pwm_e_pins3: pwm_e_pins3 {
+		mux {
+			groups = "pwm_e_m24";
+			function = "pwm_e";
+		};
+	};
+
+	pwm_e_pins4: pwm_e_pins4 {
+		mux {
+			groups = "pwm_e_d10";
+			function = "pwm_e";
+		};
+	};
+
+	pwm_e_pins5: pwm_e_pins5 {
+		mux {
+			groups = "pwm_e_e2";
+			function = "pwm_e";
+		};
+	};
+
+	pwm_f_pins1: pwm_f_pins1 {
+		mux {
+			groups = "pwm_f_c10";
+			function = "pwm_f";
+		};
+	};
+
+	pwm_f_pins2: pwm_f_pins2 {
+		mux {
+			groups = "pwm_f_d6";
+			function = "pwm_f";
+		};
+	};
+
+	pwm_f_pins3: pwm_f_pins3 {
+		mux {
+			groups = "pwm_f_m26";
+			function = "pwm_f";
+		};
+	};
+
+	pwm_f_pins4: pwm_f_pins4 {
+		mux {
+			groups = "pwm_f_m10";
+			function = "pwm_f";
+		};
+	};
+
+	pwm_f_pins5: pwm_f_pins5 {
+		mux {
+			groups = "pwm_f_d12";
+			function = "pwm_f";
+		};
+	};
+
+	pwm_g_pins1: pwm_g_pins1 {
+		mux {
+			groups = "pwm_g_z12";
+			function = "pwm_g";
+		};
+	};
+
+	pwm_g_pins2: pwm_g_pins2 {
+		mux {
+			groups = "pwm_g_z19";
+			function = "pwm_g";
+		};
+	};
+
+	pwm_g_pins3: pwm_g_pins3 {
+		mux {
+			groups = "pwm_g_m8";
+			function = "pwm_g";
+		};
+	};
+
+	pwm_h_pins1: pwm_h_pins1 {
+		mux {
+			groups = "pwm_h_d6";
+			function = "pwm_h";
+		};
+	};
+
+	pwm_h_pins2: pwm_h_pins2 {
+		mux {
+			groups = "pwm_h_z13";
+			function = "pwm_h";
+		};
+	};
+
+	pwm_h_pins3: pwm_h_pins3 {
+		mux {
+			groups = "pwm_h_m9";
+			function = "pwm_h";
+		};
+	};
+
+	pwm_c_hiz_pins: pwm_c_hiz_pins {
+		mux {
+			groups = "pwm_c_hiz";
+			function = "pwm_c_hiz";
+		};
+	};
+
+	pwm_d_hiz_pins: pwm_d_hiz_pins {
+		mux {
+			groups = "pwm_d_hiz";
+			function = "pwm_d_hiz";
+		};
+	};
+
+	lcd_vbyone_a_pins: lcd_vbyone_a_pin {
+		mux {
+			groups = "vx1_a_lockn","vx1_a_htpdn";
+			function = "vx1";
+		};
+	};
+
+	lcd_vbyone_a_off_pins: lcd_vbyone_a_off_pin {
+		mux {
+			groups = "GPIOH_0","GPIOH_1";
+			function = "gpio_periphs";
+			input-enable;
+		};
+	};
+
+	lcd_tcon_p2p_pins: lcd_tcon_p2p_pin {
+		mux {
+			groups = "tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6",
+				"tcon_lock";
+			function = "tcon";
+		};
+	};
+
+	lcd_tcon_p2p_usit_pins: lcd_tcon_p2p_usit_pin {
+		mux {
+			groups = "tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6",
+				"tcon_sfc_h0";
+			function = "tcon";
+		};
+	};
+
+	lcd_tcon_p2p_off_pins: lcd_tcon_p2p_off_pin {
+		mux {
+			groups = "GPIOH_1","GPIOH_2","GPIOH_3",
+				"GPIOH_4","GPIOH_5","GPIOH_6",
+				"GPIOH_0";
+				function = "gpio_periphs";
+			input-enable;
+		};
+	};
+
+	lcd_tcon_mlvds_pins: lcd_tcon_mlvds_pin {
+		mux {
+			groups = "tcon_0","tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6";
+			function = "tcon";
+		};
+	};
+
+	lcd_tcon_mlvds_off_pins: lcd_tcon_mlvds_off_pin {
+		mux {
+			groups = "GPIOH_0","GPIOH_1","GPIOH_2","GPIOH_3",
+				"GPIOH_4","GPIOH_5","GPIOH_6";
+			function = "gpio_periphs";
+			input-enable;
+		};
+	};
+
+	remote_pins: remote_pin {
+		mux {
+			groups = "ir_in_a";
+			function = "ir";
+			bias-disable;
+		};
+	};
+
+	remote_b_pins: remote_b_pin {
+		mux {
+			groups = "ir_in_b_z18";
+			function = "ir";
+			bias-disable;
+		};
+	};
+
+	i2c0_pins1:i2c0_pins1 {
+		mux {
+			groups = "i2c0_scl",
+				"i2c0_sda";
+			function = "i2c0";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c1_pins1:i2c1_pins1 {
+		mux {
+			groups = "i2c1_scl_d2",
+				"i2c1_sda_d3";
+			function = "i2c1";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c1_pins2:i2c1_pins2 {
+		mux {
+			groups = "i2c1_scl_d14",
+				"i2c1_sda_d13";
+			function = "i2c1";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c2_pins1:i2c2_pins1 {
+		mux {
+			groups = "i2c2_sda_e1",
+				"i2c2_scl_e0";
+			function = "i2c2";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c2_pins2:i2c2_pins2 {
+		mux {
+			groups = "i2c2_sda_h21",
+				"i2c2_scl_h20";
+			function = "i2c2";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c2_pins3:i2c2_pins3 {
+		mux {
+			groups = "i2c2_sda_h11",
+				"i2c2_scl_h10";
+			function = "i2c2";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c2_pins4:i2c2_pins4 {
+		mux {
+			groups = "i2c2_sda_h3",
+				"i2c2_scl_h2";
+			function = "i2c2";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c2_pins5:i2c2_pins5 {
+		mux {
+			groups = "i2c2_sda_m26",
+				"i2c2_scl_m25";
+			function = "i2c2";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c3_pins1:i2c3_pins1 {
+		mux {
+			groups = "i2c3_sda_d7",
+				"i2c3_scl_d6";
+			function = "i2c3";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c3_pins2:i2c3_pins2 {
+		mux {
+			groups = "i2c3_sda_c1",
+				"i2c3_scl_c0";
+			function = "i2c3";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	i2c3_pins3:i2c3_pins3 {
+		mux {
+			groups = "i2c3_scl_m27",
+				"i2c3_sda_m28";
+			function = "i2c3";
+			drive-strength-microamp = <3000>;
+			bias-disable;
+		};
+	};
+
+	dcon_led_pins1:dcon_led_pins1 {
+		mux {
+			groups = "dcon_led_d7";
+			function = "dcon_led";
+		};
+	};
+
+	dcon_led_pins2:dcon_led_pins2 {
+		mux {
+			groups = "dcon_led_c10";
+			function = "dcon_led";
+		};
+	};
+
+	dcon_led_pins3:dcon_led_pins3 {
+		mux {
+			groups = "dcon_led_z18";
+			function = "dcon_led";
+		};
+	};
+
+	dcon_led_pins4:dcon_led_pins4 {
+		mux {
+			groups = "dcon_led_d8";
+			function = "dcon_led";
+		};
+	};
+
+	dcon_led_pins5:dcon_led_pins5 {
+		mux {
+			groups = "dcon_led_d9";
+			function = "dcon_led";
+		};
+	};
+
+	a_uart_pins1:a_uart1 {
+		mux {
+			groups = "uart_a_tx_c6",
+				 "uart_a_rx_c7",
+				 "uart_a_cts_c8",
+				 "uart_a_rts_c9";
+			function = "uart_a";
+			drive-strength-microamp = <3000>;
+			bias-pull-up;
+		};
+	};
+
+	a_uart_pins2:a_uart2 {
+		mux {
+			groups = "uart_a_tx_z0",
+				 "uart_a_rx_z1",
+				 "uart_a_cts_z2",
+				 "uart_a_rts_z3";
+			function = "uart_a";
+			drive-strength-microamp = <3000>;
+			bias-pull-up;
+		};
+	};
+
+	a_uart_pins3:a_uart3 {
+		mux {
+			groups = "uart_a_tx_m0",
+				 "uart_a_rx_m1",
+				 "uart_a_cts_m2",
+				 "uart_a_rts_m3";
+			function = "uart_a";
+			drive-strength-microamp = <3000>;
+			bias-pull-up;
+		};
+	};
+
+	c_uart_pins1:c_uart1 {
+		mux {
+			groups = "uart_c_tx_d6",
+				 "uart_c_rx_d7";
+			function = "uart_c";
+			drive-strength-microamp = <3000>;
+			bias-pull-up;
+		};
+	};
+
+	c_uart_pins2:c_uart2 {
+		mux {
+			groups = "uart_c_tx_h2",
+				"uart_c_rx_h3",
+				"uart_c_cts_h4",
+				"uart_c_rts_h5";
+			function = "uart_c";
+			drive-strength-microamp = <3000>;
+			bias-pull-up;
+		};
+	};
+
+	c_uart_pins3:c_uart3 {
+		mux {
+			groups = "uart_c_tx_m19",
+				"uart_c_rx_m20",
+				"uart_c_cts_m21",
+				"uart_c_rts_m22";
+			function = "uart_c";
+			drive-strength-microamp = <3000>;
+			bias-pull-up;
+		};
+	};
+
+	jtag_a_pins: jtag_a_pin {
+		mux {
+			groups = "jtag_a_clk_d6",
+				 "jtag_a_tms_d7",
+				 "jtag_a_tdi_d8",
+				 "jtag_a_tdo_d9";
+			function = "jtag_a";
+		};
+
+		mux-unused {
+			groups = "GPIOW_2",
+				 "GPIOW_3",
+				 "GPIOW_6",
+				 "GPIOW_7";
+			function = "gpio_periphs";
+		};
+	};
+
+	jtag_b_pins: jtag_b_pin {
+		mux {
+			groups = "jtag_a_clk_w2",
+				 "jtag_a_tms_w3",
+				 "jtag_a_tdi_w6",
+				 "jtag_a_tdo_w7";
+			function = "jtag_a";
+		};
+
+		mux-unused {
+			groups = "GPIOD_6",
+				 "GPIOD_7",
+				 "GPIOD_8",
+				 "GPIOD_9";
+			function = "gpio_periphs";
+		};
+	};
+
+	atvdemod_agc_pins: atvdemod_agc_pins {
+		mux {
+			groups = "atv_if_agc_z6";
+			function = "atv_if_agc";
+		};
+	};
+
+	dtvdemod_if_agc_pins: dtvdemod_if_agc_pins {
+		mux {
+			groups = "dtv_if_agc_z6";
+			function = "dtv";
+		};
+	};
+
+	dtvdemod_rf_agc_pins: dtvdemod_rf_agc_pins {
+		mux {
+			groups = "dtv_rf_agc_z6";
+			function = "dtv";
+		};
+	};
+
+	dvb_p_ts1_pins: dvb_p_ts1_pins {
+		mux {
+			groups = "tsin_b_d0",
+			"tsin_b_d1",
+			"tsin_b_d2",
+			"tsin_b_d3",
+			"tsin_b_d4",
+			"tsin_b_d5",
+			"tsin_b_d6",
+			"tsin_b_d7",
+			"tsin_b_clk",
+			"tsin_b_sop",
+			"tsin_b_valid";
+			function = "tsin";
+		};
+	};
+
+	dvb_ci_bus_pins_all: dvb_ci_bus_pins_all {
+		mux {
+			groups = "cicam_a0", "cicam_a1",
+			"cicam_a2_c0", "cicam_a3_c1", "cicam_a4_c2",
+			"cicam_a5_c3", "cicam_a6_c4", "cicam_a7_c5",
+			"cicam_a8_c6", "cicam_a9_c7", "cicam_a10_c8",
+			"cicam_a11_c9",
+			"cicam_data0", "cicam_data1", "cicam_data2",
+			"cicam_data3", "cicam_data4", "cicam_data5",
+			"cicam_data6", "cicam_data7",
+			"cicam_cen", "cicam_oen", "cicam_wen", "cicam_iordn",
+			"cicam_iowrn", "cicam_reset";
+			function = "cicam";
+		};
+	};
+
+	dvb_ci_bus_pins: dvb_ci_bus_pins {
+		mux {
+			groups = "cicam_a0", "cicam_a1",
+			"cicam_data0", "cicam_data1",
+			"cicam_data2", "cicam_data3",
+			"cicam_data4", "cicam_data5",
+			"cicam_data6", "cicam_data7",
+			"cicam_cen", "cicam_oen",
+			"cicam_wen", "cicam_iordn",
+			"cicam_iowrn",
+			"cicam_reset";
+			function = "cicam";
+		};
+	};
+	ci_ts_pins: ci_ts_pins {
+		mux {
+			groups = "tsout_sop",
+			"tsout_valid",
+			"tsout_d0",
+			"tsout_d1",
+			"tsout_d2",
+			"tsout_d3",
+			"tsout_d4",
+			"tsout_d5",
+			"tsout_d6",
+			"tsout_d7";
+			function = "tsout";
+		};
+	};
+	ci_addr_pins: ci_addr_pins {
+		mux {
+			groups = "cicam_a2_z8",
+			"cicam_a3_z9", "cicam_a4_z10",
+			"cicam_a5_z11", "cicam_a6_z12",
+			"cicam_a7_z13", "cicam_a8_z14",
+			"cicam_a9_z15",
+			"cicam_a10_z16", "cicam_a11_z17";
+			function = "cicam";
+		};
+	};
+
+	ci_ts_clk_pins: ci_ts_clk_pins {
+		mux {
+			groups =  "tsout_clk";
+			function = "tsout";
+		};
+	};
+	ci_gpio_pins: ci_gpio_pins {
+		mux {
+			groups =  "GPIOZ_7";
+			function = "gpio_periphs";
+		};
+	};
+	diseqc_out: diseqc_out {
+		mux {/*only use out, don't support */
+			groups = "diseqc_out_z0";
+			function = "diseqc_out";
+			bias-pull-down;
+		};
+	};
+
+	spicc0_pins_h: spicc0_pins_h {
+		mux {
+			groups = "spi_mosi_a_h10",
+				 "spi_miso_a_h9",
+				 "spi_ss0_a_h8",
+				 "spi_clk_a_h11";
+			function = "spi";
+			drive-strength-microamp = <3000>;
+		};
+	};
+
+	spicc0_pins_m: spicc0_pins_m {
+		mux {
+			groups = "spi_mosi_a_m20",
+				 "spi_miso_a_m19",
+				 "spi_ss0_a_m22",
+				 "spi_clk_a_m21";
+			function = "spi";
+			drive-strength-microamp = <3000>;
+		};
+	};
+
+	spicc1_pins_c: spicc1_pins_c {
+		mux {
+			groups = "spi_mosi_b_c1",
+				 "spi_miso_b_c0",
+				 "spi_ss0_b_c3",
+				 "spi_clk_b_c2";
+			function = "spi";
+			drive-strength-microamp = <3000>;
+		};
+	};
+
+	spicc1_pins_z: spicc1_pins_z {
+		mux {
+			groups = "spi_mosi_b_z1",
+				 "spi_miso_b_z0",
+				 "spi_ss0_b_z3",
+				 "spi_clk_b_z2";
+			function = "spi";
+			drive-strength-microamp = <3000>;
+		};
+	};
+
+	sd_iso7816_pins:sd_iso7816_pins {
+		mux {
+			groups = "iso7816_clk_z0",
+				"iso7816_data_z1";
+			function = "iso7816";
+			input-enable;
+			bias-pull-down;
+		};
+	};
+
+	all_nand_pins: all_nand_pins {
+	mux {
+			groups = "emmc_d0",
+				"emmc_d1",
+				"emmc_d2",
+				"emmc_d3",
+				"emmc_d4",
+				"emmc_d5",
+				"emmc_d6",
+				"emmc_d7",
+				"nand_ce0",
+				"nand_ale",
+				"nand_cle",
+				"nand_wen_clk",
+				"nand_ren_wr";
+			function = "nand";
+			input-enable;
+		};
+	};
+
+	nand_cs_pins: nand_cs {
+		mux {
+			groups = "nand_ce0";
+			function = "nand";
+		};
+	};
+
+	spinf_pins:spinf_pins {
+		mux {
+			groups = "spinf_mo_d0",
+				 "spinf_mi_d1",
+				 "spinf_wp_d2",
+				 "spinf_hold_d3",
+				 "spinf_d4",
+				 "spinf_d5",
+				 "spinf_d6",
+				 "spinf_d7",
+				 "spinf_clk",
+				 "spinf_cs0";
+			function = "spinf";
+			drive-strength-microamp = <3000>;
+		};
+	};
+};
+
+&gpu{
+	status = "okay";
+	reg =   <0x0 0xFE400000 0x0 0x40000>, /*mali APB bus base address*/
+		<0x0 0xFE002000 0x0 0x02000>; /*reset register*/
+		/*<0xFE000000 0x02000>; gpu clk register*/
+
+	interrupts = <0 144 4>, <0 145 4>, <0 146 4>;
+	interrupt-names = "GPU", "MMU", "JOB";
+	num_of_pp = <2>;
+	/*system-coherency = <31>;*/
+	clocks = <&clkc CLKID_MALI>;
+	clock-names = "gpu_mux";
+
+	/*
+	 * Mali clocking is provided by two identical clock paths
+	 * MALI_0 and MALI_1 muxed to a single clock by a glitch
+	 * free mux to safely change frequency while running.
+	 */
+	assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
+			  <&clkc CLKID_MALI_0>,
+			  <&clkc CLKID_MALI>; /* Glitch free mux */
+	assigned-clock-parents = <&clkc CLKID_FCLK_DIV5>,
+				 <0>, /* Do Nothing */
+				 <&clkc CLKID_MALI_0>;
+	assigned-clock-rates = <0>, /* Do Nothing */
+			       <400000000>,
+			       <0>; /* Do Nothing */
+
+	tbl =  <&dvfs250_cfg
+		&dvfs400_cfg
+		&dvfs500_cfg
+		&dvfs666_cfg
+		&dvfs800_cfg
+		&dvfs800_cfg>;
+};
+
+#include "mesont6d_cpufreq.dtsi"
diff --git a/arch/arm64/boot/dts/amlogic/mesont6d_audio.dtsi b/arch/arm64/boot/dts/amlogic/mesont6d_audio.dtsi
new file mode 100644
index 0000000..1143121
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/mesont6d_audio.dtsi
@@ -0,0 +1,586 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/clock/amlogic,txhd2-audio-clk.h>
+/ {
+	soc {
+		dummy_codec:dummy{
+			#sound-dai-cells = <0>;
+			compatible = "amlogic, aml_dummy_codec";
+			status = "okay";
+		};
+		acodec:codec {
+			#sound-dai-cells = <0>;
+			compatible = "amlogic, t6d_acodec";
+			reg = <0x0 0xFE01A000 0x0 0x1c>;
+			tdmout_index = <1>;
+			tdmin_index = <1>;
+			dat0_ch_sel = <0>;
+			lane_offset = <8>;
+			charger_current_cap = <0x2>;
+			output_type = <0>;
+			output_pin = <0>;
+			reset-names = "acodec";
+			resets = <&reset RESET_ACODEC>;
+			status = "okay";
+		};
+
+		dolby_fw: dolby_fw {
+			compatible = "amlogic, dolby_fw";
+			mem_size = <0x100000>;
+			status = "okay";
+		};
+
+		audio_data: audio_data {
+			compatible = "amlogic, audio_data";
+			mem_in_base_cmd = <0x82000020>;
+			query_licence_cmd = <0x82000050>;
+			status = "okay";
+		};
+
+		/* Sound iomap */
+		aml_snd_iomap {
+			compatible = "amlogic, snd-iomap";
+			status = "okay";
+			#address-cells=<2>;
+			#size-cells=<2>;
+			ranges;
+			pdm_bus {
+				reg = <0x0 0xFE331000 0x0 0x400>;
+			};
+			audiobus_base {
+				reg = <0x0 0xFE330000 0x0 0x1000>;
+			};
+			eqdrc_base {
+				reg = <0x0 0xFE332000 0x0 0x1000>;
+			};
+			vad_base {
+				reg = <0x0 0xFE331800 0x0 0x400>;
+			};
+			resampleA_base {
+				reg = <0x0 0xFE331C00 0x0 0x104>;
+			};
+			resampleB_base {
+				reg = <0x0 0xFE334000 0x0 0x104>;
+			};
+		};
+
+		audiobus: audiobus@FE330000 {
+			compatible = "amlogic, audio-controller", "simple-bus";
+			reg = <0x0 0xFE330000 0x0 0x1000>;
+			reg-names = "audio_bus";
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges = <0x0 0x0 0x0 0xFE330000 0x0 0x1000>;
+			chip_id = <0x49>;
+		//	power-domains = <&pwrdm PDID_T7_AUDIO>;
+			status = "okay";
+
+			clkaudio: audio_clocks {
+				compatible = "amlogic, t6d-audio-clocks";
+				#clock-cells = <1>;
+				reg = <0x0 0x0 0x0 0xb0>;
+				status = "okay";
+			};
+			ddr_manager {
+				compatible =
+					"amlogic, t5-audio-ddr-manager";
+				interrupts = <
+					GIC_SPI 32 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 33 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 34 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 45 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 36 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 37 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 38 IRQ_TYPE_EDGE_RISING
+					GIC_SPI 46 IRQ_TYPE_EDGE_RISING
+				>;
+				interrupt-names =
+					"toddr_a", "toddr_b", "toddr_c",
+					"toddr_d",
+					"frddr_a", "frddr_b", "frddr_c",
+					"frddr_d";
+			};
+			pcpd_monitor_a: pcpd_monitor@fe330ec0 {
+				compatible = "amlogic, pcpda_monitor";
+				/*regbase:0xFE330000 + 0x3b0 << 2*/
+				/*size 0x28 byte*/
+				reg =<0x0 0xec0 0x0 0x28>;
+				reg-names = "pcpd_reg";
+				interrupts = <GIC_SPI 140
+					IRQ_TYPE_EDGE_RISING>;
+				interrupt-names = "irq_pcpd";
+				status = "okay";
+			};
+
+			pinctrl_audio: pinctrl {
+				compatible = "amlogic, audio-pinctrl";
+				status = "okay";
+			};
+		};/* end of audiobus*/
+	};/*end soc*/
+};
+
+&audiobus {
+	tdma:tdm@0 {
+		compatible = "amlogic, t7-snd-tdma";
+		#sound-dai-cells = <0>;
+
+		dai-tdm-lane-slot-mask-in = <1 1>;
+		dai-tdm-lane-slot-mask-out = <1 1>;
+		dai-tdm-clk-sel = <0>;
+		clocks = <&clkaudio CLKID_AUDIO_MCLK_A
+				&clkc CLKID_HIFI_PLL
+				&clkc CLKID_HIFI1_PLL>;
+		clock-names = "mclk", "clk_srcpll", "clk_src_cd";
+		suspend-clk-off = <1>;
+		/* enable control gain */
+		ctrl_gain = <1>;
+		status = "okay";
+	};
+
+	tdmb:tdm@1 {
+		compatible = "amlogic, t7-snd-tdmb";
+		#sound-dai-cells = <0>;
+
+		dai-tdm-lane-slot-mask-in = <1 1 1 1>;
+		dai-tdm-lane-slot-mask-out = <1 1 1 1>;
+		dai-tdm-clk-sel = <1>;
+
+		clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+				&clkc CLKID_HIFI_PLL
+				&clkc CLKID_HIFI1_PLL>;
+		clock-names = "mclk", "clk_srcpll", "clk_src_cd";
+		/*
+		 * 0: tdmout_a;
+		 * 1: tdmout_b;
+		 * 2: tdmout_c;
+		 * 3: spdifout;
+		 * 4: spdifout_b;
+		 */
+		samesource_sel = <3>;
+		/* In for ACODEC_ADC */
+		/* tdmin-src-name = "acodec_adc"; */
+		tdmin-src-name = "hdmirx";
+		/*enable default mclk(12.288M), before extern codec start*/
+		start_clk_enable = <1>;
+
+		/*tdm clk tuning enable*/
+		clk_tuning_enable = <1>;
+
+		/* enable control gain */
+		ctrl_gain = <1>;
+		suspend-clk-off = <1>;
+
+		status = "okay";
+		src-clk-freq = <491520000>;
+		/* !!!For --TV platform-- ONLY */
+		Channel_Mask {
+			/*i2s has 4 pins, 8channel, mux output*/
+			Spdif_samesource_Channel_Mask = "i2s_2/3";
+		};
+	};
+
+	tdmc:tdm@2 {
+		compatible = "amlogic, t7-snd-tdmc";
+		#sound-dai-cells = <0>;
+
+		dai-tdm-lane-slot-mask-in = <1 1 1 1>;
+		dai-tdm-lane-slot-mask-out = <1 0 0 0>;
+		dai-tdm-clk-sel = <2>;
+
+		clocks = <&clkaudio CLKID_AUDIO_MCLK_C
+				&clkc CLKID_HIFI_PLL
+				&clkc CLKID_HIFI1_PLL>;
+		clock-names = "mclk", "clk_srcpll", "clk_src_cd";
+		suspend-clk-off = <1>;
+
+		/* pcpd_monitor*/
+		pcpd_monitor_src = <&pcpd_monitor_a>;
+
+		/* enable control gain */
+		tdmin-src-name = "hdmirx";
+		ctrl_gain = <1>;
+		status = "okay";
+	};
+
+	pdma:pdm {
+		compatible = "amlogic, tm2-revb-snd-pdm";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkaudio CLKID_AUDIO_GATE_PDM
+			&clkc CLKID_FCLK_DIV3
+			&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_PDMIN0
+			&clkaudio CLKID_AUDIO_PDMIN1>;
+		clock-names = "gate",
+			"sysclk_srcpll",
+			"dclk_srcpll",
+			"pdm_dclk",
+			"pdm_sysclk";
+
+		train_sample_count = <10>;
+		src-clk-freq = <491520000>;
+		/* mode 0~4, defalut:1 */
+		filter_mode = <1>;
+
+		status = "okay";
+	};
+
+	spdifa:spdif@0 {
+		compatible = "amlogic, tm2-revb-snd-spdif-a";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkc CLKID_HIFI_PLL
+				&clkc CLKID_HIFI1_PLL
+				&clkc CLKID_FCLK_DIV4
+				&clkaudio CLKID_AUDIO_GATE_SPDIFIN
+				&clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A
+				&clkaudio CLKID_AUDIO_SPDIFIN
+				&clkaudio CLKID_AUDIO_SPDIFOUT_A>;
+		clock-names = "sysclk", "clk_src_cd", "fixed_clk", "gate_spdifin",
+				"gate_spdifout", "clk_spdifin", "clk_spdifout";
+
+		interrupts =
+				<GIC_SPI 35 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "irq_spdifin";
+		/*
+		 * 0: tdmout_a;
+		 * 1: tdmout_b;
+		 * 2: tdmout_c;
+		 * 3: spdifout;
+		 * 4: spdifout_b;
+		 * 5: earc;
+		 */
+		spdif_soft_mute = <1>;
+		samesource_sel = <4>;
+		src-clk-freq = <491520000>;
+		/*spdif clk tuning enable*/
+		clk_tuning_enable = <1>;
+		suspend-clk-off = <1>;
+		status = "okay";
+	};
+
+	spdifb:spdif@1 {
+		compatible = "amlogic, tm2-revb-snd-spdif-b";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkc CLKID_HIFI_PLL /*CLKID_HIFI_PLL*/
+				&clkc CLKID_HIFI1_PLL
+				&clkaudio CLKID_AUDIO_GATE_SPDIFOUT_B
+				&clkaudio CLKID_AUDIO_SPDIFOUT_B>;
+		clock-names = "sysclk", "clk_src_cd",
+				"gate_spdifout", "clk_spdifout";
+		src-clk-freq = <491520000>;
+		suspend-clk-off = <1>;
+		spdif_soft_mute = <1>;
+		status = "okay";
+	};
+
+	extn:extn {
+		compatible = "amlogic, t6d-snd-extn";
+		#sound-dai-cells = <0>;
+
+		interrupts =
+				<GIC_SPI 42 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "irq_frhdmirx";
+
+		status = "okay";
+	};
+
+	vad:vad {
+		compatible = "amlogic, snd-vad";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkaudio CLKID_AUDIO_GATE_TOVAD
+			&clkc CLKID_FCLK_DIV5
+			&clkaudio CLKID_AUDIO_VAD>;
+		clock-names = "gate", "pll", "clk";
+
+		interrupts = <GIC_SPI 39 IRQ_TYPE_EDGE_RISING
+				GIC_SPI 44 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "irq_wakeup", "irq_frame_sync";
+
+		/*
+		 * Data src sel:
+		 * 0: tdmin_a;
+		 * 1: tdmin_b;
+		 * 2: tdmin_c;
+		 * 3: spdifin;
+		 * 4: pdmin;
+		 * 5: loopback_b;
+		 * 6: tdmin_lb;
+		 * 7: loopback_a;
+		 */
+		src = <4>;
+
+		/*
+		 * deal with hot word in user space or kernel space
+		 * 0: in user space
+		 * 1: in kernel space
+		 */
+		level = <1>;
+
+		status = "okay";
+	};
+
+	aed:effect {
+		compatible = "amlogic, snd-effect-v5";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkaudio CLKID_AUDIO_GATE_EQDRC
+			&clkc CLKID_FCLK_DIV5
+			&clkaudio CLKID_AUDIO_EQDRC>;
+		clock-names = "gate", "srcpll", "eqdrc";
+
+		/*
+		 * 0:tdmout_a
+		 * 1:tdmout_b
+		 * 2:tdmout_c
+		 * 3:spdifout
+		 * 4:spdifout_b
+		 */
+		eqdrc_module = <1>;
+		/* max 0xf, each bit for one lane, usually one lane */
+		lane_mask = <0x1>;
+		/* max 0xff, each bit for one channel */
+		channel_mask = <0xff>;
+		suspend-clk-off = <1>;
+		status = "okay";
+	};
+
+	asrca: resample@0 {
+		compatible = "amlogic, t5-resample-a";
+		clocks = <&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_MCLK_B
+			&clkaudio CLKID_AUDIO_RESAMPLE_A>;
+		clock-names = "resample_pll", "resample_src", "resample_clk";
+
+		/*same with toddr_src
+		 *	TDMIN_A,    0
+		 *	TDMIN_B,    1
+		 *	TDMIN_C,    2
+		 *	SPDIFIN,    3
+		 *	PDMIN,      4
+		 *	FRATV,      5
+		 *	TDMIN_LB,   6
+		 *	LOOPBACK_A, 7
+		 *	FRHDMIRX,   8
+		 *	LOOPBACK_B, 9
+		 *	SPDIFIN_LB, 10
+		 *	EARC_RX,    11
+		 */
+		src-clk-freq = <491520000>;
+		resample_module = <8>;
+		suspend-clk-off = <1>;
+		status = "okay";
+	};
+
+	asrcb: resample@1 {
+		compatible = "amlogic, t5-resample-b";
+		clocks = <&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_MCLK_F
+			&clkaudio CLKID_AUDIO_RESAMPLE_B>;
+		clock-names = "resample_pll", "resample_src", "resample_clk";
+		src-clk-freq = <491520000>;
+		/*this resample is only used for loopback_A.*/
+		suspend-clk-off = <1>;
+		status = "okay";
+	};
+
+	loopbacka:loopback@0 {
+		compatible = "amlogic, t5-loopbacka";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkaudio CLKID_AUDIO_GATE_PDM
+			&clkc CLKID_FCLK_DIV3
+			&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_PDMIN0
+			&clkaudio CLKID_AUDIO_PDMIN1
+			&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_MCLK_A>;
+		clock-names = "pdm_gate",
+			"pdm_sysclk_srcpll",
+			"pdm_dclk_srcpll",
+			"pdm_dclk",
+			"pdm_sysclk",
+			"tdminlb_mpll",
+			"tdminlb_mclk";
+
+		/* datain src
+		 * 0: tdmin_a;
+		 * 1: tdmin_b;
+		 * 2: tdmin_c;
+		 * 3: spdifin;
+		 * 4: pdmin;
+		 */
+		datain_src = <4>;
+		datain_chnum = <2>;
+		datain_chmask = <0x3>;
+		/* config which data pin for loopback */
+		datain-lane-mask-in = <1 1 0 0>;
+
+		/* calc mclk for datalb */
+		mclk-fs = <256>;
+		/* tdmin_lb src
+		 * 0: tdmoutA
+		 * 1: tdmoutB
+		 * 2: tdmoutC
+		 * 3: PAD_TDMINA_DIN*, refer to core pinmux
+		 * 4: PAD_TDMINB_DIN*, refer to core pinmux
+		 * 5: PAD_TDMINC_DIN*, refer to core pinmux
+		 * 6: PAD_TDMINA_D*, oe, refer to core pinmux
+		 * 7: PAD_TDMINB_D*, oe, refer to core pinmux
+		 */
+		/* if tdmin_lb >= 3, use external loopback */
+		datalb_src = <1>;
+		datalb_chnum = <2>;
+		datalb_chmask = <0x3>;
+		/* config which data pin as loopback */
+		datalb-lane-mask-in = <1 0 0 0>;
+
+		src-clk-freq = <491520000>;
+		mic-src = <&pdma>;
+		status = "okay";
+	};
+
+	loopbackb:loopback@1 {
+		compatible = "amlogic, t5-loopbackb";
+		#sound-dai-cells = <0>;
+
+		clocks = <&clkaudio CLKID_AUDIO_GATE_PDM
+			&clkc CLKID_FCLK_DIV3
+			&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_PDMIN0
+			&clkaudio CLKID_AUDIO_PDMIN1
+			&clkc CLKID_HIFI_PLL
+			&clkaudio CLKID_AUDIO_MCLK_A>;
+		clock-names = "pdm_gate",
+			"pdm_sysclk_srcpll",
+			"pdm_dclk_srcpll",
+			"pdm_dclk",
+			"pdm_sysclk",
+			"tdminlb_mpll",
+			"tdminlb_mclk";
+
+		/* calc mclk for datain_lb */
+		mclk-fs = <256>;
+
+		/* datain src
+		 * 0: tdmin_a;
+		 * 1: tdmin_b;
+		 * 2: tdmin_c;
+		 * 3: spdifin;
+		 * 4: pdmin;
+		 */
+		datain_src = <4>;
+		datain_chnum = <4>;
+		datain_chmask = <0xf>;
+		/* config which data pin for loopback */
+		datain-lane-mask-in = <1 0 1 0>;
+
+		/* tdmin_lb src
+		 * 0: tdmoutA
+		 * 1: tdmoutB
+		 * 2: tdmoutC
+		 * 3: PAD_TDMINA_DIN*, refer to core pinmux
+		 * 4: PAD_TDMINB_DIN*, refer to core pinmux
+		 * 5: PAD_TDMINC_DIN*, refer to core pinmux
+		 * 6: PAD_TDMINA_D*, oe, refer to core pinmux
+		 * 7: PAD_TDMINB_D*, oe, refer to core pinmux
+		 */
+		/* if tdmin_lb >= 3, use external loopback */
+		datalb_src = <1>;
+		datalb_chnum = <2>;
+		datalb_chmask = <0x3>;
+		/* config which data pin as loopback */
+		datalb-lane-mask-in = <1 0 0 0>;
+		suspend-clk-off = <1>;
+		src-clk-freq = <491520000>;
+		status = "disabled";
+	};
+}; /* end of audiobus */
+
+&periphs_pinctrl {
+	tdmb_pin: tdmb_pins {
+		mux { /* GPIOH_15 GPIOH_16 GPIOH_17 */
+			groups = "tdm_fs1_h15",
+				"tdm_sclk1_h16",
+				"tdm_d0_h17";
+			function = "tdm";
+		};
+	};
+
+	tdmout_b_gpio: tdmout_b_gpio {
+		mux { /* GPIOH_15, GPIOH_16, GPIOH_17 */
+			groups ="GPIOH_15",
+				"GPIOH_16",
+				"GPIOH_17";
+			function = "gpio_periphs";
+			output-low;
+		};
+	};
+
+	pdmin: pdminpins {
+		mux { /* GPIOH_19  GPIOH_14  GPIOH_18*/
+			groups = "pdm_dclk_h19",
+				"pdm_din1_h14",
+				"pdm_din0_h18";
+			function = "pdm";
+		};
+	};
+
+	spdifout_a: spdifout_a {
+		mux { /* GPIOE_2 */
+			groups = "spdif_out_a_e2";
+			function = "spdif";
+		};
+	};
+
+	spdifout_a_mute: spdifout_a_mute {
+		mux { /* GPIOE_2 */
+			groups = "GPIOE_2";
+			function = "gpio_periphs";
+		};
+	};
+
+	spdifout_b: spdifout_b {
+		mux { /* GPIOZ_19 */
+			groups = "spdif_out_b_z19";
+			function = "spdif";
+		};
+	};
+
+	spdifout_b_mute: spdifout_b_mute {
+		mux { /* GPIOZ_19 */
+			groups = "GPIOZ_19";
+			function = "gpio_periphs";
+		};
+	};
+
+	mclk_1_pin: mclk_1_pins {
+		mux { /* GPIOH_14 */
+			groups = "mclk_1_h14";
+			function = "mclk";
+		};
+	};
+};
+
+&pinctrl_audio {
+	tdm_d0_pins: tdm_d0_pin {
+		mux {
+			groups = "tdm_d0";
+			function = "tdmoutb_lane0";
+		};
+	};
+
+	tdmb_clk_pins: tdmb_clk_pin {
+		mux {
+			groups = "tdm_sclk0", "tdm_lrclk0";
+			function = "tdm_clk_outb";
+		};
+	};
+};
+
diff --git a/arch/arm64/boot/dts/amlogic/mesont6d_cpufreq.dtsi b/arch/arm64/boot/dts/amlogic/mesont6d_cpufreq.dtsi
new file mode 100644
index 0000000..bebfe84
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/mesont6d_cpufreq.dtsi
@@ -0,0 +1,233 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+/ {
+	opp_table0: opp_table0 {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp00 {
+			opp-hz = /bits/ 64 <100000000>;
+			opp-microvolt = <789000>;
+		};
+		opp01 {
+			opp-hz = /bits/ 64 <250000000>;
+			opp-microvolt = <789000>;
+		};
+		opp02 {
+			opp-hz = /bits/ 64 <500000000>;
+			opp-microvolt = <789000>;
+		};
+		opp03 {
+			opp-hz = /bits/ 64 <666666666>;
+			opp-microvolt = <789000>;
+		};
+		opp04 {
+			opp-hz = /bits/ 64 <1000000000>;
+			opp-microvolt = <859000>;
+		};
+		opp05 {
+			opp-hz = /bits/ 64 <1200000000>;
+			opp-microvolt = <869000>;
+		};
+		opp06 {
+			opp-hz = /bits/ 64 <1392000000>;
+			opp-microvolt = <919000>;
+		};
+		opp07 {
+			opp-hz = /bits/ 64 <1512000000>;
+			opp-microvolt = <939000>;
+		};
+		opp08 {
+			opp-hz = /bits/ 64 <1608000000>;
+			opp-microvolt = <979000>;
+		};
+		opp09 {
+			opp-hz = /bits/ 64 <1704000000>;
+			opp-microvolt = <989000>;
+		};
+
+		opp10 {
+			opp-hz = /bits/ 64 <1800000000>;
+			opp-microvolt = <1009000>;
+		};
+	};
+
+	opp_table1: opp_table1 {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp00 {
+			opp-hz = /bits/ 64 <100000000>;
+			opp-microvolt = <789000>;
+		};
+		opp01 {
+			opp-hz = /bits/ 64 <250000000>;
+			opp-microvolt = <789000>;
+		};
+		opp02 {
+			opp-hz = /bits/ 64 <500000000>;
+			opp-microvolt = <789000>;
+		};
+		opp03 {
+			opp-hz = /bits/ 64 <666666666>;
+			opp-microvolt = <789000>;
+		};
+		opp04 {
+			opp-hz = /bits/ 64 <1000000000>;
+			opp-microvolt = <859000>;
+		};
+		opp05 {
+			opp-hz = /bits/ 64 <1200000000>;
+			opp-microvolt = <869000>;
+		};
+		opp06 {
+			opp-hz = /bits/ 64 <1392000000>;
+			opp-microvolt = <919000>;
+		};
+		opp07 {
+			opp-hz = /bits/ 64 <1512000000>;
+			opp-microvolt = <939000>;
+		};
+		opp08 {
+			opp-hz = /bits/ 64 <1608000000>;
+			opp-microvolt = <979000>;
+		};
+		opp09 {
+			opp-hz = /bits/ 64 <1704000000>;
+			opp-microvolt = <989000>;
+		};
+
+		opp10 {
+			opp-hz = /bits/ 64 <1800000000>;
+			opp-microvolt = <1009000>;
+		};
+	};
+
+	opp_table2: opp_table2 {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp00 {
+			opp-hz = /bits/ 64 <100000000>;
+			opp-microvolt = <749000>;
+		};
+		opp01 {
+			opp-hz = /bits/ 64 <250000000>;
+			opp-microvolt = <749000>;
+		};
+		opp02 {
+			opp-hz = /bits/ 64 <500000000>;
+			opp-microvolt = <749000>;
+		};
+		opp03 {
+			opp-hz = /bits/ 64 <666666666>;
+			opp-microvolt = <749000>;
+		};
+		opp04 {
+			opp-hz = /bits/ 64 <1000000000>;
+			opp-microvolt = <819000>;
+		};
+		opp05 {
+			opp-hz = /bits/ 64 <1200000000>;
+			opp-microvolt = <829000>;
+		};
+		opp06 {
+			opp-hz = /bits/ 64 <1392000000>;
+			opp-microvolt = <879000>;
+		};
+		opp07 {
+			opp-hz = /bits/ 64 <1512000000>;
+			opp-microvolt = <899000>;
+		};
+		opp08 {
+			opp-hz = /bits/ 64 <1608000000>;
+			opp-microvolt = <939000>;
+		};
+		opp09 {
+			opp-hz = /bits/ 64 <1704000000>;
+			opp-microvolt = <949000>;
+		};
+
+		opp10 {
+			opp-hz = /bits/ 64 <1800000000>;
+			opp-microvolt = <1009000>;
+		};
+	};
+
+	opp_table3: opp_table3 {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp00 {
+			opp-hz = /bits/ 64 <100000000>;
+			opp-microvolt = <699000>;
+		};
+		opp01 {
+			opp-hz = /bits/ 64 <250000000>;
+			opp-microvolt = <699000>;
+		};
+		opp02 {
+			opp-hz = /bits/ 64 <500000000>;
+			opp-microvolt = <699000>;
+		};
+		opp03 {
+			opp-hz = /bits/ 64 <666666666>;
+			opp-microvolt = <699000>;
+		};
+		opp04 {
+			opp-hz = /bits/ 64 <1000000000>;
+			opp-microvolt = <769000>;
+		};
+		opp05 {
+			opp-hz = /bits/ 64 <1200000000>;
+			opp-microvolt = <779000>;
+		};
+		opp06 {
+			opp-hz = /bits/ 64 <1392000000>;
+			opp-microvolt = <829000>;
+		};
+		opp07 {
+			opp-hz = /bits/ 64 <1512000000>;
+			opp-microvolt = <849000>;
+		};
+		opp08 {
+			opp-hz = /bits/ 64 <1608000000>;
+			opp-microvolt = <889000>;
+		};
+		opp09 {
+			opp-hz = /bits/ 64 <1704000000>;
+			opp-microvolt = <909000>;
+		};
+
+		opp10 {
+			opp-hz = /bits/ 64 <1800000000>;
+			opp-microvolt = <1009000>;
+		};
+	};
+
+	meson_cpufreq {
+		compatible = "amlogic, aml-cpufreq-v2";
+		status = "okay";
+		cluster0-cpu-supply = <&vddcpu0>;
+
+		cluster0 {
+			clocks = <&scmi_clk CLKID_SCMI_CPU_CLK>;
+			clock-names = "cpuclk";
+			voltage-tolerance = <0>;
+			clock-latency = <50000>;
+			//skip_volt_scaling;
+			cluster_cores = <0 1 2 3>;
+			//pdvfs_enabled;
+		};
+	};
+};/* end of / */
+
+&CPU0 {
+	#cooling-cells = <2>;
+	operating-points-v2 = <&opp_table0>,
+			      <&opp_table1>,
+			      <&opp_table2>,
+			      <&opp_table3>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi
new file mode 100644
index 0000000..2231e9f
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi
@@ -0,0 +1,163 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+#include <dt-bindings/display/meson-drm-ids.h>
+#include "mesont6d.dtsi"
+
+/ {
+	drm_vpu: drm-vpu@0xff900000  {
+		status = "disabled";
+		compatible = "amlogic, meson-t6d-vpu";
+		osd_ver = /bits/ 8 <OSD_V7>;
+		reg = <0x0 0xff900000 0x0 0x40000>,
+			  <0x0 0xff63c000 0x0 0x2000>,
+			  <0x0 0xff638000 0x0 0x2000>;
+		reg-names = "base", "hhi", "dmc";
+		interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>,
+			<GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "viu-vsync", "viu2-vsync";
+
+		dma-coherent;
+		/*EXTERNAL port for driver outside of drm.*/
+		connectors_dev: port@1 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			drm_to_lcd0: endpoint@1 {
+				reg = <1>;
+				remote-endpoint = <&lcd0_to_drm>;
+			};
+			//drm_to_dummyp: endpoint@2 {
+			//	reg = <2>;
+			//	remote-endpoint = <&dummyp_to_drm>;
+			//};
+		};
+	};
+
+	drm_subsystem: drm-subsystem {
+		status = "okay";
+		compatible = "amlogic, drm-subsystem";
+		ports = <&connectors_dev>;
+		fbdev_sizes = <1920 1080 1920 2160 32>;
+		osd_ver = /bits/ 8 <OSD_V7>;
+		/* OSD1&OSD2 with afbc, OSD3 has no afbc */
+		osd_afbc_mask = <3>;
+		vfm_mode = <1>; /** 0:drm mode 1:composer mode */
+		memory-region = <&logo_reserved>;
+		crtc_masks = <0 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/
+
+		vpu_topology: vpu_topology {
+			vpu_blocks {
+				osd1_block: block@0 {
+					id = /bits/ 8 <OSD1_BLOCK>;
+					index = /bits/ 8  <0>;
+					type = /bits/ 8  <0>;
+					block_name = "osd1_block";
+					num_in_links = /bits/ 8  <0x0>;
+					num_out_links = /bits/ 8  <0x1>;
+					out_links = <0 &afbc1_block>;
+				};
+				osd2_block: block@1 {
+					id = /bits/ 8  <OSD2_BLOCK>;
+					index = /bits/ 8  <1>;
+					type = /bits/ 8  <0>;
+					block_name = "osd2_block";
+					num_in_links = /bits/ 8  <0x0>;
+					num_out_links = /bits/ 8  <0x1>;
+					out_links = <1 &afbc1_block>;
+				};
+				afbc1_block: block@2 {
+					id = /bits/ 8  <AFBC1_BLOCK>;
+					index = /bits/ 8  <0>;
+					type = /bits/ 8  <1>;
+					block_name = "afbc1_block";
+					num_in_links = /bits/ 8  <0x2>;
+					in_links = <0 &osd1_block>,
+						   <0 &osd2_block>;
+					num_out_links = /bits/ 8  <0x2>;
+					out_links = <0 &osd_blend_block>,
+						    <0 &scaler2_block>;
+				};
+				scaler1_block: block@3 {
+					id = /bits/ 8  <SCALER1_BLOCK>;
+					index = /bits/ 8  <0>;
+					type = /bits/ 8  <2>;
+					block_name = "scaler1_block";
+					num_in_links = /bits/ 8  <0x1>;
+					in_links = <0 &osd_blend_block>;
+					num_out_links = /bits/ 8  <0x1>;
+					out_links = <0 &vpp1_postblend_block>;
+				};
+				scaler2_block: block@4 {
+					id = /bits/ 8  <SCALER2_BLOCK>;
+					index = /bits/ 8  <1>;
+					type = /bits/ 8  <2>;
+					block_name = "scaler2_block";
+					num_in_links = /bits/ 8  <0x1>;
+					in_links = <1 &afbc1_block>;
+					num_out_links = /bits/ 8  <0x1>;
+					out_links = <1 &osd_blend_block>;
+				};
+				osd_blend_block: block@5 {
+					id = /bits/ 8  <OSD_BLEND_BLOCK>;
+					block_name = "osd_blend_block";
+					type = /bits/ 8  <3>;
+					num_in_links = /bits/ 8  <0x2>;
+					in_links = <0 &afbc1_block>,
+						<0 &scaler2_block>;
+					num_out_links = /bits/ 8  <0x1>;
+					out_links = <0 &scaler1_block>;
+				};
+				vpp1_postblend_block: block@6 {
+					id = /bits/ 8  <VPP1_POSTBLEND_BLOCK>;
+					index = /bits/ 8  <0>;
+					block_name = "vpp1_postblend_block";
+					type = /bits/ 8  <6>;
+					num_in_links = /bits/ 8  <0x2>;
+					in_links = <0 &scaler1_block>,
+						<1 &osd_blend_block>;
+					num_out_links = <0x0>;
+				};
+				video1_block: block@7 {
+					id = /bits/ 8 <VIDEO1_BLOCK>;
+					index = /bits/ 8  <0>;
+					type = /bits/ 8  <7>;
+					block_name = "video1_block";
+					num_in_links = /bits/ 8  <0x0>;
+					num_out_links = /bits/ 8  <0x0>;
+				};
+				video2_block: block@8 {
+					id = /bits/ 8 <VIDEO2_BLOCK>;
+					index = /bits/ 8  <1>;
+					type = /bits/ 8  <7>;
+					block_name = "video2_block";
+					num_in_links = /bits/ 8  <0x0>;
+					num_out_links = /bits/ 8  <0x0>;
+				};
+			};
+		};
+
+		vpu_hw_para: vpu_hw_para@0 {
+			osd_ver = /bits/ 8 <OSD_V7>;
+			afbc_type = /bits/ 8 <0x2>;
+			has_deband = /bits/ 8 <0x1>;
+			has_lut = /bits/ 8 <0x1>;
+			has_rdma = /bits/ 8 <0x1>;
+			osd_fifo_len = /bits/ 8 <64>;
+			vpp_fifo_len = /bits/ 32 <0xfff>;
+		};
+	};
+};
+
+//&dummy_venc {
+//	ports {
+//		port {
+//			#address-cells = <1>;
+//			#size-cells = <0>;
+//			dummyp_to_drm: endpoint@0 {
+//				reg = <0>;
+//				remote-endpoint = <&drm_to_dummyp>;
+//			};
+//		};
+//	};
+//};
diff --git a/arch/arm64/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts b/arch/arm64/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts
new file mode 100644
index 0000000..2252ab1
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/t6d_t950d5_br301_1.5g.dts
@@ -0,0 +1,1251 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "mesont6d.dtsi"
+#include "mesont6d_drm.dtsi"
+#include "firmware_ab.dtsi"
+#include "mesont6d-panel.dtsi"
+#include "mesont6d_audio.dtsi"
+
+/ {
+	amlogic-dt-id = "t6d_t950d5_br301-1.5g";
+	compatible = "t6d_t950d5_br301-1.5g";
+	interrupt-parent = <&gic>;
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	aliases {
+		serial0 = &uart_B;
+		serial1 = &uart_A;
+		serial2 = &uart_C;
+		tsensor0 = &cpu_tsensor;
+		tsensor1 = &top_tsensor;
+		spi0 = &spi_nfc;
+		spi1 = &spicc0;
+		spi2 = &spicc1;
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+	};
+
+	memory@00000000 {
+		device_type = "memory";
+		linux,usable-memory = <0x0 0x0 0x0 0x60000000>;
+	};
+
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		/* global autoconfigured region for contiguous allocations */
+		ramdump_bl33z@00000000 {
+			reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+			status = "disabled"; /* disabled as default */
+		};
+
+		ramoops@0x06300000 {
+			compatible = "ramoops";
+			reg = <0x0 0x06300000 0x0 0x00100000>;
+			record-size = <0x20000>;
+			console-size = <0x40000>;
+			ftrace-size = <0x80000>;
+			pmsg-size = <0x20000>;
+		};
+
+		dmc_reserved:linux,dmc_monitor {
+			compatible = "amlogic,dmc_monitor-reserved";
+			reg = <0x0 0x0 0x0 0x0>;
+		};
+
+		debug_reserved:linux,iotrace {
+			compatible = "amlogic, iotrace";
+			reg = <0x0 0x04f00000 0x0 0x00100000>;
+			io-size = <0x1b000>;
+			sched-size = <0x2000>;
+			irq-size = <0x1000>;
+			smc-size = <0x1000>;
+			misc-size = <0x1000>;
+		};
+
+		secmon_reserved:linux,secmon {
+			compatible = "shared-dma-pool";
+			no-map;
+			alignment = <0x0 0x00100000>;
+			reg = <0x0 0x05000000 0x0 0x01300000>;
+		};
+
+		logo_reserved:linux,meson-fb {
+			compatible = "amlogic, meson-fb";
+			size = <0x0 0x800000>;
+			alignment = <0x0 0x400000>;
+			reg = <0x0 0x3f800000 0x0 0x800000>;
+		};
+
+		lcd_cma_reserved:linux,lcd-reserved {
+			compatible = "amlogic, lcd_rsvd";
+			reg = <0x0 0x3f000000 0x0 0x00410000>;
+			tcon-size = <0x00402840>;
+		};
+
+		dmaheap_cma_reserved:heap-gfx {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x0 0x0>;
+			alignment = <0x0 0x400000>;
+		};
+		dmaheap_fb_reserved:heap-fb {
+			compatible = "shared-dma-pool";
+			reusable;
+			/* 1080p TV androidT size 28M */
+			size = <0x0 0x1c00000>;
+			alignment = <0x0 0x400000>;
+		};
+
+		/*  vdin0 CMA pool */
+		/*vdin0_cma_reserved:linux,vdin0_cma {*/
+		/*	compatible = "shared-dma-pool";*/
+		/*	reusable;*/
+			/* up to 1920x1080 yuv422 8bit and 5 buffers
+			 * 1920x1080x2x5 = 20 M
+			 */
+		/*	size = <0x0 0x01400000>;*/
+		/*	alignment = <0x0 0x400000>;*/
+		/*};*/
+		/*  vdin1 CMA pool */
+		vdin1_cma_reserved:linux,vdin1_cma {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x0 0x800000>;
+			alignment = <0x0 0x400000>;
+		};
+
+		codec_mm_cma:linux,codec_mm_cma {
+			compatible = "shared-dma-pool";
+			reusable;
+			/*
+			 * Scenario: Primary + Secondary + PIP
+			 * Total size: 174M
+			 * Note:
+			 *  setting to 168M if scatter_alloc_mode is 0.
+			 *  setting to 160M if scatter_alloc_mode is 1.
+			 */
+			size = <0x0 0xa000000>;
+			alignment = <0x0 0x400000>;
+			linux,contiguous-region;
+		};
+
+		secure_vdec_reserved:linux,secure_vdec_reserved {
+			compatible = "amlogic, secure-vdec-reserved";
+			no-map;
+			size = <0x0 0x400000>;
+			alignment = <0x0 0x100000>;
+		};
+
+		/* global autoconfigured region for contiguous allocations */
+		linux,cma {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x0 0x400000>;
+			alignment = <0x0 0x400000>;
+			linux,cma-default;
+		};
+	};
+
+	vdd4_2v5_reg: fixed@vdd4_2v5_reg {
+		compatible = "regulator-fixed";
+		vin-supply = <&vddao3v3_reg>;
+		regulator-name = "DDR4_2V5";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddio3v3_reg: fixed@vddio3v3_reg {
+		vin-supply = <&vddao3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default";
+		gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <7000>;
+		enable-active-high;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddao1v8_reg: fixed@vddao1v8_reg {
+		vin-supply = <&vddao3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDAO_1V8/VDDIO_B";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddio_m_reg: fixed@afe3v3_reg {
+		vin-supply = <&vddio3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_M";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	afe1v8_reg: fixed@afe1v8_reg {
+		vin-supply = <&afe3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "AFE_1V8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	afe3v3_reg: fixed@afe3v3_reg {
+		vin-supply = <&vddao3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "AFE_3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default";
+		gpio = <&gpio GPIOD_4 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <7000>;
+		enable-active-high;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	enet3v3_reg: fixed@enet3v3_reg {
+		vin-supply = <&afe3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "AVDD33_ENET";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	codec_mm {
+		compatible = "amlogic, codec, mm";
+		memory-region = <&codec_mm_cma &secure_vdec_reserved>;
+		dev_name = "codec_mm";
+		status = "okay";
+		/*
+		 * scatter_alloc_mode: the mode of scatter memory allocation
+		 * 0: default mode, alloc from system and cma
+		 * 1: only alloc from system
+		 */
+		scatter_alloc_mode = <1>;
+	};
+
+	video_queue {
+		compatible = "amlogic, video_queue";
+		dev_name = "videoqueue";
+		status = "okay";
+	};
+
+	amlvideo2_0 {
+		compatible = "amlogic, amlvideo2";
+		dev_name = "amlvideo2";
+		status = "okay";
+		amlvideo2_id = <0>;
+		cma_mode = <1>;
+	};
+
+	amlvideo2_1 {
+		compatible = "amlogic, amlvideo2";
+		dev_name = "amlvideo2";
+		status = "okay";
+		amlvideo2_id = <1>;
+		cma_mode = <1>;
+	};
+
+	tvafe_avin_detect {
+		compatible = "amlogic, t6d_tvafe_avin_detect";
+		status = "okay";
+		device_mask = <1>;/*bit0:ch1;bit1:ch2*/
+		reg = <0x0 0xfe00a000 0x0 0x400>; /* cvbs irq base */
+		interrupts = <0 173 1>;
+	};
+
+	tvafe {
+		compatible = "amlogic, tvafe-t6d";
+		/*memory-region = <&tvafe_cma_reserved>;*/
+		status = "okay";
+		flag_cma = <1>;/*1:share with codec_mm;0:cma alone*/
+		cma_size = <5>;/*MByte*/
+		reg = <0x0 0xfe072000 0x0 0x2000/*tvafe reg base*/
+			0x0 0xfe008000 0x0 0x2000>; /*ana reg base*/
+		reserve-iomap = "true";
+		tvafe_id = <0>;
+		//pinctrl-names = "default";
+		/*!!particular sequence, no more and no less!!!*/
+		tvafe_pin_mux = <
+				3 /* TVAFE_CVBS_IN2, CVBS_IN0 = 0 */
+				1 /* TVAFE_CVBS_IN0, CVBS_IN1 */
+				2 /* TVAFE_CVBS_IN1, CVBS_IN2 */
+				4 /* TVAFE_CVBS_IN3, CVBS_IN3 */
+		>;
+		clocks = <&clkc CLKID_CDAC_CLK>;
+		clock-names = "vdac_clk_gate";
+		cutwindow_val_h = <0 0 0 0 8>; /* level 0~4 */
+		cutwindow_val_v = <4 8 14 16 24>;  /* level 0~4 */
+		horizontal_dir0 = <148 148 148 148 148>;
+		horizontal_dir1 = <148 168 166 160 148>;
+		horizontal_stp0 = <0 0 0 0 0>;
+		horizontal_stp1 = <0 0 0 0 0>;
+	};
+
+	vbi {
+		compatible = "amlogic, vbi";
+		status = "okay";
+		interrupts = <0 210 1>;
+	};
+
+	multi-di {
+		/***************************************************
+		 * memory: default is 4
+		 *	0:use reserved;
+		 *	1:use cma;
+		 *	2:use cma as reserved
+		 *  4:use codec mem
+		 ***************************************************/
+		flag_cma = <4>;//
+		//memory-region = <&di_cma_reserved>;
+		/***************************************************
+		 * clock-range: <min max>
+		 *	default: <334 667>
+		 ***************************************************/
+		//clock-range = <334 667>;
+		/***************************************************
+		 * en_4k: t5w support 4k
+		 ***************************************************/
+		//en_4k = <1>;
+		//keep_dec_vf = <2>;
+		//po_fmt = <6>;
+		/***************************************************
+		 * post_nub: default is 11 (T7/T3/SC2/S4 new path)
+		 * local 7*4075520 = 28
+		 * post 11*5222400 = 56 //??
+		 ***************************************************/
+		post_nub = <11>;
+		/***************************************************
+		 * 0:not support
+		 * bit 0: for 4k
+		 * bit 1: for 1080p
+		 ***************************************************/
+		//alloc_sct = <1>;
+		/***************************************************
+		 * hf: default is 0 (T7/T3/SC2/S4 new path)
+		 * 0:not enable;
+		 * 1: enable
+		 ***************************************************/
+		hf = <0>;
+		//afbce_loss_en = <1>;
+		/***************************************************
+		 * loss mode for di out (T5w)
+		 * 0:not set loss mode for di out;
+		 * 1:1:check the loss flag in vf and set for di
+		 ***************************************************/
+	};/* end of multi-di */
+
+	/* for external keypad */
+	adc_keypad {
+		compatible = "amlogic, adc_keypad";
+		status = "okay";
+		key_name = "power", "vol-", "vol+", "ok", "menu",
+			   "source", "exit";
+		key_num = <7>;
+		io-channels = <&saradc SARADC_CH1>, <&saradc SARADC_CH2>;
+		io-channel-names = "key-chan-1", "key-chan-2";
+		key_chan = <SARADC_CH1 SARADC_CH1 SARADC_CH1 SARADC_CH1 SARADC_CH1
+			    SARADC_CH2 SARADC_CH2>;
+		key_code = <KEY_POWER KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER KEY_MENU
+			    KEY_FN_F1 KEY_EXIT>;
+		/* key_val = voltage / 1800mV * 1023 */
+		key_val = <0 143 266 389 507 143 266>;
+		key_tolerance = <40 40 40 40 40 40 40>;
+	};
+
+	unifykey {
+		compatible = "amlogic,unifykey";
+		status = "okay";
+
+		unifykey-num = <13>;
+		unifykey-index-0 = <&keysn_0>;
+		unifykey-index-1 = <&keysn_1>;
+		unifykey-index-2 = <&keysn_2>;
+		unifykey-index-3 = <&keysn_3>;
+		unifykey-index-4 = <&keysn_4>;
+		unifykey-index-5 = <&keysn_5>;
+		unifykey-index-6 = <&keysn_6>;
+		unifykey-index-7 = <&keysn_7>;
+		unifykey-index-8 = <&keysn_8>;
+		unifykey-index-9 = <&keysn_9>;
+		unifykey-index-10 = <&keysn_10>;
+		unifykey-index-11 = <&keysn_11>;
+		unifykey-index-12 = <&keysn_12>;
+
+		keysn_0: key_0{
+			key-name = "usid";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_1:key_1{
+			key-name = "mac";
+			key-device  = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_2:key_2{
+			key-name = "secure_boot_set";
+			key-device = "efuse";
+			key-permit = "write";
+		};
+		keysn_3:key_3{
+			key-name = "mac_bt";
+			key-device = "normal";
+			key-permit = "read","write","del";
+			key-type  = "mac";
+		};
+		keysn_4:key_4{
+			key-name = "mac_wifi";
+			key-device = "normal";
+			key-permit = "read","write","del";
+			key-type  = "mac";
+		};
+		keysn_5:key_5{
+			key-name = "hdcp2_rx";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_6:key_6{
+			key-name = "deviceid";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_7:key_7{
+			key-name = "lcd";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_8:key_8{
+			key-name = "lcd_extern";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_9:key_9{
+			key-name = "backlight";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_10:key_10{
+			key-name = "lcd_tcon";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_11:key_11{
+			key-name = "lcd_tcon_spi";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_12:key_12{
+			key-name = "oemkey";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+	}; /* End unifykey */
+
+	hdmirx {
+		compatible = "amlogic, hdmirx_t6d";
+		#address-cells=<2>;
+		#size-cells=<2>;
+		/*memory-region = <&hdmirx_emp_cma_reserved>;*/
+		status = "okay";
+		pinctrl-names = "hdmirx_pins";
+		pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
+			&hdmirx_c_mux>;
+		repeat = <0>;
+		/*power-domains = <&pwrdm PDIP_T6D_VPU_HDMI>;*/
+		interrupts = <0 57 IRQ_TYPE_LEVEL_HIGH>;
+		clocks =<&clkc CLKID_HDMIRX_CFG>,
+			<&clkc CLKID_HDMIRX_ACR>,
+			<&clkc CLKID_HDMIRX_METER>,
+			<&clkc CLKID_HDMIRX_2M>,
+			<&clkc CLKID_HDMIRX_5M>,
+			<&clkc CLKID_HDMIRX_HDCP>,
+			<&xtal>,
+			<&clkc CLKID_FCLK_DIV4>,
+			<&clkc CLKID_FCLK_DIV5>;
+		clock-names = "hdmirx_cfg_clk",
+				"cts_hdmirx_acr_ref_clk",
+				"cts_hdmirx_meter_clk",
+				"cts_hdmirx_2m_clk",
+				"cts_hdmirx_5m_clk",
+				"cts_hdmirx_hdcp2x_eclk",
+				"xtal",
+				"fclk_div4",
+				"fclk_div5";
+		//power-domains = <&pwrdm 2>;
+		hdmirx_id = <0>;
+		en_4k_2_2k = <0>;
+		hpd_low_cec_off = <1>;
+		arc_port = <0>;
+		vrr_range_dynamic_update_en = <1>;
+		/* bit4: enable feature, bit3~0: port number */
+		disable_port = <0x0>;
+		/* MAP_ADDR_MODULE_CBUS */
+		/* MAP_ADDR_MODULE_HIU */
+		/* MAP_ADDR_MODULE_HDMIRX_CAPB3 */
+		/* MAP_ADDR_MODULE_SEC_AHB */
+		/* MAP_ADDR_MODULE_SEC_AHB2 */
+		/* MAP_ADDR_MODULE_APB4 */
+		/* MAP_ADDR_MODULE_TOP */
+		/* MAP_ADDR_MODULE_CLK_CTRL */
+		/* MAP_ADDR_MODULE_ANA_CTRL */
+		reg = < 0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0xfe398000 0x0 0x18000
+			0x0 0xfe000000 0x0 0x1fff
+			0x0 0xfe008000 0x0 0x334>;
+	};
+
+	/* Audio Related start */
+	auge_sound {
+		compatible = "amlogic, auge-sound-card";
+		aml-audio-card,name = "AML-AUGESOUND";
+
+		avout_mute-gpios = <&gpio GPIOD_6 GPIO_ACTIVE_HIGH>;
+		spk_mute-gpios = <&gpio GPIOD_9 GPIO_ACTIVE_LOW>;
+		spk_mute_sleep_time = <800>;
+
+		/* headphone insert det */
+		aml-audio-card,hp-det-gpio = <&gpio_analog CDAC_IOUT GPIO_ACTIVE_LOW>;
+
+		interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "audio_exception64";
+
+		aml-audio-card,dai-link@0 {
+			format = "i2s";
+			mclk-fs = <256>;
+			//continuous-clock;
+			//bitclock-inversion;
+			//frame-inversion;
+			/* master mode */
+			bitclock-master = <&tdma>;
+			frame-master = <&tdma>;
+			/* slave mode */
+			/*
+			 * bitclock-master = <&tdmacodec>;
+			 * frame-master = <&tdmacodec>;
+			 */
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-pcm";
+			tdmacpu: cpu {
+				sound-dai = <&tdma>;
+				dai-tdm-slot-tx-mask =
+							<1 1>;
+				dai-tdm-slot-rx-mask =
+							<1 1>;
+				dai-tdm-slot-num = <2>;
+				dai-tdm-slot-width = <32>;
+				system-clock-frequency = <12288000>;
+			};
+			tdmacodec: codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@1 {
+			format = "i2s";
+			mclk-fs = <256>;
+			continuous-clock;
+			//bitclock-inversion;
+			//frame-inversion;
+			/* master mode */
+			bitclock-master = <&tdmb>;
+			frame-master = <&tdmb>;
+			/* slave mode */
+			//bitclock-master = <&tdmbcodec>;
+			//frame-master = <&tdmbcodec>;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+			cpu {
+				sound-dai = <&tdmb>;
+				dai-tdm-slot-tx-mask = <1 1>;
+				dai-tdm-slot-rx-mask = <1 1>;
+				dai-tdm-slot-num = <2>;
+				dai-tdm-slot-width = <32>;
+				system-clock-frequency = <12288000>;
+			};
+			tdmbcodec: codec {
+				prefix-names = "AMP";
+				sound-dai = </*&ad82120b*/ &acodec>;
+			};
+		};
+
+		aml-audio-card,dai-link@2 {
+			format = "i2s";
+			mclk-fs = <256>;
+			//continuous-clock;
+			//bitclock-inversion;
+			//frame-inversion;
+			/* master mode */
+			bitclock-master = <&tdmc>;
+			frame-master = <&tdmc>;
+			/* slave mode */
+			//bitclock-master = <&tdmccodec>;
+			//frame-master = <&tdmccodec>;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-i2s4parser";
+			cpu {
+				sound-dai = <&tdmc>;
+				dai-tdm-slot-tx-mask = <1 1>;
+				dai-tdm-slot-rx-mask = <1 1>;
+				dai-tdm-slot-num = <2>;
+				dai-tdm-slot-width = <32>;
+				system-clock-frequency = <12288000>;
+			};
+			tdmccodec: codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@3 {
+			mclk-fs = <64>;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-pdm-builtinmic";
+			cpu {
+				sound-dai = <&pdma>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@4 {
+			mclk-fs = <128>;
+			continuous-clock;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-spdif";
+			cpu {
+				sound-dai = <&spdifa>;
+				system-clock-frequency = <6144000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@5 {
+			mclk-fs = <128>;
+			continuous-clock;
+			suffix-name = "alsaPORT-spdifb";
+			cpu {
+				sound-dai = <&spdifb>;
+				system-clock-frequency = <6144000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@6 {
+			mclk-fs = <256>;
+			suffix-name = "alsaPORT-tv";
+			cpu {
+				sound-dai = <&extn>;
+				system-clock-frequency = <12288000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@7 {
+			mclk-fs = <256>;
+			continuous-clock;
+			suffix-name = "alsaPORT-loopback";
+			cpu {
+				sound-dai = <&loopbacka>;
+				system-clock-frequency = <12288000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+	};
+	/* Audio Related end */
+
+	atv-demod {
+		compatible = "amlogic, atv-demod";
+		status = "okay";
+		btsc_sap_mode = <1>;
+		interrupts = <0 94 1>;
+		pinctrl-names="atvdemod_agc_pins";
+		pinctrl-0=<&atvdemod_agc_pins>;
+		reg = <0x0 0xfe0be000 0x0 0x2000    // demod reg
+				0x0 0xfe000000 0x0 0x2000   // hiu reg
+				0x0 0x0 0x0 0x0             // periphs reg
+				0x0 0xfe0bc000 0x0 0x2000>; // adec reg
+		common_agc = <1>;
+	};
+
+	aml_dtv_demod {
+		compatible = "amlogic, ddemod-t6d";
+		dev_name = "aml_dtv_demod";
+		status = "okay";
+		diseqc_name = "TMI8037";
+		pinctrl-names="if_agc_pins", "diseqc_out", "rf_agc_pins";
+		pinctrl-0=<&dtvdemod_if_agc_pins>;
+		pinctrl-1=<&diseqc_out>;
+		pinctrl-2=<&dtvdemod_rf_agc_pins>;
+		//pinctrl-3=<&diseqc_in>;
+		lnb_en-gpios = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>;
+		lnb_sel-gpios = <&gpio GPIOZ_3 GPIO_ACTIVE_HIGH>;
+		interrupts = <GIC_SPI 87 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "demod_isr";
+		power-domains = <&pwrdm PDID_T6D_DEMOD>;
+		clocks = <&clkc CLKID_DEMOD_32K>;
+		clock-names = "demod_32k";
+		reg = <0x0 0xfe310000 0x0 0x10000	//dtv demod base
+			   0x0 0xfe000000 0x0 0x2000	//hiu reg base
+			   0x0 0xff800000 0x0 0x40000	//io_aobus_base
+			   0x0 0xfe002000 0x0 0x2000>;	//reset
+
+		spectrum = <1>;
+		cma_mem_size = <16>; // MB
+	};
+
+	dvb-extern {
+		compatible = "amlogic, dvb-extern";
+		dev_name = "dvb-extern";
+		status = "okay";
+
+		fe_num = <1>;
+		fe0_demod = "internal";
+
+		tuner_num = <2>; // tuner number, multi tuner support
+		tuner0_name = "r842_tuner";
+		tuner0_i2c_adap = <&i2c0>;
+		tuner0_i2c_addr = <0xF6>; // 8 bits
+		tuner0_xtal = <1>;       // 0: 16MHz, 1: 24MHz
+		tuner0_xtal_mode = <0>;  // NO_SHARE_XTAL(0), SLAVE_XTAL_SHARE(3)
+		tuner0_xtal_cap = <38>;
+
+		tuner1_name = "rt710_tuner";
+		tuner1_i2c_adap = <&i2c0>;
+		tuner1_i2c_addr = <0xF4>; // 8 bits
+		tuner1_xtal = <0>;       // 0: 16MHz, 1: 24MHz
+		tuner1_xtal_mode = <0>;  // NO_SHARE_XTAL(0), SLAVE_XTAL_SHARE(3)
+		tuner1_xtal_cap = <30>;
+	};
+
+	dvb-demux {
+		compatible = "amlogic sc2, dvb-demux"; /* same as sc2 */
+		dev_name = "dvb-demux";
+		status = "okay";
+
+		reg = <0x0 0xfe000000 0x0 0x480000>;
+
+		dmxdev_num = <0x11>;
+
+		tsn_from = "demod";
+		ts_clone = <0x0>;
+		/*single demod setting */
+		ts1_sid = <0x21>;
+		ts1 = "parallel";
+		ts1_control = <0x0>;
+		ts1_invert = <0>;
+
+		ts2_sid = <0x22>;
+		ts2 = "parallel";
+		ts2_control = <0x0>;
+		ts2_invert = <0>;
+		pinctrl-names = "p_ts1";
+		pinctrl-0 = <&dvb_p_ts1_pins>;
+	};
+
+	dvbci {
+		compatible = "amlogic, dvbci";
+		dev_name = "dvbci";
+		status = "okay";
+
+		io_type = <4>; /* 0=iobus,1=spi,2=cimax,3=spi-t312 4:T5D,ci bus*/
+		addr_ts_mode_multiplex = <0>; /*AY301 not multi ts and addr,default 1*/
+		le_enable_level = <0>; /*LE pin enable level*/
+		/*gpio pin define*/
+		pinctrl-names= "ci_ts_pins", "ci_addr_pins";
+		pinctrl-0=<&dvb_ci_bus_pins_all &ci_ts_pins &ci_ts_clk_pins>;
+		pinctrl-1=<&dvb_ci_bus_pins &ci_addr_pins &ci_gpio_pins>;
+		reg = <0x0 0xFE080000 0x0 0x1FFF>;
+		/*irq define, t5m not use these irq*/
+		//interrupts = <0 186 1
+		//		0 187 1>;
+		//interrupt-names = "irq_cmp",
+		//			"irq_timeout";
+		dvbci_io {
+			/*gpio define  GPIOM_27 GPIOM_28 GPIOM_30*/
+			cd_pin1 = <&gpio       GPIOM_27       GPIO_ACTIVE_HIGH>;
+			pwr_pin = <&gpio       GPIOM_28       GPIO_ACTIVE_HIGH>;
+			le_pin = <&gpio       GPIOM_29       GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	smartcard {
+		compatible = "amlogic,smartcard-sc2";
+		dev_name = "smartcard";
+		status = "disabled"; /* disabled as default */
+
+		reg = <0x0 0xfe000000 0x0 0x480000>;
+		irq_trigger_type = "GPIO_IRQ_LOW";
+
+		reset_pin-gpios = <&gpio GPIOZ_3 GPIO_ACTIVE_HIGH>;
+		detect_pin-gpios = <&gpio GPIOM_27 GPIO_ACTIVE_HIGH>;
+		enable_5v3v_pin-gpios = <&gpio GPIOM_28 GPIO_ACTIVE_HIGH>;
+		enable_pin-gpios = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>;
+
+		interrupts = <0 174 1>;
+		interrupt-names = "smc0_irq";
+		/*
+		 *Smc clock source, if change this,
+		 *you must adjust clk and divider in smartcard.c
+		 */
+		smc0_clock_source = <0>;
+		/*0: high voltage on detect pin indicates card in.*/
+		smc0_det_invert = <0>;
+		smc0_5v3v_level = <0>;
+		/*Ordinarily,smartcard controller needs a enable pin.*/
+		smc_need_enable_pin = "yes";
+		reset_level = <0>;
+		smc0_enable_level = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&sd_iso7816_pins>;
+
+		clocks = <&clkc CLKID_SC_CLK>;
+		clock-names = "smartcard";
+	};
+}; /* end of / */
+
+&drm_vpu {
+	status = "okay";
+	logo_addr = "0x3f800000";
+
+	connectors_dev: port@1 {
+		drm_to_lcd0: endpoint@1 {
+			reg = <1>;
+			remote-endpoint = <&lcd0_to_drm>;
+		};
+	};
+};
+
+&lcd {
+	ports {
+		port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			lcd0_to_drm: endpoint@0 {
+				reg = <0>;
+				remote-endpoint = <&drm_to_lcd0>;
+			};
+		};
+	};
+};
+
+&uart_B {
+	status = "okay";
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+	/*memory-region = <&vdin0_cma_reserved>;*/
+	status = "okay";
+	/*MByte, if 10bit disable: 64M(YUV422),
+	 *if 10bit enable: 64*1.5 = 96M(YUV422)
+	 *if support 4K2K-YUV444-10bit-WR:3840*2160*4*4 ~= 128M
+	 *if support 4K2K-YUV422-10bit-wr:3840*2160*3*4 ~= 96M
+	 *if support 4K2K-YUV422-8BIT-WR:3840*2160*2*4 ~= 64M
+	 *if support 1080p-YUV422-8BIT-WR:1920*1080*2*4 ~= 16M
+	 * onebuffer:
+	 * worst case:(4096*2160*3 + 2M(afbce issue)) = 27.5M
+	 * dw:960x540x3 = 1.5M
+	 * total size:(27.5+1.5)x buffernumber
+	 */
+	cma_size = <330>;
+	frame_buff_num = <10>;
+};
+
+&vdin1 {
+	memory-region = <&vdin1_cma_reserved>;
+	status = "okay";
+};
+
+&sd_emmc_c {
+	status = "okay";
+	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
+	pinctrl-1 = <&emmc_clk_gate_pins>;
+	pinctrl-names = "default", "clk-gate";
+
+	bus-width = <8>;
+	cap-mmc-highspeed;
+	//mmc-ddr-1_8v;
+	mmc-hs200-1_8v;
+	mmc-hs400-1_8v;
+	max-frequency = <200000000>;
+	non-removable;
+	disable-wp;
+//	amlogic,dram-access-quirk;
+
+//	mmc-pwrseq = <&emmc_pwrseq>;
+//	vmmc-supply = <&vddao_3v3>;
+//	vqmmc-supply = <&vddao_1v8>;
+};
+
+&mtd_nand {
+	status = "disabled"; /* disabled as default */
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	pinctrl-names = "nand_norb_mod","nand_cs_only";
+	pinctrl-0 = <&all_nand_pins>;
+	pinctrl-1 = <&nand_cs_pins>;
+	bl_mode = <1>;
+	fip_copies = <4>;
+	fip_size = <0x200000>;
+	ship_bad_block = <1>;
+	disa_irq_flag = <1>;
+	nand@bootloader {
+		reg = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		nand-ecc-maximize;
+		partition@0 {
+			label = "bl2";
+			reg = <0x0 0x00000000>;
+		};
+	};
+	nand@normal {
+		reg = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		nand-ecc-maximize;
+	};
+};
+
+&spi_nfc {
+	status = "disabled";
+	pinctrl-names = "default";
+	pinctrl-0 = <&spinf_pins>;
+	spi-nand@0 {
+		compatible = "spi-nand";
+		status = "disabled";
+		reg = <0>;
+		spi-max-frequency = <83000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+	};
+	spi-nor@0 {
+		compatible = "spi-nor";
+		status = "disabled";
+		reg = <0>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+		spi-max-frequency = <83000000>;
+	};
+};
+
+&periphs_pinctrl {
+	/*backlight*/
+	bl_pwm_vs_on_pins:bl_pwm_vs_on_pin {
+		mux {
+			groups = "pwm_vs_h12";
+			function = "pwm_vs";
+		};
+	};
+	bl_pwm_off_pins:bl_pwm_off_pin {
+		mux {
+			groups = "GPIOH_12";
+			function = "gpio_periphs";
+			output-low;
+		};
+	};
+	ST6451D06_3_pins: ST6451D06_3_pin {
+		mux {
+			groups = "tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6",
+				"tcon_8","tcon_lock";
+			function = "tcon";
+		};
+	};
+	ST6451D06_3_off_pins: ST6451D06_3_off_pin {
+		mux {
+			groups = "GPIOH_1","GPIOH_2","GPIOH_3",
+				"GPIOH_4","GPIOH_5","GPIOH_6",
+				"GPIOH_8", "GPIOH_0";
+				function = "gpio_periphs";
+			input-enable;
+		};
+	};
+	ST5461D18_2_pins: ST5461D18_2_pin {
+		mux {
+			groups = "tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6",
+				"tcon_8","tcon_lock";
+			function = "tcon";
+		};
+	};
+	ST5461D18_2_off_pins: ST5461D18_2_off_pin {
+		mux {
+			groups = "GPIOH_1","GPIOH_2","GPIOH_3",
+				"GPIOH_4","GPIOH_5","GPIOH_6",
+				"GPIOH_8","GPIOH_0";
+				function = "gpio_periphs";
+			input-enable;
+		};
+	};
+};
+
+&i2c2 {
+	status = "okay";
+	clock-frequency = <100000>;
+	pinctrl-names="default";
+	pinctrl-0=<&i2c2_pins2>;
+
+	lcd_extern_i2c0: lcd_extern_i2c@29 {
+		compatible = "lcd_ext, i2c";
+		dev_name = "i2c_HV650LS";
+		reg = <0x29>;
+		status = "okay";
+	};
+
+	lcd_extern_i2c1: lcd_extern_i2c@33 {
+		compatible = "lcd_ext, i2c";
+		dev_name = "i2c_CS602";
+		reg = <0x33>;
+		status = "okay";
+	};
+
+	lcd_extern_i2c2: lcd_extern_i2c@20 {
+		compatible = "lcd_ext, i2c";
+		dev_name = "i2c_CS901";
+		reg = <0x20>;
+		status = "okay";
+	};
+};
+
+&ethmac {
+	status = "okay";
+	phy-handle = <&internal_ephy>;
+	phy-mode = "rmii";
+};
+
+&usb_phy20{
+	portnum = <1>;
+	/* Set portspeed to 1 & cfg clks to enable HSP mode. */
+	portspeed = <0x0>; /* 0: HS mode. 1: HSP mode */
+	/* clk src mux.
+	 * [0]: HS: normal comb clk. HSP: normal comb clk + 48m soc-digital clk.
+	 * [1~3]: 48m clk src selector for HSP mode:
+	 * phyclk/soc-digital/soc-analog.
+	 * For option 2&3, the clk cfg should be also modified in the dtsi.
+	 */
+	clk-mux = <0x0>;
+	status = "okay";
+};
+
+&usb_phy30{
+	status = "okay";
+};
+
+&usb_phy21{
+	gpio-vbus-power = "GPIOC_10";
+	gpios = <&gpio GPIOC_10 GPIO_ACTIVE_HIGH>;
+	portnum = <1>;
+	status = "okay";
+};
+
+&usb_phy31{
+	status = "okay";
+};
+
+&usb_phy22{
+	portnum = <1>;
+	/* Set portspeed to 1 & cfg clks to enable HSP mode. */
+	portspeed = <0x0>; /* 0: HS mode. 1: HSP mode */
+	/* clk src mux.
+	 * [0]: HS: normal comb clk. HSP: normal comb clk + 48m soc-digital clk.
+	 * [1~3]: 48m clk src selector for HSP mode:
+	 * phyclk/soc-digital/soc-analog.
+	 * For option 2&3, the clk cfg should be also modified in the dtsi.
+	 */
+	clk-mux = <0x0>;
+	status = "okay";
+};
+
+&usb_phy32{
+	status = "okay";
+};
+
+&crg20_otg{
+	controller-type = <1>; /* 0~3: normal, host, device, otg */
+	status = "okay";
+};
+
+&crg20_drd{
+	status = "okay";
+};
+
+&crg20_udc{
+	status = "okay";
+};
+
+&crg21_host{
+	status = "okay";
+};
+
+&crg22_host{
+	status = "okay";
+};
+
+&spicc0 {	//for TCON
+	status = "disabled";/* disabled as default */
+	pinctrl-names = "default";
+	pinctrl-0 = <&spicc0_pins_h>;
+};
+
+&spicc1 {	//for UWB/LocalDimm
+	status = "disabled";/* disabled as default */
+	pinctrl-names = "default";
+	pinctrl-0 = <&spicc1_pins_z>;
+};
+
+&ir {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&remote_pins>;
+};
+
+&ir1 {
+	status = "disabled"; /* disabled as default */
+	pinctrl-names = "default";
+	pinctrl-0 = <&remote_b_pins>;
+};
+
+&dcon_led {
+	status = "okay";
+	led_number = <2>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&dcon_led_pins1>;
+	// polarity-inversed;
+};
+
+&i2c0 {
+	status = "okay";
+	clock-frequency = <300000>;
+	pinctrl-names="default";
+	pinctrl-0=<&i2c0_pins1>;
+};
+
+&i2c1 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins1>;
+	clock-frequency = <300000>;
+	ad82120b: ad82120b@6c {
+		compatible = "ESMT,ad82120b";
+		#sound-dai-cells = <0>;
+		reset_pin-gpios = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>;
+		reg = <0x6c>;
+		status = "disabled";
+	};
+};
+
+&saradc {
+	status = "okay";
+};
+
+&vdac {
+	cdac_disable = <1>;
+};
+
+&amlvecm {
+	compatible = "amlogic, vecm-t6d";
+	dev_name = "aml_vecm";
+	status = "okay";
+	gamma_en = <1>;/*1:enable ;0:disable*/
+	wb_en = <1>;/*1:enable ;0:disable*/
+	cm_en = <1>;/*1:enable ;0:disable*/
+	wb_sel = <0>;/*1:mtx ;0:gainoff*/
+	osd_pic_en = <1>;/*1:enable osd picture setting;0:disable*/
+	vlock_en = <1>;/*1:enable;0:disable*/
+	vlock_mode = <0x8>;
+	vrr_priority = <1>;/*1:game mode vrr always on;0:vrr on depend on vrr signal*/
+	/*vlock work mode:
+	 *bit0:auto ENC
+	 *bit1:auto PLL
+	 *bit2:manual PLL
+	 *bit3:manual ENC
+	 *bit4:manual soft ENC
+	 *bit5:manual MIX PLL ENC
+	 */
+	vlock_pll_m_limit = <1>;
+	vlock_line_limit = <2>;
+	interrupts = <0 207 1>;
+	interrupt-names = "lc_curve";
+};
+
+&aml_wifi{
+	status = "okay";
+	power_on-gpios = <&gpio   GPIOD_11  GPIO_ACTIVE_HIGH>;
+	disable-wifi-32k;
+};
+
+&aml_bt {
+	status = "okay";
+	bt_en-gpios = <&gpio  GPIOD_11  GPIO_ACTIVE_HIGH>;
+	hostwake-gpios = <&gpio  GPIOD_13  GPIO_ACTIVE_HIGH>;
+	power_down_disable = <1>;
+};
+
+&tdmb {
+	pinctrl-names = "tdm_pins","tdmout_a_gpio";
+	pinctrl-0 = <
+			&tdmb_pin
+			&tdm_d0_pins
+			&tdmb_clk_pins>;
+	pinctrl-1 = <&tdmout_b_gpio>;
+};
+
+&pdma {
+	pinctrl-names = "pdm_pins";
+	pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+		pinctrl-names = "spdif_pins",
+			"spdif_pins_mute";
+		pinctrl-0 = <&spdifout_a>;
+		pinctrl-1 = <&spdifout_a_mute>;
+};
+
+&spdifb {
+		pinctrl-names = "spdif_pins",
+			"spdif_pins_mute";
+		pinctrl-0 = <&spdifout_b>;
+		pinctrl-1 = <&spdifout_b_mute>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/t6d_t950d5_br301_1g.dts b/arch/arm64/boot/dts/amlogic/t6d_t950d5_br301_1g.dts
new file mode 100644
index 0000000..2a56ea3
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/t6d_t950d5_br301_1g.dts
@@ -0,0 +1,1251 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "mesont6d.dtsi"
+#include "mesont6d_drm.dtsi"
+#include "firmware_ab.dtsi"
+#include "mesont6d-panel.dtsi"
+#include "mesont6d_audio.dtsi"
+
+/ {
+	amlogic-dt-id = "t6d_t950d5_br301-1g";
+	compatible = "t6d_t950d5_br301-1g";
+	interrupt-parent = <&gic>;
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	aliases {
+		serial0 = &uart_B;
+		serial1 = &uart_A;
+		serial2 = &uart_C;
+		tsensor0 = &cpu_tsensor;
+		tsensor1 = &top_tsensor;
+		spi0 = &spi_nfc;
+		spi1 = &spicc0;
+		spi2 = &spicc1;
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+	};
+
+	memory@00000000 {
+		device_type = "memory";
+		linux,usable-memory = <0x0 0x0 0x0 0x40000000>;
+	};
+
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		/* global autoconfigured region for contiguous allocations */
+		ramdump_bl33z@00000000 {
+			reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+			status = "disabled"; /* disabled as default */
+		};
+
+		ramoops@0x06300000 {
+			compatible = "ramoops";
+			reg = <0x0 0x06300000 0x0 0x00100000>;
+			record-size = <0x20000>;
+			console-size = <0x40000>;
+			ftrace-size = <0x80000>;
+			pmsg-size = <0x20000>;
+		};
+
+		dmc_reserved:linux,dmc_monitor {
+			compatible = "amlogic,dmc_monitor-reserved";
+			reg = <0x0 0x0 0x0 0x0>;
+		};
+
+		debug_reserved:linux,iotrace {
+			compatible = "amlogic, iotrace";
+			reg = <0x0 0x04f00000 0x0 0x00100000>;
+			io-size = <0x1b000>;
+			sched-size = <0x2000>;
+			irq-size = <0x1000>;
+			smc-size = <0x1000>;
+			misc-size = <0x1000>;
+		};
+
+		secmon_reserved:linux,secmon {
+			compatible = "shared-dma-pool";
+			no-map;
+			alignment = <0x0 0x00100000>;
+			reg = <0x0 0x05000000 0x0 0x01300000>;
+		};
+
+		logo_reserved:linux,meson-fb {
+			compatible = "amlogic, meson-fb";
+			size = <0x0 0x800000>;
+			alignment = <0x0 0x400000>;
+			reg = <0x0 0x3f800000 0x0 0x800000>;
+		};
+
+		lcd_cma_reserved:linux,lcd-reserved {
+			compatible = "amlogic, lcd_rsvd";
+			reg = <0x0 0x3f000000 0x0 0x00410000>;
+			tcon-size = <0x00402840>;
+		};
+
+		dmaheap_cma_reserved:heap-gfx {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x0 0x0>;
+			alignment = <0x0 0x400000>;
+		};
+		dmaheap_fb_reserved:heap-fb {
+			compatible = "shared-dma-pool";
+			reusable;
+			/* 1080p TV androidT size 28M */
+			size = <0x0 0x1c00000>;
+			alignment = <0x0 0x400000>;
+		};
+
+		/*  vdin0 CMA pool */
+		/*vdin0_cma_reserved:linux,vdin0_cma {*/
+		/*	compatible = "shared-dma-pool";*/
+		/*	reusable;*/
+			/* up to 1920x1080 yuv422 8bit and 5 buffers
+			 * 1920x1080x2x5 = 20 M
+			 */
+		/*	size = <0x0 0x01400000>;*/
+		/*	alignment = <0x0 0x400000>;*/
+		/*};*/
+		/*  vdin1 CMA pool */
+		vdin1_cma_reserved:linux,vdin1_cma {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x0 0x800000>;
+			alignment = <0x0 0x400000>;
+		};
+
+		codec_mm_cma:linux,codec_mm_cma {
+			compatible = "shared-dma-pool";
+			reusable;
+			/*
+			 * Scenario: Primary + Secondary + PIP
+			 * Total size: 174M
+			 * Note:
+			 *  setting to 168M if scatter_alloc_mode is 0.
+			 *  setting to 160M if scatter_alloc_mode is 1.
+			 */
+			size = <0x0 0xa000000>;
+			alignment = <0x0 0x400000>;
+			linux,contiguous-region;
+		};
+
+		secure_vdec_reserved:linux,secure_vdec_reserved {
+			compatible = "amlogic, secure-vdec-reserved";
+			no-map;
+			size = <0x0 0x400000>;
+			alignment = <0x0 0x100000>;
+		};
+
+		/* global autoconfigured region for contiguous allocations */
+		linux,cma {
+			compatible = "shared-dma-pool";
+			reusable;
+			size = <0x0 0x400000>;
+			alignment = <0x0 0x400000>;
+			linux,cma-default;
+		};
+	};
+
+	vdd4_2v5_reg: fixed@vdd4_2v5_reg {
+		compatible = "regulator-fixed";
+		vin-supply = <&vddao3v3_reg>;
+		regulator-name = "DDR4_2V5";
+		regulator-min-microvolt = <2500000>;
+		regulator-max-microvolt = <2500000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddio3v3_reg: fixed@vddio3v3_reg {
+		vin-supply = <&vddao3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default";
+		gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <7000>;
+		enable-active-high;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddao1v8_reg: fixed@vddao1v8_reg {
+		vin-supply = <&vddao3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDAO_1V8/VDDIO_B";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	vddio_m_reg: fixed@afe3v3_reg {
+		vin-supply = <&vddio3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "VDDIO_M";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	afe1v8_reg: fixed@afe1v8_reg {
+		vin-supply = <&afe3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "AFE_1V8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	afe3v3_reg: fixed@afe3v3_reg {
+		vin-supply = <&vddao3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "AFE_3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default";
+		gpio = <&gpio GPIOD_4 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <7000>;
+		enable-active-high;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	enet3v3_reg: fixed@enet3v3_reg {
+		vin-supply = <&afe3v3_reg>;
+		compatible = "regulator-fixed";
+		regulator-name = "AVDD33_ENET";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	codec_mm {
+		compatible = "amlogic, codec, mm";
+		memory-region = <&codec_mm_cma &secure_vdec_reserved>;
+		dev_name = "codec_mm";
+		status = "okay";
+		/*
+		 * scatter_alloc_mode: the mode of scatter memory allocation
+		 * 0: default mode, alloc from system and cma
+		 * 1: only alloc from system
+		 */
+		scatter_alloc_mode = <1>;
+	};
+
+	video_queue {
+		compatible = "amlogic, video_queue";
+		dev_name = "videoqueue";
+		status = "okay";
+	};
+
+	amlvideo2_0 {
+		compatible = "amlogic, amlvideo2";
+		dev_name = "amlvideo2";
+		status = "okay";
+		amlvideo2_id = <0>;
+		cma_mode = <1>;
+	};
+
+	amlvideo2_1 {
+		compatible = "amlogic, amlvideo2";
+		dev_name = "amlvideo2";
+		status = "okay";
+		amlvideo2_id = <1>;
+		cma_mode = <1>;
+	};
+
+	tvafe_avin_detect {
+		compatible = "amlogic, t6d_tvafe_avin_detect";
+		status = "okay";
+		device_mask = <1>;/*bit0:ch1;bit1:ch2*/
+		reg = <0x0 0xfe00a000 0x0 0x400>; /* cvbs irq base */
+		interrupts = <0 173 1>;
+	};
+
+	tvafe {
+		compatible = "amlogic, tvafe-t6d";
+		/*memory-region = <&tvafe_cma_reserved>;*/
+		status = "okay";
+		flag_cma = <1>;/*1:share with codec_mm;0:cma alone*/
+		cma_size = <5>;/*MByte*/
+		reg = <0x0 0xfe072000 0x0 0x2000/*tvafe reg base*/
+			0x0 0xfe008000 0x0 0x2000>; /*ana reg base*/
+		reserve-iomap = "true";
+		tvafe_id = <0>;
+		//pinctrl-names = "default";
+		/*!!particular sequence, no more and no less!!!*/
+		tvafe_pin_mux = <
+				3 /* TVAFE_CVBS_IN2, CVBS_IN0 = 0 */
+				1 /* TVAFE_CVBS_IN0, CVBS_IN1 */
+				2 /* TVAFE_CVBS_IN1, CVBS_IN2 */
+				4 /* TVAFE_CVBS_IN3, CVBS_IN3 */
+		>;
+		clocks = <&clkc CLKID_CDAC_CLK>;
+		clock-names = "vdac_clk_gate";
+		cutwindow_val_h = <0 0 0 0 8>; /* level 0~4 */
+		cutwindow_val_v = <4 8 14 16 24>;  /* level 0~4 */
+		horizontal_dir0 = <148 148 148 148 148>;
+		horizontal_dir1 = <148 168 166 160 148>;
+		horizontal_stp0 = <0 0 0 0 0>;
+		horizontal_stp1 = <0 0 0 0 0>;
+	};
+
+	vbi {
+		compatible = "amlogic, vbi";
+		status = "okay";
+		interrupts = <0 210 1>;
+	};
+
+	multi-di {
+		/***************************************************
+		 * memory: default is 4
+		 *	0:use reserved;
+		 *	1:use cma;
+		 *	2:use cma as reserved
+		 *  4:use codec mem
+		 ***************************************************/
+		flag_cma = <4>;//
+		//memory-region = <&di_cma_reserved>;
+		/***************************************************
+		 * clock-range: <min max>
+		 *	default: <334 667>
+		 ***************************************************/
+		//clock-range = <334 667>;
+		/***************************************************
+		 * en_4k: t5w support 4k
+		 ***************************************************/
+		//en_4k = <1>;
+		//keep_dec_vf = <2>;
+		//po_fmt = <6>;
+		/***************************************************
+		 * post_nub: default is 11 (T7/T3/SC2/S4 new path)
+		 * local 7*4075520 = 28
+		 * post 11*5222400 = 56 //??
+		 ***************************************************/
+		post_nub = <11>;
+		/***************************************************
+		 * 0:not support
+		 * bit 0: for 4k
+		 * bit 1: for 1080p
+		 ***************************************************/
+		//alloc_sct = <1>;
+		/***************************************************
+		 * hf: default is 0 (T7/T3/SC2/S4 new path)
+		 * 0:not enable;
+		 * 1: enable
+		 ***************************************************/
+		hf = <0>;
+		//afbce_loss_en = <1>;
+		/***************************************************
+		 * loss mode for di out (T5w)
+		 * 0:not set loss mode for di out;
+		 * 1:1:check the loss flag in vf and set for di
+		 ***************************************************/
+	};/* end of multi-di */
+
+	/* for external keypad */
+	adc_keypad {
+		compatible = "amlogic, adc_keypad";
+		status = "okay";
+		key_name = "power", "vol-", "vol+", "ok", "menu",
+			   "source", "exit";
+		key_num = <7>;
+		io-channels = <&saradc SARADC_CH1>, <&saradc SARADC_CH2>;
+		io-channel-names = "key-chan-1", "key-chan-2";
+		key_chan = <SARADC_CH1 SARADC_CH1 SARADC_CH1 SARADC_CH1 SARADC_CH1
+			    SARADC_CH2 SARADC_CH2>;
+		key_code = <KEY_POWER KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER KEY_MENU
+			    KEY_FN_F1 KEY_EXIT>;
+		/* key_val = voltage / 1800mV * 1023 */
+		key_val = <0 143 266 389 507 143 266>;
+		key_tolerance = <40 40 40 40 40 40 40>;
+	};
+
+	unifykey {
+		compatible = "amlogic,unifykey";
+		status = "okay";
+
+		unifykey-num = <13>;
+		unifykey-index-0 = <&keysn_0>;
+		unifykey-index-1 = <&keysn_1>;
+		unifykey-index-2 = <&keysn_2>;
+		unifykey-index-3 = <&keysn_3>;
+		unifykey-index-4 = <&keysn_4>;
+		unifykey-index-5 = <&keysn_5>;
+		unifykey-index-6 = <&keysn_6>;
+		unifykey-index-7 = <&keysn_7>;
+		unifykey-index-8 = <&keysn_8>;
+		unifykey-index-9 = <&keysn_9>;
+		unifykey-index-10 = <&keysn_10>;
+		unifykey-index-11 = <&keysn_11>;
+		unifykey-index-12 = <&keysn_12>;
+
+		keysn_0: key_0{
+			key-name = "usid";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_1:key_1{
+			key-name = "mac";
+			key-device  = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_2:key_2{
+			key-name = "secure_boot_set";
+			key-device = "efuse";
+			key-permit = "write";
+		};
+		keysn_3:key_3{
+			key-name = "mac_bt";
+			key-device = "normal";
+			key-permit = "read","write","del";
+			key-type  = "mac";
+		};
+		keysn_4:key_4{
+			key-name = "mac_wifi";
+			key-device = "normal";
+			key-permit = "read","write","del";
+			key-type  = "mac";
+		};
+		keysn_5:key_5{
+			key-name = "hdcp2_rx";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_6:key_6{
+			key-name = "deviceid";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_7:key_7{
+			key-name = "lcd";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_8:key_8{
+			key-name = "lcd_extern";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_9:key_9{
+			key-name = "backlight";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_10:key_10{
+			key-name = "lcd_tcon";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_11:key_11{
+			key-name = "lcd_tcon_spi";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+		keysn_12:key_12{
+			key-name = "oemkey";
+			key-device = "normal";
+			key-permit = "read","write","del";
+		};
+	}; /* End unifykey */
+
+	hdmirx {
+		compatible = "amlogic, hdmirx_t6d";
+		#address-cells=<2>;
+		#size-cells=<2>;
+		/*memory-region = <&hdmirx_emp_cma_reserved>;*/
+		status = "okay";
+		pinctrl-names = "hdmirx_pins";
+		pinctrl-0 = <&hdmirx_a_mux &hdmirx_b_mux
+			&hdmirx_c_mux>;
+		repeat = <0>;
+		/*power-domains = <&pwrdm PDIP_T6D_VPU_HDMI>;*/
+		interrupts = <0 57 IRQ_TYPE_LEVEL_HIGH>;
+		clocks =<&clkc CLKID_HDMIRX_CFG>,
+			<&clkc CLKID_HDMIRX_ACR>,
+			<&clkc CLKID_HDMIRX_METER>,
+			<&clkc CLKID_HDMIRX_2M>,
+			<&clkc CLKID_HDMIRX_5M>,
+			<&clkc CLKID_HDMIRX_HDCP>,
+			<&xtal>,
+			<&clkc CLKID_FCLK_DIV4>,
+			<&clkc CLKID_FCLK_DIV5>;
+		clock-names = "hdmirx_cfg_clk",
+				"cts_hdmirx_acr_ref_clk",
+				"cts_hdmirx_meter_clk",
+				"cts_hdmirx_2m_clk",
+				"cts_hdmirx_5m_clk",
+				"cts_hdmirx_hdcp2x_eclk",
+				"xtal",
+				"fclk_div4",
+				"fclk_div5";
+		//power-domains = <&pwrdm 2>;
+		hdmirx_id = <0>;
+		en_4k_2_2k = <0>;
+		hpd_low_cec_off = <1>;
+		arc_port = <0>;
+		vrr_range_dynamic_update_en = <1>;
+		/* bit4: enable feature, bit3~0: port number */
+		disable_port = <0x0>;
+		/* MAP_ADDR_MODULE_CBUS */
+		/* MAP_ADDR_MODULE_HIU */
+		/* MAP_ADDR_MODULE_HDMIRX_CAPB3 */
+		/* MAP_ADDR_MODULE_SEC_AHB */
+		/* MAP_ADDR_MODULE_SEC_AHB2 */
+		/* MAP_ADDR_MODULE_APB4 */
+		/* MAP_ADDR_MODULE_TOP */
+		/* MAP_ADDR_MODULE_CLK_CTRL */
+		/* MAP_ADDR_MODULE_ANA_CTRL */
+		reg = < 0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0x0 0x0 0x0
+			0x0 0xfe398000 0x0 0x18000
+			0x0 0xfe000000 0x0 0x1fff
+			0x0 0xfe008000 0x0 0x334>;
+	};
+
+	/* Audio Related start */
+	auge_sound {
+		compatible = "amlogic, auge-sound-card";
+		aml-audio-card,name = "AML-AUGESOUND";
+
+		avout_mute-gpios = <&gpio GPIOD_6 GPIO_ACTIVE_HIGH>;
+		spk_mute-gpios = <&gpio GPIOD_9 GPIO_ACTIVE_LOW>;
+		spk_mute_sleep_time = <800>;
+
+		/* headphone insert det */
+		aml-audio-card,hp-det-gpio = <&gpio_analog CDAC_IOUT GPIO_ACTIVE_LOW>;
+
+		interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "audio_exception64";
+
+		aml-audio-card,dai-link@0 {
+			format = "i2s";
+			mclk-fs = <256>;
+			//continuous-clock;
+			//bitclock-inversion;
+			//frame-inversion;
+			/* master mode */
+			bitclock-master = <&tdma>;
+			frame-master = <&tdma>;
+			/* slave mode */
+			/*
+			 * bitclock-master = <&tdmacodec>;
+			 * frame-master = <&tdmacodec>;
+			 */
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-pcm";
+			tdmacpu: cpu {
+				sound-dai = <&tdma>;
+				dai-tdm-slot-tx-mask =
+							<1 1>;
+				dai-tdm-slot-rx-mask =
+							<1 1>;
+				dai-tdm-slot-num = <2>;
+				dai-tdm-slot-width = <32>;
+				system-clock-frequency = <12288000>;
+			};
+			tdmacodec: codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@1 {
+			format = "i2s";
+			mclk-fs = <256>;
+			continuous-clock;
+			//bitclock-inversion;
+			//frame-inversion;
+			/* master mode */
+			bitclock-master = <&tdmb>;
+			frame-master = <&tdmb>;
+			/* slave mode */
+			//bitclock-master = <&tdmbcodec>;
+			//frame-master = <&tdmbcodec>;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+			cpu {
+				sound-dai = <&tdmb>;
+				dai-tdm-slot-tx-mask = <1 1>;
+				dai-tdm-slot-rx-mask = <1 1>;
+				dai-tdm-slot-num = <2>;
+				dai-tdm-slot-width = <32>;
+				system-clock-frequency = <12288000>;
+			};
+			tdmbcodec: codec {
+				prefix-names = "AMP";
+				sound-dai = </*&ad82120b*/ &acodec>;
+			};
+		};
+
+		aml-audio-card,dai-link@2 {
+			format = "i2s";
+			mclk-fs = <256>;
+			//continuous-clock;
+			//bitclock-inversion;
+			//frame-inversion;
+			/* master mode */
+			bitclock-master = <&tdmc>;
+			frame-master = <&tdmc>;
+			/* slave mode */
+			//bitclock-master = <&tdmccodec>;
+			//frame-master = <&tdmccodec>;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-i2s4parser";
+			cpu {
+				sound-dai = <&tdmc>;
+				dai-tdm-slot-tx-mask = <1 1>;
+				dai-tdm-slot-rx-mask = <1 1>;
+				dai-tdm-slot-num = <2>;
+				dai-tdm-slot-width = <32>;
+				system-clock-frequency = <12288000>;
+			};
+			tdmccodec: codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@3 {
+			mclk-fs = <64>;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-pdm-builtinmic";
+			cpu {
+				sound-dai = <&pdma>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@4 {
+			mclk-fs = <128>;
+			continuous-clock;
+			/* suffix-name, sync with android audio hal used for */
+			suffix-name = "alsaPORT-spdif";
+			cpu {
+				sound-dai = <&spdifa>;
+				system-clock-frequency = <6144000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@5 {
+			mclk-fs = <128>;
+			continuous-clock;
+			suffix-name = "alsaPORT-spdifb";
+			cpu {
+				sound-dai = <&spdifb>;
+				system-clock-frequency = <6144000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@6 {
+			mclk-fs = <256>;
+			suffix-name = "alsaPORT-tv";
+			cpu {
+				sound-dai = <&extn>;
+				system-clock-frequency = <12288000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+
+		aml-audio-card,dai-link@7 {
+			mclk-fs = <256>;
+			continuous-clock;
+			suffix-name = "alsaPORT-loopback";
+			cpu {
+				sound-dai = <&loopbacka>;
+				system-clock-frequency = <12288000>;
+			};
+			codec {
+				sound-dai = <&dummy_codec>;
+			};
+		};
+	};
+	/* Audio Related end */
+
+	atv-demod {
+		compatible = "amlogic, atv-demod";
+		status = "okay";
+		btsc_sap_mode = <1>;
+		interrupts = <0 94 1>;
+		pinctrl-names="atvdemod_agc_pins";
+		pinctrl-0=<&atvdemod_agc_pins>;
+		reg = <0x0 0xfe0be000 0x0 0x2000    // demod reg
+				0x0 0xfe000000 0x0 0x2000   // hiu reg
+				0x0 0x0 0x0 0x0             // periphs reg
+				0x0 0xfe0bc000 0x0 0x2000>; // adec reg
+		common_agc = <1>;
+	};
+
+	aml_dtv_demod {
+		compatible = "amlogic, ddemod-t6d";
+		dev_name = "aml_dtv_demod";
+		status = "okay";
+		diseqc_name = "TMI8037";
+		pinctrl-names="if_agc_pins", "diseqc_out", "rf_agc_pins";
+		pinctrl-0=<&dtvdemod_if_agc_pins>;
+		pinctrl-1=<&diseqc_out>;
+		pinctrl-2=<&dtvdemod_rf_agc_pins>;
+		//pinctrl-3=<&diseqc_in>;
+		lnb_en-gpios = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>;
+		lnb_sel-gpios = <&gpio GPIOZ_3 GPIO_ACTIVE_HIGH>;
+		interrupts = <GIC_SPI 87 IRQ_TYPE_EDGE_RISING>;
+		interrupt-names = "demod_isr";
+		power-domains = <&pwrdm PDID_T6D_DEMOD>;
+		clocks = <&clkc CLKID_DEMOD_32K>;
+		clock-names = "demod_32k";
+		reg = <0x0 0xfe310000 0x0 0x10000	//dtv demod base
+			   0x0 0xfe000000 0x0 0x2000	//hiu reg base
+			   0x0 0xff800000 0x0 0x40000	//io_aobus_base
+			   0x0 0xfe002000 0x0 0x2000>;	//reset
+
+		spectrum = <1>;
+		cma_mem_size = <16>; // MB
+	};
+
+	dvb-extern {
+		compatible = "amlogic, dvb-extern";
+		dev_name = "dvb-extern";
+		status = "okay";
+
+		fe_num = <1>;
+		fe0_demod = "internal";
+
+		tuner_num = <2>; // tuner number, multi tuner support
+		tuner0_name = "r842_tuner";
+		tuner0_i2c_adap = <&i2c0>;
+		tuner0_i2c_addr = <0xF6>; // 8 bits
+		tuner0_xtal = <1>;       // 0: 16MHz, 1: 24MHz
+		tuner0_xtal_mode = <0>;  // NO_SHARE_XTAL(0), SLAVE_XTAL_SHARE(3)
+		tuner0_xtal_cap = <38>;
+
+		tuner1_name = "rt710_tuner";
+		tuner1_i2c_adap = <&i2c0>;
+		tuner1_i2c_addr = <0xF4>; // 8 bits
+		tuner1_xtal = <0>;       // 0: 16MHz, 1: 24MHz
+		tuner1_xtal_mode = <0>;  // NO_SHARE_XTAL(0), SLAVE_XTAL_SHARE(3)
+		tuner1_xtal_cap = <30>;
+	};
+
+	dvb-demux {
+		compatible = "amlogic sc2, dvb-demux"; /* same as sc2 */
+		dev_name = "dvb-demux";
+		status = "okay";
+
+		reg = <0x0 0xfe000000 0x0 0x480000>;
+
+		dmxdev_num = <0x11>;
+
+		tsn_from = "demod";
+		ts_clone = <0x0>;
+		/*single demod setting */
+		ts1_sid = <0x21>;
+		ts1 = "parallel";
+		ts1_control = <0x0>;
+		ts1_invert = <0>;
+
+		ts2_sid = <0x22>;
+		ts2 = "parallel";
+		ts2_control = <0x0>;
+		ts2_invert = <0>;
+		pinctrl-names = "p_ts1";
+		pinctrl-0 = <&dvb_p_ts1_pins>;
+	};
+
+	dvbci {
+		compatible = "amlogic, dvbci";
+		dev_name = "dvbci";
+		status = "okay";
+
+		io_type = <4>; /* 0=iobus,1=spi,2=cimax,3=spi-t312 4:T5D,ci bus*/
+		addr_ts_mode_multiplex = <0>; /*AY301 not multi ts and addr,default 1*/
+		le_enable_level = <0>; /*LE pin enable level*/
+		/*gpio pin define*/
+		pinctrl-names= "ci_ts_pins", "ci_addr_pins";
+		pinctrl-0=<&dvb_ci_bus_pins_all &ci_ts_pins &ci_ts_clk_pins>;
+		pinctrl-1=<&dvb_ci_bus_pins &ci_addr_pins &ci_gpio_pins>;
+		reg = <0x0 0xFE080000 0x0 0x1FFF>;
+		/*irq define, t5m not use these irq*/
+		//interrupts = <0 186 1
+		//		0 187 1>;
+		//interrupt-names = "irq_cmp",
+		//			"irq_timeout";
+		dvbci_io {
+			/*gpio define  GPIOM_27 GPIOM_28 GPIOM_30*/
+			cd_pin1 = <&gpio       GPIOM_27       GPIO_ACTIVE_HIGH>;
+			pwr_pin = <&gpio       GPIOM_28       GPIO_ACTIVE_HIGH>;
+			le_pin = <&gpio       GPIOM_29       GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	smartcard {
+		compatible = "amlogic,smartcard-sc2";
+		dev_name = "smartcard";
+		status = "disabled"; /* disabled as default */
+
+		reg = <0x0 0xfe000000 0x0 0x480000>;
+		irq_trigger_type = "GPIO_IRQ_LOW";
+
+		reset_pin-gpios = <&gpio GPIOZ_3 GPIO_ACTIVE_HIGH>;
+		detect_pin-gpios = <&gpio GPIOM_27 GPIO_ACTIVE_HIGH>;
+		enable_5v3v_pin-gpios = <&gpio GPIOM_28 GPIO_ACTIVE_HIGH>;
+		enable_pin-gpios = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>;
+
+		interrupts = <0 174 1>;
+		interrupt-names = "smc0_irq";
+		/*
+		 *Smc clock source, if change this,
+		 *you must adjust clk and divider in smartcard.c
+		 */
+		smc0_clock_source = <0>;
+		/*0: high voltage on detect pin indicates card in.*/
+		smc0_det_invert = <0>;
+		smc0_5v3v_level = <0>;
+		/*Ordinarily,smartcard controller needs a enable pin.*/
+		smc_need_enable_pin = "yes";
+		reset_level = <0>;
+		smc0_enable_level = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&sd_iso7816_pins>;
+
+		clocks = <&clkc CLKID_SC_CLK>;
+		clock-names = "smartcard";
+	};
+}; /* end of / */
+
+&drm_vpu {
+	status = "okay";
+	logo_addr = "0x3f800000";
+
+	connectors_dev: port@1 {
+		drm_to_lcd0: endpoint@1 {
+			reg = <1>;
+			remote-endpoint = <&lcd0_to_drm>;
+		};
+	};
+};
+
+&lcd {
+	ports {
+		port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			lcd0_to_drm: endpoint@0 {
+				reg = <0>;
+				remote-endpoint = <&drm_to_lcd0>;
+			};
+		};
+	};
+};
+
+&uart_B {
+	status = "okay";
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+	/*memory-region = <&vdin0_cma_reserved>;*/
+	status = "okay";
+	/*MByte, if 10bit disable: 64M(YUV422),
+	 *if 10bit enable: 64*1.5 = 96M(YUV422)
+	 *if support 4K2K-YUV444-10bit-WR:3840*2160*4*4 ~= 128M
+	 *if support 4K2K-YUV422-10bit-wr:3840*2160*3*4 ~= 96M
+	 *if support 4K2K-YUV422-8BIT-WR:3840*2160*2*4 ~= 64M
+	 *if support 1080p-YUV422-8BIT-WR:1920*1080*2*4 ~= 16M
+	 * onebuffer:
+	 * worst case:(4096*2160*3 + 2M(afbce issue)) = 27.5M
+	 * dw:960x540x3 = 1.5M
+	 * total size:(27.5+1.5)x buffernumber
+	 */
+	cma_size = <330>;
+	frame_buff_num = <10>;
+};
+
+&vdin1 {
+	memory-region = <&vdin1_cma_reserved>;
+	status = "okay";
+};
+
+&sd_emmc_c {
+	status = "okay";
+	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
+	pinctrl-1 = <&emmc_clk_gate_pins>;
+	pinctrl-names = "default", "clk-gate";
+
+	bus-width = <8>;
+	cap-mmc-highspeed;
+	//mmc-ddr-1_8v;
+	mmc-hs200-1_8v;
+	mmc-hs400-1_8v;
+	max-frequency = <200000000>;
+	non-removable;
+	disable-wp;
+//	amlogic,dram-access-quirk;
+
+//	mmc-pwrseq = <&emmc_pwrseq>;
+//	vmmc-supply = <&vddao_3v3>;
+//	vqmmc-supply = <&vddao_1v8>;
+};
+
+&mtd_nand {
+	status = "disabled"; /* disabled as default */
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	pinctrl-names = "nand_norb_mod","nand_cs_only";
+	pinctrl-0 = <&all_nand_pins>;
+	pinctrl-1 = <&nand_cs_pins>;
+	bl_mode = <1>;
+	fip_copies = <4>;
+	fip_size = <0x200000>;
+	ship_bad_block = <1>;
+	disa_irq_flag = <1>;
+	nand@bootloader {
+		reg = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		nand-ecc-maximize;
+		partition@0 {
+			label = "bl2";
+			reg = <0x0 0x00000000>;
+		};
+	};
+	nand@normal {
+		reg = <0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		nand-ecc-maximize;
+	};
+};
+
+&spi_nfc {
+	status = "disabled";
+	pinctrl-names = "default";
+	pinctrl-0 = <&spinf_pins>;
+	spi-nand@0 {
+		compatible = "spi-nand";
+		status = "disabled";
+		reg = <0>;
+		spi-max-frequency = <83000000>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+	};
+	spi-nor@0 {
+		compatible = "spi-nor";
+		status = "disabled";
+		reg = <0>;
+		spi-tx-bus-width = <4>;
+		spi-rx-bus-width = <4>;
+		spi-max-frequency = <83000000>;
+	};
+};
+
+&periphs_pinctrl {
+	/*backlight*/
+	bl_pwm_vs_on_pins:bl_pwm_vs_on_pin {
+		mux {
+			groups = "pwm_vs_h12";
+			function = "pwm_vs";
+		};
+	};
+	bl_pwm_off_pins:bl_pwm_off_pin {
+		mux {
+			groups = "GPIOH_12";
+			function = "gpio_periphs";
+			output-low;
+		};
+	};
+	ST6451D06_3_pins: ST6451D06_3_pin {
+		mux {
+			groups = "tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6",
+				"tcon_8","tcon_lock";
+			function = "tcon";
+		};
+	};
+	ST6451D06_3_off_pins: ST6451D06_3_off_pin {
+		mux {
+			groups = "GPIOH_1","GPIOH_2","GPIOH_3",
+				"GPIOH_4","GPIOH_5","GPIOH_6",
+				"GPIOH_8", "GPIOH_0";
+				function = "gpio_periphs";
+			input-enable;
+		};
+	};
+	ST5461D18_2_pins: ST5461D18_2_pin {
+		mux {
+			groups = "tcon_1","tcon_2","tcon_3",
+				"tcon_4","tcon_5","tcon_6",
+				"tcon_8","tcon_lock";
+			function = "tcon";
+		};
+	};
+	ST5461D18_2_off_pins: ST5461D18_2_off_pin {
+		mux {
+			groups = "GPIOH_1","GPIOH_2","GPIOH_3",
+				"GPIOH_4","GPIOH_5","GPIOH_6",
+				"GPIOH_8","GPIOH_0";
+				function = "gpio_periphs";
+			input-enable;
+		};
+	};
+};
+
+&i2c2 {
+	status = "okay";
+	clock-frequency = <100000>;
+	pinctrl-names="default";
+	pinctrl-0=<&i2c2_pins2>;
+
+	lcd_extern_i2c0: lcd_extern_i2c@29 {
+		compatible = "lcd_ext, i2c";
+		dev_name = "i2c_HV650LS";
+		reg = <0x29>;
+		status = "okay";
+	};
+
+	lcd_extern_i2c1: lcd_extern_i2c@33 {
+		compatible = "lcd_ext, i2c";
+		dev_name = "i2c_CS602";
+		reg = <0x33>;
+		status = "okay";
+	};
+
+	lcd_extern_i2c2: lcd_extern_i2c@20 {
+		compatible = "lcd_ext, i2c";
+		dev_name = "i2c_CS901";
+		reg = <0x20>;
+		status = "okay";
+	};
+};
+
+&ethmac {
+	status = "okay";
+	phy-handle = <&internal_ephy>;
+	phy-mode = "rmii";
+};
+
+&usb_phy20{
+	portnum = <1>;
+	/* Set portspeed to 1 & cfg clks to enable HSP mode. */
+	portspeed = <0x0>; /* 0: HS mode. 1: HSP mode */
+	/* clk src mux.
+	 * [0]: HS: normal comb clk. HSP: normal comb clk + 48m soc-digital clk.
+	 * [1~3]: 48m clk src selector for HSP mode:
+	 * phyclk/soc-digital/soc-analog.
+	 * For option 2&3, the clk cfg should be also modified in the dtsi.
+	 */
+	clk-mux = <0x0>;
+	status = "okay";
+};
+
+&usb_phy30{
+	status = "okay";
+};
+
+&usb_phy21{
+	gpio-vbus-power = "GPIOC_10";
+	gpios = <&gpio GPIOC_10 GPIO_ACTIVE_HIGH>;
+	portnum = <1>;
+	status = "okay";
+};
+
+&usb_phy31{
+	status = "okay";
+};
+
+&usb_phy22{
+	portnum = <1>;
+	/* Set portspeed to 1 & cfg clks to enable HSP mode. */
+	portspeed = <0x0>; /* 0: HS mode. 1: HSP mode */
+	/* clk src mux.
+	 * [0]: HS: normal comb clk. HSP: normal comb clk + 48m soc-digital clk.
+	 * [1~3]: 48m clk src selector for HSP mode:
+	 * phyclk/soc-digital/soc-analog.
+	 * For option 2&3, the clk cfg should be also modified in the dtsi.
+	 */
+	clk-mux = <0x0>;
+	status = "okay";
+};
+
+&usb_phy32{
+	status = "okay";
+};
+
+&crg20_otg{
+	controller-type = <1>; /* 0~3: normal, host, device, otg */
+	status = "okay";
+};
+
+&crg20_drd{
+	status = "okay";
+};
+
+&crg20_udc{
+	status = "okay";
+};
+
+&crg21_host{
+	status = "okay";
+};
+
+&crg22_host{
+	status = "okay";
+};
+
+&spicc0 {	//for TCON
+	status = "disabled";/* disabled as default */
+	pinctrl-names = "default";
+	pinctrl-0 = <&spicc0_pins_h>;
+};
+
+&spicc1 {	//for UWB/LocalDimm
+	status = "disabled";/* disabled as default */
+	pinctrl-names = "default";
+	pinctrl-0 = <&spicc1_pins_z>;
+};
+
+&ir {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&remote_pins>;
+};
+
+&ir1 {
+	status = "disabled"; /* disabled as default */
+	pinctrl-names = "default";
+	pinctrl-0 = <&remote_b_pins>;
+};
+
+&dcon_led {
+	status = "okay";
+	led_number = <2>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&dcon_led_pins1>;
+	// polarity-inversed;
+};
+
+&i2c0 {
+	status = "okay";
+	clock-frequency = <300000>;
+	pinctrl-names="default";
+	pinctrl-0=<&i2c0_pins1>;
+};
+
+&i2c1 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins1>;
+	clock-frequency = <300000>;
+	ad82120b: ad82120b@6c {
+		compatible = "ESMT,ad82120b";
+		#sound-dai-cells = <0>;
+		reset_pin-gpios = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>;
+		reg = <0x6c>;
+		status = "disabled";
+	};
+};
+
+&saradc {
+	status = "okay";
+};
+
+&vdac {
+	cdac_disable = <1>;
+};
+
+&amlvecm {
+	compatible = "amlogic, vecm-t6d";
+	dev_name = "aml_vecm";
+	status = "okay";
+	gamma_en = <1>;/*1:enable ;0:disable*/
+	wb_en = <1>;/*1:enable ;0:disable*/
+	cm_en = <1>;/*1:enable ;0:disable*/
+	wb_sel = <0>;/*1:mtx ;0:gainoff*/
+	osd_pic_en = <1>;/*1:enable osd picture setting;0:disable*/
+	vlock_en = <1>;/*1:enable;0:disable*/
+	vlock_mode = <0x8>;
+	vrr_priority = <1>;/*1:game mode vrr always on;0:vrr on depend on vrr signal*/
+	/*vlock work mode:
+	 *bit0:auto ENC
+	 *bit1:auto PLL
+	 *bit2:manual PLL
+	 *bit3:manual ENC
+	 *bit4:manual soft ENC
+	 *bit5:manual MIX PLL ENC
+	 */
+	vlock_pll_m_limit = <1>;
+	vlock_line_limit = <2>;
+	interrupts = <0 207 1>;
+	interrupt-names = "lc_curve";
+};
+
+&aml_wifi{
+	status = "okay";
+	power_on-gpios = <&gpio   GPIOD_11  GPIO_ACTIVE_HIGH>;
+	disable-wifi-32k;
+};
+
+&aml_bt {
+	status = "okay";
+	bt_en-gpios = <&gpio  GPIOD_11  GPIO_ACTIVE_HIGH>;
+	hostwake-gpios = <&gpio  GPIOD_13  GPIO_ACTIVE_HIGH>;
+	power_down_disable = <1>;
+};
+
+&tdmb {
+	pinctrl-names = "tdm_pins","tdmout_a_gpio";
+	pinctrl-0 = <
+			&tdmb_pin
+			&tdm_d0_pins
+			&tdmb_clk_pins>;
+	pinctrl-1 = <&tdmout_b_gpio>;
+};
+
+&pdma {
+	pinctrl-names = "pdm_pins";
+	pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+		pinctrl-names = "spdif_pins",
+			"spdif_pins_mute";
+		pinctrl-0 = <&spdifout_a>;
+		pinctrl-1 = <&spdifout_a_mute>;
+};
+
+&spdifb {
+		pinctrl-names = "spdif_pins",
+			"spdif_pins_mute";
+		pinctrl-0 = <&spdifout_b>;
+		pinctrl-1 = <&spdifout_b_mute>;
+};
diff --git a/arch/arm64/configs/amlogic_gki.fragment b/arch/arm64/configs/amlogic_gki.fragment
index 2b72e8f..7410ceb 100644
--- a/arch/arm64/configs/amlogic_gki.fragment
+++ b/arch/arm64/configs/amlogic_gki.fragment
@@ -33,6 +33,7 @@
 CONFIG_AMLOGIC_DDR_BANDWIDTH_S5=y
 CONFIG_AMLOGIC_DDR_BANDWIDTH_S7=y
 CONFIG_AMLOGIC_DDR_BANDWIDTH_S6=y
+CONFIG_AMLOGIC_DDR_BANDWIDTH_T6D=y
 CONFIG_AMLOGIC_DMC_MONITOR=y
 CONFIG_AMLOGIC_DMC_DEV_ACCESS=y
 CONFIG_AMLOGIC_DMC_MONITOR_S4=y
@@ -43,6 +44,7 @@
 CONFIG_AMLOGIC_DMC_MONITOR_S5=y
 CONFIG_AMLOGIC_DMC_MONITOR_S7=y
 CONFIG_AMLOGIC_DMC_MONITOR_S6=y
+CONFIG_AMLOGIC_DMC_MONITOR_T6D=y
 
 # amlogic-debug.ko
 CONFIG_AMLOGIC_DEBUG=m
@@ -113,6 +115,9 @@
 # amlogic-clk-soc-s7d.ko
 CONFIG_AMLOGIC_COMMON_CLK_S7D=m
 
+# amlogic-clk-soc-t6d.ko
+CONFIG_AMLOGIC_COMMON_CLK_T6D=m
+
 # amlogic-pinctrl-soc-s4.ko
 CONFIG_AMLOGIC_PINCTRL_MESON_S4=m
 
@@ -152,6 +157,9 @@
 # amlogic-pinctrl-soc-s6.ko
 CONFIG_AMLOGIC_PINCTRL_MESON_S6=m
 
+# amlogic-pinctrl-soc-t6d.ko
+CONFIG_AMLOGIC_PINCTRL_MESON_T6D=m
+
 # amlogic-secmon.ko
 CONFIG_AMLOGIC_SECMON=m
 CONFIG_AMLOGIC_DOLBY_FW=y
diff --git a/arch/arm64/configs/daisy_u_common14-5.15_devconfig b/arch/arm64/configs/daisy_u_common14-5.15_devconfig
index b4bc6bd..986c015 100644
--- a/arch/arm64/configs/daisy_u_common14-5.15_devconfig
+++ b/arch/arm64/configs/daisy_u_common14-5.15_devconfig
@@ -1,5 +1,7 @@
 # amlogic-amfc.ko
 CONFIG_AMLOGIC_AMFC=m
+CONFIG_AMFC_T6D=y
+CONFIG_AMFC_BASE=0xFE092000
 
 # aml-erofs.ko
 CONFIG_AMLOGIC_EROFS=m
diff --git a/modules.bzl b/modules.bzl
index 21762f0..3a15f83 100644
--- a/modules.bzl
+++ b/modules.bzl
@@ -43,6 +43,7 @@
     "common_drivers/drivers/clk/meson/amlogic-clk-soc-t7.ko",
     "common_drivers/drivers/clk/meson/amlogic-clk-soc-tm2.ko",
     "common_drivers/drivers/clk/meson/amlogic-clk-soc-s7d.ko",
+    "common_drivers/drivers/clk/meson/amlogic-clk-soc-t6d.ko",
     "common_drivers/drivers/cpufreq/amlogic-cpufreq.ko",
     "common_drivers/drivers/cpu_info/amlogic-cpuinfo.ko",
     "common_drivers/drivers/crypto/amlogic-crypto-dma.ko",
@@ -70,6 +71,7 @@
     "common_drivers/drivers/gpio/amlogic-pinctrl-soc-tm2.ko",
     "common_drivers/drivers/gpio/amlogic-pinctrl-soc-s7.ko",
     "common_drivers/drivers/gpio/amlogic-pinctrl-soc-s7d.ko",
+    "common_drivers/drivers/gpio/amlogic-pinctrl-soc-t6d.ko",
     "common_drivers/drivers/host/amlogic-host.ko",
     "common_drivers/drivers/hwspinlock/amlogic-hwspinlock.ko",
     "common_drivers/drivers/i2c/busses/amlogic-i2c.ko",