
/*
 * arch/arm64/boot/dts/amlogic/gxl_p241_v2-1g.dts
 *
 * Copyright (C) 2017 Amlogic, Inc. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 */

/dts-v1/;

#include "mesongxl.dtsi"
#include "partition_mbox_p241.dtsi"
/ {
	model = "Amlogic";
	amlogic-dt-id = "gxl_p241_v2-1g";
	compatible = "amlogic, Gxl";
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		serial0 = &uart_AO;
		serial1 = &uart_C;
		serial2 = &uart_B;
		serial3 = &uart_A;
		serial4 = &uart_AO_B;
	};

	ion_dev {
		compatible = "amlogic, ion_dev";
		memory-region = <&ion_reserved>;
	};

	memory@00000000 {
		device_type = "memory";
		linux,usable-memory = <0x0 0x0100000 0x0 0x3ff00000>;
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;
		/* global autoconfigured region for contiguous allocations */
		ramoops@0x07400000 {
			compatible = "ramoops";
			reg = <0x0 0x07400000 0x0 0x00100000>;
			record-size = <0x8000>;
			console-size = <0x8000>;
			ftrace-size = <0x0>;
			pmsg-size = <0x8000>;
		};

		secmon_reserved:linux,secmon {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x0 0x400000>;
			alignment = <0x0 0x400000>;
			alloc-ranges = <0x0 0x05000000 0x0 0x400000>;
		};
		secos_reserved:linux,secos {
			status = "disable";
			compatible = "amlogic, aml_secos_memory";
			reg = <0x0 0x05300000 0x0 0x2000000>;
			no-map;
		};
		logo_reserved:linux,meson-fb {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x0 0x400000>;
			alignment = <0x0 0x400000>;
			alloc-ranges = <0x0 0x3fc00000 0x0 0x400000>;
		};
		//don't put other dts in front of logo_reserved

		//di_reserved:linux,di {
		//	compatible = "amlogic, di-mem";
			/** 10x3133440=30M(0x1e) support 8bit **/
		//	size = <0x0 0x1e00000>;
			//no-map;
		//};
		/*di CMA pool */
		di_cma_reserved:linux,di_cma {
			compatible = "shared-dma-pool";
			reusable;
			/** 10x3552320=34M(0x22) support 8bit **/
			/** 10x44596800=44M(0x2c) support 12bit **/
			/** 10x4074560=39M(0x27) support 10bit **/
			size = <0x0 0x02400000>;
			alignment = <0x0 0x400000>;
		};
		ion_reserved:linux,ion-dev {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x0 0x2400000>;
			alignment = <0x0 0x400000>;
		};

		/*  vdin0 CMA pool */
		//vdin0_cma_reserved:linux,vdin0_cma {
		//	compatible = "shared-dma-pool";
		//	linux,phandle = <4>;
		//	reusable;
		/* 1920x1080x2x4  =16+4 M */
		//	size = <0x0 0x01400000>;
		//	alignment = <0x0 0x400000>;
		//};
		/*  vdin1 CMA pool */
		vdin1_cma_reserved:linux,vdin1_cma {
			compatible = "shared-dma-pool";
			reusable;
			/* 1920x1080x2x4  =16 M */
			size = <0x0 0x01000000>;
			alignment = <0x0 0x400000>;
		};
		/*  POST PROCESS MANAGER */
		ppmgr_reserved:linux,ppmgr {
			compatible = "amlogic, ppmgr_memory";
			size = <0x0 0x0>;
			multi-use;
		};

		codec_mm_cma:linux,codec_mm_cma {
			compatible = "shared-dma-pool";
			reusable;
			/* ion_codec_mm max can alloc size 80M*/
			size = <0x0 0xd000000>;
			alignment = <0x0 0x400000>;
			linux,contiguous-region;
		};
		picdec_cma_reserved:linux,picdec {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x0 0x0>;
			alignment = <0x0 0x0>;
			linux,contiguous-region;
		};
		/* codec shared reserved */
		codec_mm_reserved:linux,codec_mm_reserved {
			compatible = "amlogic, codec-mm-reserved";
			size = <0x0 0x0>;
			alignment = <0x0 0x100000>;
			//no-map;
		};
	};

	amlogic_battery:dummy-battery {
		compatible = "amlogic, dummy-battery";
		status = "disabled";
	};

	amlogic_charger:dummy-charger {
		compatible = "amlogic, dummy-charger";
		status = "disabled";
	};

	vpu {
		clk_level = <2>;
		/* 0: 100.0M    1: 166.7M    2: 200.0M    3: 250.0M */
		/* 4: 333.3M    5: 400.0M    6: 500.0M    7: 666.7M */
	};

	uart_AO: serial@c81004c0 {
		compatible = "amlogic, meson-uart";
		reg = <0x0 0xc81004c0 0x0 0x18>;
		interrupts = <0 193 1>;
		status = "okay";
		clocks = <&xtal>;
		clock-names = "clk_uart";
		xtal_tick_en = <1>;
		fifosize = < 64 >;
		pinctrl-names = "default";
		pinctrl-0 = <&ao_uart_pins>;
		support-sysrq = <0>;	/* 0 not support , 1 support */
	};

	uart_A: serial@c11084c0 {
		compatible = "amlogic, meson-uart";
		reg = <0x0 0xc11084c0 0x0 0x18>;
		interrupts = <0 26 1>;
		status = "disable";
		clocks = <&clkc CLKID_UART0>;
		clock-names = "clk_uart";
		fifosize = < 128 >;
		pinctrl-names = "default";
		// pinctrl-0 = <&a_uart_pins>;
	};

	uart_B: serial@c11084dc {
		compatible = "amlogic, meson-uart";
		reg = <0x0 0xc11084dc 0x0 0x18>;
		interrupts = <0 75 1>;
		status = "disabled";
		clocks = <&clkc CLKID_UART1>;
		clock-names = "clk_uart";
		fifosize = < 64 >;
		pinctrl-names = "default";
		pinctrl-0 = <&b_uart_pins>;
	};

	uart_C: serial@c1108700 {
		compatible = "amlogic, meson-uart";
		reg = <0x0 0xc1108700 0x0 0x18>;
		interrupts = <0 93 1>;
		status = "okay";
		clocks = <&clkc CLKID_UART2>;
		clock-names = "clk_uart";
		fifosize = < 64 >;
		pinctrl-names = "default";
		pinctrl-0 = <&c_uart_pins>;
	};

	uart_AO_B: serial@c81004e0 {
		compatible = "amlogic, meson-uart";
		reg = <0x0 0xc81004e0 0x0 0x18>;
		interrupts = <0 197 1>;
		status = "disable";
		clocks = <&xtal>;
		clock-names = "clk_uart";
		fifosize = < 64 >;
		pinctrl-names = "default";
		pinctrl-0 = <&ao_b_uart_pins>;
	};

	bt-dev{
		compatible = "amlogic, bt-dev";
		dev_name = "bt-dev";
		status = "okay";
		gpio_reset = <&gpio       GPIOX_12       GPIO_ACTIVE_HIGH>;
	};

	wifi{
		compatible = "amlogic, aml_wifi";
		dev_name = "aml_wifi";
		status = "okay";
		interrupt_pin = <&gpio       GPIOX_7       GPIO_ACTIVE_HIGH>;
		interrupts = <	0 68 4>;
		irq_trigger_type = "GPIO_IRQ_LOW";
		dhd_static_buf;    //dhd_static_buf support
		power_on_pin = <&gpio       GPIOX_6       GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_32k_pins>;
		pwm_config = <&wifi_pwm_conf>;
	};

	wifi_pwm_conf:wifi_pwm_conf{
		pwm_channel1_conf {
			pwms = <&pwm_ef MESON_PWM_0 30541 0>;
			duty-cycle = <15270>;
			times = <8>;
		};
		pwm_channel2_conf {
			pwms = <&pwm_ef MESON_PWM_2 30500 0>;
			duty-cycle = <15250>;
			times = <12>;
		};
	};

	sd_emmc_c: emmc@d0074000 {
		status = "okay";
		compatible = "amlogic, meson-mmc-gxl";
		reg = <0x0 0xd0074000 0x0 0x2000>;
		interrupts = <0 218 1>;
		pinctrl-names = "emmc_clk_cmd_pins", "emmc_all_pins";
		pinctrl-0 = <&emmc_clk_cmd_pins>;
		pinctrl-1 = <&emmc_conf_pull_up &emmc_conf_pull_done>;
		clocks = <&clkc CLKID_SD_EMMC_C>,
			   <&clkc CLKID_SD_EMMC_C_P0_COMP>,
			   <&clkc CLKID_FCLK_DIV2>;
		clock-names = "core", "clkin0", "clkin1";

		bus-width = <8>;
		cap-sd-highspeed;
		cap-mmc-highspeed;
		mmc-ddr-1_8v;
		mmc-hs200-1_8v;

		max-frequency = <200000000>;
		non-removable;
		disable-wp;
		emmc {
			pinname = "emmc";
			ocr_avail = <0x200080>; /**VDD voltage 3.3 ~ 3.4 */
			caps = "MMC_CAP_8_BIT_DATA",
				 "MMC_CAP_MMC_HIGHSPEED",
				 "MMC_CAP_SD_HIGHSPEED",
				 "MMC_CAP_NONREMOVABLE",
				 "MMC_CAP_1_8V_DDR",
				 "MMC_CAP_HW_RESET",
				 "MMC_CAP_ERASE",
				 "MMC_CAP_CMD23";
			// caps2 = "MMC_CAP2_HS200", "MMC_CAP2_HS400";
			f_min = <300000>;
			f_max = <50000000>;
			max_req_size = <0x20000>; /**128KB*/
			gpio_dat3 = <&gpio BOOT_3 GPIO_ACTIVE_HIGH>;
			hw_reset = <&gpio BOOT_9 GPIO_ACTIVE_HIGH>;
			card_type = <1>;
			/* 1:mmc card(include eMMC),
			 * 2:sd card(include tSD)
			 */
		};
	};

	sd_emmc_b:sd@d0072000 {
		status = "okay";
		compatible = "amlogic, meson-mmc-gxl";
		reg = <0x0 0xd0072000 0x0 0x2000>;
		interrupts = <0 217 1>;
		pinctrl-names = "sd_all_pins",
			"sd_clk_cmd_pins",
			"sd_clk_cmd_uart_pins",
			"sd_to_ao_uart_pins",
			"ao_to_sd_uart_pins";
		pinctrl-0 = <&sd_all_pins>;
		pinctrl-1 = <&sd_clk_cmd_pins>;
		pinctrl-2 = <&sd_clk_cmd_pins &ao_to_sd_uart_pins>;
		pinctrl-3 = <&sd_to_ao_uart_pins>;
		pinctrl-4 = <&ao_to_sd_uart_pins>;
		clocks = <&clkc CLKID_SD_EMMC_B>,
			   <&clkc CLKID_SD_EMMC_B_P0_COMP>,
			   <&clkc CLKID_FCLK_DIV2>;
		clock-names = "core", "clkin0", "clkin1";

		bus-width = <4>;
		cap-sd-highspeed;
		max-frequency = <100000000>;
		disable-wp;
		sd {
			pinname = "sd";
			ocr_avail = <0x200080>; /**VDD voltage 3.3 ~ 3.4 */
			caps = "MMC_CAP_4_BIT_DATA",
				 "MMC_CAP_MMC_HIGHSPEED",
				 "MMC_CAP_SD_HIGHSPEED";
			/* "MMC_CAP_UHS_SDR12",
			 * "MMC_CAP_UHS_SDR25",
			 * "MMC_CAP_UHS_SDR50",
			 * "MMC_CAP_UHS_SDR104";
			 */
			f_min = <400000>;
			f_max = <100000000>;
			max_req_size = <0x20000>; /**128KB*/
			gpio_dat3 = <&gpio CARD_4 GPIO_ACTIVE_HIGH>;
			jtag_pin = <&gpio CARD_0 GPIO_ACTIVE_HIGH>;
			gpio_cd = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
			card_type = <5>;
			/* 0:unknown,
			 * 1:mmc card(include eMMC),
			 * 2:sd card(include tSD),
			 * 3:sdio device(ie:sdio-wifi),
			 * 4:SD combo (IO+mem) card,
			 * 5:NON sdio device(means sd/mmc card),
			 * other:reserved
			 */
		};
	};

	sd_emmc_a:sdio@d0070000 {
		status = "okay";
		compatible = "amlogic, meson-mmc-gxl";
		reg = <0x0 0xd0070000 0x0 0x2000>;
		interrupts = <0 216 4>;
		pinctrl-names = "sdio_clk_cmd_pins", "sdio_all_pins";
		pinctrl-0 = <&sdio_clk_cmd_pins>;
		pinctrl-1 = <&sdio_all_pins>;
		clocks = <&clkc CLKID_SD_EMMC_A>,
			   <&clkc CLKID_SD_EMMC_A_P0_COMP>,
			   <&clkc CLKID_FCLK_DIV2>;
		clock-names = "core", "clkin0", "clkin1";

		bus-width = <4>;
		cap-sd-highspeed;
		cap-mmc-highspeed;
		max-frequency = <100000000>;
		non-removable;
		disable-wp;
		sdio {
			pinname = "sdio";
			ocr_avail = <0x200080>; /**VDD voltage 3.3 ~ 3.4 */
			caps = "MMC_CAP_4_BIT_DATA",
				 "MMC_CAP_MMC_HIGHSPEED",
				 "MMC_CAP_SD_HIGHSPEED",
				 "MMC_CAP_NONREMOVABLE",
				 "MMC_CAP_UHS_SDR12",
				 "MMC_CAP_UHS_SDR25",
				 "MMC_CAP_UHS_SDR50",
				 "MMC_CAP_UHS_SDR104",
				 "MMC_PM_KEEP_POWER",
				 "MMC_CAP_SDIO_IRQ";
			f_min = <400000>;
			f_max = <200000000>;
			max_req_size = <0x20000>; /**128KB*/
			card_type = <3>;
			/* 3:sdio device(ie:sdio-wifi),
			 * 4:SD combo (IO+mem) card
			 */
		};
	};
	mtd_nand{
		compatible = "amlogic, aml_mtd_nand";
		dev_name = "mtdnand";
		status = "disabled";
		reg = <0x0 0xd0074800 0x0 0x200>;
		interrupts = <	0 34 1 >;
		pinctrl-names = "nand_rb_mod","nand_norb_mod", "nand_cs_only";
		pinctrl-0 = <&all_nand_pins>;
		pinctrl-1 = <&all_nand_pins>;
		pinctrl-2 = <&nand_cs_pins>;
		device_id = <0>;
		plat-names = "bootloader","nandnormal";
		plat-num = <2>;
		plat-part-0 = <&bootloader>;
		plat-part-1 = <&nandnormal>;
		bootloader: bootloader{
			enable_pad ="ce0";
			busy_pad = "rb0";
			timming_mode = "mode5";
			bch_mode = "bch60_1k";
			t_rea = <20>;
			t_rhoh = <15>;
			chip_num = <1>;
			part_num = <0>;
			rb_detect = <1>;
		};
		nandnormal: nandnormal{
			enable_pad ="ce0","ce1";
			busy_pad = "rb0","rb1";
			timming_mode = "mode5";
			bch_mode = "bch60_1k";
			plane_mode = "twoplane";
			t_rea = <20>;
			t_rhoh = <15>;
			chip_num = <2>;
			part_num = <3>;
			partition = <&nand_partitions>;
			rb_detect = <1>;
		};
		nand_partitions:nand_partition{
			logo{
				offset=<0x0 0x0>;
				size=<0x0 0x200000>;
			};
			recovery{
				offset=<0x0 0x0>;
				size=<0x0 0x1000000>;
			};
			boot{
				offset=<0x0 0x0>;
				size=<0x0 0xC00000>;
			};
			system{
				offset=<0x0 0x0>;
				size=<0x0 0xDC40000>;
			};
			data{
				offset=<0xffffffff 0xffffffff>;
				size=<0x0 0x0>;
			};
		};
	};

	ethmac: ethernet@0xc9410000 {
			compatible = "amlogic, gxbb-eth-dwmac";
			reg = <0x0 0xc9410000 0x0 0x10000
			0x0 0xc8834540 0x0 0x8
			0x0 0xc8834558 0x0 0xc>;
			interrupts = <0 8 1>;
			pinctrl-names = "external_eth_pins";
			pinctrl-0 = <&external_eth_pins>;
			rst_pin-gpios = <&gpio GPIOZ_14 0>;
			GPIOZ4_pin-gpios = <&gpio GPIOZ_4 0>;
			GPIOZ5_pin-gpios = <&gpio GPIOZ_5 0>;
			mc_val_internal_phy = <0x1800>;
			mc_val_external_phy = <0x1621>;
			cali_val = <0x20000>;
			interrupt-names = "macirq";
			clocks = <&clkc CLKID_ETH>;
			clock-names = "ethclk81";
			internal_phy=<1>;
	};

	aml_sensor0: aml-sensor@0 {
		compatible = "amlogic, aml-thermal";
		device_name = "thermal";
		#thermal-sensor-cells = <1>;
		cooling_devices {
			cpufreq_cool_cluster0 {
				min_state = <1000000>;
				dyn_coeff = <140>;
				cluster_id = <0>;
				node_name = "cpufreq_cool0";
				device_type = "cpufreq";
			};
			cpucore_cool_cluster0 {
				min_state = <1>;
				dyn_coeff = <0>;
				cluster_id = <0>;
				node_name = "cpucore_cool0";
				device_type = "cpucore";
			};
			gpufreq_cool {
				min_state = <400>;
				dyn_coeff = <437>;
				cluster_id = <0>;
				node_name = "gpufreq_cool0";
				device_type = "gpufreq";
			};
			gpucore_cool {
				min_state = <1>;
				dyn_coeff = <0>;
				cluster_id = <0>;
				node_name = "gpucore_cool0";
				device_type = "gpucore";
			};
		};
		cpufreq_cool0:cpufreq_cool0 {
			#cooling-cells = <2>; /* min followed by max */
		};
		cpucore_cool0:cpucore_cool0 {
			#cooling-cells = <2>; /* min followed by max */
		};
		gpufreq_cool0:gpufreq_cool0 {
			#cooling-cells = <2>; /* min followed by max */
		};
		gpucore_cool0:gpucore_cool0 {
			#cooling-cells = <2>; /* min followed by max */
		};
	};
	thermal-zones {
		soc_thermal {
			polling-delay = <1000>;
			polling-delay-passive = <100>;
			sustainable-power = <2150>;

			thermal-sensors = <&aml_sensor0 3>;

			trips {
				switch_on: trip-point@0 {
					temperature = <70000>;
					hysteresis = <1000>;
					type = "passive";
				};
				control: trip-point@1 {
					temperature = <80000>;
					hysteresis = <1000>;
					type = "passive";
				};
				hot: trip-point@2 {
					temperature = <85000>;
					hysteresis = <5000>;
					type = "hot";
				};
				critical: trip-point@3 {
					temperature = <260000>;
					hysteresis = <1000>;
					type = "critical";
				};
			};

			cooling-maps {
				cpufreq_cooling_map {
					trip = <&control>;
					cooling-device = <&cpufreq_cool0 0 4>;
					contribution = <1024>;
				};
				cpucore_cooling_map {
					trip = <&control>;
					cooling-device = <&cpucore_cool0 0 3>;
					contribution = <1024>;
				};
				gpufreq_cooling_map {
					trip = <&control>;
					cooling-device = <&gpufreq_cool0 0 4>;
					contribution = <1024>;
				};
				gpucore_cooling_map {
					trip = <&control>;
					cooling-device = <&gpucore_cool0 0 2>;
					contribution = <1024>;
				};
			};
		};
	};

	dwc3: dwc3@c9000000 {
		compatible = "synopsys, dwc3";
		reg = <0x0 0xc9000000 0x0 0x100000>;
		interrupts = <0 30 4>;
		usb-phy = <&usb2_phy>, <&usb3_phy>;
		cpu-type = "gxl";
		clock-src = "usb3.0";
	};

	usb2_phy: usb2phy@d0078000 {
		compatible = "amlogic, amlogic-new-usb2";
		portnum = <3>;
		reg = <0x0 0xd0078000 0x0 0x80
					0x0 0xc1104408 0x0 0x4>;
	};

	usb3_phy: usb3phy@d0078080 {
		compatible = "amlogic, amlogic-new-usb3";
		portnum = <0>;
		reg = <0x0 0xd0078080 0x0 0x20>;
	};

	dwc2_a {
		compatible = "amlogic, dwc2";
		device_name = "dwc2_a";
		reg = <0x0 0xc9100000 0x0 0x40000>;
		status = "okay";
		interrupts = <0 31 4>;
		pl-periph-id = <0>; /** lm name */
		clock-src = "usb0"; /** clock src */
		port-id = <0>;  /** ref to mach/usb.h */
		port-type = <2>;        /** 0: otg, 1: host, 2: slave */
		port-speed = <0>; /** 0: default, high, 1: full */
		port-config = <0>; /** 0: default */
		port-dma = <0>; /** 0: default ... 6: disable*/
		port-id-mode = <0>; /** 0: hardware, 1: sw_host, 2: sw_slave*/
		usb-fifo = <728>;
		cpu-type = "gxl";
		controller-type = <1>; /** 0: normal, 1: host, 2: device*/
		phy-reg = <0xd0078000>;
		phy-reg-size = <0xa0>;
		clocks = <&clkc CLKID_USB_GENERAL
			&clkc CLKID_USB1_TO_DDR
			&clkc CLKID_USB1>;
		clock-names = "usb_general",
						"usb1",
						"usb1_to_ddr";
	};

	meson-amvideom {
		compatible = "amlogic, amvideom";
		dev_name = "amvideom";
		status = "okay";
		interrupts = <0 3 1>;
		interrupt-names = "vsync";
	};

	vout {
		compatible = "amlogic, vout";
		dev_name = "vout";
		status = "okay";
		fr_auto_policy = <0>;
	};

	cvbsout {
		compatible = "amlogic, cvbsout-gxl";
		dev_name = "cvbsout";
		status = "okay";
		clocks = <&clkc CLKID_VCLK2_ENCI
			&clkc CLKID_VCLK2_VENCI0
			&clkc CLKID_VCLK2_VENCI1
			&clkc CLKID_DAC_CLK>;
		clock-names = "venci_top_gate",
			"venci_0_gate",
			"venci_1_gate",
			"vdac_clk_gate";

		/* performance: reg_address, reg_value */
		/* s805x */
		performance = <0x1bf0  0x9
			0x1b56  0x343
			0x1b12  0x8080
			0x1b05  0xfd
			0x1c59  0xf752
			0xffff  0x0>; /* ending flag */
	};

	amhdmitx: amhdmitx{
		compatible = "amlogic, amhdmitx";
		dev_name = "amhdmitx";
		status = "okay";
		vend-data = <&vend_data>;
		pinctrl-names="hdmitx_hpd", "hdmitx_ddc";
		pinctrl-0=<&hdmitx_hpd>;
		pinctrl-1=<&hdmitx_ddc>;
		/* HPD, 57 + 32 = 89; CEC, 151 + 32 = 183*/
		interrupts = <0 57 1>;
		interrupt-names = "hdmitx_hpd";
		/* 0:M8B 1:GXBB 2:GXTVBB 3:GXL 4:GXM
		 * 5:TXL 6:TXLX 7:AXG 8:GXLX 9:TXHD
		 */
		ic_type = <3>;
		vend_data: vend_data{ /* Should modified by Customer */
			vendor_name = "Amlogic"; /* Max Chars: 8 */
			/* standards.ieee.org/develop/regauth/oui/oui.txt */
			vendor_id = <0x000000>;
			product_desc = "MBox Meson Ref"; /* Max Chars: 16 */
		};
	};

	aocec: aocec{
		compatible = "amlogic, amlogic-aocec";
		device_name = "aocec";
		status = "okay";
		vendor_id = <0x000000>;
		cec_osd_string = "MBox"; /* Max Chars: 14    */
		cec_version = <6>; /* 5: 1.4, 6: 2.0 */
		port_num = <1>;
		arc_port_mask = <0x0>;
		interrupts = <0 199 1>;
		interrupt-names = "hdmi_aocec";
		pinctrl-names = "default";
		pinctrl-0=<&hdmitx_aocec>;
		reg = <0x0 0xc810023c 0x0 0x4
		       0x0 0xc8100000 0x0 0x200>;
		reg-names = "ao_exit","ao";
	};

	sysled {
		compatible = "amlogic, sysled";
		dev_name = "sysled";
		status = "okay";
		led_gpio = <&gpio GPIODV_27 GPIO_ACTIVE_HIGH>;
		led_active_low = <1>;
	};

	codec_io {
		compatible = "amlogic, codec_io";
		#address-cells=<2>;
		#size-cells=<2>;
		ranges;
		io_cbus_base{
			reg = <0x0 0xC1100000 0x0 0x100000>;
		};
		io_dos_base{
			reg = <0x0 0xc8820000 0x0 0x10000>;
		};
		io_hiubus_base{
			reg = <0x0 0xc883c000 0x0 0x2000>;
		};
		io_aobus_base{
			reg = <0x0 0xc8100000 0x0 0x100000>;
		};
		io_vcbus_base{
			reg = <0x0 0xd0100000 0x0 0x40000>;
		};
		io_dmc_base{
			reg = <0x0 0xc8838000 0x0 0x400>;
		};
	};

	codec_mm {
		compatible = "amlogic, codec, mm";
		memory-region = <&codec_mm_cma &codec_mm_reserved>;
		dev_name = "codec_mm";
		status = "okay";
	};

	canvas{
		compatible = "amlogic, meson, canvas";
		dev_name = "amlogic-canvas";
		status = "ok";
		reg = <0x0 0xc8838000 0x0 0x400>;
	};

	mesonstream {
		compatible = "amlogic, codec, streambuf";
		dev_name = "mesonstream";
		status = "okay";
		clocks = <&clkc CLKID_DOS_PARSER
			&clkc CLKID_DEMUX
			&clkc CLKID_DOS
			&clkc CLKID_VDEC_MUX
			&clkc CLKID_HCODEC_MUX
			&clkc CLKID_HEVC_MUX>;
		clock-names = "parser_top",
			"demux",
			"vdec",
			"clk_vdec_mux",
			"clk_hcodec_mux",
			"clk_hevc_mux";
	};

	vdec {
		compatible = "amlogic, vdec";
		dev_name = "vdec.0";
		status = "okay";
		interrupts = <0 3 1
			0 23 1
			0 32 1
			0 43 1
			0 44 1
			0 45 1>;
		interrupt-names = "vsync",
			"demux",
			"parser",
			"mailbox_0",
			"mailbox_1",
			"mailbox_2";
	};

	gpio_keypad{
		compatible = "amlogic, gpio_keypad";
		status = "okay";
		scan_period = <20>;
		key_num = <1>;
		key_name = "power";
		key_code = <116>;
		key-gpios = <&gpio_ao  GPIOAO_2  GPIO_ACTIVE_HIGH>;
		detect_mode = <0>;/*0:polling mode, 1:irq mode*/
	};
	meson-fb {
		compatible = "amlogic, meson-gxl";
		memory-region = <&logo_reserved>;
		dev_name = "meson-fb";
		status = "okay";
		interrupts = <0 3 1
			0 89 1>;
		interrupt-names = "viu-vsync", "rdma";
		mem_size = <0x00400000 0x00b00000 0x00100000>;
		/* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x0b51000*/
		display_mode_default = "720p60hz";
		scale_mode = <1>;
		/** 0:VPU free scale 1:OSD free scale 2:OSD super scale */
		display_size_default = <1280 720 1280 2160 32>;
		/*1280*720*4*3 = 0xA8C000*/
		logo_addr = "0x3fc00000";
	};
	ge2d {
		compatible = "amlogic, ge2d-gxl";
		dev_name = "ge2d";
		status = "okay";
		interrupts = <0 150 1>;
		interrupt-names = "ge2d";
		clocks = <&clkc CLKID_VAPB_MUX>,
			<&clkc CLKID_G2D>,
			<&clkc CLKID_GE2D_GATE>;
		clock-names = "clk_vapb_0",
			"clk_ge2d",
			"clk_ge2d_gate";
	};


	/* AUDIO MESON DEVICES */
	i2s_dai: I2S {
		#sound-dai-cells = <0>;
		compatible = "amlogic, aml-i2s-dai";
		clocks =
			<&clkc CLKID_MPLL2>,
			<&clkc CLKID_AMCLK_COMP>,
			<&clkc CLKID_AIU_GLUE>,
			<&clkc CLKID_IEC958>,
			<&clkc CLKID_I2S_OUT>,
			<&clkc CLKID_AMCLK>,
			<&clkc CLKID_AIFIFO2>,
			<&clkc CLKID_MIXER>,
			<&clkc CLKID_MIXER_IFACE>,
			<&clkc CLKID_ADC>,
			<&clkc CLKID_AIU_TOP>,
			<&clkc CLKID_AOCLK_GATE>,
			<&clkc CLKID_I2S_SPDIF>;
		clock-names =
			"mpll",
			"mclk",
			"top_glue",
			"aud_buf",
			"i2s_out",
			"amclk_measure",
			"aififo2",
			"aud_mixer",
			"mixer_reg",
			"adc",
			"top_level",
			"aoclk",
			"aud_in";
		i2s_pos_sync = <0>;
		/*DMIC;*/  /* I2s Mic or Dmic, default for I2S mic */
	};
	dmic:snd_dmic {
		#sound-dai-cells = <0>;
		compatible = "aml, aml_snd_dmic";
		reg = <0x0 0xd0042000 0x0 0x2000>;
		status = "okay";
		resets = <
			&clkc CLKID_PDM_GATE
		>;
		reset-names =	"pdm";
		pinctrl-names = "audio_dmic";
		pinctrl-0 = <&aml_dmic_pins>;
		clocks = <&clkc CLKID_PDM_COMP>,
			<&clkc CLKID_AMCLK_COMP>;
		clock-names = "pdm", "mclk";
	};
	spdif_dai: SPDIF {
		#sound-dai-cells = <0>;
		compatible = "amlogic, aml-spdif-dai";
		clocks =
			<&clkc CLKID_MPLL1>,
			<&clkc CLKID_I958_COMP>,
			<&clkc CLKID_AMCLK_COMP>,
			<&clkc CLKID_I958_COMP_SPDIF>,
			<&clkc CLKID_CLK81>,
			<&clkc CLKID_IEC958>,
			<&clkc CLKID_IEC958_GATE>;
		clock-names =
			"mpll1",
			"i958",
			"mclk",
			"spdif",
			"clk_81",
			"iec958",
			"iec958_amclk";
	};
	pcm_dai: PCM {
		#sound-dai-cells = <0>;
		compatible = "amlogic, aml-pcm-dai";
		pinctrl-names = "audio_pcm";
		// pinctrl-0 = <&audio_pcm_pins>;
		clocks =
			<&clkc CLKID_MPLL0>,
			<&clkc CLKID_PCM_MCLK_COMP>,
			<&clkc CLKID_PCM_SCLK_GATE>;
		clock-names =
			"mpll0",
			"pcm_mclk",
			"pcm_sclk";
		pcm_mode = <1>; /* 0=slave mode, 1=master mode */
	};
	i2s_plat: i2s_platform {
		compatible = "amlogic, aml-i2s";
		interrupts = <0 29 1>;
	};
	pcm_plat: pcm_platform {
		compatible = "amlogic, aml-pcm";
	};
	spdif_codec: spdif_codec{
		#sound-dai-cells = <0>;
		compatible = "amlogic, aml-spdif-codec";
		pinctrl-names = "audio_spdif";
		pinctrl-0 = <&audio_spdif_pins>;
	};
	pcm_codec: pcm_codec{
		#sound-dai-cells = <0>;
		compatible = "amlogic, pcm2BT-codec";
	};
	/* endof AUDIO MESON DEVICES */

	/* AUDIO board specific */
	dummy_codec:dummy{
		#sound-dai-cells = <0>;
		compatible = "amlogic, aml_dummy_codec";
		status = "disable";
	};
	amlogic_codec:t9015{
		#sound-dai-cells = <0>;
		compatible = "amlogic, aml_codec_T9015";
		reg = <0x0 0xc8832000 0x0 0x14>;
		status = "okay";
	};
	aml_sound_meson {
		compatible = "aml, meson-snd-card";
		status = "okay";
		aml-sound-card,format = "i2s";
		aml_sound_card,name = "AML-MESONAUDIO";
		aml,audio-routing =
				"Ext Spk","LOUTL",
				"Ext Spk","LOUTR";

		mute_gpio-gpios = <&gpio GPIOH_5 0>;
		mute_inv;
		hp_disable;
		hp_paraments = <800 300 0 5 1>;
		pinctrl-names = "audio_i2s";
		pinctrl-0 = <&audio_i2s_pins>;
		cpu_list = <&cpudai0 &cpudai1 &cpudai2>;
		codec_list = <&codec0 &codec1 &codec2>;
		plat_list = <&i2s_plat &i2s_plat &pcm_plat>;
		cpudai0: cpudai0 {
			sound-dai = <&i2s_dai>;
		};
		cpudai1: cpudai1 {
			sound-dai = <&spdif_dai>;
		};
		cpudai2: cpudai2 {
			sound-dai = <&pcm_dai>;
		};
		codec0: codec0 {
			sound-dai = <&amlogic_codec>;
		};
		codec1: codec1 {
			sound-dai = <&spdif_codec>;
		};
		codec2: codec2 {
			sound-dai = <&pcm_codec>;
		};
	};
	/* END OF AUDIO board specific */
	rdma{
		compatible = "amlogic, meson, rdma";
		dev_name = "amlogic-rdma";
		status = "ok";
		interrupts = <0 89 1>;
		interrupt-names = "rdma";
	};

	amvenc_avc{
		compatible = "amlogic, amvenc_avc";
		dev_name = "amvenc_avc";
		status = "okay";
		interrupts = <0 45 1>;
		interrupt-names = "mailbox_2";
	};

	hevc_enc{
		compatible = "cnm, HevcEnc";
		dev_name = "HevcEnc";
		status = "okay";
		interrupts = <0 187 1>;
		interrupt-names = "wave420l_irq";
		#address-cells=<2>;
		#size-cells=<2>;
		ranges;
		io_reg_base{
			reg = <0x0 0xc8810000 0x0 0x4000>;
		};
	};

	picdec {
		compatible = "amlogic, picdec";
		memory-region = <&picdec_cma_reserved>;
		dev_name = "picdec";
		status = "okay";
	};

	ppmgr {
		compatible = "amlogic, ppmgr";
		memory-region = <&ppmgr_reserved>;
		dev_name = "ppmgr";
		status = "okay";
	};

	deinterlace {
		compatible = "amlogic, deinterlace";
		status = "okay";
		flag_cma = <1>;/*0:use reserved;1:use cma*/
		//memory-region = <&di_reserved>;
		memory-region = <&di_cma_reserved>;
		interrupts = <0 46 1
				0 6 1>;
		interrupt-names = "de_irq",
				"timerc";
		/* mtn_size(byte) = 1920*544/2 */
		/* count_size(byte) = 1920*544/2 */
		/* mv_size(byte) = 1920*544*2/5 */
		/* mc_size(byte) = 544*2 */
		buffer-size = <3552320>;
		hw-version = <2>;
		/* reserve-iomap = "true"; */
		/* if enable nr10bit, set nr10bit-surpport to 1 */
		nr10bit-surpport = <0>;
	};

	ionvideo {
		compatible = "amlogic, ionvideo";
		dev_name = "ionvideo";
		status = "okay";
	};

	amlvideo {
		compatible = "amlogic, amlvideo";
		dev_name = "amlvideo";
		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>;
	};

	/*if you want to use vdin just modify status to "ok"*/
	vdin0 {
		compatible = "amlogic, vdin";
		/*memory-region = <&vdin0_cma_reserved>;*/
		dev_name = "vdin0";
		status = "ok";
		reserve-iomap = "true";
		flag_cma = <1>;/*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
		 */
		cma_size = <16>;
		interrupts = <0 83 1>;
		rdma-irq = <2>;
		/*clocks = <&clock CLK_FPLL_DIV5>,
		 *	<&clock CLK_VDIN_MEAS_CLK>;
		 *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)
		 */
		tv_bit_mode = <1>;
	};
	vdin1 {
		compatible = "amlogic, vdin";
		memory-region = <&vdin1_cma_reserved>;
		dev_name = "vdin1";
		status = "ok";
		reserve-iomap = "true";
		flag_cma = <0>;/*1:share with codec_mm;0:cma alone*/
		interrupts = <0 85 1>;
		rdma-irq = <4>;
		/*clocks = <&clock CLK_FPLL_DIV5>,
		 *	<&clock CLK_VDIN_MEAS_CLK>;
		 *clock-names = "fclk_div5", "cts_vdin_meas_clk";
		 */
		vdin_id = <1>;
		/*vdin write mem color depth support:
		 *bit0:support 8bit
		 *bit1:support 9bit
		 *bit2:support 10bit
		 *bit3:support 12bit
		 */
		tv_bit_mode = <1>;
	};

	amlvecm {
		compatible = "amlogic, vecm";
		dev_name = "aml_vecm";
		status = "okay";
		gamma_en = <0>;/*1:enabel ;0:disable*/
		wb_en = <0>;/*1:enabel ;0:disable*/
		cm_en = <0>;/*1:enabel ;0:disable*/
		/*1:enabel osd lut 100 table;0:disable*/
		cfg_en_osd_100 = <1>;
		/*0: 709/601  1: bt2020*/
		tx_op_color_primary = <0>;
	};

	unifykey{
		compatible = "amlogic, unifykey";
		status = "ok";

		unifykey-num = <17>;
		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>;
		unifykey-index-13= <&keysn_13>;
		unifykey-index-14= <&keysn_14>;
		unifykey-index-15= <&keysn_15>;
		unifykey-index-16= <&keysn_16>;

		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 = "hdcp";
			key-device = "secure";
			key-type = "sha1";
			key-permit = "read","write","del";
		};
		keysn_3:key_3{
			key-name = "secure_boot_set";
			key-device = "efuse";
			key-permit = "write";
		};
		keysn_4:key_4{
			key-name = "mac_bt";
			key-device = "normal";
			key-permit = "read","write","del";
			key-type  = "mac";
		};
		keysn_5:key_5{
			key-name = "mac_wifi";
			key-device = "normal";
			key-permit = "read","write","del";
			key-type = "mac";
		};
		keysn_6:key_6{
			key-name = "hdcp2_tx";
			key-device = "normal";
			key-permit = "read","write","del";
		};
		keysn_7:key_7{
			key-name = "hdcp2_rx";
			key-device = "normal";
			key-permit = "read","write","del";
		};
		keysn_8:key_8{
			key-name = "widevinekeybox";
			key-device = "secure";
			key-permit = "read","write","del";
		};
		keysn_9:key_9{
			key-name = "deviceid";
			key-device = "normal";
			key-permit = "read","write","del";
		};
		keysn_10:key_10{
			key-name = "hdcp22_fw_private";
			key-device = "secure";
			key-permit = "read","write","del";
		};
		keysn_11:key_11{
			key-name = "PlayReadykeybox25";
			key-device = "secure";
			key-permit = "read","write","del";
		};
		keysn_12:key_12{
			key-name = "prpubkeybox";// PlayReady
			key-device = "secure";
			key-permit = "read","write","del";
		};
		keysn_13:key_13{
			key-name = "prprivkeybox";// PlayReady
			key-device = "secure";
			key-permit = "read","write","del";
		};
		keysn_14:key_14{
			key-name = "attestationkeybox";// attestation key
			key-device = "secure";
			key-permit = "read","write","del";
		};
		keysn_15:key_15{
			key-name = "region_code";
			key-device = "normal";
			key-permit = "read","write","del";
		};
		keysn_16:key_16{
			key-name = "netflix_mgkid";
			key-device = "secure";
			key-permit = "read","write","del";
		};
	};//End unifykey

};

&gpu{
	/*max gpu is 650M*/
	tbl = <&clk125_cfg &clk285_cfg &clk400_cfg
		   &clk500_cfg &clk666_cfg &clk666_cfg>;
};

&efuse {
	status = "ok";
};

&pwm_ef {
	status = "okay";
};

&audio_data{
	status = "okay";
};
&spicc{
	status = "disabled";
	pinctrl-names = "spicc_pulldown","spicc_pullup";
	pinctrl-0 = <&spicc_pulldown_x8x9x11>;
	pinctrl-1 = <&spicc_pullup_x8x9x11>;
	num_chipselect = <1>;
	cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>;
	dma_en = <0>;
	dma_tx_threshold = <3>;
	dma_rx_threshold = <3>;
	dma_num_per_read_burst = <3>;
	dma_num_per_write_burst = <3>;
	delay_control = <0x15>;
	ssctl = <0>;
};

