Files
BPI-CM9-Linux/aml-patches/aml-comp/kernel/aml-6.12/common_drivers/0002-a9-multidtb-1-1.patch
T

15596 lines
359 KiB
Diff
Raw Normal View History

2026-08-25 10:02:36 +08:00
From 4adad7e7072a441ccd4dee393f84b52a48c9b6c2 Mon Sep 17 00:00:00 2001
From: "chunfei.wang" <chunfei.wang@amlogic.com>
Date: Mon, 10 Aug 2026 03:19:35 +0000
Subject: [PATCH 2/6] a9: multidtb [1/1]
PD#SWPL-274170
Problem:
a9 support 4g/8g/16g dtb
Solution:
add 4g/8g/16g dtb
1.heap-gfx 4k
2.isp_reserved add 64M
3.earphone
Fixed conflicts:
NA
Verify:
A9
Change-Id: I91d5b06dbc63b676d67fbcac8aafea75e5cf4a04
Signed-off-by: chunfei.wang <chunfei.wang@amlogic.com>
---
arch/arm64/boot/dts/amlogic/Makefile | 12 +
.../a9_a311y3_by401_16g_hdmi_linux.dts | 1869 ++++++++++++++++
.../a9_a311y3_by401_16g_hdmi_linux_v1.dts | 1856 ++++++++++++++++
.../dts/amlogic/a9_a311y3_by401_16g_linux.dts | 1956 +++++++++++++++++
.../amlogic/a9_a311y3_by401_16g_linux_v1.dts | 1936 ++++++++++++++++
.../amlogic/a9_a311y3_by401_4g_hdmi_linux.dts | 1869 ++++++++++++++++
.../a9_a311y3_by401_4g_hdmi_linux_v1.dts | 1856 ++++++++++++++++
.../dts/amlogic/a9_a311y3_by401_4g_linux.dts | 1956 +++++++++++++++++
.../amlogic/a9_a311y3_by401_4g_linux_v1.dts | 1936 ++++++++++++++++
....dts => a9_a311y3_by401_8g_hdmi_linux.dts} | 15 +-
...s => a9_a311y3_by401_8g_hdmi_linux_v1.dts} | 15 +-
...linux.dts => a9_a311y3_by401_8g_linux.dts} | 19 +-
...v1.dts => a9_a311y3_by401_8g_linux_v1.dts} | 15 +-
sound/soc/amlogic/auge/tdm_hw.c | 5 +
14 files changed, 15297 insertions(+), 18 deletions(-)
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux_v1.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux_v1.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux_v1.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux.dts
create mode 100755 arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux_v1.dts
rename arch/arm64/boot/dts/amlogic/{a9_a311y3_by401_hdmi_linux.dts => a9_a311y3_by401_8g_hdmi_linux.dts} (99%)
rename arch/arm64/boot/dts/amlogic/{a9_a311y3_by401_hdmi_linux_v1.dts => a9_a311y3_by401_8g_hdmi_linux_v1.dts} (99%)
rename arch/arm64/boot/dts/amlogic/{a9_a311y3_by401_linux.dts => a9_a311y3_by401_8g_linux.dts} (99%)
rename arch/arm64/boot/dts/amlogic/{a9_a311y3_by401_linux_v1.dts => a9_a311y3_by401_8g_linux_v1.dts} (99%)
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 0b821740fa..533ec8807c 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -224,6 +224,18 @@ dtb-y += a9_a311y3_by401_dp_v1.dtb
dtb-y += a9_a311y3_by401_hdmi_linux_v1.dtb
dtb-y += a9_a311y3_by401_linux_v1.dtb
dtb-y += a9_a311y3_by401_car_hypervisor.dtb
+dtb-y += a9_a311y3_by401_4g_linux.dtb
+dtb-y += a9_a311y3_by401_4g_linux_v1.dtb
+dtb-y += a9_a311y3_by401_8g_linux.dtb
+dtb-y += a9_a311y3_by401_8g_linux_v1.dtb
+dtb-y += a9_a311y3_by401_16g_linux.dtb
+dtb-y += a9_a311y3_by401_16g_linux_v1.dtb
+dtb-y += a9_a311y3_by401_4g_hdmi_linux.dtb
+dtb-y += a9_a311y3_by401_4g_hdmi_linux_v1.dtb
+dtb-y += a9_a311y3_by401_8g_hdmi_linux.dtb
+dtb-y += a9_a311y3_by401_8g_hdmi_linux_v1.dtb
+dtb-y += a9_a311y3_by401_16g_hdmi_linux.dtb
+dtb-y += a9_a311y3_by401_16g_hdmi_linux_v1.dtb
dtb-y += c5_pxp.dtb
dtb-y += c5_a123x_cb400.dtb
dtb-y += c5_c305x2_cb410.dtb
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux.dts
new file mode 100755
index 0000000000..1f48a25da7
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux.dts
@@ -0,0 +1,1869 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+//#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-16g-hdmi";
+ compatible = "a9_a311y3_by401-16g-hdmi";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x00000003 0x000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto 4K+direct render, size 176M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headset (headphone + mic) insert det */
+ hs-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "dsp_b";
+ 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, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <16>;
+ system-clock-frequency = <256000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ poll-interval = <40>;
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i3c0 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c0_ao_pins2>;
+};
+
+&i3c1 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c1_pins1>;
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK1_PLL>,
+ <&clkc CLKID_MCLK1_0_PRE>,
+ <&clkc CLKID_MCLK1_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+};
+
+&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";
+ };
+ };
+};
+
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <1>;
+ vpp0_layer_count = <3>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <0>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&tx_venc {
+ status = "disabled";
+};
+
+&tx_phy {
+ status = "disabled";
+};
+
+&dptx_clk {
+ status = "disabled";
+};
+
+&dptx {
+ status = "disabled";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+};
+
+&dptx_core {
+ status = "disabled";
+ pxp_mode = <0>;
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <0>;/*1:enable ;0:disable*/
+ wb_en = <0>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane0";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ */
+ samesource_sel = <3>;
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <4>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux_v1.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux_v1.dts
new file mode 100755
index 0000000000..dc8570de96
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_hdmi_linux_v1.dts
@@ -0,0 +1,1856 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+//#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator_V1.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-16g-h-v1";
+ compatible = "a9_a311y3_by401-16g-h-v1";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x00000003 0x000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto 4K+direct render, size 176M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headphone insert det */
+ hp-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "dsp_b";
+ 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, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <16>;
+ system-clock-frequency = <256000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK1_PLL>,
+ <&clkc CLKID_MCLK1_0_PRE>,
+ <&clkc CLKID_MCLK1_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+};
+
+&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";
+ };
+ };
+};
+
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <1>;
+ vpp0_layer_count = <3>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <0>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&tx_venc {
+ status = "disabled";
+};
+
+&tx_phy {
+ status = "disabled";
+};
+
+&dptx_clk {
+ status = "disabled";
+};
+
+&dptx {
+ status = "disabled";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+};
+
+&dptx_core {
+ status = "disabled";
+ pxp_mode = <0>;
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <0>;/*1:enable ;0:disable*/
+ wb_en = <0>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane0";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ */
+ samesource_sel = <3>;
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <4>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux.dts
new file mode 100755
index 0000000000..586f43150c
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux.dts
@@ -0,0 +1,1956 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm_dual.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-16g";
+ compatible = "a9_a311y3_by401-16g";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x00000003 0x000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto dual 4K, 8 buffers = 280M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headset (headphone + mic) insert det */
+ hs-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ // interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ // interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "i2s";
+ mclk-fs = <256>;
+ //continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdma>;
+ frame-master = <&tdma>;
+ /* slave mode */
+ /*
+ * bitclock-master = <&tdmacodec>;
+ * frame-master = <&tdmacodec>;
+ */
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@10 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-earc";
+ cpu {
+ sound-dai = <&earc>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ poll-interval = <40>;
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod GPIOD_3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i3c0 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c0_ao_pins2>;
+};
+
+&i3c1 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c1_pins1>;
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "disabled";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK1_PLL>,
+ <&clkc CLKID_MCLK1_0_PRE>,
+ <&clkc CLKID_MCLK1_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ */
+ samesource_sel = <3>;
+};
+
+&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_lane1";
+ };
+ };
+
+ tdma_clk_pins: tdm_clk_pin {
+ mux {
+ groups = "tdm_sclk0", "tdm_lrclk0";
+ function = "tdm_clk_outa";
+ };
+ };
+};
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <2>;
+ vpp0_layer_count = <2>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <1>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ drm_to_lcd0: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&lcd0_to_drm>;
+ };
+ drm_to_lcd1: endpoint@2 {
+ reg = <2>;
+ remote-endpoint = <&lcd1_to_drm>;
+ };
+ drm_to_edptx0: endpoint@3 {
+ reg = <3>;
+ remote-endpoint = <&edptx0_to_drm>;
+ };
+ drm_to_dptx: endpoint@5 {
+ reg = <5>;
+ remote-endpoint = <&dptx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&eDPTX0 {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ edptx0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_edptx0>;
+ };
+ };
+ };
+};
+
+&dptx {
+ status = "okay";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ dptx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_dptx>;
+ };
+ };
+ };
+};
+
+&dptx_core {
+ status = "okay";
+ pxp_mode = <0>;
+};
+
+&lcd {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ lcd0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd0>;
+ };
+ };
+ };
+};
+
+&lcd1 {
+ status = "okay";
+ ports {
+ port {
+ lcd1_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd1>;
+ };
+ };
+ };
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <1>;/*1:enable ;0:disable*/
+ wb_en = <1>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+ vlock_en = <1>;/*1:enable;0:disable*/
+ vlock_mode = <0x8>;
+ vrr_priority = <1>;/*1:game mode vrr always on;0:vrr on depend on vrr signal*/
+ /*vlock work mode:
+ *bit0:auto ENC
+ *bit1:auto PLL
+ *bit2:manual PLL
+ *bit3:manual ENC
+ *bit4:manual soft ENC
+ *bit5:manual MIX PLL ENC
+ */
+ vlock_pll_m_limit = <1>;
+ vlock_line_limit = <2>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane2";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ samesource_sel = <3>;
+ Channel_Mask {
+ /*i2s has 4 pins, 8channel, mux output*/
+ Spdif_samesource_Channel_Mask = "i2s_2/3";
+ };
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <5>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux_v1.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux_v1.dts
new file mode 100755
index 0000000000..766643f37b
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_16g_linux_v1.dts
@@ -0,0 +1,1936 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm_dual.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator_V1.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-16g-v1";
+ compatible = "a9_a311y3_by401-16g-v1";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x00000003 0x000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto dual 4K, 8 buffers = 280M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headset (headphone + mic) insert det */
+ hs-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ // interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ // interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "dsp_b";
+ 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, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <16>;
+ system-clock-frequency = <256000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@10 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-earc";
+ cpu {
+ sound-dai = <&earc>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod GPIOD_3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "disabled";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+};
+
+&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";
+ };
+ };
+};
+
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <2>;
+ vpp0_layer_count = <2>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <1>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ drm_to_lcd0: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&lcd0_to_drm>;
+ };
+ drm_to_lcd1: endpoint@2 {
+ reg = <2>;
+ remote-endpoint = <&lcd1_to_drm>;
+ };
+ drm_to_edptx0: endpoint@3 {
+ reg = <3>;
+ remote-endpoint = <&edptx0_to_drm>;
+ };
+ drm_to_dptx: endpoint@5 {
+ reg = <5>;
+ remote-endpoint = <&dptx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&eDPTX0 {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ edptx0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_edptx0>;
+ };
+ };
+ };
+};
+
+&dptx {
+ status = "okay";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ dptx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_dptx>;
+ };
+ };
+ };
+};
+
+&dptx_core {
+ status = "okay";
+ pxp_mode = <0>;
+};
+
+&lcd {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ lcd0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd0>;
+ };
+ };
+ };
+};
+
+&lcd1 {
+ status = "okay";
+ ports {
+ port {
+ lcd1_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd1>;
+ };
+ };
+ };
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <1>;/*1:enable ;0:disable*/
+ wb_en = <1>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+ vlock_en = <1>;/*1:enable;0:disable*/
+ vlock_mode = <0x8>;
+ vrr_priority = <1>;/*1:game mode vrr always on;0:vrr on depend on vrr signal*/
+ /*vlock work mode:
+ *bit0:auto ENC
+ *bit1:auto PLL
+ *bit2:manual PLL
+ *bit3:manual ENC
+ *bit4:manual soft ENC
+ *bit5:manual MIX PLL ENC
+ */
+ vlock_pll_m_limit = <1>;
+ vlock_line_limit = <2>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane2";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ samesource_sel = <3>;
+ Channel_Mask {
+ /*i2s has 4 pins, 8channel, mux output*/
+ Spdif_samesource_Channel_Mask = "i2s_2/3";
+ };
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <5>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux.dts
new file mode 100755
index 0000000000..99a72ef723
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux.dts
@@ -0,0 +1,1869 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+//#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-4g-hdmi";
+ compatible = "a9_a311y3_by401-4g-hdmi";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x0 0x20000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto 4K+direct render, size 176M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headset (headphone + mic) insert det */
+ hs-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "dsp_b";
+ 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, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <16>;
+ system-clock-frequency = <256000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ poll-interval = <40>;
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i3c0 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c0_ao_pins2>;
+};
+
+&i3c1 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c1_pins1>;
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK1_PLL>,
+ <&clkc CLKID_MCLK1_0_PRE>,
+ <&clkc CLKID_MCLK1_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+};
+
+&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";
+ };
+ };
+};
+
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <1>;
+ vpp0_layer_count = <3>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <0>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&tx_venc {
+ status = "disabled";
+};
+
+&tx_phy {
+ status = "disabled";
+};
+
+&dptx_clk {
+ status = "disabled";
+};
+
+&dptx {
+ status = "disabled";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+};
+
+&dptx_core {
+ status = "disabled";
+ pxp_mode = <0>;
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <0>;/*1:enable ;0:disable*/
+ wb_en = <0>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane0";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ */
+ samesource_sel = <3>;
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <4>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux_v1.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux_v1.dts
new file mode 100755
index 0000000000..da862e69b0
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_hdmi_linux_v1.dts
@@ -0,0 +1,1856 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+//#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator_V1.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-4g-h-v1";
+ compatible = "a9_a311y3_by401-4g-h-v1";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x0 0x20000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto 4K+direct render, size 176M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headphone insert det */
+ hp-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "dsp_b";
+ 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, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <16>;
+ system-clock-frequency = <256000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK1_PLL>,
+ <&clkc CLKID_MCLK1_0_PRE>,
+ <&clkc CLKID_MCLK1_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+};
+
+&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";
+ };
+ };
+};
+
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <1>;
+ vpp0_layer_count = <3>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <0>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&tx_venc {
+ status = "disabled";
+};
+
+&tx_phy {
+ status = "disabled";
+};
+
+&dptx_clk {
+ status = "disabled";
+};
+
+&dptx {
+ status = "disabled";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+};
+
+&dptx_core {
+ status = "disabled";
+ pxp_mode = <0>;
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <0>;/*1:enable ;0:disable*/
+ wb_en = <0>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane0";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ */
+ samesource_sel = <3>;
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <4>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux.dts
new file mode 100755
index 0000000000..9fda593a07
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux.dts
@@ -0,0 +1,1956 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm_dual.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-4g";
+ compatible = "a9_a311y3_by401-4g";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x0 0x20000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto dual 4K, 8 buffers = 280M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headset (headphone + mic) insert det */
+ hs-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ // interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ // interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "i2s";
+ mclk-fs = <256>;
+ //continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdma>;
+ frame-master = <&tdma>;
+ /* slave mode */
+ /*
+ * bitclock-master = <&tdmacodec>;
+ * frame-master = <&tdmacodec>;
+ */
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@10 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-earc";
+ cpu {
+ sound-dai = <&earc>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ poll-interval = <40>;
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod GPIOD_3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i3c0 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c0_ao_pins2>;
+};
+
+&i3c1 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i3c1_pins1>;
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "disabled";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK1_PLL>,
+ <&clkc CLKID_MCLK1_0_PRE>,
+ <&clkc CLKID_MCLK1_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ */
+ samesource_sel = <3>;
+};
+
+&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_lane1";
+ };
+ };
+
+ tdma_clk_pins: tdm_clk_pin {
+ mux {
+ groups = "tdm_sclk0", "tdm_lrclk0";
+ function = "tdm_clk_outa";
+ };
+ };
+};
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <2>;
+ vpp0_layer_count = <2>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <1>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ drm_to_lcd0: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&lcd0_to_drm>;
+ };
+ drm_to_lcd1: endpoint@2 {
+ reg = <2>;
+ remote-endpoint = <&lcd1_to_drm>;
+ };
+ drm_to_edptx0: endpoint@3 {
+ reg = <3>;
+ remote-endpoint = <&edptx0_to_drm>;
+ };
+ drm_to_dptx: endpoint@5 {
+ reg = <5>;
+ remote-endpoint = <&dptx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&eDPTX0 {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ edptx0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_edptx0>;
+ };
+ };
+ };
+};
+
+&dptx {
+ status = "okay";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ dptx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_dptx>;
+ };
+ };
+ };
+};
+
+&dptx_core {
+ status = "okay";
+ pxp_mode = <0>;
+};
+
+&lcd {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ lcd0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd0>;
+ };
+ };
+ };
+};
+
+&lcd1 {
+ status = "okay";
+ ports {
+ port {
+ lcd1_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd1>;
+ };
+ };
+ };
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <1>;/*1:enable ;0:disable*/
+ wb_en = <1>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+ vlock_en = <1>;/*1:enable;0:disable*/
+ vlock_mode = <0x8>;
+ vrr_priority = <1>;/*1:game mode vrr always on;0:vrr on depend on vrr signal*/
+ /*vlock work mode:
+ *bit0:auto ENC
+ *bit1:auto PLL
+ *bit2:manual PLL
+ *bit3:manual ENC
+ *bit4:manual soft ENC
+ *bit5:manual MIX PLL ENC
+ */
+ vlock_pll_m_limit = <1>;
+ vlock_line_limit = <2>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane2";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ samesource_sel = <3>;
+ Channel_Mask {
+ /*i2s has 4 pins, 8channel, mux output*/
+ Spdif_samesource_Channel_Mask = "i2s_2/3";
+ };
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <5>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux_v1.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux_v1.dts
new file mode 100755
index 0000000000..12354ca924
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_4g_linux_v1.dts
@@ -0,0 +1,1936 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a9.dtsi"
+#include "mesona9-panel.dtsi"
+#include "hdr10plus.dtsi"
+#include "mesona9_drm_dual.dtsi"
+#include "mesona9_audio.dtsi"
+#include "mesona9_pwm_regulator_V1.dtsi"
+#include "partition_normal_linux.dtsi"
+#include <dt-bindings/input/input.h>
+#include "meson-ir-map-linux.dtsi"
+#include <dt-bindings/usb/pd.h>
+/ {
+ amlogic-dt-id = "a9_a311y3_by401-4g-v1";
+ compatible = "a9_a311y3_by401-4g-v1";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ aliases {
+ serial0 = &uart_AO_B;
+ serial1 = &uart_A;
+ serial2 = &uart_AO_C;
+ serial3 = &uart_AO_D;
+ serial4 = &uart_AO_E;
+ serial5 = &uart_F;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ i2c2 = &i2c2;
+ i2c3 = &i2c3;
+ i2c4 = &i2c4;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ i2c7 = &i2c7;
+ i2c8 = &i2c8;
+ spi0 = &spifc;
+ spi1 = &spisg_c;
+ spi2 = &spisg_e;
+ spi3 = &spisg_f;
+ i3c0 = &i3c0;
+ i3c1 = &i3c1;
+ ethernet0 = &ethmac_a;
+ ethernet1 = &ethmac_b;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ linux,usable-memory = <0x0 0x000000 0x0 0xe0000000
+ 0x1 0x000000 0x0 0x20000000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ramdump_bl33z@0 {
+ reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */
+ status = "disabled";
+ };
+
+ /* global autoconfigured region for contiguous allocations */
+ ramoops@6b00000 {
+ compatible = "ramoops";
+ reg = <0x0 0x06b00000 0x0 0x00080000>;/* addr set in uboot */
+ record-size = <0x30000>;
+ console-size = <0x40000>;
+ ftrace-size = <0x0>;
+ pmsg-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>;
+ };
+
+ dmc_reserved:linux,dmc_monitor {
+ compatible = "amlogic,dmc_monitor-reserved";
+ reg = <0x0 0x0 0x0 0x80000>;
+ };
+
+ secmon_reserved:linux,secmon {
+ compatible = "shared-dma-pool";
+ /*reusable;*/
+ no-map;
+ alignment = <0x0 0x100000>;
+ reg = <0x0 0x05000000 0x0 0x1b00000>;
+ };
+
+ logo_reserved:linux,meson-fb {
+ compatible = "amlogic, meson-fb";
+ alignment = <0x0 0x400000>;
+ reg = <0x0 0x7f800000 0x0 0x800000>;
+ };
+
+ lcd_cma_reserved:linux,lcd-reserved {
+ compatible = "amlogic, lcd_rsvd";
+ reg = <0x0 0x40000000 0x0 0x00a80000>;
+ tcon-size = <0x0 0x00a02840>;
+ };
+
+ dsp_fw_reserved:linux,dsp_fw {
+ compatible = "amlogic, dsp";
+ size = <0x0 0x800000>;
+ reg = <0x0 0x30000000 0x0 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0>;
+ 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;
+ /* linux yocto dual 4K, 8 buffers = 280M */
+ size = <0x0 0x18000000>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_fb_reserved:heap-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* linux yocto size 0M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ dmaheap_secure_reserved:heap-secure {
+ compatible = "amlogic, heap-secure-mem";
+ no-map;
+ /* advice heap-secure size 208M */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ mali_protected: mali_protected@c0000000 {
+ compatible = "mali-reserved";
+ no-map;
+ /* 16M with high version than valhall-r41p0,
+ * 64M with low version than valhall-r41p0
+ */
+ 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;
+ /*
+ * Scenario: CTS P010 case
+ * Total size: 548M
+ * Note:
+ * setting to 496M if scatter_alloc_mode is 0.
+ * setting to 444M if scatter_alloc_mode is 1.
+ */
+ size = <0x0 0x1bc00000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+ 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;
+ };
+
+ codec_mm_reserved_ext:linux,codec_mm_reserved_ext {
+ compatible = "amlogic, codec-mm-reserved_ext";
+ size = <0x00000000 0x00000000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ secure_vdec_reserved:linux,secure_vdec_reserved {
+ compatible = "amlogic, secure-vdec-reserved";
+ no-map;
+ size = <0x0 0x1800000>;
+ alignment = <0x0 0x100000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 720p yuv420 8bit and 4 buffers
+ * 1280x720x1.5x4 = 8 M
+ * size = <0x0 0x03C00000>;
+ */
+ size = <0x0 0x0>;
+ alignment = <0x0 0x400000>;
+ };
+
+ /* amlvideo2_1 CMA pool */
+ amlvideo2_1_cma_reserved:linux,amlvideo2_1_cma {
+ compatible = "shared-dma-pool";
+ reusable;
+ /* screenrecord 3840x2160 yuv420 8bit and 4 buffers
+ * 3840x2160x1.5x4 = 48 M
+ * screencap 3840x2160 rgba 8 bit and 2 buffers
+ * 3840x2160x4x2 = 64 M
+ * 64M > 48M, so reserved 64M
+ */
+ size = <0x0 0x4000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ /* 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 0x0 0x0 0xe0000000>;
+ };
+
+ pcie_dma_ops_mm:linux,pcie_dma_ops {
+ compatible = "shared-dma-pool";
+ status = "okay";
+ reusable;
+ size = <0x0 0x2000000>;
+ swiotlb-size = <0x0 0x1c00000>;
+ atomic-size = <0x0 0x40000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+
+ isp_reserved:linux,isp {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x0 0x14000000>;
+ alignment = <0x0 0x400000>;
+ alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
+ };
+ };
+
+/* Audio Related start */
+ auge_sound {
+ compatible = "amlogic, auge-sound-card";
+ aml-audio-card,name = "AML-AUGESOUND";
+ /* headset (headphone + mic) insert det */
+ hs-det-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+ // interrupts = <GIC_SPI 91 IRQ_TYPE_EDGE_RISING>;
+ // interrupt-names = "audio_exception64";
+
+ aml-audio-card,dai-link@0 {
+ format = "dsp_b";
+ 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, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pcm";
+ tdmacpu: cpu {
+ sound-dai = <&tdma>;
+ dai-tdm-slot-tx-mask =
+ <1 1>;
+ dai-tdm-slot-rx-mask =
+ <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <16>;
+ system-clock-frequency = <256000>;
+ };
+ tdmacodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@1 {
+ format = "i2s";
+ mclk-fs = <256>;
+ continuous-clock;
+ //bitclock-inversion;
+ //frame-inversion;
+ /* master mode */
+ bitclock-master = <&tdmb>;
+ frame-master = <&tdmb>;
+ /* slave mode */
+ //bitclock-master = <&tdmbcodec>;
+ //frame-master = <&tdmbcodec>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-i2s-i2s4hdmirx";
+ cpu {
+ sound-dai = <&tdmb>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmbcodec: codec {
+ prefix-names = "AMP", "AMP1";
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_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-i2s4parser";
+ cpu {
+ sound-dai = <&tdmc>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ system-clock-frequency = <12288000>;
+ };
+ tdmccodec: codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@3 {
+ mclk-fs = <64>;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-pdm-builtinmic";
+ cpu {
+ sound-dai = <&pdma>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@4 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal used for */
+ suffix-name = "alsaPORT-spdif";
+ cpu {
+ sound-dai = <&spdifa>;
+ system-clock-frequency = <6144000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@5 {
+ mclk-fs = <128>;
+ continuous-clock;
+ /* suffix-name, sync with android audio hal 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>;
+ };
+ };
+
+ aml-audio-card,dai-link@7 {
+ mclk-fs = <256>;
+ continuous-clock;
+ suffix-name = "alsaPORT-mixer";
+ cpu {
+ sound-dai = <&mixer>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@8 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-Sed";
+ cpu {
+ sound-dai = <&sed>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@9 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-tv";
+ cpu {
+ sound-dai = <&extn>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+
+ aml-audio-card,dai-link@10 {
+ mclk-fs = <256>;
+ suffix-name = "alsaPORT-earc";
+ cpu {
+ sound-dai = <&earc>;
+ system-clock-frequency = <12288000>;
+ };
+ codec {
+ sound-dai = <&dummy_codec>;
+ };
+ };
+ };
+ /* Audio Related end */
+
+ dvb-extern {
+ compatible = "amlogic, dvb-extern";
+ dev_name = "dvb-extern";
+ status = "disabled";
+
+ /* dvb hardware main power. */
+ dvb_power_gpio = <&gpioz 5 GPIO_ACTIVE_HIGH>;
+ dvb_power_value = <1>;
+ dvb_power_dir = <0>; /* 0: out, 1: in. */
+
+ fe_num = <4>; /* 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 = <&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. */
+
+ fe3_demod = "dummy";
+ fe3_ts = <3>;
+
+ 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 = "okay";
+
+ 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>;
+
+ ts3_sid = <0x7>;
+
+ };
+
+ multi-di {
+ compatible = "amlogic, dim-a9";
+ /* s6 same as s7d */
+ status = "okay";
+ /* 0:use reserved; 1:use cma; 2:use cma as reserved */
+ flag_cma = <4>; //<1>;
+ //memory-region = <&di_reserved>;
+ memory-region = <&di_cma_reserved>;
+ interrupts = <0 203 1
+ 0 202 1>;
+ interrupt-names = "pre_irq", "post_irq";
+ clocks = <&clkc CLKID_VPU_CLKB>,
+ <&clkc CLKID_VPU>;
+ clock-names = "vpu_clkb",
+ "vpu_mux";
+ clock-range = <334 400>;
+ /* buffer-size = <3621952>;(yuv422 8bit) */
+ buffer-size = <4074560>;/*yuv422 fullpack*/
+ /* reserve-iomap = "true"; */
+ /* if enable nr10bit, set nr10bit-support to 1 */
+ post-wr-support = <1>;
+ nr10bit-support = <1>;
+ nrds-enable = <1>;
+ pps-enable = <1>;
+ en_4k = <0>;
+ keep_dec_vf = <0>;
+ po_fmt = <0>;
+ post_nub = <11>;
+ alloc_sct = <0>;
+ hf = <0>;
+ dct = <0>;
+ sub_v = <0>;//sub version
+ afbce_loss_en = <0>;//t5w loss mode enable for DI output
+ prelink_en = <0>;
+ ponly_mode = <0>;
+ t5db_afbcd_en = <1>;
+ postlink_en = <0>;
+ /***************************************************
+ * t5w t3 support 4k ,same with t7 ,no canvas,
+ * post_nub---default is 11
+ * (T7/T3/SC2/S4 new path)
+ * post 11*5222400 = 56M,local 7*4075520 = 28m
+ * flag_cma---0: use reserved; 1:use cma;
+ * 2:use cma as reserved 4:use codec mem
+ * en_4k :en_4k---0: not support 4K; 1: enable 4K
+ * 2: dynamic: vdin: 4k enable,
+ * other source 4k disable
+ * 8: when 4k,
+ * output with a resolution is below 1080p
+ * keep_dec_vf---0:not keep; 1: keep dec vf for p;
+ * 2: dynamic keep dec vf for p,other is disable
+ * po_fmt---1: NV21/8; 2: nv12/8; 3: AFBC 422/10BIT;
+ * 4: dynamic(4K AFBC,10/422);
+ * 6: dynamic(from decoder 4K source,
+ * out is AFBC,10/420),
+ * other is 422/10BIT
+ * bypass_mem---0:nr not bypass; 1: nr bypass;
+ * 2: when 4k input ,nr is bypass;
+ * 3: bypass nr for 4k,but not from vdin;
+ * alloc_sct---0:not support; bit 0: for 4k; bit 1: for 1080p
+ * hf---0:not enable; 1: enable
+ * dct---0:not enable; 1: enable 1 ch; 2: enable 2 ch
+ * sub_v---0:major; 1: sub
+ * afbce_loss_en---1:check the loss flag in vf and set for di,0:disable
+ ***************************************************/
+ };
+
+ 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 = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>; */
+ /* 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
+ };
+
+ adc_keypad {
+ compatible = "amlogic, adc_keypad";
+ status = "okay";
+ key_name = "update", "vol-", "vol+", "ok";
+ key_num = <4>;
+ io-channels = <&saradc SARADC_CH2>;
+ io-channel-names = "key-chan-2";
+ key_chan = <SARADC_CH2 SARADC_CH2 SARADC_CH2 SARADC_CH2>;
+ key_code = <KEY_SETUP KEY_VOLUMEDOWN KEY_VOLUMEUP KEY_ENTER>;
+ key_val = <0 252 468 684>; // Unit: millivolt
+ key_tolerance = <70 70 70 70>; // Unit: millivolt
+ };
+
+ gpio_keypad {
+ compatible = "amlogic, gpio_keypad";
+ status = "okay";
+ scan_period = <20>;
+ key_num = <1>;
+ key_name = "power";
+ key_code = <KEY_POWER>;
+ key_type = <EV_KEY>;
+ key-gpios = <&gpiod GPIOD_3 GPIO_ACTIVE_HIGH>;
+ /* 0:polling mode, 1:irq mode */
+ detect_mode = <0>;
+ };
+
+ vin_12v_standby_reg: fixed@vin_12v_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "VMIN_12V_STANDBY";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_ao_reg: fixed@vdd3v3_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_ao_reg: fixed@vdd1v8_ao_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8_AO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd0v75_ao_reg: fixed@vdd0v75_ao_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD0V75_AO";
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <750000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vcc5v_ext_reg: fixed@vcc5v_ext_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VCC5V_EXT";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_3v3_reg: fixed@vdd_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ avdd1v8_reg: fixed@avdd1v8_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "AVDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd1v8_reg: fixed@vdd1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd3v3_m2_reg: fixed@vdd3v3_m2_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD3V3_M2";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&test_n 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_3v3_reg: fixed@vddio_3v3_reg {
+ vin-supply = <&vdd3v3_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddio_1v8_reg: fixed@vddio_1v8_reg {
+ vin-supply = <&vdd1v8_ao_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ pinctrl-names = "default";
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vdd_12v_etx_reg: fixed@vdd_12v_etx_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD_12V_ETX";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sdcard_3v3_reg: sdcard_3v3_reg {
+ compatible = "regulator-fixed";
+ regulator-name = "SDCARD_3V3";
+ vin-supply = <&vdd_3v3_reg>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpioa 16 GPIO_ACTIVE_HIGH>; //Default DWN
+ enable-active-low;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vddio_c_p_reg: vddio_c_p_reg {
+ compatible = "regulator-gpio";
+ vin-supply = <&vdd3v3_ao_reg>;
+ regulator-name = "VDDIO_C_P";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpiod 12 GPIO_ACTIVE_HIGH>; //L=3.3V H=1.8V
+ gpios-states = <0>;
+ states = <1800000 1 3300000 0>;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ };
+
+ vdd2h_p_reg: fixed@vdd2h_p_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDD2H_P";
+ regulator-min-microvolt = <1050000>;
+ regulator-max-microvolt = <1050000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddq_reg: fixed@vddq_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "VDDQ";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <500000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ panel_12v_reg: fixed@panel_12v_reg {
+ vin-supply = <&vin_12v_standby_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "PANEL_12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ gpio = <&gpiod 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <7000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ wifi_vddio_reg: fixed@wifi_vddio_reg {
+ vin-supply = <&vdd1v8_reg>;
+ compatible = "regulator-fixed";
+ regulator-name = "WIFI_VDDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c3_pins4>;
+ pinctrl-1=<&i2c3_pins4_sleep>;
+ clock-frequency = <300000>;
+ ad82120b_68: ad82120b@68 {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ reset_pin-gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+ reg = <0x68>;
+ status = "okay";
+ };
+ ad82120b_6c: ad82120b@6c {
+ compatible = "ESMT,ad82120b";
+ #sound-dai-cells = <0>;
+ //reset_pin-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
+ reg = <0x6c>;
+ status = "okay";
+ };
+ es8939_10: es8939@10 {
+ compatible = "everest,es8389";
+ #sound-dai-cells = <0>;
+ reg = <0x10>;
+ status = "okay";
+ };
+ usbca0: aw35615@22 {
+ compatible = "awinic,aw35615";
+ reg = <0x22>;
+ awinic,int_n = <&gpiod 15 GPIO_ACTIVE_HIGH>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ aw35615,port_id = <0>;
+ aw35615,vbus_name = "otg-vbus"; /*otg vbus regulator name*/
+ aw35615,snk_pdo_size = <1>; /* set sink pdo num*/
+ aw35615,snk_pdo_vol = <5000>; /* set sink pdo voltage mV*/
+ aw35615,snk_pdo_cur = <2000>; /* set sink pdo current mA*/
+ aw35615,snk_pps_size = <0>; /* set sink pps num*/
+ aw35615,snk_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,snk_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,src_pdo_size = <1>; /* set source pdo num*/
+ aw35615,src_pdo_vol = <5000>; /* set source pdo voltage mV*/
+ aw35615,src_pdo_cur = <1000>; /* set source pdo current mA*/
+ aw35615,src_pps_size = <0>; /* set sink pps num*/
+ aw35615,src_pps_vol = <0>; /* set sink pps voltage mV*/
+ aw35615,src_pps_cur = <0>; /* set sink pps current mA*/
+ aw35615,snk_tog_time = <0x36>; /* set toggle sink time */
+ aw35615,src_tog_time = <0x36>; /* set toggle source time */
+ aw35615,cc1_ov_th = <0x7>; /* set cc1 ov threshold */
+ aw35615,cc2_ov_th = <0x7>; /* set cc2 ov threshold */
+ aw35615,lpd_tim_set = <0x4>; /* set the LPD sensitivity */
+ status = "okay";
+
+ usb_cona: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+
+ port@0 {
+ reg = <0>;
+ usbca0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_muxa>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usbca0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switcha>;
+ };
+ };
+ };
+ };
+ };
+ usbc0: husb311@4e {
+ compatible = "hynetek,husb311";
+ reg = <0x4e>;
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>; //GPIOD_15
+ pinctrl-names = "default";
+ pinctrl-0 = <&husb311_int>;
+ gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
+ //vbus-supply = <&type_c_5v_reg>;
+ status = "okay";
+ usb_con: connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+ try-power-role = "sink";
+ op-sink-microwatt = <1000000>;
+ sink-pdos =
+ <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+ source-pdos =
+ <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+ altmodes {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ altmode@0 {
+ reg = <0>;
+ svid = /bits/ 16 <0xff01>;
+ vdo = <0xffffffff>;
+ };
+ };
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ usbc0_role_sw: endpoint {
+ remote-endpoint = <&usb3_0_role_switch>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ usbc0_mux: endpoint {
+ remote-endpoint = <&usbdp_phy0_mux>;
+ };
+ };
+ };
+ };
+ };
+};
+
+&i2c4 {
+ status = "disabled";
+ pinctrl-names="default", "sleep";
+ pinctrl-0=<&i2c4_pins3>;
+ pinctrl-1=<&i2c4_pins3_sleep>;
+ clock-frequency = <300000>;
+};
+
+&i2c5 {
+ status = "disabled";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c5_pins3>;
+ clock-frequency = <100000>;
+};
+
+&i2c0 {
+ status = "okay";
+ pinctrl-names="default";
+ pinctrl-0=<&i2c0_pins3>;
+ clock-frequency = <300000>; /* default 100k */
+ sy602x_54: sy602x_54@2a {
+ compatible = "silergy,sy602x";
+ #sound-dai-cells = <0>;
+ reg = <0x2a>;
+ status = "disabled";
+ reset_pin-gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
+ };
+ aw9523: aw9523_led@5b {
+ compatible = "amlogic,aw9523b_led";
+ reg = <0x5b>;
+ status = "disabled";
+ //reset-gpio = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
+ platform = <10>;
+
+ led1 {
+ default_colors = <0 0 0>;
+ r_io_number = <2>;
+ g_io_number = <12>;
+ b_io_number = <7>;
+ };
+
+ led2 {
+ default_colors = <0 0 0>;
+ r_io_number = <4>;
+ g_io_number = <10>;
+ b_io_number = <9>;
+ };
+
+ led3 {
+ default_colors = <0 0 0>;
+ r_io_number = <3>;
+ g_io_number = <11>;
+ b_io_number = <8>;
+ };
+
+ led4 {
+ default_colors = <0 0 0>;
+ r_io_number = <0>;
+ g_io_number = <14>;
+ b_io_number = <5>;
+ };
+ led9 {
+ default_colors = <0 0 0>;
+ r_io_number = <1>;
+ g_io_number = <13>;
+ b_io_number = <6>;
+ };
+ };
+
+ ext_rtc: rtc@51 {
+ compatible = "nxp,it8563";
+ reg = <0x51>;
+ pinctrl-0 = <&rtc_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_ao_intc>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+ wakeup-source;
+ status = "okay";
+ };
+};
+
+&i2c6 {
+ status = "okay";
+ pinctrl-0=<&i2c6_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_0: sensor0@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <0>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 3 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_0_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_0_in>;
+ };
+ };
+ };
+};
+
+&i2c7 {
+ status = "okay";
+ pinctrl-0=<&i2c7_pins2>;
+ pinctrl-names="default";
+ clock-frequency = <400000>;
+
+ amlsens_2: sensor2@1a {
+ compatible = "amlogic, sensor-a9", "sony,imx290", "sony,imx415",
+ "ov,ov5640", "max,max96712",
+ "ovti,ov13855", "ovti,ov51a40", "ovti,ov08a10",
+ "sony,imx678", "sony,imx585";
+ reg = <0x1a>;
+ clock-frequency = <37125000>;
+ index = <2>;
+ status = "okay";
+
+ clocks = <&clkc CLKID_MCLK_PLL>,
+ <&clkc CLKID_MCLK_0_PRE>,
+ <&clkc CLKID_MCLK_0>;
+ clock-names = "mclk_pll", "mclk_pre", "xclk";
+ assigned-clocks = <&clkc CLKID_MCLK1_0>;
+ assigned-clock-rates = <24000000>;
+
+ pwdn-gpios = <&gpiom 5 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpiom 4 GPIO_ACTIVE_HIGH>;
+
+ port {
+ amlsens_2_out: endpoint {
+ data-lanes = <2 3 4 5>;
+ link-frequencies = /bits/ 64 <222750000 148500000>;
+ remote-endpoint = <&csi2_2_in>;
+ };
+ };
+ };
+};
+
+&csi2_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_0_in: endpoint {
+ remote-endpoint = <&amlsens_0_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&csi2_2 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ csi2_2_in: endpoint {
+ remote-endpoint = <&amlsens_2_out>;
+ clock-lanes = <0>;
+ data-lanes = <2 3 4 5>;
+ };
+ };
+ };
+};
+
+&adap0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&adap2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp {
+ status = "okay";
+};
+
+&isp_virt0 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&isp_virt2 {
+ memory-region = <&isp_reserved>;
+ status = "okay";
+};
+
+&tdma {
+ pinctrl-names = "tdm_pins";
+ pinctrl-0 = <&bt_pcm_gpio_x_pins
+ &tdm_d0_pins
+ &tdm_d1_pins
+ &tdma_clk_pins>;
+};
+
+&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";
+ };
+ };
+};
+
+//&tdmc {
+// pinctrl-names = "tdm_pins";
+// pinctrl-0 = <&i2s_gpio_d_pins_1
+// &tdm_d3_pins
+// &tdmc_clk_pins>;
+//};
+
+//&spdifa {
+// pinctrl-names = "spdif_pins", "spdif_pins_mute";
+// pinctrl-0 = <&spdif_out_a_h4_pins>;
+// pinctrl-1 = <&spdif_out_a_h4_mute_pins>;
+//};
+
+&typec_mux {
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usbdp_phy0_mux: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_mux>;
+ };
+ usbdp_phy0_muxa: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_mux>;
+ };
+ };
+};
+
+&usbphya {
+ status = "okay";
+};
+
+&usbphyb {
+ status = "okay";
+ u2p@fe4cc000 {
+ gpio-vbus-power = "GPIOA_18";
+ gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&usbphyc {
+ status = "okay";
+ u2p@fe4ac000 {
+ gpio-vbus-power = "GPIOD_17";
+ gpios = <&gpiod 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ };
+};
+
+&usbphyd {
+ status = "okay";
+ u2p@fe4a4000 {
+ gpio-vbus-power = "GPIOA_19";
+ gpios = <&gpioa 19 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&dwc3a {
+ usb-role-switch;
+ typec-usb-controller;
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ usb3_0_role_switch: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usbc0_role_sw>;
+ };
+ usb3_0_role_switcha: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usbca0_role_sw>;
+ };
+ };
+};
+
+&dwc3b {
+ status = "okay";
+};
+
+&dwc3c {
+ status = "okay";
+};
+
+&dwc3d {
+ status = "okay";
+};
+
+&pcie_phy0 {
+ num-lanes = <2>;
+ status = "disabled";
+};
+
+&pcie_phy1 {
+ status = "disabled";
+};
+
+&pcie_phy2 {
+ status = "disabled";
+};
+
+&pcie_a {
+ reset-gpio = <&gpioa 8 GPIO_ACTIVE_HIGH>;
+ phys = <&pcie_phy0>;
+ phy-names = "pcie-phy";
+ max-link-speed=<3>;
+ num-lanes = <2>;
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+&pcie_b {
+ reset-gpio = <&gpioa 9 GPIO_ACTIVE_HIGH>;
+ /* reset-gpio = <&gpioz 15 GPIO_ACTIVE_HIGH>; // combphy */
+ max-link-speed=<1>;
+ phys = <&pcie_phy1>;
+ phy-names = "pcie-phy";
+ iommu-map = <0x0 &smmu 0x0 0x1000>;
+ status = "disabled";
+};
+
+/* SDIO */
+&sd_emmc_a {
+ status = "okay";
+ 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 = <&gpioc 6 GPIO_ACTIVE_HIGH>;
+ //dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
+ vmmc-supply = <&sdcard_3v3_reg>;
+ vqmmc-supply = <&vddio_c_p_reg>;
+};
+
+&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>;
+ };
+ };
+};
+
+&chosen {
+ bootargs = "usbcore.autosuspend=-1 arm64.nomte swiotlb=noforce";
+};
+
+&saradc {
+ status = "okay";
+};
+
+/* MAC_A 1G exphy setting */
+&ext_mdio_a {
+ status = "okay";
+};
+
+&ethmac_a {
+ pinctrl-0 = <&eth_a_pins>, <&eth_a_rgmii_pins>;
+ pinctrl-1 = <&eth_a_pins_sleep>, <&eth_a_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_a>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+/* MAC_B 1G exphy setting */
+&ext_mdio_b {
+ status = "disabled";
+};
+
+&ethmac_b {
+ pinctrl-0 = <&eth_b_pins>, <&eth_b_rgmii_pins>;
+ pinctrl-1 = <&eth_b_pins_sleep>, <&eth_b_rgmii_pins_sleep>;
+ pinctrl-names = "default", "sleep";
+ status = "disabled";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy_b>;
+ phy-mii-clk-sel = <0x3>;
+ amlogic,tx-delay-ns = <2>;
+ cali_val = <0x290000>;
+ // wol = <1>;
+ // mdns_wkup = <1>;
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_pins>;
+ pinctrl-names = "default";
+};
+
+&spisg_c {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_c_pins_a>;
+};
+
+&spisg_e {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_e_pins_z>;
+};
+
+&spisg_f {
+ status = "disabled";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spisg_f_pins_z>;
+};
+
+&spifc {
+ status = "disabled";
+ spi-nor@0 {
+ status = "disabled";
+ };
+};
+
+&fb {
+ status = "disabled";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x100000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <0>;
+ pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
+};
+
+&amvideom {
+ display_device_cnt = <2>;
+ vpp0_layer_count = <2>;
+ /* number of video layer display on vpp1 */
+ vpp1_layer_count = <1>;
+};
+
+&drm_vpu {
+ status = "okay";
+ logo_addr = "0x7f800000";
+
+ connectors_dev: port@1 {
+ drm_to_hdmitx: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&hdmitx_to_drm>;
+ };
+ drm_to_lcd0: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&lcd0_to_drm>;
+ };
+ drm_to_lcd1: endpoint@2 {
+ reg = <2>;
+ remote-endpoint = <&lcd1_to_drm>;
+ };
+ drm_to_edptx0: endpoint@3 {
+ reg = <3>;
+ remote-endpoint = <&edptx0_to_drm>;
+ };
+ drm_to_dptx: endpoint@5 {
+ reg = <5>;
+ remote-endpoint = <&dptx_to_drm>;
+ };
+ };
+};
+
+&drm_subsystem {
+ status = "okay";
+ fbdev_sizes = <1280 720 1280 1440 32>;
+};
+
+&dummy_venc {
+ status = "disabled";
+};
+
+&drm_to_dummyl {
+ status = "disabled";
+};
+
+&amhdmitx {
+ status = "okay";
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ hdmitx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_hdmitx>;
+ };
+ };
+ };
+};
+
+&eDPTX0 {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ edptx0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_edptx0>;
+ };
+ };
+ };
+};
+
+&dptx {
+ status = "okay";
+ pxp_mode = <0>;
+ enc_idx = <1>;
+ clk_source_idx = <1>;
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ dptx_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_dptx>;
+ };
+ };
+ };
+};
+
+&dptx_core {
+ status = "okay";
+ pxp_mode = <0>;
+};
+
+&lcd {
+ status = "okay";
+ ports {
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ lcd0_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd0>;
+ };
+ };
+ };
+};
+
+&lcd1 {
+ status = "okay";
+ ports {
+ port {
+ lcd1_to_drm: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&drm_to_lcd1>;
+ };
+ };
+ };
+};
+
+&hdmirx {
+ status = "okay";
+ pinctrl-0 = <&hdmirx_a_mux>;
+ en_4k_2_2k = <0>;
+ hpd_low_cec_off = <1>;
+ arc_port = <0>;
+ /* bit4: enable feature, bit3~0: port number */
+ disable_port = <0x0>;
+};
+
+/*if you want to use vdin just modify status to "ok"*/
+&vdin0 {
+ cma_size = <330>;
+ frame_buff_num = <10>;
+};
+
+&vdin1 {
+ /* memory-region = <&vdin1_cma_reserved>; */
+};
+
+&amlvideo2_1 {
+ memory-region = <&amlvideo2_1_cma_reserved>;
+ cma_mode = <0>;
+};
+
+&aml_wifi{
+ status = "okay";
+ interrupt-gpios = <&gpiox 6 GPIO_ACTIVE_HIGH>;
+ power_on-gpios = <&gpioao 11 GPIO_ACTIVE_HIGH>;
+};
+
+&aml_bt {
+ status = "okay";
+ reset-gpios = <&gpioao 12 GPIO_ACTIVE_HIGH>;
+ btwakeup-gpios = <&gpiox 16 GPIO_ACTIVE_HIGH>;
+ hostwake-gpios = <&gpiox 17 GPIO_ACTIVE_HIGH>;
+};
+
+&pwm_k {
+ pinctrl-0 = <&pwm_k_pins1>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&uart_A {
+ status = "okay";
+ uart-has-rtscts;
+};
+
+//&amlogic_codec {
+// tocodec_inout = <1>;
+// tdmout_index = <1>;
+//};
+
+//&pdma {
+// pinctrl-names = "pdm_pins";
+// pinctrl-0 = <&pdmin>;
+//};
+
+&amlvecm {
+ compatible = "amlogic, vecm-a9";
+ dev_name = "aml_vecm";
+ status = "okay";
+ gamma_en = <1>;/*1:enable ;0:disable*/
+ wb_en = <1>;/*1:enable ;0:disable*/
+ cm_en = <1>;/*1:enable ;0:disable*/
+ wb_sel = <0>;/*1:mtx ;0:gainoff*/
+ osd_pic_en = <1>;
+ /*0: 709/601 1: bt2020*/
+ tx_op_color_primary = <0>;
+ vlock_en = <1>;/*1:enable;0:disable*/
+ vlock_mode = <0x8>;
+ vrr_priority = <1>;/*1:game mode vrr always on;0:vrr on depend on vrr signal*/
+ /*vlock work mode:
+ *bit0:auto ENC
+ *bit1:auto PLL
+ *bit2:manual PLL
+ *bit3:manual ENC
+ *bit4:manual soft ENC
+ *bit5:manual MIX PLL ENC
+ */
+ vlock_pll_m_limit = <1>;
+ vlock_line_limit = <2>;
+};
+
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane2";
+ };
+};
+
+&tdmb {
+ clocks = <&clkaudio CLKID_AUDIO_MCLK_B
+ &clkc CLKID_HIFI_PLL
+ &clkc CLKID_HIFI1_PLL
+ &clkaudio CLKID_AUDIO_MCLK_PAD1>;
+ clock-names = "mclk", "clk_srcpll", "clk_src_cd", "mclk_pad";
+ pinctrl-names = "tdm_pins","tdm_gpio";
+ pinctrl-0 = <
+ &mclk_1_pad
+ &tdmb_pin
+ &tdm_d2_pins
+ &tdm_d3_pins
+ &tdm_d5_pins
+ &tdm_d6_pins
+ &tdmb_clk_pins>;
+ pinctrl-1 = <&tdmout_b_gpio>;
+ samesource_sel = <3>;
+ Channel_Mask {
+ /*i2s has 4 pins, 8channel, mux output*/
+ Spdif_samesource_Channel_Mask = "i2s_2/3";
+ };
+};
+
+&pdma {
+ pinctrl-names = "pdm_pins";
+ pinctrl-0 = <&pdmin>;
+};
+
+&spdifa {
+
+ pinctrl-names = "spdif_pins",
+ "spdif_pins_mute";
+ pinctrl-0 = <&spdifout_a>;
+ pinctrl-1 = <&spdifout_a_mute>;
+ /*
+ * 0: tdmout_a;
+ * 1: tdmout_b;
+ * 2: tdmout_c;
+ * 3: spdifout;
+ * 4: spdifout_b;
+ * 5: earc;
+ */
+ samesource_sel = <5>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_hdmi_linux.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_hdmi_linux.dts
similarity index 99%
rename from arch/arm64/boot/dts/amlogic/a9_a311y3_by401_hdmi_linux.dts
rename to arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_hdmi_linux.dts
index 64c24917ba..4d622c197a 100644
--- a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_hdmi_linux.dts
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_hdmi_linux.dts
@@ -16,8 +16,8 @@
#include "meson-ir-map-linux.dtsi"
#include <dt-bindings/usb/pd.h>
/ {
- amlogic-dt-id = "a9_a311y3_by401_hdmi";
- compatible = "a9_a311y3_by401_hdmi";
+ amlogic-dt-id = "a9_a311y3_by401-8g-hdmi";
+ compatible = "a9_a311y3_by401-8g-hdmi";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
@@ -133,7 +133,7 @@
compatible = "shared-dma-pool";
reusable;
/* linux yocto 4K+direct render, size 176M */
- size = <0x0 0xb000000>;
+ size = <0x0 0x18000000>;
alignment = <0x0 0x400000>;
};
@@ -286,7 +286,7 @@
isp_reserved:linux,isp {
compatible = "shared-dma-pool";
reusable;
- size = <0x0 0x10000000>;
+ size = <0x0 0x14000000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
};
@@ -1813,6 +1813,13 @@
tx_op_color_primary = <0>;
};
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane0";
+ };
+};
+
&tdmb {
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkc CLKID_HIFI_PLL
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_hdmi_linux_v1.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_hdmi_linux_v1.dts
similarity index 99%
rename from arch/arm64/boot/dts/amlogic/a9_a311y3_by401_hdmi_linux_v1.dts
rename to arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_hdmi_linux_v1.dts
index 6ec1c09aaa..827575aff4 100644
--- a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_hdmi_linux_v1.dts
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_hdmi_linux_v1.dts
@@ -16,8 +16,8 @@
#include "meson-ir-map-linux.dtsi"
#include <dt-bindings/usb/pd.h>
/ {
- amlogic-dt-id = "a9_a311y3_by401_hdmi-v1";
- compatible = "a9_a311y3_by401_hdmi-v1";
+ amlogic-dt-id = "a9_a311y3_by401-8g-h-v1";
+ compatible = "a9_a311y3_by401-8g-h-v1";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
@@ -133,7 +133,7 @@
compatible = "shared-dma-pool";
reusable;
/* linux yocto 4K+direct render, size 176M */
- size = <0x0 0xb000000>;
+ size = <0x0 0x18000000>;
alignment = <0x0 0x400000>;
};
@@ -286,7 +286,7 @@
isp_reserved:linux,isp {
compatible = "shared-dma-pool";
reusable;
- size = <0x0 0x10000000>;
+ size = <0x0 0x14000000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
};
@@ -1800,6 +1800,13 @@
tx_op_color_primary = <0>;
};
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane0";
+ };
+};
+
&tdmb {
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkc CLKID_HIFI_PLL
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_linux.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_linux.dts
similarity index 99%
rename from arch/arm64/boot/dts/amlogic/a9_a311y3_by401_linux.dts
rename to arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_linux.dts
index 96b8cb5854..2fe0e45977 100644
--- a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_linux.dts
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_linux.dts
@@ -16,8 +16,8 @@
#include "meson-ir-map-linux.dtsi"
#include <dt-bindings/usb/pd.h>
/ {
- amlogic-dt-id = "a9_a311y3_by401";
- compatible = "a9_a311y3_by401";
+ amlogic-dt-id = "a9_a311y3_by401-8g";
+ compatible = "a9_a311y3_by401-8g";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
@@ -133,7 +133,7 @@
compatible = "shared-dma-pool";
reusable;
/* linux yocto dual 4K, 8 buffers = 280M */
- size = <0x0 0x11800000>;
+ size = <0x0 0x18000000>;
alignment = <0x0 0x400000>;
};
@@ -286,7 +286,7 @@
isp_reserved:linux,isp {
compatible = "shared-dma-pool";
reusable;
- size = <0x0 0x10000000>;
+ size = <0x0 0x14000000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
};
@@ -328,7 +328,7 @@
system-clock-frequency = <12288000>;
};
tdmacodec: codec {
- sound-dai = <&es8939_10 &dummy_codec>;
+ sound-dai = <&dummy_codec>;
};
};
@@ -356,7 +356,7 @@
};
tdmbcodec: codec {
prefix-names = "AMP", "AMP1";
- sound-dai = <&ad82120b_68 &ad82120b_6c &dummy_codec>;
+ sound-dai = <&ad82120b_68 &ad82120b_6c &es8939_10 &dummy_codec>;
};
};
@@ -1903,6 +1903,13 @@
vlock_line_limit = <2>;
};
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane2";
+ };
+};
+
&tdmb {
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkc CLKID_HIFI_PLL
diff --git a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_linux_v1.dts b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_linux_v1.dts
similarity index 99%
rename from arch/arm64/boot/dts/amlogic/a9_a311y3_by401_linux_v1.dts
rename to arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_linux_v1.dts
index 08fc94a8e3..81639fb3ac 100644
--- a/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_linux_v1.dts
+++ b/arch/arm64/boot/dts/amlogic/a9_a311y3_by401_8g_linux_v1.dts
@@ -16,8 +16,8 @@
#include "meson-ir-map-linux.dtsi"
#include <dt-bindings/usb/pd.h>
/ {
- amlogic-dt-id = "a9_a311y3_by401-v1";
- compatible = "a9_a311y3_by401-v1";
+ amlogic-dt-id = "a9_a311y3_by401-8g-v1";
+ compatible = "a9_a311y3_by401-8g-v1";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
@@ -133,7 +133,7 @@
compatible = "shared-dma-pool";
reusable;
/* linux yocto dual 4K, 8 buffers = 280M */
- size = <0x0 0x11800000>;
+ size = <0x0 0x18000000>;
alignment = <0x0 0x400000>;
};
@@ -286,7 +286,7 @@
isp_reserved:linux,isp {
compatible = "shared-dma-pool";
reusable;
- size = <0x0 0x10000000>;
+ size = <0x0 0x14000000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0xe0000000>;
};
@@ -1883,6 +1883,13 @@
vlock_line_limit = <2>;
};
+&tdm_d5_pins {
+ mux {
+ groups = "tdm_d5";
+ function = "tdmoutb_lane2";
+ };
+};
+
&tdmb {
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkc CLKID_HIFI_PLL
diff --git a/sound/soc/amlogic/auge/tdm_hw.c b/sound/soc/amlogic/auge/tdm_hw.c
index 00350005be..73d8ed00e2 100644
--- a/sound/soc/amlogic/auge/tdm_hw.c
+++ b/sound/soc/amlogic/auge/tdm_hw.c
@@ -1143,6 +1143,11 @@ void dp_to_hdmitx_ctrl(int i2s_tohdmitxen_separated, int tdm_index,
audiobus_update_bits(reg,
0x1 << 31, 0x1 << 31);
}
+ /*dp use hdmitx need to invert sclk*/
+ if (get_cpu_type() >= MESON_CPU_MAJOR_ID_A9)
+ audiobus_update_bits(reg,
+ 0x1 << 6, 0x1 << 6);
+
}
void aml_tdm_mute_playback(struct aml_audio_controller *actrl,
--
2.43.2