--- /dev/null
+/*
+ * arch/arm64/boot/dts/amlogic/gxl_p212_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_normal.dtsi"
+/ {
+ model = "Amlogic";
+ amlogic-dt-id = "gxl_p212_1g";
+ compatible = "amlogic, Gxl";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO;
+ serial1 = &uart_A;
+ serial2 = &uart_B;
+ serial3 = &uart_C;
+ 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 */
+ 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_reserved:linux,di_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /** 10x3133440=30M(0x1e) support 8bit **/
+ size = <0x0 0x2000000>;
+ alignment = <0x0 0x400000>;
+ };
+ ion_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x1000000>;
+ 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 = "shared-dma-pool";
+ size = <0x0 0x0>;
+ };
+
+ codec_mm_cma:linux,codec_mm_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* ion_codec_mm max can alloc size 80M*/
+ size = <0x0 0x10400000>;
+ 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;
+ };
+ };
+
+ bt-dev{
+ compatible = "amlogic, bt-dev";
+ dev_name = "bt-dev";
+ status = "okay";
+ gpio_reset = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
+ };
+
+ wifi{
+ compatible = "amlogic, aml_wifi";
+ dev_name = "aml_wifi";
+ status = "okay";
+ interrupt_pin = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
+ 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 30040 0>;
+ duty-cycle = <15020>;
+ times = <8>;
+ };
+ pwm_channel2_conf {
+ pwms = <&pwm_ef MESON_PWM_2 30030 0>;
+ duty-cycle = <15015>;
+ 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 = <400000>;
+ f_max = <100000000>;
+ 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_1bit_pins",
+ "sd_clk_cmd_uart_pins",
+ "sd_1bit_uart_pins",
+ "sd_to_ao_uart_pins",
+ "ao_to_sd_uart_pins",
+ "ao_to_sd_jtag_pins",
+ "sd_to_ao_jtag_pins";
+ pinctrl-0 = <&sd_all_pins>;
+ pinctrl-1 = <&sd_clk_cmd_pins>;
+ pinctrl-2 = <&sd_1bit_pins>;
+ pinctrl-3 = <&sd_to_ao_uart_clr_pins
+ &sd_clk_cmd_pins &ao_to_sd_uart_pins>;
+ pinctrl-4 = <&sd_to_ao_uart_clr_pins
+ &sd_1bit_pins &ao_to_sd_uart_pins>;
+ pinctrl-5 = <&sd_all_pins &sd_to_ao_uart_pins>;
+ pinctrl-6 = <&sd_to_ao_uart_clr_pins &ao_to_sd_uart_pins>;
+ pinctrl-7 = <&sd_to_ao_uart_clr_pins &ao_to_sd_uart_pins>;
+ pinctrl-8 = <&sd_all_pins &sd_to_ao_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>;
+ };
+
+ vdac {
+ compatible = "amlogic, vdac";
+ dev_name = "vdac";
+ status = "okay";
+ };
+
+ 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 */
+ /* s905x */
+ 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 = <5>; /* 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>;
+ };
+
+ sysled {
+ compatible = "amlogic, sysled";
+ dev_name = "sysled";
+ status = "disabled";
+ led_gpio = <&gpio GPIODV_24 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_pin = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
+ interrupts = <0 70 1
+ 0 71 2>;
+ interrupt-names = "irq_keyup", "irq_keydown";
+ };
+ 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 0x01800000 0x00100000>;
+ /* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x01851000*/
+ 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>;
+ /*1920*1080*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 = "disabled";
+ 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";
+ /*
+ * nr_size(byte) = 1920*544*2(yuv422 8bit) |
+ * 1920*544*2*12/8(yuv422 10bit)
+ * | 1920*544*2*10/8(yuv422 10bit full pack mode)
+ */
+ /* mtn_size(byte) = 1920*544/2 */
+ /* count_size(byte) = 1920*544/2 */
+ buffer-size = <3133440>;
+ hw-version = <2>;
+ };
+
+ 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*/
+ };
+
+ unifykey{
+ compatible = "amlogic, unifykey";
+ status = "ok";
+
+ unifykey-num = <15>;
+ 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>;
+
+ 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";
+ };
+ };//End unifykey
+
+};
+&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>;
+};