blob: 6e8027a1f7d21bf9fb5f7db5cf67197fec72d9e3 [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#include "meson-g12-common.dtsi"
#include <dt-bindings/power/meson-sm1-power.h>
#include <dt-bindings/clock/amlogic,sm1-audio-clk.h>
/ {
compatible = "amlogic,sm1";
cpus {
#address-cells = <0x1>;
#size-cells = <0x0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x0>;
enable-method = "psci";
next-level-cache = <&l2>;
dynamic-power-coefficient = <125>;
#cooling-cells = <2>;
};
cpu1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x1>;
enable-method = "psci";
next-level-cache = <&l2>;
dynamic-power-coefficient = <125>;
#cooling-cells = <2>;
};
cpu2: cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x2>;
enable-method = "psci";
next-level-cache = <&l2>;
dynamic-power-coefficient = <125>;
#cooling-cells = <2>;
};
cpu3: cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x3>;
enable-method = "psci";
next-level-cache = <&l2>;
dynamic-power-coefficient = <125>;
#cooling-cells = <2>;
};
l2: l2-cache0 {
compatible = "cache";
};
};
meson_suspend:pm {
compatible = "amlogic, pm";
status = "okay";
device_name = "aml_pm";
reg = <0xff8000a8 0x4>,
<0xff80023c 0x4>;
};
vddcpu: regulator-vddcpu {
compatible = "pwm-regulator";
pwms = <&pwm_AO_cd 1 1500 0>;
regulator-name = "vddcpu0";
regulator-min-microvolt = <690000>;
regulator-max-microvolt = <1050000>;
regulator-always-on;
max-duty-cycle = <1500>;
/* Voltage Duty-Cycle */
voltage-table = <1050000 0>,
<1040000 3>,
<1030000 6>,
<1020000 8>,
<1010000 11>,
<1000000 14>,
<990000 17>,
<980000 20>,
<970000 23>,
<960000 26>,
<950000 29>,
<940000 31>,
<930000 34>,
<920000 37>,
<910000 40>,
<900000 43>,
<890000 45>,
<880000 48>,
<870000 51>,
<860000 54>,
<850000 56>,
<840000 59>,
<830000 62>,
<820000 65>,
<810000 68>,
<800000 70>,
<790000 73>,
<780000 76>,
<770000 79>,
<760000 81>,
<750000 84>,
<740000 87>,
<730000 89>,
<720000 92>,
<710000 95>,
<700000 98>,
<690000 100>;
status = "okay";
};
efuse: efuse {
compatible = "amlogic, efuse";
read_cmd = <0x82000030>;
write_cmd = <0x82000031>;
get_max_cmd = <0x82000033>;
mem_in_base_cmd = <0x82000020>;
mem_out_base_cmd = <0x82000021>;
key = <&efusekey>;
clocks = <&clkc CLKID_EFUSE>;
clock-names = "efuse_clk";
status = "disabled";
};
efusekey: efusekey {
keynum = <4>;
key0 = <&key_0>;
key1 = <&key_1>;
key2 = <&key_2>;
key3 = <&key_3>;
key_0: key_0 {
keyname = "mac";
offset = <0>;
size = <6>;
};
key_1: key_1 {
keyname = "mac_bt";
offset = <6>;
size = <6>;
};
key_2: key_2 {
keyname = "mac_wifi";
offset = <12>;
size = <6>;
};
key_3: key_3 {
keyname = "usid";
offset = <18>;
size = <16>;
};
};
amlogic_unifykey: unifykey{
compatible = "amlogic,unifykey";
status = "okay";
unifykey-num = <16>;
key_0{
key-name = "usid";
key-device = "normal";
key-permit = "read","write";
};
key_1{
key-name = "mac";
key-device = "normal";
key-permit = "read","write";
};
key_2{
key-name = "hdcp";
key-device = "secure";
key-type = "sha1";
key-permit = "read","write";
};
key_3{
key-name = "secure_boot_set";
key-device = "efuse";
key-permit = "write";
};
key_4{
key-name = "mac_bt";
key-device = "normal";
key-permit = "read","write";
key-type = "mac";
};
key_5{
key-name = "mac_wifi";
key-device = "normal";
key-permit = "read","write";
key-type = "mac";
};
key_6{
key-name = "hdcp2_tx";
key-device = "normal";
key-permit = "read","write";
};
key_7{
key-name = "hdcp2_rx";
key-device = "normal";
key-permit = "read","write";
};
key_8{
key-name = "widevinekeybox";
key-device = "secure";
key-permit = "read","write";
};
key_9{
key-name = "deviceid";
key-device = "normal";
key-permit = "read","write";
};
key_10{
key-name = "hdcp22_fw_private";
key-device = "secure";
key-permit = "read","write";
};
key_11{
key-name = "PlayReadykeybox25";
key-device = "secure";
key-permit = "read","write";
};
key_12{
key-name = "prpubkeybox";// PlayReady
key-device = "secure";
key-permit = "read","write";
};
key_13{
key-name = "prprivkeybox";// PlayReady
key-device = "secure";
key-permit = "read","write";
};
key_14{
key-name = "attestationkeybox";// attestation key
key-device = "secure";
key-permit = "read","write";
};
key_15{
key-name = "region_code";
key-device = "normal";
key-permit = "read","write";
};
};//End unifykey
dmc_monitor {
compatible = "amlogic,dmc_monitor-sm1";
status = "okay";
reg_base = <0xff639000>;
interrupts = <GIC_SPI 51 IRQ_TYPE_EDGE_RISING>;
};
mesonstream {
compatible = "amlogic, codec, streambuf";
dev_name = "mesonstream";
status = "okay";
clocks = <&clkc CLKID_PARSER
&clkc CLKID_DEMUX
&clkc CLKID_AHB_ARB0
&clkc CLKID_DOS
&clkc CLKID_CLK81
&clkc CLKID_VDEC_MUX
&clkc CLKID_HCODEC_MUX
&clkc CLKID_HEVC_MUX
&clkc CLKID_HEVCF_MUX>;
clock-names = "parser_top",
"demux",
"ahbarb0",
"vdec",
"clk_81",
"clk_vdec_mux",
"clk_hcodec_mux",
"clk_hevc_mux",
"clk_hevcb_mux";
};
vdec {
compatible = "amlogic, vdec";
dev_name = "vdec.0";
status = "okay";
interrupts = <0 3 1
0 23 1
0 32 1
0 43 1
0 44 1
0 45 1
0 72 1>;
interrupt-names = "vsync",
"demux",
"parser",
"mailbox_0",
"mailbox_1",
"mailbox_2",
"parser_b";
};
vcodec_dec {
compatible = "amlogic, vcodec-dec";
dev_name = "aml-vcodec-dec";
status = "okay";
};
mailbox: mhu@ff63c400 {
compatible = "amlogic, meson_mhu";
reg = <0xff63c400 0x4c>, /* MHU registers */
<0xfffe7000 0x800>; /* Payload area */
interrupts = <GIC_SPI 209 IRQ_TYPE_EDGE_RISING>, /* cm3 low*/
<GIC_SPI 210 IRQ_TYPE_EDGE_RISING>, /* cm4 rx */
<GIC_SPI 213 IRQ_TYPE_EDGE_RISING>; /* cm4 tx */
#mbox-cells = <1>;
mbox-names = "cpu_to_scp_low", "bl4_to_cpu", "cpu_to_bl4";
mboxes = <&mailbox 0 &mailbox 1 &mailbox 2>;
num-chans-to-scp = <1>; /*number of chans to send m3*/
send-isr-bits = <5>; /*BIT(idx) of isr listen when ap send*/
ack-isr-bits = <4>; /*BIT(idx) of ack isr*/
m4-isr-bits = <6>; /*BIT(idx) of m4 isr*/
mbox-chans = <3>; /*chan number*/
};
codec_io: codec_io {
compatible = "amlogic, meson-sm1, codec-io";
status = "okay";
#address-cells=<1>;
#size-cells=<1>;
ranges;
reg = <0xffd00000 0x100000>,
<0xff620000 0x10000>,
<0xff63c000 0x2000>,
<0xff800000 0x10000>,
<0xff900000 0x40000>,
<0xff638000 0x2000>,
<0xff630000 0x2000>;
reg-names = "cbus",
"dosbus",
"hiubus",
"aobus",
"vcbus",
"dmcbus",
"efusebus";
};
codec_dos_reset: reset-controller@ff620000 {
compatible = "amlogic,meson-sm1-dos-reset";
status = "okay";
reg = <0xff620000 0x10000>;
#reset-cells = <1>;
};
meson-amvideom {
compatible = "amlogic, amvideom";
dev_name = "amvideom";
status = "okay";
interrupts = <0 3 1>;
interrupt-names = "vsync";
};
power_ctrl: power_ctrl@ff8000e8 {
compatible = "amlogic, sm1-powerctrl";
reg = <0xff8000e8 0x10>,
<0xff63c100 0x10>;
};
aml_reboot{
compatible = "aml, reboot";
sys_reset = <0x84000009>;
sys_poweroff = <0x84000008>;
};
amvenc_avc{
compatible = "amlogic, amvenc_avc";
dev_name = "amvenc_avc";
status = "okay";
clocks = <&clkc CLKID_HCODEC_P0>;
clock-names = "hcodec_p0";
interrupts = <GIC_SPI 45 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "mailbox_2";
};
hevc_enc{
#address-cells=<2>;
#size-cells=<2>;
compatible = "amlogic, HevcEnc";
//memory-region = <&hevc_enc_reserved>;
dev_name = "HevcEnc";
status = "okay";
interrupts = <GIC_SPI 187 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "wave420l_irq";
ranges;
clocks = <&clkc CLKID_WAVE_A_CLK
&clkc CLKID_WAVE_B_CLK
&clkc CLKID_WAVE_C_CLK>;
clock-names = "wave_clk_a",
"wave_clk_b",
"wave_clk_c";
io_reg_base{
reg = <0x0 0xff610000 0x0 0x4000>;
};
};
ge2d {
compatible = "amlogic, ge2d-sm1";
dev_name = "ge2d";
status = "okay";
interrupts = <GIC_SPI 146 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "ge2d";
clocks = <&clkc CLKID_VAPB_SEL>,
<&clkc CLKID_G2D>,
<&clkc CLKID_VAPB>;
clock-names = "clk_vapb_0",
"clk_ge2d",
"clk_ge2d_gate";
reg = <0xff940000 0x10000>;
};
video_composer {
compatible = "amlogic, video_composer";
dev_name = "video_composer";
status = "okay";
};
ionvideo {
compatible = "amlogic, ionvideo";
status = "okay";
};
amlvideo2_0 {
compatible = "amlogic, amlvideo2";
dev_name = "amlvideo2";
status = "okay";
amlvideo2_id = <0>;
cma_mode = <1>;
};
amlvideo2_1 {
compatible = "amlogic, amlvideo2";
dev_name = "amlvideo2";
status = "okay";
amlvideo2_id = <1>;
cma_mode = <1>;
};
fb: fb {
compatible = "amlogic, fb-sm1";
memory-region = <&logo_reserved>;
dev_name = "meson-fb";
status = "disable";
interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING
GIC_SPI 56 IRQ_TYPE_EDGE_RISING
GIC_SPI 89 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "viu-vsync", "viu2-vsync", "rdma";
/* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x01851000*/
display_mode_default = "1080p60hz";
scale_mode = <1>;
/** 0:VPU free scale 1:OSD free scale 2:OSD super scale */
display_size_default = <1920 1080 1920 2160 32>;
/*1920*1080*4*3 = 0x17BB000*/
clocks = <&clkc CLKID_VPU_CLKC_MUX>;
clock-names = "vpu_clkc";
};
amhdmitx: amhdmitx{
compatible = "amlogic, amhdmitx-sm1";
dev_name = "amhdmitx";
status = "okay";
vend-data = <&vend_data>;
pinctrl-names="default", "hdmitx_i2c";
pinctrl-0=<&hdmitx_hpd_pins &hdmitx_ddc_pins>;
pinctrl-1=<&hdmitx_hpd_gpio &i2c3_sda_h_pins>;
clocks = <&clkc CLKID_VCLK2_ENCI
&clkc CLKID_VCLK2_VENCI0
&clkc CLKID_VCLK2_VENCI1
&clkc CLKID_VAPB_SEL
&clkc CLKID_VPU>;
clock-names = "venci_top_gate",
"venci_0_gate",
"venci_1_gate",
"hdmi_vapb_clk",
"hdmi_vpu_clk";
/* HPD, 57 + 32 = 89; CEC, 151 + 32 = 183*/
interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING
GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "hdmitx_hpd", "viu1_vsync";
/* 0:M8B 1:GXBB 2:GXTVBB 3:GXL 4:GXM
* 5:TXL 6:TXLX 7:AXG 8:GXLX 9:TXHD
* 10:G12A 11:G12B 12:SM1
*/
ic_type = <12>;
reg = <0xffd00000 0x100000>,
<0xff900000 0x40000>,
<0xff63c000 0x2000>,
<0xff608000 0x8000>,
<0xff600000 0x8000>,
<0xffe01000 0x100>;
reg-names = "cbus",
"vcbus",
"hiubus",
"hdmitxsec",
"hdmitx",
"esm";
vend_data: vend_data{ /* Should modified by Customer */
vendor_name = "Amlogic"; /* Max Chars: 8 */
product_desc = "MBox Meson Ref"; /* Max Chars: 16 */
/* standards.ieee.org/develop/regauth/oui/oui.txt */
vendor_id = <0x000000>;
};
};
vout: vout {
compatible = "amlogic, vout";
status = "okay";
/* fr_policy:
* 0: disable
* 1: nearby (only for 60->59.94 and 30->29.97)
* 2: force (60/50/30/24/59.94/23.97)
*/
fr_policy = <2>;
};
vout2: vout2 {
compatible = "amlogic, vout2";
status = "okay";
clocks = <&clkc CLKID_VPU_CLKC_P0>,
<&clkc CLKID_VPU_CLKC_MUX>;
clock-names = "vpu_clkc0",
"vpu_clkc";
/* fr_policy:
* 0: disable
* 1: nearby (only for 60->59.94 and 30->29.97)
* 2: force (60/50/30/24/59.94/23.97)
*/
fr_policy = <2>;
};
vpu: vpu {
compatible = "amlogic, vpu-sm1";
status = "okay";
reg = <0xff63c000 0x200 /* hiu */
0xff900000 0x50000 /* vcbus */
0xffd00000 0x10a0 /* cbus */
0xff800000 0x100>; /* aobus */
clocks = <&clkc CLKID_VAPB_SEL>,
<&clkc CLKID_VPU_INTR>,
<&clkc CLKID_VPU_0>,
<&clkc CLKID_VPU_1>,
<&clkc CLKID_VPU>;
clock-names = "vapb_clk",
"vpu_intr_gate",
"vpu_clk0",
"vpu_clk1",
"vpu_clk";
clk_level = <7>;
/* 0: 100.0M 1: 166.7M 2: 200.0M 3: 250.0M */
/* 4: 333.3M 5: 400.0M 6: 500.0M 7: 666.7M */
};
meson_videotunnel{
compatible = "amlogic, meson_videotunnel";
status = "okay";
};
aml_bt: aml_bt {
compatible = "amlogic, aml-bt";
status = "okay";
};
aml_wifi: aml_wifi {
compatible = "amlogic, aml-wifi";
status = "disabled";
irq_trigger_type = "GPIO_IRQ_LOW";
dhd_static_buf; //if use bcm wifi, config dhd_static_buf
//pinctrl-0 = <&pwm_e_pins>;
//pinctrl-names = "default";
pwm_config = <&wifi_pwm_conf>;
};
wifi_pwm_conf:wifi_pwm_conf{
pwm_channel1_conf {
pwms = <&pwm_ef 0 30550 0>;
duty-cycle = <15270>;
times = <8>;
};
pwm_channel2_conf {
pwms = <&pwm_ef 2 30500 0>;
duty-cycle = <15250>;
times = <12>;
};
};
p_tsensor: p_tsensor@ff634800 {
compatible = "amlogic, r1p1-tsensor";
status = "okay";
reg = <0xff634800 0x50>,
<0xff800268 0x4>;
cal_type = <0x1>;
cal_coeff = <324 424 3159 9411>;
rtemp = <115000>;
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_TS>; /* CLKID_TS_COMP>;*/
clock-names = "ts_comp";
#thermal-sensor-cells = <1>;
};
d_tsensor: d_tsensor@ff634c00 {
compatible = "amlogic, r1p1-tsensor";
status = "okay";
reg = <0xff634c00 0x50>,
<0xff800230 0x4>;
cal_type = <0x1>;
cal_coeff = <324 424 3159 9411>;
rtemp = <115000>;
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc CLKID_TS>; /* CLKID_TS_COMP>;*/
clock-names = "ts_comp";
#thermal-sensor-cells = <1>;
};
meson_cooldev: meson-cooldev@0 {
status = "okay";
compatible = "amlogic, meson-cooldev";
cooling_devices {
cpucore_cool_cluster0 {
cluster_id = <0>;
device_type = "cpucore";
node_name = "cpucore0";
};
gpufreq_cool {
dyn_coeff = <215>;
device_type = "gpufreq";
node_name = "bifrost";
};
};
cpucore0:cpucore0 {
#cooling-cells = <2>;
};
};
thermal-zones {
soc_thermal: soc_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
sustainable-power = <1410>;
thermal-sensors = <&p_tsensor 0>;
trips {
pswitch_on: trip-point@0 {
temperature = <60000>;
hysteresis = <2000>;
type = "passive";
};
pcontrol: trip-point@1 {
temperature = <75000>;
hysteresis = <2000>;
type = "passive";
};
phot: trip-point@2 {
temperature = <85000>;
hysteresis = <5000>;
type = "hot";
};
pcritical: trip-point@3 {
temperature = <110000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map{
trip = <&pcontrol>;
cooling-device = <&cpu0 0 11>;
contribution = <1024>;
};
cpucore_cooling_map{
trip = <&pcontrol>;
cooling-device = <&cpucore0 0 3>;
contribution = <1024>;
};
gpufreq_cooling_map {
trip = <&pcontrol>;
cooling-device = <&gpu 0 4>;
contribution = <1024>;
};
};
};
ddr_thermal: ddr_thermal {
polling-delay = <2000>;
polling-delay-passive = <250>;
sustainable-power = <1410>;
thermal-sensors = <&d_tsensor 1>;
trips {
dswitch_on: trip-point@0 {
temperature = <60000>;
hysteresis = <2000>;
type = "passive";
};
dcontrol: trip-point@1 {
temperature = <75000>;
hysteresis = <2000>;
type = "passive";
};
dhot: trip-point@2 {
temperature = <85000>;
hysteresis = <5000>;
type = "hot";
};
dcritical: trip-point@3 {
temperature = <110000>;
hysteresis = <1000>;
type = "critical";
};
};
};
};
aocec: aocec {
compatible = "amlogic, aocec-sm1";
dev_name = "aocec";
status = "okay";
vendor_name = "Amlogic"; /* Max Chars: 8 */
vendor_id = <0xffffff>;
product_desc = "SM1"; /* Max Chars: 16 */
cec_osd_string = "AML_MBOX"; /* Max Chars: 14 */
cec_version = <5>;/*5:1.4;6:2.0*/
port_num = <1>;
output = <1>;
cec_sel = <1>;/*1:use one ip, 2:use 2 ip*/
ee_cec;
arc_port_mask = <0x1>;
interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING
GIC_SPI 199 IRQ_TYPE_EDGE_RISING>; /*b,a*/
interrupt-names = "hdmi_aocecb","hdmi_aocec";
pinctrl-names = "default","hdmitx_aocecb","cec_pin_sleep";
pinctrl-0=<&cec_ao_a_h_pins>;
pinctrl-1=<&cec_ao_b_h_pins>;
pinctrl-2=<&cec_ao_b_h_pins>;
reg = <0xFF80023c 0x4
0xFF800000 0x400
0xFF634400 0x26>;
reg-names = "ao_exit","ao","periphs";
};
vdac: vdac {
compatible = "amlogic, vdac-sm1";
status = "okay";
};
};
&soc {
dummy_codec:dummy{
#sound-dai-cells = <0>;
compatible = "amlogic, aml_dummy_codec";
};
amlogic_codec:t9015{
#sound-dai-cells = <0>;
compatible = "amlogic, aml_codec_T9015";
reg = <0xFF632000 0x2000>;
tocodec_inout = <1>;
tdmout_index = <1>;
ch0_sel = <0>;
ch1_sel = <1>;
reset-names = "acodec";
resets = <&reset RESET_AUDIO_CODEC>;
};
audiobus: audiobus@0xFF660000 {
compatible = "amlogic, audio-controller", "simple-bus";
reg = <0xFF660000 0x3000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0xFF660000 0x3000>;
chip_id = <0x2B>;
clkaudio: audio_clocks {
compatible = "amlogic, sm1-audio-clocks";
#clock-cells = <1>;
reg = <0x0 0x0 0x0 0xb0>;
};
ddr_manager {
compatible = "amlogic, sm1-audio-ddr-manager";
interrupts = <
GIC_SPI 148 IRQ_TYPE_EDGE_RISING
GIC_SPI 149 IRQ_TYPE_EDGE_RISING
GIC_SPI 150 IRQ_TYPE_EDGE_RISING
GIC_SPI 49 IRQ_TYPE_EDGE_RISING
GIC_SPI 152 IRQ_TYPE_EDGE_RISING
GIC_SPI 153 IRQ_TYPE_EDGE_RISING
GIC_SPI 154 IRQ_TYPE_EDGE_RISING
GIC_SPI 50 IRQ_TYPE_EDGE_RISING
>;
interrupt-names =
"toddr_a", "toddr_b", "toddr_c",
"toddr_d",
"frddr_a", "frddr_b", "frddr_c",
"frddr_d";
};
tdma: tdm@0 {
compatible = "amlogic, sm1-snd-tdma";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <0 1>;
dai-tdm-lane-slot-mask-out = <1 0>;
dai-tdm-clk-sel = <0>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_A
&clkc CLKID_MPLL0>;
clock-names = "mclk", "clk_srcpll";
//pinctrl-names = "tdm_pins";
//pinctrl-0 = <&tdmout_a &tdmin_a>;
};
tdmb: tdm@1 {
compatible = "amlogic, sm1-snd-tdmb";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <0 1 0 0>;
dai-tdm-lane-slot-mask-out = <1 0 0 0>;
//dai-tdm-lane-slot-mask-in = <0 0 0 0 0 0 0 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
&clkc CLKID_MPLL1
&clkc CLKID_MPLL0
&clkaudio CLKID_AUDIO_SPDIFOUT_A>;
clock-names = "mclk", "clk_srcpll",
"samesource_srcpll", "samesource_clk";
pinctrl-names = "tdm_pins";
/*pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;*/
//pinctrl-0 = < &tdmout_b &tdmin_b>;
//mclk_pad = <0>; /* 0: mclk_0; 1: mclk_1 */
/*
* 0: tdmout_a;
* 1: tdmout_b;
* 2: tdmout_c;
* 3: spdifout;
* 4: spdifout_b;
*/
samesource_sel = <3>;
/*enable default mclk(12.288M)*/
start_clk_enable = <1>;
/*tdm clk tuning enable*/
clk_tuning_enable = <1>;
};
tdmc: tdm@2 {
compatible = "amlogic, sm1-snd-tdmc";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <1 0 0 0>;
#dai-tdm-lane-slot-mask-out = <1 0 1 1>;
#dai-tdm-lane-oe-slot-mask-in = <0 0 0 0>;
#dai-tdm-lane-oe-slot-mask-out = <1 0 0 0>;
dai-tdm-clk-sel = <2>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_C
&clkc CLKID_MPLL2>;
clock-names = "mclk", "clk_srcpll";
//pinctrl-names = "tdm_pins";
//pinctrl-0 = <&tdmc_mclk &tdmout_c &tdmin_c>;
mclk_pad = <0>; /* 0: mclk_0; 1: mclk_1 */
status = "okay";
};
spdifa: spdif@0 {
compatible = "amlogic, sm1-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 =
<GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "irq_spdifin";
//pinctrl-names = "spdif_pins";
//pinctrl-0 = <&spdifout>;/* bob remove &spdifin*/
/*spdif clk tuning enable*/
clk_tuning_enable = <1>;
status = "okay";
};
spdifb: spdif@1 {
compatible = "amlogic, sm1-snd-spdif-b";
#sound-dai-cells = <0>;
clocks = <&clkc CLKID_MPLL0 /*CLKID_HIFI_PLL*/
&clkaudio CLKID_AUDIO_GATE_SPDIFOUT_B
&clkaudio CLKID_AUDIO_SPDIFOUT_B>;
clock-names = "sysclk",
"gate_spdifout", "clk_spdifout";
status = "okay";
};
apdm: pdm {
compatible = "amlogic, sm1-snd-pdm";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_PDM
&clkc CLKID_FCLK_DIV3
&clkc CLKID_MPLL3
&clkaudio CLKID_AUDIO_PDMIN0
&clkaudio CLKID_AUDIO_PDMIN1>;
clock-names = "gate",
"sysclk_srcpll",
"dclk_srcpll",
"pdm_dclk",
"pdm_sysclk";
pinctrl-names = "pdm_pins";
pinctrl-0 = <&pdm_din0_z_pins
&pdm_din1_z_pins
&pdm_din2_z_pins
&pdm_din3_z_pins
&pdm_dclk_z_pins>;
/* mode 0~4, defalut:1 */
filter_mode = <1>;
status = "okay";
};
earc {
compatible = "amlogic, sm1-snd-earc";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_EARCRX
&clkaudio CLKID_EARCRX_CMDC
&clkaudio CLKID_EARCRX_DMAC
&clkc CLKID_FCLK_DIV5
&clkc CLKID_FCLK_DIV3
>;
clock-names = "rx_gate",
"rx_cmdc",
"rx_dmac",
"rx_cmdc_srcpll",
"rx_dmac_srcpll";
interrupts = <
GIC_SPI 88 IRQ_TYPE_EDGE_RISING
GIC_SPI 87 IRQ_TYPE_EDGE_RISING
>;
interrupt-names = "rx_cmdc", "rx_dmac";
status = "okay";
};
asrca: resample@0 {
compatible = "amlogic, sm1-resample";
clocks = <&clkc CLKID_MPLL3
&clkaudio CLKID_AUDIO_MCLK_F
&clkaudio CLKID_AUDIO_RESAMPLE_A>;
clock-names = "resample_pll",
"resample_src", "resample_clk";
/*same with toddr_src
* TDMIN_A, 0
* TDMIN_B, 1
* TDMIN_C, 2
* SPDIFIN, 3
* PDMIN, 4
* NONE,
* TDMIN_LB, 6
* LOOPBACK, 7
*/
resample_module = <4>;
status = "disabled";
};
vad:vad {
compatible = "amlogic, snd-vad";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_TOVAD
&clkc CLKID_FCLK_DIV5
&clkaudio CLKID_AUDIO_VAD>;
clock-names = "gate", "pll", "clk";
interrupts = <GIC_SPI 155 IRQ_TYPE_EDGE_RISING
GIC_SPI 48 IRQ_TYPE_EDGE_RISING>;
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, sm1-loopbacka";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_PDM
&clkc CLKID_FCLK_DIV3
&clkc CLKID_MPLL3
&clkaudio CLKID_AUDIO_PDMIN0
&clkaudio CLKID_AUDIO_PDMIN1
&clkc CLKID_MPLL0
&clkaudio CLKID_AUDIO_MCLK_A>;
clock-names = "pdm_gate",
"pdm_sysclk_srcpll",
"pdm_dclk_srcpll",
"pdm_dclk",
"pdm_sysclk",
"tdminlb_mpll",
"tdminlb_mclk";
/* datain src
* 0: tdmin_a;
* 1: tdmin_b;
* 2: tdmin_c;
* 3: spdifin;
* 4: pdmin;
*/
datain_src = <4>;
datain_chnum = <4>;
datain_chmask = <0xf>;
/* config which data pin for loopback */
datain-lane-mask-in = <1 1 0 0>;
/* calc mclk for datalb */
mclk-fs = <256>;
/* tdmin_lb src
* 0: tdmoutA
* 1: tdmoutB
* 2: tdmoutC
* 3: PAD_TDMINA_DIN*, refer to core pinmux
* 4: PAD_TDMINB_DIN*, refer to core pinmux
* 5: PAD_TDMINC_DIN*, refer to core pinmux
* 6: PAD_TDMINA_D*, oe, refer to core pinmux
* 7: PAD_TDMINB_D*, oe, refer to core pinmux
*/
/* if tdmin_lb >= 3, use external loopback */
datalb_src = <1>;
datalb_chnum = <2>;
datalb_chmask = <0x3>;
/* config which data pin as loopback */
datalb-lane-mask-in = <1 0 0 0>;
status = "okay";
};
loopbackb:loopback@1 {
compatible = "amlogic, sm1-loopbackb";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_PDM
&clkc CLKID_FCLK_DIV3
&clkc CLKID_MPLL3
&clkaudio CLKID_AUDIO_PDMIN0
&clkaudio CLKID_AUDIO_PDMIN1
&clkc CLKID_MPLL0
&clkaudio CLKID_AUDIO_MCLK_A>;
clock-names = "pdm_gate",
"pdm_sysclk_srcpll",
"pdm_dclk_srcpll",
"pdm_dclk",
"pdm_sysclk",
"tdminlb_mpll",
"tdminlb_mclk";
/* calc mclk for datain_lb */
mclk-fs = <256>;
/* datain src
* 0: tdmin_a;
* 1: tdmin_b;
* 2: tdmin_c;
* 3: spdifin;
* 4: pdmin;
*/
datain_src = <4>;
datain_chnum = <4>;
datain_chmask = <0xf>;
/* config which data pin for loopback */
datain-lane-mask-in = <1 0 1 0>;
/* tdmin_lb src
* 0: tdmoutA
* 1: tdmoutB
* 2: tdmoutC
* 3: PAD_TDMINA_DIN*, refer to core pinmux
* 4: PAD_TDMINB_DIN*, refer to core pinmux
* 5: PAD_TDMINC_DIN*, refer to core pinmux
* 6: PAD_TDMINA_D*, oe, refer to core pinmux
* 7: PAD_TDMINB_D*, oe, refer to core pinmux
*/
/* if tdmin_lb >= 3, use external loopback */
datalb_src = <1>;
datalb_chnum = <2>;
datalb_chmask = <0x3>;
/* config which data pin as loopback */
datalb-lane-mask-in = <1 0 0 0>;
status = "disabled";
};
aed:effect {
compatible = "amlogic, snd-effect-v3";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_EQDRC
&clkc CLKID_FCLK_DIV5
&clkaudio CLKID_AUDIO_EQDRC>;
clock-names = "gate", "srcpll", "eqdrc";
/*
* 0:tdmout_a
* 1:tdmout_b
* 2:tdmout_c
* 3:spdifout
* 4:spdifout_b
*/
eqdrc_module = <1>;
/* max 0xf, each bit for one lane, usually one lane */
lane_mask = <0x1>;
/* max 0xff, each bit for one channel */
channel_mask = <0x3>;
status = "disabled";
};
};/* end of audiobus*/
demux: demux {
compatible = "amlogic, dmx";
status = "okay";
interrupts = <GIC_SPI 23 IRQ_TYPE_EDGE_RISING
GIC_SPI 5 IRQ_TYPE_EDGE_RISING
GIC_SPI 53 IRQ_TYPE_EDGE_RISING
GIC_SPI 19 IRQ_TYPE_EDGE_RISING
GIC_SPI 25 IRQ_TYPE_EDGE_RISING
GIC_SPI 18 IRQ_TYPE_EDGE_RISING
GIC_SPI 24 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "demux0_irq",
"demux1_irq",
"demux2_irq",
"dvr0_irq",
"dvr1_irq",
"dvrfill0_fill",
"dvrfill1_flush";
};
/* eARC */
audio_earc: bus@ff663000 {
compatible = "simple-bus";
reg = <0x0 0xff663000 0x0 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0xff663000 0x1000>;
earc: earc@0 {
compatible = "amlogic, sm1-snd-earc";
#sound-dai-cells = <0>;
status = "disabled";
reg =
<0x800 0x400>,
<0xc00 0x200>,
<0xe00 0x200>;
reg-names =
"rx_cmdc",
"rx_dmac",
"rx_top";
clocks = < &clkaudio CLKID_EARCRX_CMDC
&clkaudio CLKID_EARCRX_DMAC
&clkc CLKID_FCLK_DIV4
&clkc CLKID_FCLK_DIV4
&clkaudio CLKID_EARCTX_CMDC
&clkaudio CLKID_EARCTX_DMAC
&clkc CLKID_FCLK_DIV4
&clkc CLKID_MPLL1
>;
clock-names =
"rx_cmdc",
"rx_dmac",
"rx_cmdc_srcpll",
"rx_dmac_srcpll";
interrupts = <
GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "earc_rx";
};
};
/* Sound iomap */
aml_snd_iomap {
compatible = "amlogic, snd-iomap";
status = "okay";
#address-cells=<1>;
#size-cells=<1>;
ranges;
pdm_bus {
reg = <0xFF661000 0x400>;
};
audiobus_base {
reg = <0xFF660000 0x1000>;
};
audiolocker_base {
reg = <0xFF661400 0x400>;
};
eqdrc_base {
reg = <0xFF662000 0x1000>;
};
vad_base {
reg = <0xFF661800 0x400>;
};
resampleA_base {
reg = <0xFF661c00 0x104>;
};
resampleB_base {
reg = <0xFF664000 0x104>;
};
};
};
&clk_msr {
compatible = "amlogic,meson-sm1-clk-measure";
};
&clkc {
compatible = "amlogic,sm1-clkc";
};
&ethmac {
power-domains = <&pwrc PWRC_SM1_ETH_ID>;
};
&pwrc {
compatible = "amlogic,meson-sm1-pwrc";
};
/*
*&vpu {
* power-domains = <&pwrc PWRC_SM1_VPU_ID>;
*};
*/
&pcie {
compatible = "amlogic, amlogic-pcie-v2";
};
&usb2_phy_v2 {
power-domains = <&pwrc PWRC_SM1_USB_ID>;
};
&usb3_phy_v2 {
power-domains = <&pwrc PWRC_SM1_PCIE_ID>;
};
&usb0 {
power-domains = <&pwrc PWRC_SM1_USB_ID>;
};
&dwc2_a {
power-domains = <&pwrc PWRC_SM1_USB_ID>;
};
&gpio_intc {
compatible = "amlogic,meson-sm1-gpio-intc",
"amlogic,meson-gpio-intc";
};