diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile index 0e7fa41ab..37efd273b 100644 --- a/arch/arm64/boot/dts/amlogic/Makefile +++ b/arch/arm64/boot/dts/amlogic/Makefile @@ -95,3 +95,4 @@ dtb-y += s7_s905y5_bh202.dtb dtb-y += s7_s905y5_bh209.dtb dtb-y += s7_s805x3_bp202.dtb dtb-y += s7_s805x3_bp202_1.5g.dtb +dtb-y += s7d_pxp.dtb diff --git a/arch/arm64/boot/dts/amlogic/meson-s7d.dtsi b/arch/arm64/boot/dts/amlogic/meson-s7d.dtsi new file mode 100644 index 000000000..6046b9ec6 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/meson-s7d.dtsi @@ -0,0 +1,3023 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Amlogic, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "meson-ir-map.dtsi" +#include "mesong12a-bifrost.dtsi" +/ { + cpus:cpus { + #address-cells = <2>; + #size-cells = <0>; + + CPU0:cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a55","arm,armv8"; + reg = <0x0 0x0>; + enable-method = "psci"; + //cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>; + dynamic-power-coefficient = <230>; + #cooling-cells = <2>; + //clocks = <&clkc CLKID_CPU_CLK>, + // <&clkc CLKID_CPU_CLK_DYN>, + // <&clkc CLKID_SYS_PLL>; + //clock-names = "core_clk", + // "low_freq_clk_parent", + // "high_freq_clk_parent"; + multi_tables_available; + operating-points-v2 = <&cpu_opp_table0>, + <&cpu_opp_table1>, + <&cpu_opp_table2>, + <&cpu_opp_table3>; + cpu-supply = <&vddcpu0>; + voltage-tolerance = <0>; + clock-latency = <50000>; + }; + + CPU1:cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a55","arm,armv8"; + reg = <0x0 0x1>; + enable-method = "psci"; + //cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>; + dynamic-power-coefficient = <230>; + #cooling-cells = <2>; + //clocks = <&clkc CLKID_CPU_CLK>, + // <&clkc CLKID_CPU_CLK_DYN>, + // <&clkc CLKID_SYS_PLL>; + //clock-names = "core_clk", + // "low_freq_clk_parent", + // "high_freq_clk_parent"; + multi_tables_available; + operating-points-v2 = <&cpu_opp_table0>, + <&cpu_opp_table1>, + <&cpu_opp_table2>, + <&cpu_opp_table3>; + cpu-supply = <&vddcpu0>; + voltage-tolerance = <0>; + clock-latency = <50000>; + }; + + CPU2:cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a55","arm,armv8"; + reg = <0x0 0x2>; + enable-method = "psci"; + //cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>; + dynamic-power-coefficient = <230>; + #cooling-cells = <2>; + //clocks = <&clkc CLKID_CPU_CLK>, + // <&clkc CLKID_CPU_CLK_DYN>, + // <&clkc CLKID_SYS_PLL>; + //clock-names = "core_clk", + // "low_freq_clk_parent", + // "high_freq_clk_parent"; + multi_tables_available; + operating-points-v2 = <&cpu_opp_table0>, + <&cpu_opp_table1>, + <&cpu_opp_table2>, + <&cpu_opp_table3>; + cpu-supply = <&vddcpu0>; + voltage-tolerance = <0>; + clock-latency = <50000>; + }; + + CPU3:cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a55","arm,armv8"; + reg = <0x0 0x3>; + enable-method = "psci"; + //cpu-idle-states = <&CPU_SLEEP_0 &SYSTEM_SLEEP_0>; + dynamic-power-coefficient = <230>; + #cooling-cells = <2>; + //clocks = <&clkc CLKID_CPU_CLK>, + // <&clkc CLKID_CPU_CLK_DYN>, + // <&clkc CLKID_SYS_PLL>; + //clock-names = "core_clk", + // "low_freq_clk_parent", + // "high_freq_clk_parent"; + multi_tables_available; + operating-points-v2 = <&cpu_opp_table0>, + <&cpu_opp_table1>, + <&cpu_opp_table2>, + <&cpu_opp_table3>; + cpu-supply = <&vddcpu0>; + voltage-tolerance = <0>; + clock-latency = <50000>; + }; + + 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 = <4000>; + exit-latency-us = <5000>; + min-residency-us = <10000>; + }; + 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 = , + , + , + ; + }; + + timer_bc { + compatible = "amlogic,bc-timer"; + status = "disabled"; + reg= <0x0 0xfe0100D8 0x0 0x4 0x0 0xfe0100DC 0x0 0x4>; + timer_name = "Meson TimerD"; + clockevent-rating=<300>; + clockevent-shift=<20>; + clockevent-features=<0x23>; + interrupts = <0 3 1>; + bit_enable=<7>; + bit_mode=<6>; + bit_resolution=<0>; + resolution_1us=<1>; + min_delta_ns=<10>; + }; + + arm_pmu { + compatible = "arm,armv8-pmuv3"; + private-interrupts; + /* clusterb-enabled; */ + interrupts = , + , + , + ; + + reg = <0x0 0xff634680 0x0 0x4>; + cpumasks = <0xf>; + /* default 10ms */ + relax-timer-ns = <10000000>; + /* default 10000us */ + max-wait-cnt = <10000>; + }; + + gic: interrupt-controller@fff01000 { + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x0 0xfff01000 0 0x1000>, + <0x0 0xfff02000 0 0x0100>; + interrupts = ; + }; + + psci { + compatible = "arm,psci-0.2"; + method = "smc"; + }; + + meson_suspend:pm { + compatible = "amlogic, pm"; + status = "disabled"; + device_name = "aml_pm"; + extend_resume_reason; + reg = <0x0 0xfe010288 0x0 0x4>, /*SYSCTRL_STATUS_REG2*/ + <0x0 0xfe0102dc 0x0 0x4>; /*SYSCTRL_STICKY_REG7*/ + }; + + cpu_info { + compatible = "amlogic, cpuinfo"; + status = "disabled"; + cpuinfo_cmd = <0x82000044>; + }; + + soc_info { + compatible = "amlogic, socdata"; + reg = <0x0 0xfe010000 0x0 0xc>, + <0x0 0xfe010180 0x0 0x4>; + read_nocsdata_cmd =<0x82000039>; + write_nocsdata_cmd=<0x82000038>; + auth_reg_ops_cmd=<0x820000f0>; + }; + + 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 = "disabled"; + }; + + ram-dump { + compatible = "amlogic, ram_dump"; + status = "disabled"; + reg = <0x0 0xFE0102D8 0x0 4>; + reg-names = "SYSCTRL_STICKY_REG6"; + store_device = "data"; + }; + + secmon:secmon { + compatible = "amlogic, secmon"; + memory-region = <&secmon_reserved>; + in_base_func = <0x82000020>; + out_base_func = <0x82000021>; + inout_size_func = <0x8200002a>; + reserve_mem_size = <0x03300000>; + }; + + optee { + compatible = "linaro,optee-tz"; + method = "smc"; + }; + + cma_shrinker: cma_shrinker { + compatible = "amlogic, cma-shrinker"; + status = "disabled"; + adj = <0 100 200 250 900 950>; + free = <8192 12288 16384 24576 28672 32768>; + }; + + securitykey { + compatible = "aml, securitykey"; + storage_query = <0x82000060>; + storage_read = <0x82000061>; + storage_write = <0x82000062>; + storage_tell = <0x82000063>; + storage_verify = <0x82000064>; + storage_status = <0x82000065>; + storage_list = <0x82000067>; + storage_remove = <0x82000068>; + storage_in_func = <0x82000023>; + storage_out_func = <0x82000024>; + storage_block_func = <0x82000025>; + storage_size_func = <0x82000027>; + storage_set_enctype = <0x8200006A>; + storage_get_enctype = <0x8200006B>; + storage_version = <0x8200006C>; + }; + + xtal: xtal-clk { + compatible = "fixed-clock"; + clock-frequency = <24000000>; + clock-output-names = "xtal"; + #clock-cells = <0>; + }; + + vrtc: rtc@0xfe010288 { + compatible = "amlogic,meson-vrtc"; + reg = <0x0 0xfe010288 0x0 0x4>; + status = "okay"; + mboxes = <&mailbox_mhu_fifo 1>; + }; + + audio_data: audio_data { + compatible = "amlogic, audio_data"; + mem_in_base_cmd = <0x82000020>; + query_licence_cmd = <0x82000050>; + status = "disabled"; + }; + + amaudio: amaudio { + compatible = "amlogic, amaudio"; + reg = <0x0 0xfe440000 0x0 0x10000>; + reg-names = "otp_tee_base"; + status = "disabled"; + }; + + pwrdm: power-domains { + compatible = "amlogic,s7-power-domain"; + #power-domain-cells = <1>; + status = "okay"; + }; + + jtag { + compatible = "amlogic, jtag"; + status = "disabled"; + 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>; + }; + + mailbox_mhu_fifo: mhu@0 { + status = "okay"; + compatible = "amlogic, meson_mhu_fifo"; + reg = <0x0 0xfe006000 0x0 0x800>, /* mbox wr fifo */ + <0x0 0xfe006800 0x0 0x800>, /* mbox rd fifo */ + <0x0 0xfe0070c0 0x0 0x40>, /* mbox set reg */ + <0x0 0xfe007100 0x0 0x40>, /* mbox clr reg */ + <0x0 0xfe007140 0x0 0x40>, /* mbox sts reg */ + <0x0 0xfe007020 0x0 0x40>; /* mbox irqctrl reg */ + interrupts = <0 248 1>; /* irq top */ + mbox-irqctlr = <0>; + mbox-nums = <2>; + mbox-names = "ao_dev", + "ap_to_ao"; + mboxes = <&mailbox_mhu_fifo 0>, + <&mailbox_mhu_fifo 1>; + mbox-id = <0x2 0x3>; + #mbox-cells = <1>; + }; + + mbox_user: mbox-user@0 { + status = "okay"; + compatible = "amlogic, meson-mbox-user"; + mbox-nums = <1>; + mbox-names = "ree2aocpu"; + mboxes = <&mailbox_mhu_fifo 1>; + mbox-dests = ; + }; + + vddcpu0: pwm_j-regulator { + compatible = "pwm-regulator"; + // pwms = <&pwm_ij MESON_PWM_1 1500 0>; + regulator-name = "vddcpu0"; + regulator-min-microvolt = <689000>; + regulator-max-microvolt = <1049000>; + regulator-always-on; + max-duty-cycle = <1500>; + /* 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 = "disabled"; + }; + + cpu_opp_table0: cpu_opp_table0 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <769000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <769000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <769000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <769000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <769000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <769000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <799000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <829000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <859000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <889000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <929000>; + }; + opp11 { + opp-hz = /bits/ 64 <1908000000>; + opp-microvolt = <979000>; + }; + opp12 { + opp-hz = /bits/ 64 <2004000000>; + opp-microvolt = <1009000>; + }; + }; + + cpu_opp_table1: cpu_opp_table1 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <779000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <779000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <779000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <779000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <779000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <779000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <799000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <829000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <859000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <889000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <929000>; + }; + opp11 { + opp-hz = /bits/ 64 <1908000000>; + opp-microvolt = <979000>; + }; + opp12 { + opp-hz = /bits/ 64 <2004000000>; + opp-microvolt = <1009000>; + }; + }; + + cpu_opp_table2: cpu_opp_table2 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <769000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <769000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <769000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <769000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <769000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <769000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <779000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <789000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <819000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <859000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <879000>; + }; + opp11 { + opp-hz = /bits/ 64 <1908000000>; + opp-microvolt = <939000>; + }; + opp12 { + opp-hz = /bits/ 64 <2004000000>; + opp-microvolt = <989000>; + }; + }; + + cpu_opp_table3: cpu_opp_table3 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <759000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <759000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <759000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <759000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <759000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <759000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <759000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <779000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <799000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <819000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <869000>; + }; + opp11 { + opp-hz = /bits/ 64 <1908000000>; + opp-microvolt = <919000>; + }; + opp12 { + opp-hz = /bits/ 64 <2004000000>; + opp-microvolt = <959000>; + }; + }; + + cpu_opp_table0_s805c3: cpu_opp_table0_s805c3 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <769000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <769000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <769000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <769000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <769000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <769000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <799000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <829000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <859000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <889000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <929000>; + }; + }; + + cpu_opp_table1_s805c3: cpu_opp_table1_s805c3 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <779000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <779000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <779000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <779000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <779000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <779000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <799000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <829000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <859000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <889000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <929000>; + }; + }; + + cpu_opp_table2_s805c3: cpu_opp_table2_s805c3 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <769000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <769000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <769000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <769000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <769000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <769000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <779000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <789000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <819000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <859000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <879000>; + }; + }; + + cpu_opp_table3_s805c3: cpu_opp_table3_s805c3 { + compatible = "operating-points-v2"; + status = "disabled"; + opp-shared; + + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <759000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <759000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <759000>; + }; + opp03 { + opp-hz = /bits/ 64 <666666666>; + opp-microvolt = <759000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <759000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <759000>; + }; + opp06 { + opp-hz = /bits/ 64 <1404000000>; + opp-microvolt = <759000>; + }; + opp07 { + opp-hz = /bits/ 64 <1500000000>; + opp-microvolt = <779000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <799000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <819000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <869000>; + }; + }; + + cpufreq-meson { + compatible = "amlogic, cpufreq-meson"; + status = "disabled"; + }; + + saradc: saradc@fe026000 { + compatible = "amlogic,meson-s7-saradc", + "amlogic,meson-saradc"; + status = "disabled"; + #io-channel-cells = <1>; + clocks = <&xtal>, + <&clkc CLKID_SYS_SAR_ADC>, + <&clkc CLKID_SAR_ADC>, + <&clkc CLKID_SAR_ADC_SEL>; + clock-names = "clkin", "core", "adc_clk", "adc_sel"; + interrupts = , + ; + reg = <0x00 0xfe026000 0x00 0x48>; + + pd { + ctrl = <2>; /* 2bit: 0 ~ 3 */ + trim = <16>; /* 6bit: 0 ~ 63 */ + }; + }; + + 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>; + + clkc: clock-controller { + compatible = "amlogic,s7-clkc"; + #clock-cells = <1>; + reg = <0x0 0x0 0x0 0x49c>, + <0x0 0x8000 0x0 0x384>, + <0x0 0xe140 0x0 0x24>; + reg-names = "basic", "pll", + "cpu_clk"; + clocks = <&xtal>; + clock-names = "xtal"; + status = "okay"; + }; + + meson_clk_msr@48000 { + compatible = "amlogic,meson-s7-clk-measure"; + reg = <0x0 0x48000 0x0 0x1c>; + }; + + watchdog@2100 { + compatible = "amlogic,meson-sc2-wdt"; + status = "disabled"; + /* 0:userspace, 1:kernel */ + amlogic,feed_watchdog_mode = <1>; + reg = <0x0 0x2100 0x0 0x10>; + clocks = <&xtal>; + }; + + periphs_pinctrl: pinctrl@4000 { + compatible = "amlogic,meson-s7-periphs-pinctrl"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + gpio: bank@4000 { + reg = <0x0 0x4000 0x0 0x004c>, + <0x0 0x40c0 0x0 0x0220>; + reg-names = "mux", "gpio"; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&periphs_pinctrl 0 0 84>; + }; + }; + + gpio_intc: interrupt-controller@4080 { + compatible = "amlogic,meson-s7-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>; + }; + + spicc0: spi@50000 { + compatible = "amlogic,meson-g12-spicc"; + reg = <0x0 0x50000 0x0 0x44>; + interrupts = ; + //clocks = <&clkc CLKID_SPICC0>, + // <&clkc CLKID_SPICC0_GATE>; + //clock-names = "core", "async"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + spifc: spi@56000 { + compatible = "amlogic,meson-spifc"; + status = "disabled"; + reg = <0x0 0x56000 0x0 0x80>; + //clock-names = "default"; + //clocks = <&clkc CLKID_SPIFC>; + pinctrl-names = "default"; + pinctrl-0 = <&spifc_pins>; + #address-cells = <1>; + #size-cells = <0>; + spi-nor@0 { + compatible = "jedec,spi-nor"; + status = "disabled"; + reg = <0>; + spi-max-frequency = <16000000>; + }; + }; + + 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-odd-pwm"; + reg = <0x0 0x58200 0x0 0x24>, + <0x0 0x180 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_B_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_c: pwm@5a000 { + compatible = "amlogic,meson-even-pwm"; + reg = <0x0 0x5a000 0x0 0x24>, + <0x0 0x184 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_C_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_d: pwm@5a200 { + compatible = "amlogic,meson-odd-pwm"; + reg = <0x0 0x5a000 0x0 0x24>, + <0x0 0x184 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_D_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_e: pwm@5c000 { + compatible = "amlogic,meson-even-pwm"; + reg = <0x0 0x5c000 0x0 0x24>, + <0x0 0x188 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_E_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_f: pwm@5c200 { + compatible = "amlogic,meson-odd-pwm"; + reg = <0x0 0x5c000 0x0 0x24>, + <0x0 0x188 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_F_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_g: pwm@5e000 { + compatible = "amlogic,meson-even-pwm"; + reg = <0x0 0x5e000 0x0 0x24>, + <0x0 0x18c 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_G_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_h: pwm@5e200 { + compatible = "amlogic,meson-odd-pwm"; + reg = <0x0 0x5e000 0x0 0x24>, + <0x0 0x18c 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_H_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_i: pwm@60000 { + compatible = "amlogic,meson-even-pwm"; + reg = <0x0 0x60000 0x0 0x24>, + <0x0 0x190 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_I_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + pwm_j: pwm@62000 { + compatible = "amlogic,meson-odd-pwm"; + reg = <0x0 0x60000 0x0 0x24>, + <0x0 0x190 0x0 0x4>; + #pwm-cells = <3>; + clocks = <&clkc CLKID_PWM_J_SEL>; + clock-names = "clkin0"; + status = "disabled"; + }; + + i2c0: i2c@66000 { + compatible = "amlogic,meson-i2c"; + reg = <0x0 0x66000 0x0 0x48>; + interrupts = ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_SYS_I2C_M_A>; + status = "disabled"; + }; + + i2c1: i2c@66400 { + compatible = "amlogic,meson-i2c"; + reg = <0x0 0x66400 0x0 0x48>; + interrupts = ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_SYS_I2C_M_B>; + status = "disabled"; + }; + + i2c2: i2c@66800 { + compatible = "amlogic,meson-i2c"; + reg = <0x0 0x66800 0x0 0x48>; + interrupts = ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_SYS_I2C_M_C>; + status = "disabled"; + }; + + i2c3: i2c@66c00 { + compatible = "amlogic,meson-i2c"; + reg = <0x0 0x66c00 0x0 0x48>; + interrupts = ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_SYS_I2C_M_D>; + status = "disabled"; + }; + + i2c4: i2c@67000 { + compatible = "amlogic,meson-i2c"; + reg = <0x0 0x67000 0x0 0x48>; + interrupts = ; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clkc CLKID_SYS_I2C_M_E>; + status = "disabled"; + }; + + uart_B: serial@7a000 { + compatible = "amlogic,meson-uart"; + reg = <0x0 0x7a000 0x0 0x18>; + interrupts = <0 169 1>; + status = "okay"; + clocks = <&xtal>; + clock-names = "clk_uart"; + xtal_tick_en = <2>; + fifosize = < 64 >; + //pinctrl-names = "default"; + /*pinctrl-0 = <&ao_uart_pins>;*/ + support-sysrq = <0>; /* 0 not support*/ + }; + + eth_phy: mdio-multiplexer@28000 { + compatible = "amlogic,g12a-mdio-mux"; + reg = <0x0 0x28000 0x0 0xa4>; + status = "disabled"; + //clocks = <&clkc CLKID_ETHPHY>, + // <&xtal>, + // <&clkc CLKID_MPLL_50M>; + //clock-names = "pclk", "clkin0", "clkin1"; + mdio-parent-bus = <&mdio0>; + #address-cells = <1>; + #size-cells = <0>; + enet_type = <5>; + 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 = ; + reg = <8>; + max-speed = <100>; + }; + }; + }; + + reset: reset-controller@2000 { + compatible = "amlogic,meson-sc2-reset"; + reg = <0x0 0x2000 0x0 0x98>; + #reset-cells = <1>; + }; + + cpu_version { + compatible = "amlogic,meson-gx-ao-secure", "syscon"; + reg=<0x0 0x10220 0x0 0x4>; + }; + }; + + usb2_phy_v2: usb2phy@fe03a000 { + compatible = "amlogic,amlogic-new-usb2-v2"; + status = "disable"; + #phy-cells = <0>; + reg = <0x0 0xfe03a000 0x0 0x80 + 0x0 0xFE002000 0x0 0x100 + 0x0 0xfe03c000 0x0 0x2000 + 0x0 0xfe03e000 0x0 0x2000>; + pll-setting-1 = <0x09400414>; + pll-setting-2 = <0x927E0000>; + pll-setting-3 = <0xac5f69e5>; + pll-setting-4 = <0xbe18>; + pll-setting-5 = <0x7>; + pll-setting-6 = <0x78000>; + pll-setting-7 = <0xe0004>; + pll-setting-8 = <0xe000c>; + dis-thred-enhance = <0x2>;/**s4-0x38:bit[26-27]**/ + version = <3>; +// power-domains = <&pwrdm PDID_SC2_USB_COMB>; + phy20-reset-level-bit = <8>; + phy21-reset-level-bit = <9>; + usb-reset-bit = <4>; + reset-level = <0x40>; + usb-phy-trim-reg = <0xfe010330>; + }; + + usb3_phy_v2: usb3phy@fe03a080 { + compatible = "amlogic,amlogic-new-usb3-v2"; + status = "disable"; + #phy-cells = <0>; + reg = <0x0 0xfe03a080 0x0 0x20 + 0x0 0xfe002000 0x0 0x100>; + phy-reg = <0xfe02a000>; + phy-reg-size = <0x2000>; + usb2-phy-reg = <0xfe03a000>; + usb2-phy-reg-size = <0x80>; + //clocks = <&clkc CLKID_PCIE_PLL>; + //clock-names = "pcie_refpll"; + interrupts = <0 129 4>; + }; + + crg: crg@fde00000 { + compatible = "amlogic, crg"; + status = "disabled"; + reg = <0x0 0xfde00000 0x0 0x100000>; + interrupts = ; + usb-phy = <&usb2_phy_v2>, <&usb3_phy_v2>; + cpu-type = "gxl"; + //clock-src = "usb3.0"; + //clocks = <&clkc CLKID_USB>; + //clock-names = "crg_general"; + }; + + dummy_codec:dummy{ + #sound-dai-cells = <0>; + compatible = "amlogic, aml_dummy_codec"; + status = "disabled"; + }; + amlogic_codec:t9015{ + #sound-dai-cells = <0>; + compatible = "amlogic, s4_codec_T9015"; + reg = <0x0 0xFE01A000 0x0 0x2000>; + tocodec_inout = <2>; + tdmout_index = <2>; + ch0_sel = <0>; + ch1_sel = <1>; + + reset-names = "acodec"; + resets = <&reset RESET_ACODEC>; + + status = "disabled"; + }; + + audiobus: audiobus@0xFE330000 { + compatible = "amlogic, audio-controller", "simple-bus"; + reg = <0x0 0xFE330000 0x0 0x3000>; + #address-cells = <2>; + #size-cells = <2>; + ranges = <0x0 0x0 0x0 0xFE330000 0x0 0x3000>; + + //power-domains = <&pwrdm PDID_S4_AUDIO>; + + clkaudio: audio_clocks { + compatible = "amlogic, sc2-audio-clocks"; + #clock-cells = <1>; + reg = <0x0 0x0 0x0 0xb0>; + }; + 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"; + }; + + pinctrl_audio: pinctrl { + compatible = "amlogic, audio-pinctrl"; + }; + };/* end of audiobus*/ + + /* Sound iomap */ + aml_snd_iomap { + compatible = "amlogic, snd-iomap"; + status = "disabled"; + #address-cells=<2>; + #size-cells=<2>; + ranges; + pdm_bus { + reg = <0x0 0xFE331000 0x0 0x400>; + }; + audiobus_base { + reg = <0x0 0xFE330000 0x0 0x1000>; + }; + audiolocker_base { + reg = <0x0 0xFE331400 0x0 0x400>; + }; + 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>; + }; + }; + + dwc2_a: dwc2_a@fdd00000 { + compatible = "amlogic,dwc2"; + status = "disable"; + device_name = "dwc2_a"; + reg = <0x0 0xfdd00000 0x0 0x100000>; + interrupts = <0 131 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 */ + /*0:default,1:single,2:incr,3:incr4,4:incr8,5:incr16,6:disable*/ + port-dma = <0>; + port-id-mode = <0>; /** 0: hardware, 1: sw_host, 2: sw_slave*/ + usb-fifo = <728>; + cpu-type = "v2"; + phy-reg = <0xfe03a000>; + phy-reg-size = <0xa0>; + /** phy-interface: 0x0: amlogic phy, 0x1: synopsys phy **/ + phy-interface = <0x2>; + //clocks = <&clkc CLKID_USB + // &clkc CLKID_USB1_TO_DDR>; + //clock-names = "usb_general", + // "usb1"; + }; + + dolby_fw: dolby_fw { + compatible = "amlogic, dolby_fw"; + mem_size = <0x100000>; + status = "disabled"; + }; + + pcie: pcie@f5000000 { + compatible = "amlogic, amlogic-pcie-v2", "snps,dw-pcie"; + reg = <0x0 0xf5000000 0x0 0x400000 + 0x0 0xfe02c000 0x0 0x2000 + 0x0 0xf5400000 0x0 0x200000 + 0x0 0xfe02a000 0x0 0x2000 + 0x0 0xfe002044 0x0 0x10>; + reg-names = "elbi", "cfg", "config", "phy", "reset"; + interrupts = ; + #interrupt-cells = <1>; + bus-range = <0x0 0xff>; + #address-cells = <3>; + #size-cells = <2>; + interrupt-map-mask = <0 0 0 0>; + interrupt-map = <0 0 0 0 &gic GIC_SPI 143 IRQ_TYPE_EDGE_RISING>; + device_type = "pci"; + ranges = <0x81000000 0 0 0 0xf5600000 0x0 0x100000 + /* downstream I/O */ + 0x82000000 0 0xf5700000 0x0 0xf5700000 0 0x1900000>; + /* non-prefetchable memory */ + num-lanes = <1>; + pcie-num = <1>; + + //clocks = <&clkc CLKID_PCIE_PLL + // &clkc CLKID_PCIE + // &clkc CLKID_PCIE_PHY>; + //clock-names = "pcie_refpll", + // "pcie", + // "pcie_phy"; + /*reset-gpio-type 0:Shared pad(no reset)1:OD pad2:Normal pad*/ + gpio-type = <2>; + pcie-apb-rst-bit = <14>; + pcie-phy-rst-bit = <13>; + pcie-ctrl-a-rst-bit = <12>; + pwr-ctl = <0>; +// power-domains = <&pwrdm PDID_SC2_PCIE>; + pcie-ctrl-sleep-shift = <15>; + pcie-hhi-mem-pd-shift = <26>; + pcie-hhi-mem-pd-mask = <0xf>; + pcie-ctrl-iso-shift = <15>; + status = "disabled"; + }; + + sd_emmc_c: mmc@fe08c000 { + compatible = "amlogic,meson-axg-mmc"; + reg = <0x0 0xfe08c000 0x0 0x800>, + <0x0 0xfe000168 0x0 0x4>, + <0x0 0xfe004000 0x0 0x4>; + interrupts = ; + status = "disabled"; + clocks = <&clkc CLKID_SYS_SD_EMMC_C>, + <&clkc CLKID_SD_EMMC_C_SEL>, + <&clkc CLKID_SD_EMMC_C>, + <&xtal>, + <&clkc CLKID_FCLK_DIV2>, + <&clkc CLKID_FCLK_DIV2>; + clock-names = "core", "mux0", "mux1", + "clkin0", "clkin1", "clkin2"; + no-sdio; + no-sd; + card_type = <1>; + ignore_desc_busy; + mmc_debug_flag; + // src_clk_rate = <1152000000>; + // tx_delay = <8>; + // nwr_cnt = <0>; + // resets = <&reset RESET_SD_EMMC_C>; + }; + + sd_emmc_b: sd@fe08a000 { + compatible = "amlogic,meson-axg-mmc"; + reg = <0x0 0xfe08a000 0x0 0x800>, + <0x0 0xfe00016c 0x0 0x4>, + <0x0 0xfe004024 0x0 0x4>; + interrupts = ; + status = "disabled"; + clocks = <&clkc CLKID_SYS_SD_EMMC_B>, + <&clkc CLKID_SD_EMMC_B_SEL>, + <&clkc CLKID_SD_EMMC_B>, + <&xtal>, + <&clkc CLKID_FCLK_DIV2>; + clock-names = "core", "mux0", "mux1", + "clkin0", "clkin1"; + card_type = <5>; + mmc_debug_flag; + no-mmc; + no-sdio; + //resets = <&reset RESET_SD_EMMC_B>; + }; + + sd_emmc_a: sdio@fe088000 { + compatible = "amlogic,meson-axg-mmc"; + reg = <0x0 0xfe088000 0x0 0x800>, + <0x0 0xfe00016c 0x0 0x4>, + <0x0 0xfe00400c 0x0 0x4>; + interrupts = ; + status = "disabled"; + clocks = <&clkc CLKID_SYS_SD_EMMC_A>, + <&clkc CLKID_SD_EMMC_A_SEL>, + <&clkc CLKID_SD_EMMC_A>, + <&xtal>, + <&clkc CLKID_FCLK_DIV2>; + clock-names = "core", "mux0", "mux1", + "clkin0", "clkin1"; + card_type = <3>; + mmc_debug_flag; + cap-sdio-irq; + keep-power-in-suspend; + use_intf3_tuning; + no-mmc; + no-sd; + //resets = <&reset RESET_SD_EMMC_A>; + }; + + mtd_nand: nfc@fe08c800 { + compatible = "amlogic,meson-nfc-single-ecc-bl2ex"; + status = "disabled"; + reg = <0x0 0xfe08c800 0x0 0x200>; + interrupts = ; + + //clocks = <&clkc CLKID_NAND>, + // <&clkc CLKID_FCLK_DIV2>; + //clock-names = "gate", "fdiv2pll"; + nand_clk_ctrl = <0xfe08c000>; + }; + + ethmac: ethernet@fdc00000 { + compatible = "amlogic,meson-axg-dwmac", + "snps,dwmac-3.70a", + "snps,dwmac"; + reg = <0x0 0xfdc00000 0x0 0x10000>, + <0x0 0xfe024000 0x0 0x8>; + interrupts = ; + interrupt-names = "macirq"; + //power-domains = <&pwrdm PDID_S4_ETH>; + //clocks = <&clkc CLKID_ETH>, + // <&clkc CLKID_FCLK_DIV2>, + // <&clkc CLKID_MPLL2>; + //clock-names = "stmmaceth", "clkin0", "clkin1"; + rx-fifo-depth = <4096>; + tx-fifo-depth = <2048>; + status = "disabled"; + + 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_UART_A>; + //clock-names = "clk_uart", + // "clk_gate"; + xtal_tick_en = <3>; + fifosize = < 64 >; + pinctrl-names = "default"; + pinctrl-0 = <&a_uart_pins>; + }; + + uart_C: serial@fe07c000 { + compatible = "amlogic,meson-uart"; + reg = <0x0 0xfe07c000 0x0 0x18>; + interrupts = <0 170 1>; + status = "disabled"; + //clocks = <&xtal + // &clkc CLKID_UART_C>; + //clock-names = "clk_uart", + // "clk_gate"; + fifosize = < 64 >; + pinctrl-names = "default"; + pinctrl-0 = <&c_uart_pins>; + }; + + uart_D: serial@fe07e000 { + compatible = "amlogic,meson-uart"; + status = "disabled"; + reg = <0x0 0xfe07e000 0x0 0x18>; + interrupts = <0 171 1>; + //clocks = <&xtal + // &clkc CLKID_UART_D>; + //clock-names = "clk_uart", + // "clk_gate"; + fifosize = < 64 >; + pinctrl-names = "default"; + pinctrl-0 = <&d_uart_pins1>; + }; + + uart_E: serial@fe080000 { + compatible = "amlogic,meson-uart"; + status = "disabled"; + reg = <0x0 0xfe080000 0x0 0x18>; + interrupts = <0 172 1>; + //clocks = <&xtal + // &clkc CLKID_UART_E>; + //clock-names = "clk_uart", + // "clk_gate"; + fifosize = < 64 >; + pinctrl-names = "default"; + pinctrl-0 = <&e_uart_pins1>; + }; + }; + + mesonstream { + compatible = "amlogic, codec, streambuf"; + dev_name = "mesonstream"; + status = "okay"; + }; + + vcodec_dos_dev: vcodec_dos_dev { + compatible = "amlogic, cpu-major-id-s7"; + 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_VDEC + &clkc CLKID_HEVCF>; + clock-names = "vdec", + "clk_vdec_mux", + "clk_hevcf_mux"; + assigned-clock-parents = <&clkc CLKID_VDEC_0>, + <&clkc CLKID_HEVCF_0>; + assigned-clocks = <&clkc CLKID_VDEC>, + <&clkc CLKID_HEVCF>; + }; + + 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_S7_DOS_VDEC>, + <&pwrdm PDID_S7_DOS_HEVC>, + <&pwrdm PDID_S7_DOS_HCODEC>; + power-domain-names = "pwrc-vdec", + "pwrc-hevc", + "pwrc-hcodec"; + }; + + vcodec_dec { + compatible = "amlogic, vcodec-dec"; + dev_name = "aml-vcodec-dec"; + status = "okay"; + }; + + ddr_bandwidth { + compatible = "amlogic,ddr-bandwidth-s7"; + status = "okay"; + reg = <0x0 0xfe036000 0x0 0x400 + 0x0 0xfe036000 0x0 0x100>; + interrupts = <0 78 IRQ_TYPE_EDGE_RISING>; + interrupt-names = "ddr_bandwidth"; + }; + + dmc_monitor { + compatible = "amlogic,dmc_monitor-s7"; + status = "okay"; + reg = <0x0 0xfe036000 0x0 0x400>; + reg_base = <0xfe036000>; + interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>; + }; + + amhdmitx: amhdmitx{ + compatible = "amlogic, amhdmitx-s7"; + dev_name = "amhdmitx"; + status = "disabled"; + //power-domains = <&pwrdm PDID_T7_VI_CLK2>; + vend-data = <&vend_data>; + pinctrl-names="hdmitx_hpd", "hdmitx_ddc"; + pinctrl-0=<&hdmitx_hpd>; + pinctrl-1=<&hdmitx_ddc>; + interrupts = <0 204 4 + 0 197 1>; + interrupt-names = "hdmitx_hpd", "vrr_vsync"; + enc_idx = <0>; + reg = <0x0 0xff000000 0x0 0x40000>, + <0x0 0xfe310000 0x0 0x10000>, + <0x0 0xfe300000 0x0 0x10000>, + <0x0 0xfe010000 0x0 0x2000>, + <0x0 0xfe00c000 0x0 0x2000>, + <0x0 0xfe008000 0x0 0x2000>, + <0x0 0xfe002000 0x0 0x2000>, + <0x0 0xfe000000 0x0 0x2000>, + <0x0 0xfe004000 0x0 0x200>; + reg-names = "vpu", + "hdmitxcor", + "hdmitxtop", + "sysctrl", + "pwrctrl", + "anactrl", + "resetctrl", + "clkctrl", + "padctrl"; + + vend_data: vend_data{ /* Should modified by Customer */ + vendor_name = "Amlogic"; /* Max Chars: 8 */ + product_desc = "MBox Meson Ref"; /* Max Chars: 16 */ + /* standards.ieee.org/develop/regauth/oui/oui.txt */ + vendor_id = <0x000000>; + }; + + ports { + port { + #address-cells = <1>; + #size-cells = <0>; + hdmitx_to_drm: endpoint@0 { + reg = <0>; + remote-endpoint = <0>; + }; + }; + }; + }; + + aocec: aocec { + compatible = "amlogic, aocec-s4"; + dev_name = "aocec"; + status = "disabled"; + vendor_name = "Amlogic"; /* Max Chars: 8 */ + /* Refer to the following URL at: + * http://standards.ieee.org/develop/regauth/oui/oui.txt + */ + vendor_id = <0xffffff>; + product_desc = "S4D"; /* Max Chars: 16 */ + cec_osd_string = "AML_MBOX"; /* Max Chars: 14 */ + cec_version = <5>;/*5:1.4;6:2.0*/ + port_num = <1>; + output = <1>; + cec_sel = <1>;/*1:use one ip, 2:use 2 ip*/ + ee_cec; + arc_port_mask = <0x1>; + interrupts = ;/*1:ts*/ + interrupt-names = "hdmi_aocecb","hdmi_aocec"; + pinctrl-names = "default","hdmitx_aocecb","cec_pin_sleep"; + pinctrl-0=<&eecec_a>; + pinctrl-1=<&eecec_b>; + pinctrl-2=<&eecec_b>; + //clocks = <&clkc CLKID_CECA_32K_CLKOUT>, + // <&clkc CLKID_CECB_32K_CLKOUT>; + //clock-names = "ceca_clk","cecb_clk"; + reg = <0x0 0xfe044000 0x0 0x2ff + 0x0 0xfe010000 0x0 0xfff + 0x0 0xfe000000 0x0 0xfff + 0x0 0xfe004000 0x0 0x2000>; + reg-names = "ao","periphs","clock","pad_reg"; + }; + + aml_dma { + compatible = "amlogic,aml_txlx_dma"; + reg = <0x0 0xfe440400 0x0 0x48>; + interrupts = <0 24 1>; + + aml_aes { + compatible = "amlogic,aes_g12a_dma"; + dev_name = "aml_aes_dma"; + status = "disabled"; + iv_swap = /bits/ 8 <0x0>; + }; + + aml_sha { + compatible = "amlogic,sha_dma"; + dev_name = "aml_sha_dma"; + status = "disabled"; + }; + + aml_tdes { + compatible = "amlogic,des_dma,tdes_dma"; + dev_name = "aml_tdes_dma"; + status = "disabled"; + }; + + crypto { + compatible = "amlogic,crypto_s4d"; + dev_name = "aml_crypto_dev"; + status = "disabled"; + thread = /bits/ 8 <0x5>; + interrupts = <0 29 1>; + }; + }; + + rng { + compatible = "amlogic,meson-rng"; + status = "disabled"; + #address-cells = <2>; + #size-cells = <2>; + reg = <0x0 0xfe440788 0x0 0x0c>; + quality = /bits/ 16 <1000>; + version = <2>; + }; + + canvas: canvas{ + compatible = "amlogic, meson, canvas"; + status = "okay"; + reg = <0x0 0xfe036048 0x0 0x2000>; + }; + + codec_io: codec_io { + compatible = "amlogic, meson-s7, 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 0xff000000 0x0 0x40000>, + <0x0 0xfe036000 0x0 0x2000>, + <0x0 0x0 0x0 0x0>, + <0x0 0x0 0x0 0x0>; + reg-names = "cbus", + "dosbus", + "hiubus", + "aobus", + "vcbus", + "dmcbus", + "efusebus"; + }; + + amvenc_avc{ + compatible = "amlogic, amvenc_avc"; + dev_name = "amvenc_avc"; + status = "disabled"; + //clocks = <&clkc CLKID_HCODEC_P0>; + //clock-names = "cts_hcodec_aclk"; + interrupts = <0 93 1>; + interrupt-names = "mailbox_2"; + reset-names = "hcodec_rst"; + //resets = <&reset RESET_BRG_HCODEC_PIPL0>; + }; + jpegenc{ + compatible = "amlogic, jpegenc"; + dev_name = "jpegenc"; + status = "disabled"; + //clocks = <&clkc CLKID_HCODEC_P0>; + //clock-names = "cts_jpegenc_aclk"; + interrupts = <0 93 1>; + interrupt-names = "mailbox_2"; + reset-names = "jpegenc_rst"; + //resets = <&reset RESET_BRG_HCODEC_PIPL0>; + }; + hevc_enc{ + compatible = "cnm, HevcEnc"; + //memory-region = <&hevc_enc_reserved>; + dev_name = "HevcEnc"; + status = "disabled"; + interrupts = <0 94 1>; + interrupt-names = "wave420l_irq"; + #address-cells=<2>; + #size-cells=<2>; + //clocks = <&clkc CLKID_WAVE_A_GATE + // &clkc CLKID_WAVE_B_GATE + // &clkc CLKID_WAVE_C_GATE>; + //clock-names = "cts_wave420_aclk", + // "cts_wave420_bclk", + // "cts_wave420_cclk"; + ranges; + io_reg_base{ + reg = <0x0 0xfe310000 0x0 0x4000>; + }; + }; + vpu: vpu { + compatible = "amlogic, vpu-s7"; + status = "okay"; + reg = <0x0 0xfe000000 0x0 0x100 /* clk */ + 0x0 0xfe00c000 0x0 0x70 /* pwrctrl */ + 0x0 0xff000000 0x0 0xa000>; /* vcbus */ + clocks = <&clkc CLKID_VAPB>, + <&clkc CLKID_SYS_VPU_INTR>, + <&clkc CLKID_VPU_0>, + <&clkc CLKID_VPU_1>, + <&clkc CLKID_VPU>; + clock-names = "vapb_clk", + "vpu_intr_gate", + "vpu_clk0", + "vpu_clk1", + "vpu_clk"; + clk_level = <7>; + /* 0: 100.0M 1: 166.7M 2: 200.0M 3: 250.0M */ + /* 4: 333.3M 5: 400.0M 6: 500.0M 7: 666.7M */ + }; + + rdma { + compatible = "amlogic, meson-sc2, rdma"; + status = "okay"; + interrupts = ; + interrupt-names = "rdma"; + /* after sc2 */ + reset-names = "rdma"; + resets = <&reset RESET_RDMA>; + }; + + vclk_serve: vclk_serve { + compatible = "amlogic, vclk_serve"; + status = "disabled"; + reg = <0x0 0xfe008000 0x0 0x300 /* ana reg */ + 0x0 0xfe000000 0x0 0x4a0>; /* clk reg */ + }; + + vdac { + compatible = "amlogic, vdac-s4d"; + status = "disabled"; + }; + + vout: vout { + compatible = "amlogic, vout"; + status = "disabled"; + + /* fr_policy: + * 0: disable + * 1: nearby (only for 60->59.94 and 30->29.97) + * 2: force (60/50/30/24/59.94/23.97) + */ + fr_policy = <2>; + }; + + vout_mux: vout_mux { + compatible = "amlogic, vout_mux"; + status = "okay"; + }; + + dummy_venc: dummy_venc { + compatible = "amlogic, dummy_venc_s4"; + status = "disabled"; + + ports { + port { + #address-cells = <1>; + #size-cells = <0>; + dummyl_to_drm: endpoint@0 { + reg = <0>; + remote-endpoint = <0>; + }; + }; + }; + }; + + adc: adc { + compatible = "amlogic, adc-s4d"; + status = "disabled"; + reg = <0x0 0xff654000 0x0 0x2000/* afe reg base */ + 0x0 0xfe008000 0x0 0x2000/* hiu base */ + >; + }; + + ir: ir@8000 { + compatible = "amlogic, meson-ir"; + reg = <0x0 0xfe084040 0x0 0xA4>, + <0x0 0xfe084000 0x0 0x20>; + status = "disable"; + protocol = ; + interrupts = ; + map = <&custom_maps>; + max_frame_time = <200>; + }; + + p_tsensor: p_tsensor@fe020000 { + compatible = "amlogic, r1p1-tsensor"; + status = "disabled"; + reg = <0x0 0xfe020000 0x0 0x50>; + tsensor_id = <1>; + cal_type = <0x11>; + cal_coeff = <324 424 3159 9411>; + rtemp = <110000>; + interrupts = ; + //clocks = <&clkc CLKID_TS_CLK_GATE>; + //clock-names = "ts_comp"; + #thermal-sensor-cells = <1>; + }; + + meson_cooldev: meson-cooldev@0 { + status = "disabled"; + compatible = "amlogic, meson-cooldev"; + cooling_devices { + cpucore_cool_cluster0 { + cluster_id = <0>; + node_name = "cpucore_cool0"; + device_type = "cpucore"; + }; + gpufreq_cool { + dyn_coeff = <140>; + node_name = "bifrost"; + device_type = "gpufreq"; + }; + }; + cpucore_cool0:cpucore_cool0 { + #cooling-cells = <2>; /* min followed by max */ + }; + };/*meson cooling devices end*/ + + thermal-zones { + soc_thermal: soc_thermal { + polling-delay = <1000>; + polling-delay-passive = <100>; + sustainable-power = <1160>; + thermal-sensors = <&p_tsensor 0>; + trips { + pswitch_on: trip-point@0 { + temperature = <85000>; + hysteresis = <5000>; + type = "passive"; + }; + pcontrol: trip-point@1 { + temperature = <95000>; + hysteresis = <5000>; + type = "passive"; + }; + pcritical: trip-point@2 { + temperature = <105000>; + hysteresis = <1000>; + type = "critical"; + }; + }; + + cooling-maps { + cpufreq_cooling_map { + trip = <&pcontrol>; + cooling-device = <&CPU0 0 8>; + contribution = <1024>; + }; + gpufreq_cooling_map { + trip = <&pcontrol>; + cooling-device = <&gpu 0 3>; + contribution = <1024>; + }; + }; + }; + };/*thermal zone end*/ + + ion_dev { + compatible = "amlogic, ion_dev"; + memory-region = <&ion_cma_reserved + &ion_fb_reserved>; + }; + + meson_uvm { + compatible = "amlogic, meson_uvm"; + status = "okay"; + }; + + meson_videotunnel{ + compatible = "amlogic, meson_videotunnel"; + status = "disabled"; + }; + + fb: fb { + compatible = "amlogic, fb-s7"; + memory-region = <&logo_reserved>; + status = "disabled"; + interrupts = ; + interrupt-names = "viu-vsync", "rdma"; + /* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x01851000*/ + display_mode_default = "1080p60hz"; + scale_mode = <1>; + /** 0:VPU free scale 1:OSD free scale 2:OSD super scale */ + display_size_default = <1920 1080 1920 2160 32>; + /*1920*1080*4*3 = 0x17BB000*/ + }; + + irblaster: meson-irblaster@fe08410c { + compatible = "amlogic, meson_irblaster"; + status = "disabled"; + reg = <0x0 0xfe08410c 0x0 0x10>; + #irblaster-cells = <2>; + interrupts = ; + }; + + /*if you want to use vdin just modify status to "ok"*/ + vdin0: vdin0 { + compatible = "amlogic, vdin-s7"; + dev_name = "vdin0"; + status = "okay"; + reserve-iomap = "true"; + flag_cma = <0>;/*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 210 1>; + rdma-irq = <2>; + //clocks = <&clkc CLKID_FCLK_DIV5>, <&clkc CLKID_VDIN_MEAS_GATE>; + //clock-names = "fclk_div5", "cts_vdin_meas_clk"; + vdin_id = <0>; + /* vdin v4l2 */ + v4l_support_en = <0>; + v4l_vd_num = <70>; + /* v4l2 capability */ + driver = "vdin_video"; + card = "meson-s4d"; + 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 { + compatible = "amlogic, vdin-s7"; + dev_name = "vdin1"; + status = "okay"; + reserve-iomap = "true"; + flag_cma = <0>;/*1:share with codec_mm;0:cma alone*/ + interrupts = <0 212 1>; + rdma-irq = <4>; + vdin_id = <1>; + /* vdin v4l2 */ + v4l_support_en = <0>; + v4l_vd_num = <71>; + /* v4l2 capability */ + driver = "vdin_video"; + card = "meson-s4d"; + 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 */ + }; + + meson-amvideom { + compatible = "amlogic, amvideom-s7"; + dev_name = "amvideom"; + status = "okay"; + interrupts = ; + interrupt-names = "vsync"; + }; + + lut_dma:lut_dma { + compatible = "amlogic, meson-s5, lut_dma"; + status = "okay"; + }; + + video_composer { + compatible = "amlogic, video_composer"; + dev_name = "video_composer"; + status = "okay"; + }; + + vpu_security { + compatible = "amlogic, meson-s4, vpu_security"; + dev_name = "amlogic-vpu-security"; + status = "disabled"; + interrupts = ; + interrupt-names = "vpu_security"; + }; + + dmx_aucpu: aucpu { + compatible = "amlogic, aucpu"; + dev_name = "aml_aucpu"; + status = "disabled"; + interrupts = <0 77 1>; + interrupt-names = "aucpu_irq"; + reg = <0x0 0xfe09e080 0x0 0x100>; + }; + + ge2d { + compatible = "amlogic, ge2d-s7"; + status = "okay"; + interrupts = ; + interrupt-names = "ge2d"; + clocks = <&clkc CLKID_VAPB>, + <&clkc CLKID_SYS_G2D>, + <&clkc CLKID_GE2D>; + clock-names = "clk_vapb_0", + "clk_ge2d", + "clk_ge2d_gate"; + reg = <0x0 0xff040000 0x0 0x100>; + power-domains = <&pwrdm PDID_S7_GE2D>; + }; + + aml_bt: aml_bt { + compatible = "amlogic, aml-bt"; + status = "disabled"; + }; + + aml_wifi: aml_wifi { + compatible = "amlogic, aml-wifi"; + status = "disabled"; + irq_trigger_type = "IRQF_TRIGGER_LOW"; + wifi_static_buf = <2>; + //pinctrl-0 = <&pwm_e_pins>; + //pinctrl-names = "default"; + pwm_config = <&wifi_pwm_conf>; + }; + + wifi_pwm_conf:wifi_pwm_conf{ + pwm_channel1_conf { + // pwms = <&pwm_ef 0 30541 0>; + duty-cycle = <15270>; + times = <7>; + }; + pwm_channel2_conf { + // pwms = <&pwm_ef 2 30500 0>; + duty-cycle = <15250>; + times = <10>; + }; + }; + + state_led: state_led { + compatible = "amlogic,state-led-aocpu"; + status = "disabled"; + }; + + efuseburn: efuse_burn { + compatible = "amlogic, efuseburn"; + efuse_pattern_size = <0x600>; + status = "disabled"; + }; + 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>; + mem_size = <0x100000>; + 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>; + key = <&efusekey>; + check = <&efusecheck>; + clock-names = "efuse_clk"; + status = "disabled"; + }; + + 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>; + }; + }; + + aml_mkl { + compatible = "amlogic,aml_mkl"; + reg = <0x0 0xfe440200 0x0 0xf0>; + kl_type = <1>; + kl_offset = <0x80 0x88 0x8c 0x90>; + status = "disabled"; + }; + + aml_kt { + compatible = "amlogic,aml_kt"; + reg = <0x0 0xfe440500 0x0 0xa0>; + kt_offset = <0x80 0x88 0x8c 0x90 0x94 0x98 0x9c>; + kt_cap = <0x260f 0x6bf 0 64 0 32>; + s17_cfg_offset = <0x2408>; + kt_reserved = <0>; + status = "disabled"; + }; + + chosen { + bootargs = "usbcore.autosuspend=-1"; + }; +}; + +&periphs_pinctrl { + i2c0_pins1:i2c0_pins1 { + mux { + groups = "i2c0_sda", + "i2c0_scl"; + function = "i2c0"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c1_pins1:i2c1_pins1 { + mux { + groups = "i2c1_sda_c", + "i2c1_scl_c"; + function = "i2c1"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c1_pins2:i2c1_pins2 { + mux { + groups = "i2c1_sda_d", + "i2c1_scl_d"; + function = "i2c1"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c1_pins3:i2c1_pins3 { + mux { + groups = "i2c1_sda_h", + "i2c1_scl_h"; + function = "i2c1"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c1_pins4:i2c1_pins4 { + mux { + groups = "i2c1_sda_x", + "i2c1_scl_x"; + function = "i2c1"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c2_pins1:i2c2_pins1 { + mux { + groups = "i2c2_sda_d", + "i2c2_scl_d"; + function = "i2c2"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c2_pins2:i2c2_pins2 { + mux { + groups = "i2c2_sda_h8", + "i2c2_scl_h9"; + function = "i2c2"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c2_pins3:i2c2_pins3 { + mux { + groups = "i2c2_sda_h0", + "i2c2_scl_h1"; + function = "i2c2"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c3_pins1:i2c3_pins1 { + mux { + groups = "i2c3_sda_x", + "i2c3_scl_x"; + function = "i2c3"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c3_pins2:i2c3_pins2 { + mux { + groups = "i2c3_sda_z", + "i2c3_scl_z"; + function = "i2c3"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c4_pins1:i2c4_pins1 { + mux { + groups = "i2c4_sda_c", + "i2c4_scl_c"; + function = "i2c4"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c4_pins2:i2c4_pins2 { + mux { + groups = "i2c4_sda_d", + "i2c4_scl_d"; + function = "i2c4"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + i2c4_pins3:i2c4_pins3 { + mux { + groups = "i2c4_sda_z", + "i2c4_scl_z"; + function = "i2c4"; + drive-strength-microamp = <3000>; + bias-disable; + }; + }; + + a_uart_pins:a_uart { + mux { + groups = "uart_a_tx", + "uart_a_rx", + "uart_a_cts", + "uart_a_rts"; + function = "uart_a"; + }; + }; + + c_uart_pins:c_uart { + mux { + groups = "uart_c_tx", + "uart_c_rx"; + function = "uart_c"; + }; + }; + + d_uart_pins1:d_uart1 { + mux { + groups = "uart_d_tx_h", + "uart_d_rx_h"; + function = "uart_d"; + }; + }; + + d_uart_pins2:d_uart2 { + mux { + groups = "uart_d_tx_z", + "uart_d_rx_z"; + function = "uart_d"; + }; + }; + + e_uart_pins1:e_uart1 { + mux { + groups = "uart_e_tx_h", + "uart_e_rx_h"; + function = "uart_e"; + }; + }; + + e_uart_pins2:e_uart2 { + mux { + groups = "uart_e_tx_z11", + "uart_e_rx_z12"; + function = "uart_e"; + }; + }; + + e_uart_pins3:e_uart3 { + mux { + groups = "uart_e_tx_z8", + "uart_e_rx_z9"; + function = "uart_e"; + }; + }; + + emmc_pins: emmc_pins { + mux-0 { + groups = "emmc_nand_d0", + "emmc_nand_d1", + "emmc_nand_d2", + "emmc_nand_d3", + "emmc_nand_d4", + "emmc_nand_d5", + "emmc_nand_d6", + "emmc_nand_d7", + "emmc_cmd"; + function = "emmc"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + + mux-1 { + groups = "emmc_clk"; + function = "emmc"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + emmc_ds_pins: emmc_ds_pins { + mux { + groups = "emmc_nand_ds"; + function = "emmc"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + emmc_clk_gate_pins: emmc_clk_gate_pins { + mux { + groups = "GPIOB_8"; + function = "gpio_periphs"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + all_nand_pins: all_nand_pins { + mux { + groups = "emmc_nand_d0", + "emmc_nand_d1", + "emmc_nand_d2", + "emmc_nand_d3", + "emmc_nand_d4", + "emmc_nand_d5", + "emmc_nand_d6", + "emmc_nand_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"; + }; + }; + + sd_to_ao_uart_clr_pins: sd_to_ao_uart_clr_pins { + mux { + groups = "GPIOD_0", + "GPIOD_1"; + function = "gpio_periphs"; + }; + }; + + sdcard_pins: sdcard_pins { + mux { + groups = "sdcard_d0_c", + "sdcard_d1_c", + "sdcard_d2_c", + "sdcard_d3_c", + "sdcard_clk_c", + "sdcard_cmd_c"; + function = "sdcard"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + ao_to_sd_uart_pins: ao_to_sd_uart_pins { + mux { + groups = "uart_b_tx_c", + "uart_b_rx_c"; + function = "uart_b"; + bias-pull-up; + input-enable; + }; + }; + + ao_uart_pins: ao_uart_pins { + mux { + groups = "uart_b_tx_d", + "uart_b_rx_d"; + function = "uart_b"; + bias-pull-up; + input-enable; + }; + }; + + sd_clr_all_pins: sd_clr_all_pins { + mux { + groups = "GPIOC_0", + "GPIOC_1", + "GPIOC_2", + "GPIOC_3", + "GPIOC_5"; + function = "gpio_periphs"; + output-high; + }; + mux1 { + groups = "GPIOC_4"; + function = "gpio_periphs"; + output-low; + }; + }; + + sd_clr_noall_pins: sd_clr_noall_pins { + mux { + groups = "GPIOC_0", + "GPIOC_1", + "GPIOC_4", + "GPIOC_5"; + function = "gpio_periphs"; + output-high; + }; + }; + + sd_1bit_pins: sd_1bit_pins { + mux { + groups = "sdcard_d0_c", + "sdcard_clk_c", + "sdcard_cmd_c"; + function = "sdcard"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + sdcard_clk_gate_pins: sdcard_clk_gate_pins { + mux { + groups = "GPIOC_4"; + function = "gpio_periphs"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + sd_iso7816_pins:sd_iso7816_pins { + mux { + groups = "iso7816_clk_h", + "iso7816_data_h"; + function = "iso7816"; + input-enable; + bias-pull-down; + }; + }; + + sdio_pins: sdio_pins { + mux { + groups = "sdio_d0", + "sdio_d1", + "sdio_d2", + "sdio_d3", + "sdio_clk", + "sdio_cmd"; + function = "sdio"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + sdio_clk_gate_pins: sdio_clk_gate_pins { + mux { + groups = "GPIOX_4"; + function = "gpio_periphs"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + hdmitx_hpd: hdmitx_hpd { + mux { + groups = "hdmitx_hpd_in"; + function = "hdmitx"; + bias-disable; + }; + }; + + hdmitx_hpd_gpio: hdmitx_hpd_gpio { + mux { + groups = "GPIOH_1"; + function = "gpio_periphs"; + bias-disable; + }; + }; + + hdmitx_ddc: hdmitx_ddc { + mux { + groups = "hdmitx_sda", + "hdmitx_sck"; + function = "hdmitx"; + bias-disable; + drive-strength = <3>; + }; + }; + + dtvdemod_if_agc_pins: dtvdemod_if_agc_pins { + mux { + groups = "dtv_a_if_agc_z10"; + function = "dtv"; + }; + }; + + dtvdemod_if_agc2_pins: dtvdemod_if_agc2_pins { + mux { + groups = "dtv_b_if_agc"; + function = "dtv"; + }; + }; + + dtvdemod_rf_agc_pins: dtvdemod_rf_agc_pins { + mux { + groups = "dtv_a_rf_agc"; + function = "dtv"; + }; + }; + + diseqc_out: diseqc_out { + mux { + groups = "diseqc_out"; + function = "diseqc_out"; + bias-pull-down; + }; + }; + + diseqc_in: diseqc_in { + mux { + groups = "diseqc_in"; + function = "diseqc_in"; + bias-pull-down; + }; + }; + + eecec_a: ee_ceca { + mux { + groups = "ao_cec_a"; + function = "ao_cec_a"; + }; + }; + + eecec_b: ee_cecb { + mux { + groups = "ao_cec_b"; + function = "ao_cec_b"; + }; + }; + + jtag_a_pins: jtag_a_pin { + mux { + groups = "jtag_1_tdi", + "jtag_1_tdo", + "jtag_1_clk", + "jtag_1_tms"; + function = "jtag_1"; + }; + }; + + jtag_b_pins: jtag_b_pin { + mux { + groups = "jtag_2_tdi", + "jtag_2_tdo", + "jtag_2_clk", + "jtag_2_tms"; + function = "jtag_2"; + }; + }; + + pwm_a_pins: pwm_a_pins { + mux { + groups = "pwm_a_d"; + function = "pwm_a"; + }; + }; + + pwm_b_pins1: pwm_b_pins1 { + mux { + groups = "pwm_b_d"; + function = "pwm_b"; + }; + }; + + pwm_b_pins2: pwm_b_pins2 { + mux { + groups = "pwm_b_x"; + function = "pwm_b"; + }; + }; + + pwm_c_pins1: pwm_c_pins1 { + mux { + groups = "pwm_c_d"; + function = "pwm_c"; + }; + }; + + pwm_c_pins2: pwm_c_pins2 { + mux { + groups = "pwm_c_x"; + function = "pwm_c"; + }; + }; + + pwm_d_pins1: pwm_d_pins1 { + mux { + groups = "pwm_d_d"; + function = "pwm_d"; + }; + }; + + pwm_d_pins2: pwm_d_pins2 { + mux { + groups = "pwm_d_h"; + function = "pwm_d"; + }; + }; + + pwm_e_pins1: pwm_e_pins1 { + mux { + groups = "pwm_e_x"; + function = "pwm_e"; + drive-strength-microamp = <500>; + }; + }; + + pwm_e_pins2: pwm_e_pins2 { + mux { + groups = "pwm_e_z"; + function = "pwm_e"; + }; + }; + + pwm_f_pins1: pwm_f_pins1 { + mux { + groups = "pwm_f_x"; + function = "pwm_f"; + }; + }; + + pwm_f_pins2: pwm_f_pins2 { + mux { + groups = "pwm_f_z"; + function = "pwm_f"; + }; + }; + + pwm_g_pins1: pwm_g_pins1 { + mux { + groups = "pwm_g_d"; + function = "pwm_g"; + }; + }; + + pwm_g_pins2: pwm_g_pins2 { + mux { + groups = "pwm_g_z"; + function = "pwm_g"; + }; + }; + + pwm_h_pins: pwm_h_pins { + mux { + groups = "pwm_h"; + function = "pwm_h"; + }; + }; + + pwm_i_pins1: pwm_i_pins1 { + mux { + groups = "pwm_i_d"; + function = "pwm_i"; + }; + }; + + pwm_i_pins2: pwm_i_pins2 { + mux { + groups = "pwm_i_h"; + function = "pwm_i"; + }; + }; + + pwm_j_pins: pwm_j_pins { + mux { + groups = "pwm_j"; + function = "pwm_j"; + }; + }; + + pwm_a_hiz_pins: pwm_a_hiz_pins { + mux { + groups = "pwm_a_hiz"; + function = "pwm_a_hiz"; + }; + }; + + pwm_b_hiz_pins: pwm_b_hiz_pins { + mux { + groups = "pwm_b_hiz"; + function = "pwm_b_hiz"; + }; + }; + + pwm_c_hiz_pins: pwm_c_hiz_pins { + mux { + groups = "pwm_c_hiz"; + function = "pwm_b_hiz"; + }; + }; + + pwm_g_hiz_pins: pwm_g_hiz_pins { + mux { + groups = "pwm_g_hiz"; + function = "pwm_g_hiz"; + }; + }; + + remote_pins: remote_pin { + mux { + groups = "remote_in"; + function = "remote_in"; + bias-disable; + }; + }; + + spicc0_pins_x: spicc0_pins_x { + mux { + groups = "spi_a_mosi_x", + "spi_a_miso_x", + //"spi_a_ss0_x", + "spi_a_clk_x"; + function = "spi_a"; + drive-strength = <2>; + }; + }; + + spicc0_pins_h: spicc0_pins_h { + mux { + groups = "spi_a_mosi_h", + "spi_a_miso_h", + //"spi_a_ss0_h", + "spi_a_clk_h"; + function = "spi_a"; + drive-strength = <2>; + }; + }; + + spicc0_pins_z: spicc0_pins_z { + mux { + groups = "spi_a_mosi_z", + "spi_a_miso_z", + //"spi_a_ss0_z", + "spi_a_clk_z"; + function = "spi_a"; + drive-strength = <2>; + }; + }; + + spifc_pins:spifc_pins { + mux { + groups = "spif_hold", + "spif_mo", + "spif_mi", + "spif_clk", + "spif_wp", + "spif_cs"; + function = "spif"; + drive-strength-microamp = <3000>; + }; + }; + + irblaster_pins:irblaster_pin { + mux { + groups = "remote_out"; + function = "remote_out"; + }; + }; + + spdifin: spdifin { + mux {/* GPIOH_5 */ + groups = "spdif_in"; + function = "spdif_in"; + }; + }; +}; + +&gpu{ + reg = <0x0 0xFE400000 0x0 0x04000>, /*mali APB bus base address*/ + <0x0 0xFE002000 0x0 0x01000>, /*reset register*/ + <0x0 0xFF800000 0x0 0x01000>, /*aobus TODO update*/ + <0x0 0xFF63c000 0x0 0x01000>, /*hiubus for clk cntl*/ + <0x0 0xFE002000 0x0 0x01000>; /*reset register*/ + + interrupts = <0 144 4>, <0 145 4>, <0 146 4>; + interrupt-names = "GPU", "MMU", "JOB"; + clk_cntl_reg = <0x57>; + + 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_GP1_PLL>, + <&clkc CLKID_MALI_0_SEL>, + <&clkc CLKID_MALI_0>, + <&clkc CLKID_MALI>; /* Glitch free mux */ + assigned-clock-parents = <0>, /* Do Nothing */ + <&clkc CLKID_FCLK_DIV4>, + <0>, /* Do Nothing */ + <&clkc CLKID_MALI_0>; + assigned-clock-rates = <852000000>, + <0>, /* Do Nothing */ + <500000000>, + <0>; /* Do Nothing */ + + tbl = <&dvfs285_cfg + &dvfs400_cfg + &dvfs500_cfg + &dvfs666_cfg + &dvfs850_cfg + &dvfs850_cfg>; + + dvfs850_cfg:dvfs850_cfg { + clk_freq = <852000000>; + clk_parent = "gp1_pll"; + clkp_freq = <852000000>; + clk_reg = <0x200>; + voltage = <1150>; + keep_count = <5>; + threshold = <80 255>; + }; + +}; diff --git a/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi new file mode 100644 index 000000000..2f7f66061 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Amlogic, Inc. All rights reserved. + */ + +#include +#include "meson-s7d.dtsi" + +/ { + drm_amhdmitx: drm-amhdmitx { + status = "disabled"; + hdcp = "disabled"; + }; + + drm_amcvbsout: drm-amcvbsout { + status = "disabled"; + compatible = "amlogic, drm-cvbsout"; + dev_name = "meson-amcvbsout"; + ports { + port { + #address-cells = <1>; + #size-cells = <0>; +// cvbs_to_drm: endpoint@1 { +// reg = <1>; +// remote-endpoint = <&drm_to_cvbs>; +// }; + }; + }; + }; + + drm_vpu: drm-vpu@0xff900000 { + status = "disabled"; + compatible = "amlogic, meson-s7-vpu"; + osd_ver = /bits/ 8 ; + reg = <0x0 0xff900000 0x0 0x40000>, + <0x0 0xff63c000 0x0 0x2000>, + <0x0 0xff638000 0x0 0x2000>; + reg-names = "base", "hhi", "dmc"; + interrupts = ; + interrupt-names = "viu-vsync"; + dma-coherent; + /*EXTERNAL port for driver outside of drm.*/ + connectors_dev: port@1 { + #address-cells = <1>; + #size-cells = <0>; + drm_to_hdmitx: endpoint@0 { + reg = <0>; + remote-endpoint = <&hdmitx_to_drm>; + }; +// drm_to_cvbs: endpoint@1 { +// reg = <1>; +// remote-endpoint = <&cvbs_to_drm>; +// }; +// drm_to_dummyl: endpoint@2 { +// reg = <2>; +// remote-endpoint = <&dummyl_to_drm>; +// }; + }; + }; + + drm_subsystem: drm-subsystem { + status = "okay"; + compatible = "amlogic, drm-subsystem"; + ports = <&connectors_dev>; + fbdev_sizes = <1920 1080 1920 2160 32>; + vfm_mode = <1>; /** 0:drm mode 1:composer mode */ + memory-region = <&logo_reserved>; + primary_plane_index = <0>; /* primary plane index for crtcs */ + crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ + + vpu_topology: vpu_topology { + vpu_blocks { + osd1_block: block@0 { + id = /bits/ 8 ; + 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 &afbc_osd1_block>; + }; + osd2_block: block@1 { + id = /bits/ 8 ; + 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 = <0 &afbc_osd2_block>; + }; + afbc_osd1_block: block@3 { + id = /bits/ 8 ; + index = /bits/ 8 <0>; + type = /bits/ 8 <1>; + block_name = "afbc_osd1_block"; + num_in_links = /bits/ 8 <0x1>; + in_links = <0 &osd1_block>; + num_out_links = /bits/ 8 <0x1>; + out_links = <0 &osd_blend_block>; + }; + afbc_osd2_block: block@4 { + id = /bits/ 8 ; + index = /bits/ 8 <1>; + type = /bits/ 8 <1>; + block_name = "afbc_osd2_block"; + num_in_links = /bits/ 8 <0x1>; + in_links = <0 &osd2_block>; + num_out_links = /bits/ 8 <0x1>; + out_links = <0 &scaler_osd2_block>; + }; + scaler_osd1_block: block@6 { + id = /bits/ 8 ; + index = /bits/ 8 <0>; + type = /bits/ 8 <2>; + block_name = "scaler_osd1_block"; + num_in_links = /bits/ 8 <0x1>; + in_links = <0 &osd1_hdr_dolby_block>; + num_out_links = /bits/ 8 <0x1>; + out_links = <0 &vpp_postblend_block>; + }; + scaler_osd2_block: block@7 { + id = /bits/ 8 ; + index = /bits/ 8 <1>; + type = /bits/ 8 <2>; + block_name = "scaler_osd2_block"; + num_in_links = /bits/ 8 <0x1>; + in_links = <0 &afbc_osd2_block>; + num_out_links = /bits/ 8 <0x1>; + out_links = <2 &osd_blend_block>; + }; + osd_blend_block: block@9 { + id = /bits/ 8 ; + block_name = "osd_blend_block"; + type = /bits/ 8 <3>; + num_in_links = /bits/ 8 <0x2>; + in_links = <0 &afbc_osd1_block>, + <0 &scaler_osd2_block>; + num_out_links = /bits/ 8 <0x2>; + out_links = <0 &osd1_hdr_dolby_block>, + <1 &vpp_postblend_block>; + }; + osd1_hdr_dolby_block: block@10 { + id = /bits/ 8 ; + block_name = "osd1_hdr_dolby_block"; + type = /bits/ 8 <4>; + num_in_links = /bits/ 8 <0x1>; + in_links = <0 &osd_blend_block>; + num_out_links = /bits/ 8 <0x1>; + out_links = <0 &scaler_osd1_block>; + }; + vpp_postblend_block: block@12 { + id = /bits/ 8 ; + block_name = "vpp_postblend_block"; + type = /bits/ 8 <6>; + num_in_links = /bits/ 8 <0x2>; + in_links = <0 &scaler_osd1_block>, + <1 &osd_blend_block>; + num_out_links = <0x0>; + }; + video1_block: block@13 { + id = /bits/ 8 ; + 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@14 { + id = /bits/ 8 ; + 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 <0x2>; + 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>; + }; + }; +}; + +&amhdmitx { + ports { + port { + #address-cells = <1>; + #size-cells = <0>; + hdmitx_to_drm: endpoint@0 { + reg = <0>; + remote-endpoint = <&drm_to_hdmitx>; + }; + }; + }; +}; + +&dummy_venc { + ports { + port { + #address-cells = <1>; + #size-cells = <0>; +// dummyl_to_drm: endpoint@0 { +// reg = <0>; +// remote-endpoint = <&drm_to_dummyl>; +// }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/s7d_pxp.dts b/arch/arm64/boot/dts/amlogic/s7d_pxp.dts new file mode 100644 index 000000000..07cc6f069 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/s7d_pxp.dts @@ -0,0 +1,1633 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Amlogic, Inc. All rights reserved. + */ + +/dts-v1/; + +#include "meson-s7d.dtsi" +#include "mesons7d_drm.dtsi" +/ { + amlogic-dt-id = "s7d_pxp"; + compatible = "s7d_pxp"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + aliases { + serial0 = &uart_B; + serial1 = &uart_A; + serial2 = &uart_C; + serial3 = &uart_D; + serial4 = &uart_E; + i2c0 = &i2c0; + i2c1 = &i2c1; + i2c2 = &i2c2; + i2c3 = &i2c3; + i2c4 = &i2c4; + spi0 = &spifc; + spi1 = &spicc0; + tsensor0 = &p_tsensor; + }; + + memory@00000000 { + device_type = "memory"; + linux,usable-memory = <0x0 0x0 0x0 0x80000000>; + }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + ramdump_bl33z@00000000 { + reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */ + status = "disabled"; + }; + + /* global autoconfigured region for contiguous allocations */ + ramoops@0x07400000 { + compatible = "ramoops"; + reg = <0x0 0x07400000 0x0 0x00100000>; + record-size = <0x20000>; + console-size = <0x40000>; + ftrace-size = <0x80000>; + pmsg-size = <0x10000>; + bconsole-size = <0x10000>; + }; + + 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"; + /*reusable;*/ + no-map; + size = <0x0 0x400000>; + alignment = <0x0 0x400000>; + reg = <0x0 0x05000000 0x0 0x3400000>; + }; + + logo_reserved:linux,meson-fb { + compatible = "amlogic, meson-fb"; + alignment = <0x0 0x400000>; + reg = <0x0 0x1f800000 0x0 0x800000>; + }; + + ion_cma_reserved:linux,ion-dev { + compatible = "shared-dma-pool"; + reusable; + size = <0x0 0x8000000>; + alignment = <0x0 0x400000>; + }; + ion_fb_reserved:linux,ion-fb { + compatible = "shared-dma-pool"; + reusable; + size = <0x0 0x0>; + alignment = <0x0 0x400000>; + }; + dmaheap_cma_reserved:heap-gfx { + compatible = "shared-dma-pool"; + reusable; + /* 1080p STB androidT size 56M */ + size = <0x0 0x1000000>; + alignment = <0x0 0x400000>; + }; + dmaheap_fb_reserved:heap-fb { + compatible = "shared-dma-pool"; + reusable; + size = <0x0 0x0>; + alignment = <0x0 0x400000>; + }; + /*di CMA pool */ + di_cma_reserved:linux,di_cma { + compatible = "shared-dma-pool"; + reusable; + /* buffer_size = 3621952(yuv422 8bit) + * | 4736064(yuv422 10bit) + * | 4074560(yuv422 10bit full pack mode) + * 10x3621952=34.6M(0x23) support 8bit + * 10x4736064=45.2M(0x2e) support 12bit + * 10x4074560=40M(0x28) support 10bit + */ + //size = <0x0 0x0B000000>; + //size = <0x0 0x0>; + 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 0xd000000>; + alignment = <0x0 0x400000>; + 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; + }; + + /* 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; + /* up to 1920x1080 yuv422 8bit and 5 buffers + * 1920x1080x2x5 = 20 M + */ + size = <0x0 0x01400000>; + alignment = <0x0 0x400000>; + }; + /* global autoconfigured region for contiguous allocations */ + linux,cma { + compatible = "shared-dma-pool"; + reusable; + size = <0x0 0x800000>; + alignment = <0x0 0x400000>; + linux,cma-default; + alloc-ranges = <0x0 0x30000000>; + }; + }; + codec_mm { + compatible = "amlogic, codec, mm"; + memory-region = <&codec_mm_cma &codec_mm_reserved>; + dev_name = "codec_mm"; + status = "okay"; + }; + amdolby_vision { + compatible = "amlogic, dolby_vision_sc2"; + dev_name = "aml_amdolby_vision_driver"; + status = "disabled"; + tv_mode = <0>;/*1:enable ;0:disable*/ + }; + cvbsout { + compatible = "amlogic, cvbsout-s4"; + status = "disabled"; + + /* clk path */ + /* 0:vid_pll vid2_clk */ + /* 1:gp0_pll vid2_clk */ + /* 2:vid_pll vid1_clk */ + /* 3:gp0_pll vid1_clk */ + clk_path = <0>; + + /* performance: reg_address, reg_value */ + /* s4 */ + performance_pal = <0x1bf0 0x9 /* default Matrx625 CTCC value*/ + 0x1b12 0x80c0 + 0x1b05 0xf7 + 0x1b56 0x333 + 0x1c59 0xf25c + 0xffff 0x0>; /* ending flag */ + performance = <0x1bf0 0x9 /* ccitt033 SVA value */ + 0x1b12 0x8040 + 0x1b05 0xfd + 0x1b56 0x333 + 0x1c59 0xf654 + 0xffff 0x0>; /* ending flag */ + performance_ntsc = <0x1bf0 0x9 + 0x1b12 0x8020 + 0x1b03 0x0 + 0x1b04 0x0 + 0x1b05 0x0 + 0x1b06 0x0 + 0x1b56 0x333 + 0x1c59 0xf850 + 0xffff 0x0>; /* ending flag */ + }; + + dvb-extern { + compatible = "amlogic, dvb-extern"; + dev_name = "dvb-extern"; + status = "disabled"; + + /* dvb hardware main power. */ + dvb_power_gpio = <&gpio GPIOZ_5 GPIO_ACTIVE_HIGH>; + dvb_power_value = <1>; + dvb_power_dir = <0>; /* 0: out, 1: in. */ + + fe_num = <3>; /* internal 2 * dvb-c, extern 1 * dvb-s */ + fe0_demod = "internal"; + fe0_tuner0 = <0>; /* use tuner0 */ + + fe1_demod = "internal"; + fe1_tuner0 = <1>; /* use tuner1 */ + + fe2_demod = "cxd2856"; + fe2_i2c_adap_id = <&i2c4>; + fe2_demod_i2c_addr = <0xD8>; + fe2_reset_value = <0>; + fe2_reset_gpio = <&gpio GPIOZ_4 GPIO_ACTIVE_HIGH>; + fe2_reset_dir = <0>; /* 0: out, 1: in. */ + fe2_ant_poweron_value = <0>; + fe2_ant_power_gpio = <&gpio GPIOH_9 GPIO_ACTIVE_HIGH>; + fe2_ts = <0>; + fe2_tuner1 = <3>; /* use tuner3, only S. */ + + tuner_num = <4>; /* tuner number, multi tuner support */ + tuner0_name = "r836_tuner"; + tuner0_i2c_adap = <&i2c3>; + tuner0_i2c_addr = <0x1a>; /* 7bit */ + tuner0_xtal = <0>; /* 0: 16MHz, 1: 24MHz */ + tuner0_xtal_mode = <0>; + /* NO_SHARE_XTAL(0) + * SLAVE_XTAL_SHARE(3) + */ + tuner0_xtal_cap = <16>; + tuner0_lt_out = <1>; + + tuner1_name = "r836_tuner"; + tuner1_i2c_adap = <&i2c3>; + tuner1_i2c_addr = <0x3a>; /* 7bit */ + tuner1_xtal = <0>; /* 0: 16MHz, 1: 24MHz */ + tuner1_xtal_mode = <0>; + /* NO_SHARE_XTAL(0) + * SLAVE_XTAL_SHARE(3) + */ + tuner1_xtal_cap = <16>; + tuner1_lt_out = <1>; + + tuner2_name = "av2018_tuner"; + tuner2_i2c_adap = <&i2c3>; + tuner2_i2c_addr = <0xC4>; /* 8bit */ + tuner2_lt_out = <1>; + + tuner3_name = "av2018_tuner"; + tuner3_lt_out = <1>; + }; + + dvb-demux { + compatible = "amlogic sc2, dvb-demux"; + dev_name = "dvb-demux"; + status = "disabled"; + + reg = <0x0 0xfe000000 0x0 0x480000>; + + dmxdev_num = <0x11>; + + tsn_from = "demod"; + + /*single demod setting */ + ts0_sid = <0x10>; + ts0 = "serial-4wire"; /* tsinA: serial-4wire, serial-3wire */ + ts0_control = <0x0>; + ts0_invert = <0>; + + ts1_sid = <0x11>; + ts1 = "parallel"; + ts1_control = <0x0>; + ts1_invert = <0>; + + ts2_sid = <0x12>; + ts2 = "parallel"; + ts2_control = <0x0>; + ts2_invert = <0>; + + pinctrl-names = "s_ts0"; + pinctrl-0 = <&dvb_s_ts0_pins>; + }; + + ionvideo { + compatible = "amlogic, ionvideo"; + dev_name = "ionvideo"; + status = "disabled"; + }; + + amlvideo2_0 { + compatible = "amlogic, amlvideo2"; + dev_name = "amlvideo2"; + status = "disabled"; + amlvideo2_id = <0>; + cma_mode = <1>; + }; + + amlvideo2_1 { + compatible = "amlogic, amlvideo2"; + dev_name = "amlvideo2"; + status = "disabled"; + amlvideo2_id = <1>; + cma_mode = <1>; + }; + + ppmgr { + compatible = "amlogic, ppmgr"; + memory-region = <&ppmgr_reserved>; + dev_name = "ppmgr"; + status = "disabled"; + }; + + amlvecm { + compatible = "amlogic, vecm-s7"; + dev_name = "aml_vecm"; + status = "okay"; + gamma_en = <0>;/*1:enable ;0:disable*/ + wb_en = <0>;/*1:enable ;0:disable*/ + /*0: 709/601 1: bt2020*/ + tx_op_color_primary = <0>; + }; + + multi-di { + compatible = "amlogic, dim-s4"; + status = "disabled"; + /* 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 667>; + /* buffer-size = <3621952>;(yuv422 8bit) */ + buffer-size = <4074560>;/*yuv422 fullpack*/ + /* reserve-iomap = "true"; */ + /* if enable nr10bit, set nr10bit-support to 1 */ + post-wr-support = <1>; + nr10bit-support = <1>; + nrds-enable = <1>; + pps-enable = <1>; + post_nub = <10>; + }; + + aml_dtv_demod { + compatible = "amlogic, ddemod-s4"; + dev_name = "aml_dtv_demod"; + status = "disabled"; + /* diseqc_name = "sgm_41286"; */ + pinctrl-names="if_agc_pins", "if_agc2_pins"; + pinctrl-0=<&dtvdemod_if_agc_pins>; + pinctrl-1=<&dtvdemod_if_agc2_pins>; + /* pinctrl-2=<&diseqc_out>; */ + /* lnb_en-gpios = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>; */ + /* lnb_sel-gpios = <&gpio GPIOZ_3 GPIO_ACTIVE_HIGH>; */ + /* interrupts = ; */ + /* interrupt-names = "demod_isr"; */ + + //power-domains = <&pwrdm PDID_S4_DEMOD>; + /* clocks = <&clkc CLKID_DAC_CLK>; */ + /* clock-names = "vdac_clk_gate"; */ + + reg = <0x0 0xfe350000 0x0 0x10000 /* dtv demod base */ + 0x0 0xfe000000 0x0 0x2000 /* div base */ + 0x0 0xff800000 0x0 0x1000 /* io_aobus_base */ + 0x0 0xffd01000 0x0 0x1000 /* reset */ + >; + + spectrum = <1>; + cma_mem_size = <0>; //MB + }; + + provisionkey { + compatible = "amlogic, provisionkey"; + status = "disabled"; + key-permit-default = "write"; + //new key not need add dts if started with KEY_PROVISION_ + KEY_PROVISION_XXX { }; + //test_my_added_keyname { }; + };//End provisionkey + + unifykey{ + compatible = "amlogic,unifykey"; + status = "okay"; + unifykey-num = <19>; + 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>; + unifykey-index-17= <&keysn_17>; + unifykey-index-18= <&keysn_18>; + + 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"; + }; + keysn_17:key_17{ + key-name = "attestationdevidbox";//attest dev id box + key-device = "secure"; + key-permit = "read","write","del"; + }; + keysn_18:key_18{ + key-name = "oemkey"; + key-device = "normal"; + key-permit = "read","write","del"; + }; + };//End unifykey + + 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>; + }; + };//End efusekey + /* Audio Related start */ + auge_sound { + compatible = "amlogic, auge-sound-card"; + aml-audio-card,name = "AML-AUGESOUND"; + + /*avout mute gpio*/ + avout_mute-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>; + spk_mute-gpios = <&gpio GPIOH_8 GPIO_ACTIVE_LOW>; + + aml-audio-card,dai-link@0 { + format = "dsp_a"; + mclk-fs = <512>; + //continuous-clock; + //bitclock-inversion; + //frame-inversion; + /* master mode */ + bitclock-master = <&tdma>; + frame-master = <&tdma>; + /* slave mode */ + /* + * bitclock-master = <&tdmacodec>; + * frame-master = <&tdmacodec>; + */ + suffix-name = "alsaPORT-pcm"; + tdmacpu: cpu { + sound-dai = <&tdma>; + dai-tdm-slot-tx-mask = + <1>; + dai-tdm-slot-rx-mask = + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; + }; + tdmacodec: codec { + sound-dai = <&dummy_codec>; + }; + }; + + aml-audio-card,dai-link@1 { + format = "i2s";//"dsp_a"; + 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 + * what's the dai link used for + */ + suffix-name = "alsaPORT-i2s"; + 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-tx-mask = + * <1 1 1 1 1 1 1 1>; + * dai-tdm-slot-rx-mask = + * <1 1 1 1 1 1 1 1>; + * dai-tdm-slot-num = <8>; + */ + dai-tdm-slot-width = <32>; + system-clock-frequency = <12288000>; + }; + tdmbcodec: codec { + sound-dai = <&amlogic_codec>; + }; + }; + + 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-i2s"; + 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 + * what's the dai link used for + */ + suffix-name = "alsaPORT-pdm-builtinmic"; + cpu { + sound-dai = <&apdm>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + + aml-audio-card,dai-link@4 { + mclk-fs = <128>; + /* 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>; + }; + }; + /* spdif_b to hdmi, only playback */ + aml-audio-card,dai-link@5 { + mclk-fs = <128>; + continuous-clock; + /* suffix-name, sync with android audio hal + * what's the dai link used for + */ + 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>; + continuous-clock; + suffix-name = "alsaPORT-loopback"; + cpu { + sound-dai = <&loopbacka>; + system-clock-frequency = <12288000>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + }; + + picdec { + compatible = "amlogic, picdec"; + status = "disabled"; + }; + + audiolocker: locker { + compatible = "amlogic, audiolocker"; + clock-names = "lock_out", "lock_in", "out_src", + "in_src", "out_calc", "in_ref"; + interrupts = ; + interrupt-names = "irq"; + frequency = <49000000>; /* pll */ + dividor = <49>; /* locker's parent */ + status = "disabled"; + };/* Audio Related end */ + + adc_keypad { + compatible = "amlogic, adc_keypad"; + status = "disabled"; + key_name = "standby", "vol+", "vol-"; + key_num = <3>; + io-channels = <&saradc 0>; + io-channel-names = "key-chan-0"; + key_chan = <0 0 0>; + key_code = <116 115 114>; + key_val = <20 910 630>; //val=voltage/1800mV*1023 + key_tolerance = <40 40 40>; + }; + + gpio_keypad{ + compatible = "amlogic, gpio_keypad"; + status = "disabled"; + scan_period = <20>; + key_num = <2>; + key_name = "bluetooth", "mute"; + key_code = <600 SW_MUTE_DEVICE>; + key_type = ; + key-gpios = <&gpio GPIOD_2 GPIO_ACTIVE_HIGH + &gpio GPIOD_3 GPIO_ACTIVE_HIGH>; + detect_mode = <0>;/*0:polling mode, 1:irq mode*/ + }; +}; + +&i2c3 { + status = "disabled"; + pinctrl-names="default"; + pinctrl-0=<&i2c3_pins2>; + clock-frequency = <300000>; +}; + +&i2c4 { + status = "disabled"; + pinctrl-names="default"; + pinctrl-0=<&i2c4_pins3>; + clock-frequency = <300000>; +}; + +&i2c1 { + status = "disabled"; + pinctrl-names="default"; + pinctrl-0=<&i2c1_pins2>; + clock-frequency = <300000>; /* default 100k */ + + tlc59116: tlc59116@60 { + compatible = "amlogic,tlc59116_led"; + reg = <0x60>; + status = "disabled"; + + led0 { + default_colors = <0 0 0>; + r_io_number = <0>; + g_io_number = <10>; + b_io_number = <5>; + }; + + led1 { + default_colors = <0 0 0>; + r_io_number = <1>; + g_io_number = <11>; + b_io_number = <6>; + }; + + led2 { + default_colors = <0 0 0>; + r_io_number = <2>; + g_io_number = <12>; + b_io_number = <7>; + }; + + led3 { + default_colors = <0 0 0>; + r_io_number = <3>; + g_io_number = <13>; + b_io_number = <8>; + }; + }; + aw9523: aw9523_led@5b { + compatible = "amlogic,aw9523b_led"; + reg = <0x5b>; + status = "disabled"; + reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>; + platform = <4>; + + led1 { + default_colors = <0 0 0>; + r_io_number = <0>; + g_io_number = <10>; + b_io_number = <5>; + }; + + led2 { + default_colors = <0 0 0>; + r_io_number = <1>; + g_io_number = <11>; + b_io_number = <6>; + }; + + led3 { + default_colors = <0 0 0>; + r_io_number = <2>; + g_io_number = <12>; + b_io_number = <7>; + }; + + led4 { + default_colors = <0 0 0>; + r_io_number = <3>; + g_io_number = <13>; + b_io_number = <8>; + }; + led9 { + default_colors = <0 0 0>; + r_io_number = <4>; + g_io_number = <14>; + b_io_number = <9>; + }; + }; +}; + +&vddcpu0 { + status = "disabled"; +}; + +&CPU0 { + operating-points-v2 = <&cpu_opp_table0_s805c3>, + <&cpu_opp_table1_s805c3>, + <&cpu_opp_table2_s805c3>, + <&cpu_opp_table3_s805c3>; +}; + +&CPU1 { + operating-points-v2 = <&cpu_opp_table0_s805c3>, + <&cpu_opp_table1_s805c3>, + <&cpu_opp_table2_s805c3>, + <&cpu_opp_table3_s805c3>; +}; + +&CPU2 { + operating-points-v2 = <&cpu_opp_table0_s805c3>, + <&cpu_opp_table1_s805c3>, + <&cpu_opp_table2_s805c3>, + <&cpu_opp_table3_s805c3>; +}; + +&CPU3 { + operating-points-v2 = <&cpu_opp_table0_s805c3>, + <&cpu_opp_table1_s805c3>, + <&cpu_opp_table2_s805c3>, + <&cpu_opp_table3_s805c3>; +}; + +&audiobus { + tdma: tdm@0 { + compatible = "amlogic, t5-snd-tdma"; + #sound-dai-cells = <0>; + dai-tdm-lane-slot-mask-in = <1>; + dai-tdm-lane-slot-mask-out = <1 0>; + dai-tdm-clk-sel = <0>; + //clocks = <&clkaudio CLKID_AUDIO_MCLK_A + // &clkc CLKID_MPLL0>; + //clock-names = "mclk", "clk_srcpll"; + pinctrl-names = "tdm_pins"; + pinctrl-0 = <&tdm_a + &tdm_d0_pins + &tdm_d1_pins + &tdma_clk_pins>; + + status = "disabled"; + }; + + tdmb: tdm@1 { + compatible = "amlogic, t5-snd-tdmb"; + #sound-dai-cells = <0>; + dai-tdm-lane-slot-mask-out = <1 1 1 1>; + dai-tdm-clk-sel = <1>; + //clocks = <&clkaudio CLKID_AUDIO_MCLK_B + // &clkaudio CLKID_AUDIO_MCLK_PAD0 + // &clkc CLKID_MPLL1>; + //clock-names = "mclk", "mclk_pad", "clk_srcpll"; + /* + * 0: tdmout_a; + * 1: tdmout_b; + * 2: tdmout_c; + * 3: spdifout; + * 4: spdifout_b; + */ + samesource_sel = <3>; + + /*enable default mclk(12.288M), before extern codec start*/ + start_clk_enable = <1>; + + /*tdm clk tuning enable*/ + clk_tuning_enable = <1>; + + status = "disabled"; + + /* !!!For --TV platform-- ONLY */ + Channel_Mask { + /*i2s has 4 pins, 8channel, mux output*/ + Spdif_samesource_Channel_Mask = "i2s_0/1"; + }; + }; + + tdmc: tdm@2 { + compatible = "amlogic, t5-snd-tdmc"; + #sound-dai-cells = <0>; + dai-tdm-lane-slot-mask-out = <1>; + dai-tdm-clk-sel = <2>; + //clocks = <&clkaudio CLKID_AUDIO_MCLK_C + // &clkc CLKID_MPLL2>; + //clock-names = "mclk", "clk_srcpll"; + + status = "disabled"; + }; + + spdifa: spdif@0 { + compatible = "amlogic, tm2-revb-snd-spdif-a"; + #sound-dai-cells = <0>; + //clocks = <&clkc CLKID_MPLL0 + // &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", "fixed_clk", "gate_spdifin", + // "gate_spdifout", "clk_spdifin", "clk_spdifout"; + interrupts = + ; + + interrupt-names = "irq_spdifin"; + pinctrl-names = "spdif_pins", "spdif_pins_mute"; + pinctrl-0 = <&spdifout>; + pinctrl-1 = <&spdifout_a_mute>; + + /*spdif clk tuning enable*/ + clk_tuning_enable = <1>; + + status = "disabled"; + }; + spdifb: spdif@1 { + compatible = "amlogic, tm2-revb-snd-spdif-b"; + #sound-dai-cells = <0>; + //clocks = <&clkc CLKID_MPLL0 /*CLKID_HIFI_PLL*/ + // &clkaudio CLKID_AUDIO_GATE_SPDIFOUT_B + // &clkaudio CLKID_AUDIO_SPDIFOUT_B>; + //clock-names = "sysclk", + // "gate_spdifout", "clk_spdifout"; + + status = "disabled"; + }; + apdm: pdm { + compatible = "amlogic, sm1-snd-pdm"; + #sound-dai-cells = <0>; + + //clocks = <&clkaudio CLKID_AUDIO_GATE_PDM + // &clkc CLKID_FCLK_DIV3 + // &clkc CLKID_MPLL3 + // &clkaudio CLKID_AUDIO_PDMIN0 + // &clkaudio CLKID_AUDIO_PDMIN1>; + //clock-names = "gate", + // "sysclk_srcpll", + // "dclk_srcpll", + // "pdm_dclk", + // "pdm_sysclk"; + + pinctrl-names = "pdm_pins"; + pinctrl-0 = <&pdmin>; + + /* mode 0~4, defalut:1 */ + filter_mode = <1>; + + status = "disabled"; + }; + + asrca: resample@0 { + compatible = "amlogic, t5-resample-a"; + //clocks = <&clkc CLKID_MPLL3 + // &clkaudio CLKID_AUDIO_MCLK_F + // &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 + * NONE, + * TDMIN_LB, 6 + * LOOPBACK, 7 + */ + resample_module = <4>; + status = "disabled"; + }; + + asrcb:resample@1 { + compatible = "amlogic, t5-resample-b"; + //clocks = <&clkc CLKID_MPLL3 + // &clkaudio CLKID_AUDIO_MCLK_F + // &clkaudio CLKID_AUDIO_RESAMPLE_B>; + //clock-names = "resample_pll", "resample_src", "resample_clk"; + + /*this resample is only used for loopback_A.*/ + capture_sample_rate = <16000>; + + status = "disabled"; + }; + + 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 = ; + 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 = "disabled"; + }; + + loopbacka:loopback@0 { + compatible = "amlogic, t5-loopbacka"; + #sound-dai-cells = <0>; + + //clocks = <&clkaudio CLKID_AUDIO_GATE_PDM + // &clkc CLKID_FCLK_DIV3 + // &clkc CLKID_MPLL3 + // &clkaudio CLKID_AUDIO_PDMIN0 + // &clkaudio CLKID_AUDIO_PDMIN1 + // &clkc CLKID_MPLL0 + // &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 0 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>; + + status = "disabled"; + }; + + loopbackb:loopback@1 { + compatible = "amlogic, t5-loopbackb"; + #sound-dai-cells = <0>; + + //clocks = <&clkaudio CLKID_AUDIO_GATE_PDM + // &clkc CLKID_FCLK_DIV3 + // &clkc CLKID_MPLL3 + // &clkaudio CLKID_AUDIO_PDMIN0 + // &clkaudio CLKID_AUDIO_PDMIN1 + // &clkc CLKID_MPLL0 + // &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>; + + status = "disabled"; + }; + aed:effect { + compatible = "amlogic, snd-effect-v3"; + #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 = <0x3>; + status = "disabled"; + }; +}; /* end of audiobus */ + +&pinctrl_audio { + tdm_d0_pins: tdm_d0_pin { + mux { + groups = "tdm_d0"; + function = "tdmouta_lane0"; + }; + }; + + tdm_d1_pins: tdm_d1_pin { + mux { + groups = "tdm_d1"; + function = "tdmina_lane0"; + }; + }; + + tdma_clk_pins: tdm_clk_pin { + mux { + groups = "tdm_sclk0", "tdm_lrclk0"; + function = "tdm_clk_outa"; + }; + }; +}; + +&periphs_pinctrl { + tdm_a: tdm_a { + mux { /* GPIOX_11, GPIOX_10, GPIOX_9, GPIOX_8 */ + groups = "tdm_sclk0", + "tdm_fs0", + "tdm_d0", + "tdm_d1"; + function = "tdm"; + }; + }; + + pdmin: pdmin { + mux { /* GPIOD_8, GPIOD_9 */ + groups = "pdm_din0_d"; + function = "pdm"; + }; + mux1 { + groups = "pdm_dclk_d"; + function = "pdm"; + drive-strength-microamp = <500>; + }; + }; + + spdifout: spdifout { + mux { /* GPIOH_4 */ + groups = "spdif_out_h"; + function = "spdif_out"; + }; + }; + + spdifout_a_mute: spdifout_a_mute { + mux { /* GPIOH_4 */ + groups = "GPIOH_4"; + function = "gpio_periphs"; + output-low; + }; + }; + + dvb_s_ts0_pins: dvb_s_ts0_pins { + tsin_a { + groups = "tsin_a_sop", + "tsin_a_valid", + "tsin_a_clk", + "tsin_a_din0"; + function = "tsin_a"; + }; + }; +}; /* end of periphs_pinctrl */ + +&audio_data { + status = "disabled"; +}; + +&dwc2_a { + status = "disabled"; + /** 0: normal, 1: otg+dwc3 host only, 2: otg+dwc3 device only*/ + controller-type = <3>; +}; + +&crg { + status = "disabled"; +}; + +&usb2_phy_v2 { + status = "disabled"; + portnum = <2>; +}; + +&usb3_phy_v2 { + status = "disabled"; + portnum = <0>; + otg = <1>; + /*gpio-vbus-power = "GPIOH_6";*/ + /*gpios = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;*/ +}; + +&pcie { + reset-gpio = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>; + status = "disable"; +}; + +/* SDIO */ +&sd_emmc_a { + status = "disabled"; + pinctrl-0 = <&sdio_pins>; + pinctrl-1 = <&sdio_clk_gate_pins>; + pinctrl-names = "default", "clk-gate"; + #address-cells = <1>; + #size-cells = <0>; + + bus-width = <4>; + cap-sd-highspeed; + sd-uhs-sdr50; + sd-uhs-sdr104; + max-frequency = <200000000>; + + non-removable; + disable-wp; + + //vmmc-supply = <&vddao_3v3>; + //vqmmc-supply = <&vddio_ao1v8>; + + brcmf: wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; + }; +}; + +/* SD card */ +&sd_emmc_b { + status = "okay"; + pinctrl-0 = <&sdcard_pins>; + pinctrl-1 = <&sdcard_clk_gate_pins>; + pinctrl-2 = <&sd_1bit_pins>; + //pinctrl-3 = <&sd_to_ao_uart_clr_pins + // &sdcard_pins &ao_to_sd_uart_pins>; + //pinctrl-4 = <&sd_to_ao_uart_clr_pins + // &sd_1bit_pins &ao_to_sd_uart_pins>; + //pinctrl-5 = <&sdcard_pins &ao_uart_pins>; + //pinctrl-6 = <&sd_to_ao_uart_clr_pins + // &ao_to_sd_uart_pins>; + //pinctrl-7 = <&sdcard_pins &ao_uart_pins>; + //pinctrl-8 = <&sd_to_ao_uart_clr_pins + // &ao_to_sd_uart_pins>; + pinctrl-names = "sd_default", + "clk-gate", + "sd_1bit_pins"; + // "sd_clk_cmd_uart_pins", + // "sd_1bit_uart_pins", + // "sd_to_ao_uart_pins", + // "ao_to_sd_uart_pins", + // "sd_to_ao_jtag_pins", + // "ao_to_sd_jtag_pins"; + bus-width = <4>; + cap-sd-highspeed; +// sd-uhs-sdr12; +// sd-uhs-sdr25; +// sd-uhs-sdr50; +// sd-uhs-sdr104; + max-frequency = <200000000>; + disable-wp; + + cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_HIGH>; + //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>; + //vmmc-supply = <&vddao_3v3>; + //vqmmc-supply = <&emmc_1v8>; +}; + +&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; + +// mmc-pwrseq = <&emmc_pwrseq>; +// vmmc-supply = <&vddao_3v3>; +// vqmmc-supply = <&vddao_1v8>; +}; + +&mtd_nand { + status = "disabled"; + #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 = "bootloader"; + reg = <0x0 0x00000000>; + }; + }; + nand@normal { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + nand-ecc-maximize; + + partition@0 { + label = "bl2e"; + reg = <0x0 0x00000000>; + }; + partition@1 { + label = "bl2x"; + reg = <0x0 0x00000000>; + }; + partition@2 { + label = "ddrfip"; + reg = <0x0 0x00000000>; + }; + partition@3 { + label = "tpl"; + reg = <0x0 0x00000000>; + }; + partition@4 { + /* Do not modify before the factory partition */ + label = "factory"; + reg = <0x0 0x0800000>; + }; + partition@5 { + label = "tee"; + reg = <0x0 0x800000>; + }; + partition@6 { + label = "logo"; + reg = <0x0 0x200000>; + }; + partition@7 { + label = "misc"; + reg = <0x0 0x800000>; + }; + partition@8 { + label = "recovery"; + reg = <0x0 0x2000000>; + }; + partition@9 { + label = "boot"; + reg = <0x0 0x2200000>; + }; + partition@10 { + label = "system"; + reg = <0x0 0xE000000>; + }; + partition@11 { + label = "vendor"; + reg = <0x0 0x1000000>; + }; + partition@12 { + label = "vbmeta"; + reg = <0x0 0x0100000>; + }; + partition@13 { + label = "data"; + reg = <0x0 0xffffffff>; + }; + }; +}; + +&saradc { + status = "okay"; + + pd { + enabled; + }; +}; + +ðmac { + status = "disabled"; + phy-handle = <&internal_ephy>; + phy-mode = "rmii"; + keep-alive = <1>; +}; + +&ir { + status = "disabled"; + pinctrl-0 = <&remote_pins>; + pinctrl-names = "default"; +}; + +&spicc0 { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&spicc0_pins_x>; + cs-gpios = <&gpio GPIOX_10 0>; +}; + +&spifc { + status = "disabled"; + spi-nor@0 { + status = "disabled"; + }; +}; + +&fb { + status = "disabled"; + display_size_default = <1920 1080 1920 2160 32>; + mem_size = <0x00800000 0x1980000 0x100000>; + logo_addr = "0x1f800000"; + mem_alloc = <0>; + pxp_mode = <0>; /** 0:normal mode 1:pxp mode */ +}; + +&drm_vpu { + status = "okay"; + logo_addr = "0x1fc00000"; + +}; + +&amhdmitx { + res_1080p = <1>; + status = "okay"; + /* hdcp ctrl 0: sysctrl, 1: drv, 2: linux app */ + hdcp_ctl_lvl = <1>; + pxp_mode = <1>; +}; + +&drm_amhdmitx { + status = "disabled"; + hdcp = "disabled"; +}; + +&drm_amcvbsout { + status = "disabled"; +}; + +/*if you want to use vdin just modify status to "ok"*/ +&vdin0 { + /*compatible = "amlogic, vdin-s7";*/ + /*memory-region = <&vdin0_cma_reserved>;*/ + /*status = "disabled";*/ + /* up to 1920x1080 yuv422 8bit and 5 buffers + * 1920x1080x2x5 = 20 M + */ + cma_size = <20>; + /*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 = <0x1>; +}; + +&vdin1 { + /*compatible = "amlogic, vdin-s7";*/ + memory-region = <&vdin1_cma_reserved>; + frame_buff_num = <4>; + /*status = "disabled";*/ + /*vdin write mem color depth support: + *bit0:support 8bit + *bit1:support 9bit + *bit2:support 10bit + *bit3:support 12bit + */ + tv_bit_mode = <1>; +}; + +&aml_wifi{ + status = "disabled"; + interrupt-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>; + power_on-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>; +}; + +&aml_bt { + status = "disabled"; + reset-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; + btwakeup-gpios = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>; + hostwake-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_HIGH>; +}; + +&uart_A { + status = "okay"; + uart-has-rtscts; +}; + +&cma_shrinker { + free = <7680 24288 28528 32600 32768 36624>; +}; + +&drm_subsystem { + fbdev_sizes = <1280 720 1280 1440 32>; +}; + +&amlogic_codec { + tocodec_inout = <1>; + tdmout_index = <1>; +};