diff --git a/arch/arm64/boot/dts/amlogic/a5_a113x2_av400v2_1g.dts b/arch/arm64/boot/dts/amlogic/a5_a113x2_av400v2_1g.dts new file mode 100644 index 000000000..6859ecdc4 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/a5_a113x2_av400v2_1g.dts @@ -0,0 +1,1599 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Amlogic, Inc. All rights reserved. + */ + +/dts-v1/; + +#include "meson-a5.dtsi" +#include + +/ { + amlogic-dt-id = "a5_a113x2_av400_1g"; + compatible = "a5_a113x2_av400_1g"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + aliases { + serial0 = &uart_B; + serial1 = &uart_A; + serial2 = &uart_C; + serial3 = &uart_D; + serial4 = &uart_E; + i2c0 = &i2c0; + i2c1 = &i2c1; + i2c2 = &i2c2; + i2c3 = &i2c3; + spi0 = &spifc; + spi1 = &spicc0; + spi2 = &spicc1; + tsensor0 = &p_tsensor; + }; + + memory@0 { + device_type = "memory"; + linux,usable-memory = <0x0 0x0 0x0 0x40000000>; + }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + ramdump_bl33z@0 { + reg = <0x0 0x0 0x0 0x1800000>; /* 0 ~ 24M */ + status = "disabled"; + }; + + dsp_fw_reserved:linux,dsp_fw { + compatible = "amlogic, dsp"; + /* for sync of dsp fw, fix it to 0x30000000*/ + size = <0x0 0x00800000>; + reg = <0x0 0x30000000 0x0 0x00800000>; + }; + + /* global autoconfigured region for contiguous allocations */ + ramoops@7400000 { + compatible = "ramoops"; + reg = <0x0 0x07400000 0x0 0x00100000>; + record-size = <0x20000>; + console-size = <0x40000>; + ftrace-size = <0x80000>; + pmsg-size = <0x20000>; + }; + + debug_reserved:linux,iotrace { + compatible = "amlogic, iotrace"; + reg = <0x0 0x04f00000 0x0 0x00100000>; + io-size = <0x1b000>; + sched-size = <0x2000>; + irq-size = <0x1000>; + smc-size = <0x1000>; + misc-size = <0x1000>; + }; + + secmon_reserved:linux,secmon { + compatible = "shared-dma-pool"; + /*reusable;*/ + no-map; + alignment = <0x0 0x400000>; + reg = <0x0 0x05000000 0x0 0xC00000>; + }; + + }; + + vddio3v3_reg: fixed@vddio3v3_reg{ + vin-supply = <&vddao3v3_reg>; + compatible = "regulator-fixed"; + regulator-name = "VDDIO_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio GPIO_TEST_N GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-boot-on; + regulator-always-on; + }; + + vddio_1v8_reg: fixed@vddio_1v8_reg{ + vin-supply = <&vddio3v3_reg>; + compatible = "regulator-fixed"; + regulator-name = "VDDIO_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + vddio_x: gpio-regulator { + vin-supply = <&vddao3v3_reg>; + compatible = "regulator-gpio"; + regulator-name = "VDDIO_X"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio GPIOD_11 GPIO_ACTIVE_LOW>; + gpios-states = <1>; + states = <1800000 1 + 3300000 0>; + regulator-boot-on; + }; + + vddds1v8_reg: fixed@vddds1v8_reg{ + vin-supply = <&vddao3v3_reg>; + compatible = "regulator-fixed"; + regulator-name = "VDD_DSOFF_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio GPIOD_2 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-boot-on; + regulator-always-on; + }; + + avdd33_usb_reg: fixed@avdd33_usb_reg{ + vin-supply = <&vddio3v3_reg>; + compatible = "regulator-fixed"; + regulator-name = "AVDD33_USB"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + avdd18_usb_reg: fixed@avdd18_usb_reg{ + vin-supply = <&vddio_1v8_reg>; + compatible = "regulator-fixed"; + regulator-name = "AVDD18_USB"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + }; + + provisionkey { + compatible = "amlogic, provisionkey"; + status = "disabled"; + key-permit-default = "write"; + //new key not need add dts if started with KEY_PROVISION_ + KEY_PROVISION_XXX { }; + //test_my_added_keyname { }; + };//End provisionkey + + unifykey{ + compatible = "amlogic,unifykey"; + status = "okay"; + unifykey-num = <8>; + unifykey-index-0 = <&keysn_0>; + unifykey-index-1 = <&keysn_1>; + unifykey-index-2 = <&keysn_2>; + unifykey-index-3 = <&keysn_3>; + unifykey-index-4 = <&keysn_4>; + unifykey-index-5 = <&keysn_5>; + unifykey-index-6 = <&keysn_6>; + unifykey-index-7 = <&keysn_7>; + + keysn_0:key_0{ + key-name = "usid"; + key-device = "normal"; + key-permit = "read","write","del"; + }; + keysn_1:key_1{ + key-name = "mac"; + key-device = "normal"; + key-permit = "read","write","del"; + }; + keysn_2:key_2{ + key-name = "secure_boot_set"; + key-device = "efuse"; + key-permit = "write"; + }; + keysn_3:key_3{ + key-name = "mac_bt"; + key-device = "normal"; + key-permit = "read","write","del"; + key-type = "mac"; + }; + keysn_4:key_4{ + key-name = "mac_wifi"; + key-device = "normal"; + key-permit = "read","write","del"; + key-type = "mac"; + }; + keysn_5:key_5{ + key-name = "deviceid"; + key-device = "normal"; + key-permit = "read","write","del"; + }; + keysn_6:key_6{ + key-name = "region_code"; + key-device = "normal"; + key-permit = "read","write","del"; + }; + keysn_7:key_7{ + key-name = "oemkey"; + key-device = "normal"; + key-permit = "read","write","del"; + }; + };//End unifykey + + efusekey:efusekey{ + keynum = <4>; + key0 = <&key_0>; + key1 = <&key_1>; + key2 = <&key_2>; + key3 = <&key_3>; + key_0:key_0{ + keyname = "mac"; + offset = <0>; + size = <6>; + }; + key_1:key_1{ + keyname = "mac_bt"; + offset = <6>; + size = <6>; + }; + key_2:key_2{ + keyname = "mac_wifi"; + offset = <12>; + size = <6>; + }; + key_3:key_3{ + keyname = "usid"; + offset = <18>; + size = <16>; + }; + };//End efusekey + /* Audio Related start */ + auge_sound { + compatible = "amlogic, auge-sound-card"; + aml-audio-card,name = "AML-AUGESOUND"; + + /*avout mute gpio*/ + //avout_mute-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>; + //spk_mute-gpios = <&gpio GPIOD_2 GPIO_ACTIVE_LOW>; + + 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 = "alsaPORT-i2sCapture"; + 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";// "dsp_a"; + mclk-fs = <256>; + //continuous-clock; + //bitclock-inversion; + //frame-inversion; + /* master mode */ + bitclock-master = <&tdmb>; + frame-master = <&tdmb>; + /* slave mode */ + //bitclock-master = <&tdmbcodec>; + //frame-master = <&tdmbcodec>; + /* suffix-name, sync with android audio hal + * what's the dai link used for + */ + suffix-name = "alsaPORT-i2s"; + cpu { + sound-dai = <&tdmb>; + dai-tdm-slot-tx-mask = <1 1>; + //dai-tdm-slot-rx-mask = <1 1>; + dai-tdm-slot-num = <2>; + /* + * dai-tdm-slot-tx-mask = + * <1 1 1 1 1 1 1 1>; + * dai-tdm-slot-rx-mask = + * <1 1 1 1 1 1 1 1>; + * dai-tdm-slot-num = <8>; + */ + dai-tdm-slot-width = <32>; + system-clock-frequency = <12288000>; + }; + tdmbcodec: codec { + prefix-names = "ad82128_c_30","ad82128_c_31", + "ad82128_c_34","ad82128_c_35", + "ad82128_d_30","ad82128_d_31", + "ad82128_d_34","ad82128_d_35"; + sound-dai = < + &ad82128_c_30 + &ad82128_c_31 + &ad82128_c_34 + &ad82128_c_35 + &ad82128_d_30 + &ad82128_d_31 + &ad82128_d_34 + &ad82128_d_35 + >; + }; + }; + + aml-audio-card,dai-link@2 { + mclk-fs = <64>; + /* suffix-name, sync with android audio hal + * what's the dai link used for + */ + suffix-name = "alsaPORT-pdm"; + cpu { + sound-dai = <&apdm>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + + aml-audio-card,dai-link@3 { + mclk-fs = <128>; + /* suffix-name, sync with android audio hal used for */ + suffix-name = "alsaPORT-spdif"; + cpu { + sound-dai = <&spdifa>; + system-clock-frequency = <6144000>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + + aml-audio-card,dai-link@4 { + 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@5 { + format = "dsp_a"; + mclk-fs = <512>; + //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-tdmin"; + cpu { + sound-dai = <&tdmc>; + dai-tdm-slot-tx-mask = <1>; + dai-tdm-slot-rx-mask = <1>; + dai-tdm-slot-num = <1>; + dai-tdm-slot-width = <32>; + system-clock-frequency = <512000>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + }; + + audiolocker: locker { + compatible = "amlogic, audiolocker"; + clock-names = "lock_out", "lock_in", "out_src", + "in_src", "out_calc", "in_ref"; + interrupts = ; + interrupt-names = "irq"; + frequency = <49000000>; /* pll */ + dividor = <49>; /* locker's parent */ + status = "disabled"; + };/* Audio Related end */ + + adc_keypad { + compatible = "amlogic, adc_keypad"; + status = "okay"; + key_name = "update", "vol-", "vol+", "ok" ,"power"; + key_num = <5>; + io-channels = <&saradc 2>; + io-channel-names = "key-chan-2"; + key_chan = <2 2 2 2 2>; + key_code = ; + key_val = <0 143 266 389 512>; //val=voltage/1800mV*1023 + key_tolerance = <40 40 40 40 40>; + }; + + gpio_keypad{ + compatible = "amlogic, gpio_keypad"; + status = "disabled"; + scan_period = <20>; + key_num = <1>; + key_name = "mute"; + key_code = ; + key_type = ; + key-gpios = <&gpio GPIOD_3 GPIO_ACTIVE_HIGH>; + detect_mode = <0>;/*0:polling mode, 1:irq mode*/ + }; + + partitions: partitions{ + parts = <5>; + part-0 = <&recovery>; + part-1 = <&misc>; + part-2 = <&boot>; + part-3 = <&system>; + part-4 = <&data>; + + recovery:recovery{ + pname = "recovery"; + size = <0x0 0x2000000>; + mask = <1>; + }; + misc:misc{ + pname = "misc"; + size = <0x0 0x800000>; + mask = <1>; + }; + boot:boot + { + pname = "boot"; + size = <0x0 0x4000000>; + mask = <1>; + }; + system:system + { + pname = "system"; + size = <0x0 0x40000000>; + mask = <1>; + }; + data:data + { + pname = "data"; + size = <0xffffffff 0xffffffff>; + mask = <4>; + }; + }; +}; + +&audiobus { + tdma: tdm@0 { + compatible = "amlogic, a5-snd-tdma"; + #sound-dai-cells = <0>; + dai-tdm-lane-slot-mask-in = <1 1 1 1>; + dai-tdm-lane-slot-mask-out = <1 1>; + dai-tdm-clk-sel = <2>; + clocks = <&clkaudio CLKID_AUDIO_MCLK_A + &clkaudio CLKID_AUDIO_MCLK_PAD2 + &clkc CLKID_MPLL0>; + clock-names = "mclk", "mclk_pad", "clk_srcpll"; + pinctrl-names = "tdm_pins", "tdmout_a_gpio"; + pinctrl-0 = < + &mclk_2_pins + &tdmain_pins + &tdm_d8_pins + &tdm_d9_pins + &tdm_d10_pins + &tdm_d11_pins + &tdmain_clk_pins + >; + pinctrl-1 = <&tdmin_a_gpio>; + tdm5v-supply = <&vcc5v_reg>; + tdm3v3-supply = <&vddio3v3_reg>; + status = "okay"; + }; + + tdmb: tdm@1 { + compatible = "amlogic, a5-snd-tdmb"; + #sound-dai-cells = <0>; + dai-tdm-lane-slot-mask-out = <1 1 1 1 1 1 1 1>; + dai-tdm-clk-sel = <1>; + clocks = <&clkaudio CLKID_AUDIO_MCLK_B + &clkaudio CLKID_AUDIO_MCLK_PAD1 + &clkc CLKID_MPLL1>; + clock-names = "mclk", "mclk_pad", "clk_srcpll"; + pinctrl-names = "tdm_pins", "tdmout_a_gpio"; + pinctrl-0 = < + &mclk_1_pins + &tdm_b_pins + &tdm_d2_pins + &tdm_d3_pins + &tdm_d4_pins + &tdm_d5_pins + &tdm_d6_pins + &tdm_d7_pins + &tdm_d12_pins + &tdm_d13_pins + &tdmb_clk_pins>; + pinctrl-1 = <&tdmout_b_gpio>; + start_clk_enable = <1>; + tdm5v-supply = <&vcc5v_reg>; + tdm3v3-supply = <&vddio3v3_reg>; + clk_tuning_enable = <1>; + status = "okay"; + }; + + tdmc:tdm@2 { + compatible = "amlogic, a5-snd-tdmc"; + #sound-dai-cells = <0>; + dai-tdm-lane-slot-mask-in = <1 0>; + // dai-tdm-lane-slot-mask-out = <0 1>; + dai-tdm-clk-sel = <0>; + clocks = <&clkaudio CLKID_AUDIO2_MCLK_VAD + &clkc CLKID_MPLL2>; + clock-names = "mclk","clk_srcpll"; + pinctrl-names = "tdm_pins", "tdmout_a_gpio"; + pinctrl-0 = < + &tdmcin_pins + &tdm_d0_pins + &tdm_d1_pins + &tdmc_clk_pins>; + pinctrl-1 = <&tdmin_c_gpio>; + tdm5v-supply = <&vcc5v_reg>; + tdm3v3-supply = <&vddio3v3_reg>; + status = "okay"; + }; + + spdifa: spdif@0 { + compatible = "amlogic, a5-snd-spdif-a"; + #sound-dai-cells = <0>; + clocks = <&clkc CLKID_MPLL0 + &clkc CLKID_FCLK_DIV4 + &clkaudio CLKID_AUDIO_GATE_SPDIFIN + &clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A + &clkaudio CLKID_AUDIO_SPDIFIN + &clkaudio CLKID_AUDIO_SPDIFOUT_A>; + clock-names = "sysclk", "fixed_clk", "gate_spdifin", + "gate_spdifout", "clk_spdifin", "clk_spdifout"; + interrupts = + ; + + interrupt-names = "irq_spdifin"; + pinctrl-names = "spdif_pins", "spdif_pins_mute"; + pinctrl-0 = <&spdifout + &spdifin>; + pinctrl-1 = <&spdif_a_mute>; + + /*spdif clk tuning enable*/ + clk_tuning_enable = <1>; + + spdif5v-supply = <&vcc5v_reg>; + spdif3v3-supply = <&vddio3v3_reg>; + status = "okay"; + }; + + apdm: pdm { + compatible = "amlogic, a5-snd-pdm"; + #sound-dai-cells = <0>; + + clocks = <&clkaudio CLKID_AUDIO2_GATE_PDM + &clkc CLKID_FCLK_DIV4 + &clkc CLKID_MPLL1 + &clkaudio CLKID_AUDIO2_PDM_DCLK + &clkaudio CLKID_AUDIO2_PDM_SYSCLK>; + clock-names = "gate", + "sysclk_srcpll", + "dclk_srcpll", + "pdm_dclk", + "pdm_sysclk"; + power-domains = <&pwrdm PDID_A5_AUDIO_PDM>; + pinctrl-names = "pdm_pins"; + pinctrl-0 = <&pdmin>; + lane-mask-in = <0 0 1 1>; + + /* mode 0~4, defalut:1 */ + filter_mode = <1>; + + pdm5v-supply = <&vcc5v_reg>; + pdm3v3-supply = <&vddio3v3_reg>; + status = "okay"; + }; + + /* a5 only one resample, a/b can only use one at the same time */ + /* spdif use this resample */ + asrca: resample@0 { + compatible = "amlogic, t5-resample-a"; + clocks = <&clkc CLKID_MPLL2 + &clkaudio CLKID_AUDIO_MCLK_F + &clkaudio CLKID_AUDIO_RESAMPLE_A>; + clock-names = "resample_pll", "resample_src", "resample_clk"; + /*same with toddr_src + * TDMIN_A, 0 + * TDMIN_B, 1 + * TDMIN_C, 2 + * SPDIFIN, 3 + * PDMIN, 4 + * NONE, + * TDMIN_LB, 6 + * LOOPBACK, 7 + */ + resample_module = <3>; + status = "disabled"; + }; + + /* loopback use this resample */ + asrcb: resample@1 { + compatible = "amlogic, t5-resample-b"; + clocks = <&clkc CLKID_MPLL2 + &clkaudio CLKID_AUDIO_MCLK_F + &clkaudio CLKID_AUDIO_RESAMPLE_A>; + clock-names = "resample_pll", "resample_src", "resample_clk"; + /*this resample is only used for loopback_A.*/ + capture_sample_rate = <16000>; + + status = "disabled"; + }; + + vad:vad { + compatible = "amlogic, snd-vad-top"; + #sound-dai-cells = <0>; + + clocks = <&clkaudio CLKID_AUDIO2_GATE_TOVAD + &clkc CLKID_FCLK_DIV4 + &clkaudio CLKID_AUDIO2_VAD_CLK>; + clock-names = "gate", "pll", "clk"; + + interrupts = ; + interrupt-names = "irq_wakeup", "irq_frame_sync"; + + /* + * Data src sel: + * 0: tdmin_a; + * 1: tdmin_b; + * 2: tdmin_c; + * 3: spdifin; + * 4: pdmin; + * 5: loopback_b; + * 6: tdmin_lb; + * 7: loopback_a; + */ + src = <4>; + + /* + * deal with hot word in user space or kernel space + * 0: in user space + * 1: in kernel space + */ + level = <1>; + + status = "okay"; + }; + + loopbacka:loopback@0 { + compatible = "amlogic, a5-loopbacka"; + #sound-dai-cells = <0>; + + clocks = <&clkaudio CLKID_AUDIO2_GATE_PDM + &clkc CLKID_FCLK_DIV4 + &clkc CLKID_MPLL1 + &clkaudio CLKID_AUDIO2_PDM_DCLK + &clkaudio CLKID_AUDIO2_PDM_SYSCLK + &clkc CLKID_MPLL1 + &clkaudio CLKID_AUDIO_MCLK_B>; + clock-names = "pdm_gate", + "pdm_sysclk_srcpll", + "pdm_dclk_srcpll", + "pdm_dclk", + "pdm_sysclk", + "tdminlb_mpll", + "tdminlb_mclk"; + + /* datain src + * 0: tdmin_a; + * 1: tdmin_b; + * 2: tdmin_c; + * 3: spdifin; + * 4: pdmin; + */ + datain_src = <4>; + datain_chnum = <4>; + datain_chmask = <0xf0>; + /* config which data pin for loopback */ + datain-lane-mask-in = <1 1>; + + /* calc mclk for datalb */ + mclk-fs = <256>; + + /* tdmin_lb src + * 0: tdmoutA + * 1: tdmoutB + * 2: tdmoutC + * 3: PAD_TDMINA_DIN*, refer to core pinmux + * 4: PAD_TDMINB_DIN*, refer to core pinmux + * 5: PAD_TDMINC_DIN*, refer to core pinmux + * 6: PAD_TDMINA_D*, oe, refer to core pinmux + * 7: PAD_TDMINB_D*, oe, refer to core pinmux + */ + /* if tdmin_lb >= 3, use external loopback */ + datalb_src = <1>; + datalb_chnum = <8>; + datalb_chmask = <0xff>; + /* config which data pin as loopback */ + datalb-lane-mask-in = <1 1 1 1>; + + status = "okay"; + }; + + aed:effect { + compatible = "amlogic, snd-effect-v4"; + #sound-dai-cells = <0>; + clocks = <&clkaudio CLKID_AUDIO_GATE_EQDRC + &clkc CLKID_FCLK_DIV4 + &clkaudio CLKID_AUDIO_EQDRC>; + clock-names = "gate", "srcpll", "eqdrc"; + /* + * 0:tdmout_a + * 1:tdmout_b + * 2:tdmout_c + * 3:spdifout + * 4:spdifout_b + */ + eqdrc_module = <1>; + /* max 0xf, each bit for one lane, usually one lane */ + lane_mask = <0x1>; + /* max 0xff, each bit for one channel */ + channel_mask = <0xff>; + status = "okay"; + }; +}; /* end of audiobus */ + +&periphs_pinctrl { + + tdmain_pins: tdmain_pin { + mux { /* GPIOT_1, GPIOT_0, GPIOT_2, GPIOT_3, GPIOT_4, GPIOT_5 */ + groups = "tdm_sclk2_t", + "tdm_fs2_t", + "tdm_d8_t", + "tdm_d9_t", + "tdm_d10_t", + "tdm_d11_t"; + function = "tdm"; + }; + }; + + tdm_b_pins: tdm_b_pin { + mux { /* GPIOC_0, GPIOC_1, GPIOC_2--GPIOC_8, GPIOT7, GPIOT8*/ + groups = "tdm_d2_c", + "tdm_d3_c", + "tdm_fs1_c", + "tdm_sclk1_c", + "tdm_d4_c", + "tdm_d5_c", + "tdm_d6_c", + "tdm_d7_c", + "tdm_d12_t", + "tdm_d13_t"; + function = "tdm"; + }; + }; + + tdmin_a_gpio: tdmin_a_gpio { + mux { + groups ="GPIOT_0", + "GPIOT_1", + "GPIOT_2", + "GPIOT_3", + "GPIOT_4", + "GPIOT_5", + "GPIOT_6"; + function = "gpio_periphs"; + output-low; + }; + }; + + tdmout_b_gpio: tdmout_b_gpio { + mux { + groups ="GPIOC_0", + "GPIOC_1", + "GPIOC_2", + "GPIOC_3", + "GPIOC_4", + "GPIOC_5", + "GPIOC_6", + "GPIOC_7", + "GPIOC_8", + "GPIOT_7", + "GPIOT_8"; + function = "gpio_periphs"; + output-low; + }; + }; + tdmin_c_gpio: tdmin_c_gpio { + mux { + groups ="GPIOX_8", + "GPIOX_9", + "GPIOX_10", + "GPIOX_11"; + function = "gpio_periphs"; + output-low; + }; + }; + tdmcin_pins: tdmcin_pin { + mux { /* GPIOX_8, GPIOX_9, GPIOX_10, GPIOX_11, */ + groups = "tdm_sclk0_x", + "tdm_fs0_x", + "tdm_d0_x", + "tdm_d1_x"; + function = "tdm"; + }; + }; + + pdmin: pdmin { + mux { /* GPIOH_2, GPIOH_1, GPIOH_0, GPIOH_4, GPIOH_3 */ + groups = "pdm_dclk_h", + //"pdm_din0_h", + //"pdm_din1_h", + "pdm_din2_h", + "pdm_din3_h"; + function = "pdm"; + }; + }; + +}; /* end of periphs_pinctrl */ + +&pinctrl_audio { + tdm_d0_pins: tdm_d0_pin { + mux { + groups = "tdm_d0"; + function = "vadtop_tdmin_lane0"; + }; + }; + + tdm_d1_pins: tdm_d1_pin { + mux { + groups = "tdm_d1"; + function = "vadtop_tdmin_lane1"; + }; + }; + + tdm_d2_pins: tdm_d2_pin { + mux { + groups = "tdm_d2"; + function = "tdmoutb_lane0"; + }; + }; + + tdm_d3_pins: tdm_d3_pin { + mux { + groups = "tdm_d3"; + function = "tdmoutb_lane1"; + }; + }; + + tdm_d4_pins: tdm_d4_pin { + mux { + groups = "tdm_d4"; + function = "tdmoutb_lane2"; + }; + }; + + tdm_d5_pins: tdm_d5_pin { + mux { + groups = "tdm_d5"; + function = "tdmoutb_lane3"; + }; + }; + + tdm_d6_pins: tdm_d6_pin { + mux { + groups = "tdm_d6"; + function = "tdmoutb_lane4"; + }; + }; + + tdm_d7_pins: tdm_d7_pin { + mux { + groups = "tdm_d7"; + function = "tdmoutb_lane5"; + }; + }; + + tdm_d8_pins: tdm_d8_pin { + mux { + groups = "tdm_d8"; + function = "tdmina_lane0"; + }; + }; + + tdm_d9_pins: tdm_d9_pin { + mux { + groups = "tdm_d9"; + function = "tdmina_lane1"; + }; + }; + + tdm_d10_pins: tdm_d10_pin { + mux { + groups = "tdm_d10"; + function = "tdmina_lane2"; + }; + }; + + tdm_d11_pins: tdm_d11_pin { + mux { + groups = "tdm_d11"; + function = "tdmina_lane3"; + }; + }; + + tdm_d12_pins: tdm_d12_pin { + mux { + groups = "tdm_d12"; + function = "tdmoutb_lane6"; + }; + }; + + tdm_d13_pins: tdm_d13_pin { + mux { + groups = "tdm_d13"; + function = "tdmoutb_lane7"; + }; + }; + + tdma_clk_pins: tdma_clk_pin { + mux { + groups = "tdm_sclk0", "tdm_lrclk0"; + function = "tdm_clk_outa"; + }; + }; + + tdmb_clk_pins: tdmb_clk_pin { + mux { + groups = "tdm_sclk1", "tdm_lrclk1"; + function = "tdm_clk_outb"; + }; + }; + + tdmain_clk_pins: tdmain_clk_pin { + mux { + groups = "tdm_sclk2", "tdm_lrclk2"; + function = "tdm_clk_in"; + }; + }; + + tdmc_clk_pins: tdmc_clk_pin { + mux { + groups = "tdm_sclk0", "tdm_lrclk0"; + function = "vadtop_tdm_clk_outc"; + }; + }; +}; + +&audio_data { + status = "okay"; +}; + +&crg_udc_2 { + status = "okay"; +}; + +&crg20_otg { + status = "okay"; + controller-type = <3>; + usb5v-supply = <&vcc5v_reg>; + usb3v3-supply = <&avdd33_usb_reg>; + usb1v8-supply = <&avdd18_usb_reg>; +}; + +&crg2_drd { + compatible = "amlogic, crg-drd"; + status = "okay"; +}; + +&crg_phy_20 { + status = "okay"; + portnum = <1>; + gpio-vbus-power = "GPIOD_10"; + gpios = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>; +}; + +&crg3_phy_20 { + status = "okay"; + portnum = <0>; +}; + +/* 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-sdr12; +// sd-uhs-sdr25; +// sd-uhs-sdr50; +// sd_uhs-sdr104; + max-frequency = <200000000>; + + non-removable; + disable-wp; + card_type = <3>; + cap-sdio-irq; + keep-power-in-suspend; + + //vmmc-supply = <&vddao_3v3>; + //vqmmc-supply = <&vddio_ao1v8>; + + brcmf: wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; + }; +}; + +/* SD card */ +&sd_emmc_b { + status = "disabled"; + pinctrl-0 = <&sdcard_pins>; + pinctrl-1 = <&sdcard_clk_gate_pins>; + pinctrl-2 = <&sd_1bit_pins>; + pinctrl-3 = <&sd_to_ao_uart_clr_pins + &sdcard_pins &ao_to_sd_uart_pins>; + pinctrl-4 = <&sd_to_ao_uart_clr_pins + &sd_1bit_pins &ao_to_sd_uart_pins>; + pinctrl-5 = <&sdcard_pins &ao_uart_pins>; + pinctrl-6 = <&sd_to_ao_uart_clr_pins + &ao_to_sd_uart_pins>; + pinctrl-7 = <&sdcard_pins &ao_uart_pins>; + pinctrl-8 = <&sd_to_ao_uart_clr_pins + &ao_to_sd_uart_pins>; + pinctrl-names = "sd_default", + "clk-gate", + "sd_1bit_pins", + "sd_clk_cmd_uart_pins", + "sd_1bit_uart_pins", + "sd_to_ao_uart_pins", + "ao_to_sd_uart_pins", + "sd_to_ao_jtag_pins", + "ao_to_sd_jtag_pins"; + bus-width = <4>; + cap-sd-highspeed; +// sd-uhs-sdr12; +// sd-uhs-sdr25; +// sd-uhs-sdr50; +// sd_uhs-sdr104; + max-frequency = <200000000>; + disable-wp; + + cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_HIGH>; + dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>; + //vmmc-supply = <&vddao_3v3>; + //vqmmc-supply = <&emmc_1v8>; +}; + +&sd_emmc_c { + status = "okay"; + pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; + pinctrl-1 = <&emmc_clk_gate_pins>; + pinctrl-2 = <&emmc_pins_sleep>; + pinctrl-names = "default", "clk-gate", "sleep"; + + 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 { + label = "logo"; + reg = <0x0 0x00200000>; + }; + partition@5 { + label = "recovery"; + reg = <0x0 0x1000000>; + }; + partition@6 { + label = "boot"; + reg = <0x0 0x0F00000>; + }; + partition@7 { + label = "system"; + reg = <0x0 0x11800000>; + }; + partition@8 { + label = "data"; + reg = <0x0 0xffffffff>; + }; + }; +}; + +&saradc { + status = "okay"; +}; + +&ir { + status = "okay"; + pinctrl-0 = <&remote_pins>; + pinctrl-names = "default"; +}; + +&spicc0 { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&spicc0_pins_x>; + cs-gpios = <&gpio GPIOX_10 0>; +}; + +&spicc1 { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&spicc1_pins_t>; + st7789v@0 { + status = "okay"; + compatible = "sitronix,st7789v"; + spi-max-frequency = <96000000>; + reg = <0>; + buswidth = <8>; + backlight = <1>; + reset-gpios = <&gpio GPIOT_9 GPIO_ACTIVE_HIGH>; + led-gpios = <&gpio GPIOD_7 GPIO_ACTIVE_LOW>; + cs-gpios = <&gpio GPIOT_10 GPIO_ACTIVE_HIGH>; + dc-gpios = <&gpio GPIOT_13 GPIO_ACTIVE_HIGH>; + }; +}; + +&spifc { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&spifc_pins>; + spi-nand@0 { + compatible = "spi-nand"; + status = "disabled"; + reg = <0>; + spi-max-frequency = <24000000>; + bl_mode = <1>; + fip_copies = <4>; + fip_size = <0x200000>; + partition = <&snand_partitions>; + snand_partitions: snand_partitions{ + bootloader{ + offset=<0x0 0x0>; + size=<0x0 0x0>; + }; + tpl{ + offset=<0x0 0x0>; + size=<0x0 0x0>; + }; + logo{ + offset=<0x0 0x0>; + size=<0x0 0x200000>; + }; + recovery{ + offset=<0x0 0x0>; + size=<0x0 0x1000000>; + }; + boot{ + offset=<0x0 0x0>; + size=<0x0 0x1000000>; + }; + system{ + offset=<0x0 0x0>; + size=<0x0 0x4000000>; + }; + data{ + offset=<0xffffffff 0xffffffff>; + size=<0x0 0x0>; + }; + }; + }; + spi-nor@1 { + compatible = "jedec,spi-nor"; + status = "disabled"; + reg = <1>; + spi-max-frequency = <24000000>; + }; +}; + +&aml_wifi{ + status = "okay"; + interrupt-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>; + power_on-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>; +}; + +&aml_bt { + status = "okay"; + reset-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; + btwakeup-gpios = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>; + hostwake-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_HIGH>; +}; + +&pwm_gh { + status = "okay"; +}; + +&uart_A { + status = "okay"; + uart-has-rtscts; +}; + +&uart_B { + status = "okay"; +}; + +&uart_C { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&c_uart_pins1>; +}; + +&irblaster { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&irblaster_pins>; +}; + +ðmac { + pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; + pinctrl-names = "default"; + status = "okay"; + phy-mode = "rgmii"; + phy-handle = <&external_phy>; + amlogic,tx-delay-ns = <2>; +}; + +&i2c1 { + status = "okay"; + pinctrl-names="default"; + pinctrl-0=<&i2c1_pins2>; + clock-frequency = <100000>; +}; + +&i2c2 { + status = "okay"; + pinctrl-names="default"; + pinctrl-0=<&i2c2_pins1>; + clock-frequency = <100000>; + ad82128_c_30: ad82128_c_30@30 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x30>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + ad82128_c_31: ad82128_c_31@31 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x31>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + ad82128_c_34: ad82128_c_34@34 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x34>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + ad82128_c_35: ad82128_c_35@35 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x35>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + aml_pca9557: aml_pca9557@1f { + compatible = "aml, ledring"; + reg = <0x1f>; + mode = <0>; /*0: 6-led 1: 4key+2led */ + key_num = <4>; + led_dev_name = "aml_ledring"; + key_dev_name = "aml_pca_key"; + key_name = "mute", "pause", "vol+", "vol-"; + key_value = <200 201 202 203>; + status = "okay"; + }; +}; + +&i2c3 { + status = "okay"; + pinctrl-names="default"; + pinctrl-0=<&i2c3_pins2>; + clock-frequency = <100000>; + ad82128_d_30: ad82128_d_30@30 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x30>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + ad82128_d_31: ad82128_d_31@31 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x31>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + ad82128_d_34: ad82128_d_34@34 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x34>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + }; + ad82128_d_35: ad82128_d_35@35 { + compatible = "ESMT,ad82128"; + #sound-dai-cells = <0>; + reg = <0x35>; + status = "okay"; + reset_pin = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>; + + }; +}; + +&custom_maps{ + mapnum = <4>; + map0 = <&map_0>; + map1 = <&map_1>; + map2 = <&map_2>; + map3 = <&map_3>; + map_0: map_0{ + mapname = "amlogic-remote-1"; + customcode = <0xfb04>; + release_delay = <80>; + size = <50>; /*keymap size*/ + keymap = ; + }; + map_1: map_1{ + mapname = "amlogic-remote-2"; + customcode = <0xfe01>; + release_delay = <80>; + size = <57>; + keymap = < + REMOTE_KEY(0x10, 200) /* power */ + REMOTE_KEY(0x1f, 201) /* eject-->input source */ + REMOTE_KEY(0x01, 202) /* usb */ + REMOTE_KEY(0x02, 203) /* bt */ + REMOTE_KEY(0x03, 204) /* aux */ + REMOTE_KEY(0x04, 205) /* scan-->hdmi arc */ + REMOTE_KEY(0x05, 206) /* spdif */ + REMOTE_KEY(0x06, 207) /* hdmi1 */ + REMOTE_KEY(0x07, 208) /* hdmi2 */ + REMOTE_KEY(0x17, 209) /* mute */ + REMOTE_KEY(0x0c, 210) /* vol+ */ + REMOTE_KEY(0x0d, 211) /* vol- */ + REMOTE_KEY(0x53, 212) /* DAP */ + REMOTE_KEY(0x52, 213) /* BM */ + REMOTE_KEY(0x49, 214) /* DRC */ + REMOTE_KEY(0x46, 215) /* POST */ + REMOTE_KEY(0x58, 216) /* UPMIX */ + REMOTE_KEY(0x5a, 217) /* VIRT */ + REMOTE_KEY(0x39, 218) /* VLAMP */ + REMOTE_KEY(0x40, 219) /* HFILT */ + REMOTE_KEY(0x42, 220) /* Loundness */ + REMOTE_KEY(0x1e, 221) /* VMCAL/cspread */ + REMOTE_KEY(0xb1, 222) /* CD */ + REMOTE_KEY(0xb4, 223) /* CD */ + REMOTE_KEY(0xb9, 224) /* CD */ + REMOTE_KEY(0x08, 225) /* loop */ + REMOTE_KEY(0x91, 226) /* CD */ + REMOTE_KEY(0x92, 227) /* CD */ + REMOTE_KEY(0x89, 228) /* CD */ + REMOTE_KEY(0x88, 229) /* CD */ + REMOTE_KEY(0x59, 230) /* Audio_info */ + REMOTE_KEY(0x84, 231) /* CD */ + REMOTE_KEY(0x1c, 232) /* DRC X+0.1 */ + REMOTE_KEY(0x1b, 233) /* DRC X-0.1 */ + REMOTE_KEY(0x19, 234) /* up/DRC Y+0.1 */ + REMOTE_KEY(0x1a, 235) /* down/DRC Y-0.1 */ + REMOTE_KEY(0xa0, 236) /* CD */ + REMOTE_KEY(0x0b, 237) /* Soft mute */ + REMOTE_KEY(0x0f, 238) /* soft vol- */ + REMOTE_KEY(0x0e, 239) /* soft vol+ */ + REMOTE_KEY(0x11, 240) /* Resume */ + REMOTE_KEY(0x57, 241) /* Pause */ + REMOTE_KEY(0x44, 242) /* LEGACY */ + REMOTE_KEY(0xa7, 243) /* CD */ + REMOTE_KEY(0x09, 244) /* random */ + REMOTE_KEY(0x00, 245) /* dtsx direct mode */ + REMOTE_KEY(0x0a, 246) /* dtsx drc */ + REMOTE_KEY(0x5b, 247) /* dtsx imax */ + REMOTE_KEY(0x13, 248) /* dtsx dialog gain */ + REMOTE_KEY(0x41, 249) /* dtsx dialog norm */ + REMOTE_KEY(0x43, 250) /* dtsx spkrout */ + REMOTE_KEY(0x15, 251) /* pcm surround effect */ + REMOTE_KEY(0x4b, 252) /* dtsvx enable */ + REMOTE_KEY(0x54, 253) /* dtsvx surround */ + REMOTE_KEY(0x4c, 254) /* dtsvx dialog clarity */ + REMOTE_KEY(0x4e, 255) /* dtsvx truvolhd */ + REMOTE_KEY(0x55, 256) /* dtsvx vol leveling*/ + >; + }; + map_2: map_2{ + mapname = "amlogic-remote-3"; + customcode = <0xbd02>; + release_delay = <80>; + size = <17>; + keymap = ; + }; + map_3: map_3{ + mapname = "amlogic-remote-3"; + customcode = <0xa4e8>; /* Reference Remote Control */ + release_delay = <80>; + size = <45>; + keymap = < + REMOTE_KEY(0xc7, 200) /* power */ + REMOTE_KEY(0x93, 201) /* eject-->input source */ + REMOTE_KEY(0xb2, 202) /* usb */ + REMOTE_KEY(0xb8, 203) /* bt */ + REMOTE_KEY(0xb7, 204) /* aux */ + REMOTE_KEY(0x8a, 205) /* scan-->hdmi arc */ + REMOTE_KEY(0x96, 206) /* spdif */ + REMOTE_KEY(0x90, 207) /* hdmi1 */ + REMOTE_KEY(0xa8, 208) /* hdmi2 */ + REMOTE_KEY(0x85, 209) /* mute */ + REMOTE_KEY(0x80, 210) /* vol+ */ + REMOTE_KEY(0x81, 211) /* vol- */ + REMOTE_KEY(0x61, 212) /* DAP */ + REMOTE_KEY(0x62, 213) /* BM */ + REMOTE_KEY(0x63, 214) /* DRC */ + REMOTE_KEY(0x64, 215) /* POST */ + REMOTE_KEY(0x65, 216) /* UPMIX */ + REMOTE_KEY(0x66, 217) /* VIRT */ + REMOTE_KEY(0x67, 218) /* VLAMP */ + REMOTE_KEY(0x68, 219) /* HFILT */ + REMOTE_KEY(0x69, 220) /* Loundness */ + REMOTE_KEY(0x60, 221) /* VMCAL/cspread */ + REMOTE_KEY(0xb1, 222) /* CD */ + REMOTE_KEY(0xb4, 223) /* CD */ + REMOTE_KEY(0xb9, 224) /* CD */ + REMOTE_KEY(0xab, 225) /* loop */ + REMOTE_KEY(0x91, 226) /* CD */ + REMOTE_KEY(0x92, 227) /* CD */ + REMOTE_KEY(0x89, 228) /* CD */ + REMOTE_KEY(0x88, 229) /* CD */ + REMOTE_KEY(0xa5, 230) /* Audio_info */ + REMOTE_KEY(0x84, 231) /* CD */ + REMOTE_KEY(0x72, 232) /* DRC X+0.1 */ + REMOTE_KEY(0x73, 233) /* DRC X-0.1 */ + REMOTE_KEY(0x9a, 234) /* up/DRC Y+0.1 */ + REMOTE_KEY(0x9b, 235) /* down/DRC Y-0.1 */ + REMOTE_KEY(0xa0, 236) /* CD */ + REMOTE_KEY(0x71, 237) /* Soft mute */ + REMOTE_KEY(0x74, 238) /* soft vol- */ + REMOTE_KEY(0x75, 239) /* soft vol+ */ + REMOTE_KEY(0x7e, 240) /* Resume */ + REMOTE_KEY(0x7f, 241) /* Pause */ + REMOTE_KEY(0x7a, 242) /* LEGACY */ + REMOTE_KEY(0xa7, 243) /* CD */ + REMOTE_KEY(0xa9, 244) /* random */ + >; + }; +};