blob: 41b8b7ce379cbebe8f06badca6fec26f694dce8b [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
/dts-v1/;
#include "meson-c2.dtsi"
#include "bsv3-partition.dtsi"
/ {
compatible = "amlogic,c2";
model = "Google Venus B3";
aliases {
serial0 = &uart_B;
serial1 = &uart_E; /*/dev/ttyS1 for BT */
serial2 = &uart_C;
serial3 = &uart_D;
serial4 = &uart_A;
i2c0 = &i2c0;
i2c1 = &i2c1;
i2c2 = &i2c2;
i2c3 = &i2c3;
i2c4 = &i2c4;
spi0 = &spifc;
spi1 = &spicc0;
spi2 = &spicc1;
tsensor0 = &tsensor;
};
chosen {
stdout-path = "serial0:115200n8";
};
memory@0 {
device_type = "memory";
linux,usable-memory = <0x0 0x0 0x0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
secmon_reserved:linux,secmon {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x800000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x05000000 0x0 0x800000>;
};
dsp_fw_reserved:linux,dsp_fw {
compatible = "amlogic, aml_dsp_memory";
reusable;
size = <0x0 0x900000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x6000000 0x0 0x900000>;
};
autocap_reserved:linux,autocap_reserved {
compatible = "amlogic, aml_autocap_memory";
status = "disabled";
size = <0x0 0x0>;
};
ramoops@0x07400000 {
compatible = "ramoops";
reg = <0x0 0x07400000 0x0 0x00100000>;
record-size = <0x20000>;
console-size = <0x20000>;
ftrace-size = <0x80000>;
pmsg-size = <0x0>;
no-map;
};
/* codec shared reserved */
codec_mm_reserved:linux,codec_mm_reserved {
compatible = "cnm, MultiEnc-mem";
// TODO: b/329781899 - investigate actual size needed
size = <0x0 0x5000000>;
alignment = <0x0 0x400000>;
};
isp_cma_reserved:linux,isp_cma {
compatible = "shared-dma-pool";
reusable;
status = "okay";
size = <0x0 0x5400000>;
// 6x RGB24 frame buffer = 6 * 2048 * 2048 * 24 (bits) = 72(MB)
// 1x temper2 buffer = 2048 * 2048 * 3 (bytes) = 12(MB)
// total: 84 MB
alignment = <0x0 0x400000>;
};
adapt_cma_reserved:linux,adapt_cma {
compatible = "shared-dma-pool";
reusable;
status = "okay";
size = <0x0 0x2000000>;
// 6x dol buffer = 6 * 2048 * 10 / 8 * 2048 = 30(MB)
// cma buffer alignment = 2(MB)
// total: 32 MB
alignment = <0x0 0x400000>;
};
ion_cma_reserved:linux,ion-dev {
compatible = "ion, private-mem";
size = <0x0 0x8000000>;
alignment = <0x0 0x400000>;
};
jpegenc_reserved:linux,jpegenc_reserved {
compatible = "amlogic, jpegenc-memory";
// To support 2048x2048
// Buffer Needs: 0xe10000
// Eventually, we will switch back to 1600x1600.
// For now, this is just for experiment.
size = <0x0 0xe10000>;
};
};
free_reserved {
compatible = "amlogic, free_reserved";
memory-region = <&autocap_reserved>;
status = "disabled";
};
codec_mm {
compatible = "amlogic, codec, mm";
memory-region = <&codec_mm_reserved>;
dev_name = "codec_mm";
status = "okay";
};
main_12v: regulator-main_12v {
compatible = "regulator-fixed";
regulator-name = "12V";
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
regulator-always-on;
};
vcc_5v: regulator-vcc_5v {
compatible = "regulator-fixed";
regulator-name = "VCC_5V";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&main_12v>;
regulator-always-on;
};
vddq_1v2: regulator-vddq_1v2 {
compatible = "regulator-fixed";
regulator-name = "VDDQ_1V2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
vin-supply = <&main_12v>;
regulator-always-on;
};
vddao_3v3: regulator-vddao_3v3 {
compatible = "regulator-fixed";
regulator-name = "VDDAO_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&main_12v>;
regulator-always-on;
};
vcc_3v3: regulator-vcc_3v3 {
compatible = "regulator-fixed";
regulator-name = "VCC_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vddao_3v3>;
regulator-always-on;
};
vddio_1v8: regulator-vddio_1v8 {
compatible = "regulator-fixed";
regulator-name = "VDDIO_1V8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&vddao_3v3>;
regulator-always-on;
};
vcc_1v8: regulator-vcc_1v8 {
compatible = "regulator-fixed";
regulator-name = "VCC_1V8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&vcc_3v3>;
regulator-always-on;
};
sdcard_power: regulator-sdcard {
status = "disabled";
compatible = "regulator-fixed";
regulator-name = "SDCARD_POWER";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio GPIOD_5 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-boot-on;
};
vddio_card: gpio-regulator {
compatible = "regulator-gpio";
regulator-name = "VDDIO_CARD";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
//gpios = <&gpio GPIOC_7 GPIO_ACTIVE_LOW>;
gpios-states = <1>;
/* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */
states = <1800000 1
3300000 0>;
};
/* Audio Related start */
pdm_codec:pdm_codec{
#sound-dai-cells = <0>;
compatible = "amlogic, pdm_dummy_codec";
status = "okay";
};
dummy_codec:dummy_codec{
#sound-dai-cells = <0>;
compatible = "amlogic, aml_dummy_codec";
status = "okay";
};
a1_codec:a1_codec {
#sound-dai-cells = <0>;
compatible = "amlogic, c2_acodec";
status = "disabled";
reg = <0x0 0xFE004800 0x0 0x20>;
tdmout_index = <1>;
tdmin_index = <1>;
dat0_ch_sel = <0>;
dacr_output_inv = <0>;
power-domains = <&pwrdm PDID_ACODEC>;
};
auge_sound {
compatible = "amlogic, a1-sound-card";
aml-audio-card,name = "AML-AUGESOUND";
spk_mute = <&gpio GPIOX_17 GPIO_ACTIVE_LOW>;
aml-audio-card,dai-link@0 {
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";
tdmbcpu: 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 = <1155072000>;
};
tdmbcodec: codec {
sound-dai = <&dummy_codec>;
};
};
aml-audio-card,dai-link@1 {
mclk-fs = <64>;
/* suffix-name, sync with android audio hal
* what's the dai link used for
*/
suffix-name = "alsaPORT-pdm";
cpu {
sound-dai = <&pdm>;
};
codec {
sound-dai = <&pdm_codec>;
};
};
};
audiolocker: locker {
compatible = "amlogic, audiolocker";
clocks = <&clkaudio CLKID_AUDIO_LOCKER_OUT
&clkaudio CLKID_AUDIO_LOCKER_IN
&clkaudio CLKID_AUDIO_MCLK_C
&clkaudio CLKID_AUDIO_MCLK_D
&clkc CLKID_FCLK_DIV2
&clkc CLKID_FCLK_DIV3>;
clock-names = "lock_out", "lock_in", "out_src",
"in_src", "out_calc", "in_ref";
interrupts = <GIC_SPI 42 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "irq";
frequency = <49000000>; /* pll */
dividor = <49>; /* locker's parent */
power-domains = <&pwrdm PDID_AUDIO>;
status = "okay";
};
/* Audio Related end */
aml_enc {
compatible = "cnm, MultiEnc";
dev_name = "amvenc_multi";
status = "okay";
config_mm_sz_mb = <64>;
clock_freq_mhz = <400>;
clocks = <&clkc CLKID_SYS_DOS
&clkc CLKID_DOS_APB
&clkc CLKID_WAVE_A_GATE
&clkc CLKID_WAVE_B_GATE
&clkc CLKID_WAVE_C_GATE>;
clock-names = "clk_dos",
"clk_apb_dos",
"clk_MultiEnc_A",
"clk_MultiEnc_B",
"clk_MultiEnc_C";
interrupts = <0 58 1
0 59 1>;
interrupt-names = "multienc_irq",
"multienc_idle_irq";
#address-cells=<2>;
#size-cells=<2>;
ranges;
io_reg_base {
reg = <0x0 0xfe070000 0x0 0x10000>;
};
};
sensor: sensor {
compatible = "soc, sensor";
status = "okay";
sensor-name = "os04e10"; /*imx290;os08a10;imx227*/
pinctrl-names= "default";
pinctrl-0= <&cmclkout1_pins>;
//clocks = <&clkc CLKID_GP_PLL_DIV2_GATE>;
clocks = <&clkc CLKID_GP_PLL_MCLK1_GATE>;
clock-names = "mclk_0";
reset = <&gpio GPIOA_11 GPIO_ACTIVE_HIGH>;
dovdd = <&gpio GPIOA_7 GPIO_ACTIVE_HIGH>;//1.8V
dvdd = <&gpio GPIOA_13 GPIO_ACTIVE_HIGH>;//1.2V
avdd = <&gpio GPIOA_6 GPIO_ACTIVE_HIGH>;//2.8V
//ir_cut_gpio = <&gpio GPIOA_10 GPIO_ACTIVE_HIGH
// &gpio GPIOA_12 GPIO_ACTIVE_HIGH>;
};
iq: iq {
compatible = "soc, iq";
status = "okay";
sensor-name = "os04e10"; /*imx290;os08a10;imx227*/
cali-file-path = "/factory/cam_param.txt";
};
aw8637c: aw8637c {
compatible = "awinic, aw8637c";
pwm-gpios = <&gpio GPIOD_4 GPIO_ACTIVE_HIGH>,
<&gpio GPIOD_3 GPIO_ACTIVE_HIGH>;
// Uncomment the line below to skip initializing with 0 when driver probes the chip
// skip_init;
};
cpu_opp_table0: cpu_opp_table0 {
compatible = "operating-points-v2";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <779000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <779000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <779000>;
};
opp03 {
opp-hz = /bits/ 64 <667000000>;
opp-microvolt = <779000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <779000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <819000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <849000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <879000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <899000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <919000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <939000>;
};
opp11 {
opp-hz = /bits/ 64 <1920000000>;
opp-microvolt = <969000>;
};
opp12 {
opp-hz = /bits/ 64 <2016000000>;
opp-microvolt = <989000>;
};
};
cpu_opp_table1: cpu_opp_table1 {
compatible = "operating-points-v2";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <779000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <779000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <779000>;
};
opp03 {
opp-hz = /bits/ 64 <667000000>;
opp-microvolt = <779000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <779000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <819000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <849000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <879000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <899000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <919000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <939000>;
};
opp11 {
opp-hz = /bits/ 64 <1920000000>;
opp-microvolt = <969000>;
};
opp12 {
opp-hz = /bits/ 64 <2016000000>;
opp-microvolt = <989000>;
};
};
cpu_opp_table2: cpu_opp_table2 {
compatible = "operating-points-v2";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <729000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <729000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <729000>;
};
opp03 {
opp-hz = /bits/ 64 <667000000>;
opp-microvolt = <729000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <729000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <779000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <799000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <829000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <849000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <869000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <889000>;
};
opp11 {
opp-hz = /bits/ 64 <1920000000>;
opp-microvolt = <919000>;
};
opp12 {
opp-hz = /bits/ 64 <2016000000>;
opp-microvolt = <929000>;
};
};
cpu_opp_table3: cpu_opp_table3 {
compatible = "operating-points-v2";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <719000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <719000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <719000>;
};
opp03 {
opp-hz = /bits/ 64 <667000000>;
opp-microvolt = <719000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <719000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <719000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <749000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <769000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <779000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <799000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <819000>;
};
opp11 {
opp-hz = /bits/ 64 <1920000000>;
opp-microvolt = <839000>;
};
opp12 {
opp-hz = /bits/ 64 <2016000000>;
opp-microvolt = <869000>;
};
};
cpufreq-meson {
compatible = "amlogic, cpufreq-meson";
status = "okay";
};
mux: mux-controller {
compatible = "gpio-mux";
#mux-control-cells = <0>;
mux-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_9 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_10 GPIO_ACTIVE_HIGH>;
};
mux_vsense: mux-controller-vsense {
compatible = "gpio-mux";
#mux-control-cells = <0>;
mux-gpios = <&gpio GPIOX_11 GPIO_ACTIVE_HIGH>;
idle-state = <0>;
};
adc_mux: adc_mux {
compatible = "io-channel-mux";
io-channels = <&saradc 3>;
io-channel-names = "parent";
#io-channel-cells = <1>;
mux-controls = <&mux>;
channels = "", "cam", "ir", "", "btn", "", "", "";
};
adc_mux_vsense {
compatible = "io-channel-mux";
io-channels = <&saradc 1>;
io-channel-names = "parent";
#io-channel-cells = <1>;
mux-controls = <&mux_vsense>;
channels = "", "bat_vsense";
};
thermistor_cam {
compatible = "ti,tmp6331decr,vbias-1.8v-100000ohm";
pullup-uv = <1800000>;
pull-ohm = <100000>;
connected-positive;
io-channels = <&adc_mux 0>;
};
thermistor_ir {
compatible = "murata,ncp03wf104";
pullup-uv = <1800000>;
pullup-ohm = <0>;
pulldown-ohm = <100000>;
connected-positive;
io-channels = <&adc_mux 1>;
};
thermistor_btn {
compatible = "murata,ncp03wf104";
pullup-uv = <1800000>;
pullup-ohm = <0>;
pulldown-ohm = <100000>;
connected-positive;
io-channels = <&adc_mux 2>;
};
thermistor_bat {
compatible = "ti,tmp6331decr,vbias-1.8v-100000ohm";
pullup-uv = <1800000>;
pull-ohm = <100000>;
io-channels = <&saradc 2>;
};
pwm_leds {
compatible = "pwm-leds";
status = "okay";
ir_led {
label = "ir_led_pwm";
/* GPIOX_16/PWM_E, 2kHz */
pwms = <&pwm_ef MESON_PWM_0 500000 0>;
max-brightness = <255>;
};
};
cpu-dvfsid {
compatible = "amlogic, dvfs-id";
reg=<0x0 0xfe005b00 0x0 0x4>;
status = "okay";
};
bat: battery {
compatible = "simple-battery";
constant-charge-current-max-microamp = <100000>;
constant-charge-voltage-max-microvolt = <3904000>;
precharge-current-microamp = <20000>;
charge-term-current-microamp = <20000>;
};
};
&cpu0 {
cpu-supply = <&vddcpu0>;
/*set ema according to vcck*/
set_ema_available;
multi_tables_available;
operating-points-v2 = <&cpu_opp_table0>,
<&cpu_opp_table1>,
<&cpu_opp_table2>,
<&cpu_opp_table3>;
};
&cpu1 {
cpu-supply = <&vddcpu0>;
/*set ema according to vcck*/
set_ema_available;
multi_tables_available;
operating-points-v2 = <&cpu_opp_table0>,
<&cpu_opp_table1>,
<&cpu_opp_table2>,
<&cpu_opp_table3>;
};
&pwm_ab {
status = "okay";
};
&vddcpu0 {
status = "okay";
};
/* Audio Related start */
&audiobus {
tdma: tdm@0 {
compatible = "amlogic, a1-snd-tdma";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <0 1>;
dai-tdm-lane-oe-slot-mask-out = <1 0>;
dai-tdm-clk-sel = <0>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_A
&clkc CLKID_FCLK_DIV3>;
clock-names = "mclk", "clk_srcpll";
pinctrl-names = "tdm_pins";
pinctrl-0 = </*&tdmout_a*/ &tdmin_a>;
power-domains = <&pwrdm PDID_AUDIO>;
status = "disabled";
};
tdmb: tdm@1 {
compatible = "amlogic, a1-snd-tdmb";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <1 0 0 0>;
dai-tdm-lane-slot-mask-out = <1 0 0 0>;
/* dai-tdm-lane-oe-slot-mask-in = <0 1>; */
dai-tdm-clk-sel = <1>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkaudio CLKID_AUDIO_MCLK_PAD0
&clkc CLKID_HIFI_PLL>;
clock-names = "mclk", "mclk_pad", "clk_srcpll";
pinctrl-names = "tdm_pins";
pinctrl-0 = <&tdmout_b>;
/* tdmin data comes from ACODEC adc */
acodec_adc = <1>;
/*
* 0: tdmout_a;
* 1: tdmout_b;
* 2: tdmout_c;
* 3: spdifout;
* 4: spdifout_b;
*/
//samesource_sel = <3>;
start_clk_enable = <1>;
power-domains = <&pwrdm PDID_AUDIO>;
src-clk-freq = <1155072000>;
status = "okay";
};
tdmlb:tdm@3 {
compatible = "amlogic, a1-snd-tdmlb";
#sound-dai-cells = <0>;
dai-tdm-lane-lb-slot-mask-in = <1 0 0 0>;
dai-tdm-clk-sel = <1>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkc CLKID_FCLK_DIV3>;
clock-names = "mclk", "clk_srcpll";
/*
* select tdmin_lb src;
* AXG
* 0: TDMOUTA
* 1: TDMOUTB
* 2: TDMOUTC
* 3: PAD_TDMINA
* 4: PAD_TDMINB
* 5: PAD_TDMINC
*
* G12A/G12B
* 0: TDMOUTA
* 1: TDMOUTB
* 2: TDMOUTC
* 3: PAD_TDMINA_DIN*
* 4: PAD_TDMINB_DIN*
* 5: PAD_TDMINC_DIN*
* 6: PAD_TDMINA_D*, oe pin
* 7: PAD_TDMINB_D*, oe pin
*
* TL1/SM1
* 0: TDMOUTA
* 1: TDMOUTB
* 2: TDMOUTC
* 3: PAD_TDMINA_DIN*
* 4: PAD_TDMINB_DIN*
* 5: PAD_TDMINC_DIN*
* 6: PAD_TDMINA_D*
* 7: PAD_TDMINB_D*
* 8: PAD_TDMINC_D*
* 9: HDMIRX_I2S
* 10: ACODEC_ADC
*
* A1
* 0: TDMOUTA
* 1: TDMOUTB
* 3: PAD_TDMINA_DIN*
* 4: PAD_TDMINB_DIN*
*/
lb-src-sel = <1>;
power-domains = <&pwrdm PDID_AUDIO>;
status = "disabled";
};
pdm: pdm {
compatible = "amlogic, a1-snd-pdm";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO2_GATE_PDM
&clkc CLKID_HIFI_PLL
&clkc CLKID_HIFI_PLL
&clkaudio CLKID_AUDIO2_PDM_DCLK
&clkaudio CLKID_AUDIO2_PDM_SYSCLK>;
clock-names = "gate",
"sysclk_srcpll",
"dclk_srcpll",
"pdm_dclk",
"pdm_sysclk";
pinctrl-names = "pdm_pins";
pinctrl-0 = <&pdmin>;
/* mode 0~4, defalut:1 */
filter_mode = <1>;
lane-mask-in = <1 1 0 0>;
sys-src-clk-freq = <1155072000>;
power-domains = <&pwrdm PDID_PDM>;
status = "okay";
};
asrcb: resample@1 {
compatible = "amlogic, c2-resample-b";
clocks = <&clkc CLKID_HIFI_PLL
&clkaudio CLKID_AUDIO_MCLK_D
&clkaudio CLKID_AUDIO_RESAMPLEA>;
clock-names = "resample_pll", "resample_src", "resample_clk";
/*this resample is only used for loopback_A.*/
/*only support 16000 or 48000Hz for capture*/
capture_sample_rate = <16000>;
/* hifi pll rate */
src-clk-freq = <1155072000>;
status = "disabled";
};
vad:vad {
compatible = "amlogic, snd-vad-top";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO2_GATE_TOVAD
/* &clkc CLKID_FCLK_DIV2 */
&xtal
&clkaudio CLKID_AUDIO2_VAD_CLK>;
clock-names = "gate", "pll", "clk";
interrupts = <GIC_SPI 185 IRQ_TYPE_EDGE_RISING
GIC_SPI 186 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "irq_wakeup", "irq_frame_sync";
/*
* Data src sel:
* 2: tdmin_c, actually tdmin_vad
* 4: pdmin
*/
src = <4>;
/*
* deal with hot word in user space or kernel space
* 0: in user space
* 1: in kernel space
*/
level = <1>;
status = "disabled";
};
loopback: loopback {
compatible = "amlogic, a1-loopbacka";
#sound-dai-cells = <0>;
original-src = <&tdmb>;
//tdmin_lb-src = <&tdmin_lb>;
clocks = <&clkaudio CLKID_AUDIO2_GATE_PDM
&clkc CLKID_HIFI_PLL
&clkc CLKID_HIFI_PLL
&clkaudio CLKID_AUDIO2_PDM_DCLK
&clkaudio CLKID_AUDIO2_PDM_SYSCLK
&clkc CLKID_HIFI_PLL
&clkaudio CLKID_AUDIO_MCLK_C>;
clock-names = "pdm_gate",
"pdm_sysclk_srcpll",
"pdm_dclk_srcpll",
"pdm_dclk",
"pdm_sysclk",
"tdminlb_mpll",
"tdminlb_mclk";
/* datain src
* 0: tdmin_a;
* 1: tdmin_b;
* 2: tdmin_c;
* 3: spdifin;
* 4: pdmin;
*/
datain_src = <4>;
datain_chnum = <2>;
datain_chmask = <0x3>;
/* config which data pin for loopback */
datain-lane-mask-in = <1 0 0 0>;
sys-src-clk-freq = <1155072000>;
/* 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>;
power-domains = <&pwrdm PDID_AUDIO>;
status = "disabled";
};
aed:effect {
compatible = "amlogic, snd-effect-v4";
#sound-dai-cells = <0>;
clocks = <&clkaudio CLKID_AUDIO_GATE_EQDRC
&clkc CLKID_FCLK_DIV3
&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>;
power-domains = <&pwrdm PDID_AUDIO>;
status = "disabled";
};
}; /* end of audiobus */
/* Audio Related end */
&i2c4 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c4_master_pins1>;
pinctrl-1 = <&i2c4_master_sleep_pins1>;
clock-frequency = <400000>; /* 400K, b/159627458 */
sensor-i2c@36 {
compatible = "arm, i2c-sensor";
reg = <0x36>;
reg-names = "i2c-sensor";
slave-addr = <0x6c>;
reg-type = <2>;
reg-data-type = <1>;
link-device = <&phycsi>;
};
lp5009_ir: lp5009_ir@14 {
compatible = "ti,led-lp5009";
reg = <0x14>;
// Each leds have 3 channel (RGB). We use them individually for
// 6 IR led and status LED (RGB).
num_leds = <3>;
start_num = <0 3 6>;
ignore_enable_pin;
};
// Status LED
aw2015@64 {
compatible = "awinic,aw2015_led";
reg = <0x64>;
aw2015,imax = <3>;
aw2015,pwmlog = <3>;
aw2015,red {
aw2015,name = "status-R";
aw2015,id = <0>;
aw2015,led-current = <255>;
aw2015,max-brightness = <255>;
aw2015,rise-time-ms = <0>;
aw2015,hold-time-ms = <0>;
aw2015,fall-time-ms = <0>;
aw2015,off-time-ms = <0>;
};
aw2015,green {
aw2015,name = "status-G";
aw2015,id = <1>;
aw2015,led-current = <255>;
aw2015,max-brightness = <255>;
aw2015,rise-time-ms = <0>;
aw2015,hold-time-ms = <0>;
aw2015,fall-time-ms = <0>;
aw2015,off-time-ms = <0>;
};
aw2015,blue {
aw2015,name = "status-B";
aw2015,id = <2>;
aw2015,led-current = <255>;
aw2015,max-brightness = <255>;
aw2015,rise-time-ms = <0>;
aw2015,hold-time-ms = <0>;
aw2015,fall-time-ms = <0>;
aw2015,off-time-ms = <0>;
};
};
};
&isp {
status = "okay";
temper-line-offset = <0x1800>; // 2048*3
temper-buf-size = <12>;
temper-frame-num = <1>;
temper-frame-size = <0xC00000>; // 2048*3*2048
memory-region = <&isp_cma_reserved>;
clk-level = <0>;
csi-clk-level = <0>;
};
&adapter {
status = "okay";
mem_alloc = <30>;
memory-region = <&adapt_cma_reserved>;
};
&phycsi {
dphy-ctrl0-cfg = <0x123>;
dphy-ctrl1-cfg = <0x123>;
};
&pinctrl_periphs {
icr_int_default:icr_int_default {
mux {
groups = "GPIOD_4";
function = "gpio_periphs";
drive-strength = <2>;
bias-pull-up;
};
};
/* Audio Related start */
tdmout_a: tdmout_a {
mux { /* GPIOX_11, GPIOX_10, GPIOX_9 */
groups = "tdm_a_sclk",
"tdm_a_fs",
"tdm_a_dout0";
function = "tdm_a";
};
};
tdmin_a: tdmin_a {
mux { /* GPIOX_8 */
groups = "tdm_a_din1";
function = "tdm_a";
};
};
tdmb_mclk: tdmb_mclk {
mux {
groups = "mclk_0";
function = "mclk_0";
drive-strength = <2>;
};
};
tdmout_b: tdmout_b {
mux { /* GPIOA_1, GPIOA_2, GPIOA_3 */
groups = "tdm_b_sclk",
"tdm_b_fs",
"tdm_b_dout0";
function = "tdm_b";
drive-strength = <2>;
};
};
tdmin_b:tdmin_b {
mux { /* GPIOA_7 */
groups = "tdm_b_din0";
function = "tdm_b";
drive-strength = <2>;
};
};
spdifin: spdifin {
mux {/* GPIOF_6 */
groups = "spdif_in_f6";
function = "spdif_in";
};
};
pdmin: pdmin {
mux { /* GPIOC_4 GPIOC_0*/
groups =
"pdm_dclk_c",
"pdm_din0_c";
function = "pdm";
};
};
/* Audio Related end */
cmclkout2_pins:cmclkout2_pins {
mux {
groups = "cmclkout2";
function = "cmclkout";
drive-strength = <4>;
};
};
/* Sensor clk output-pins */
cmclkout1_pins:cmclkout1_pins {
mux {
groups = "mclk_0";
function = "mclk_0";
drive-strenth = <4>;
};
};
a_uart_pins1:a_uart1 {
mux {
groups = "uart_a_tx_x12",
"uart_a_rts";
function = "uart_a";
};
mux1 {
groups = "uart_a_rx_x13",
"uart_a_cts";
function = "uart_a";
vin-threshold= <1>;
};
};
}; /* end of pinctrl_periphs */
&gdc {
status = "okay";
};
&sd_emmc_c {
status = "okay";
pinctrl-0 = <&emmc_pins>;
pinctrl-1 = <&emmc_clk_gate_pins>;
pinctrl-2 = <&emmc_pins_sleep>;
pinctrl-names = "default", "clk-gate", "sleep";
bus-width = <8>;
cap-sd-highspeed;
cap-mmc-highspeed;
max-frequency = <167000000>;
non-removable;
disable-wp;
mmc-cap-erase;
//mmc-ddr-1_8v;
mmc-hs200-1_8v;
// mmc-hs400-1_8v;
card_type = <1>;/*emmc:1,sdcard:2,sdio:3*/
post-power-on-delay-ms = <0>;
//vmmc-supply = <&vcc_3v3>;
//vqmmc-supply = <&vcc_1v8>;
};
/* SD card */
&sd_emmc_b {
status = "disabled";
pinctrl-0 = <&sdcard_pins>;
pinctrl-1 = <&sdcard_clk_gate_pins>;
pinctrl-2 = <&sd_1bit_pins>;
pinctrl-3 = <&b_uart_pins1
&sdcard_clk_gate_pins &ao_to_sd_uart_pins>;
pinctrl-4 = <&b_uart_pins1
&sd_1bit_pins &ao_to_sd_uart_pins>;
pinctrl-5 = <&sdcard_pins &b_uart_enable_pins1>;
pinctrl-6 = <&b_uart_pins1
&ao_to_sd_uart_pins>;
pinctrl-7 = <&sdcard_pins &b_uart_enable_pins1>;
pinctrl-8 = <&b_uart_pins1
&ao_to_sd_uart_pins>;
pinctrl-9 = <&sdcard_pins_sleep>;
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",
"sleep";
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>;
dat3-gpios = <&gpio GPIOC_3 GPIO_ACTIVE_HIGH>;
cd-inverted;
card_type = <5>;
// vmmc-supply = <&sdcard_power>;
// vqmmc-supply = <&vddio_card>;
};
/*sdio*/
&sd_emmc_a {
status = "okay";
pinctrl-0 = <&sdio_x_pins>;
pinctrl-names = "default";
bus-width = <4>;
cap-sd-highspeed;
sd-uhs-sdr12;
sd-uhs-sdr25;
sd-uhs-sdr50;
non-removable;
max-frequency = <80000000>;
disable-wp;
cap-sdio-irq;
keep-power-in-suspend;
card_type = <3>;
post-power-on-delay-ms = <0>;
vmmc-supply = <&vddao_3v3>;
vqmmc-supply = <&vcc_1v8>;
};
&nand {
status = "disabled";
pinctrl-names = "nand_norb_mod", "nand_cs_only";
pinctrl-0 = <&all_nand_pins>;
pinctrl-1 = <&nand_cs_pins>;
/* bl_mode: 0 compact mode; 1 descrete mode */
bl_mode = <1>;
fip_copies = <4>;
fip_size = <0x200000>;
nand_clk_ctrl = <0xFE012000>;
nand_ext_clk_ctrl = <0xFE000920>;
partition = <&slc_partitions>;
slc_partitions: slc_partitions{
tpl{
offset=<0x0 0x0>;
size=<0x0 0x0>;
};
recovery{
offset=<0x0 0x0>;
size=<0x0 0x2000000>;
};
boot{
offset=<0x0 0x0>;
size=<0x0 0x2000000>;
};
system{
offset=<0x0 0x0>;
size=<0x0 0x13000000>;
};
data{
offset=<0xffffffff 0xffffffff>;
size=<0x0 0x0>;
};
};
};
&dwc2_a {
status = "okay";
/** 0: normal, 1: otg+dwc3 host only, 2: otg+dwc3 device only*/
controller-type = <3>;
};
&usb0 {
status = "okay";
};
&usb2_phy_v2 {
status = "okay";
portnum = <1>;
otg-phy-index = <0>;
};
&usb3_phy_v2 {
status = "okay";
portnum = <0>;
/*
otg = <1>;
gpio-vbus-power = "GPIOD_9";
gpios = <&gpio GPIOD_9 GPIO_ACTIVE_HIGH>;
*/
};
&aml_bc {
status = "okay";
};
&aml_cc {
status = "disabled";
};
&uart_B {
status = "okay";
};
&uart_C {
status = "disabled";
};
&i2c3 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c3_master_pins1>;
pinctrl-1 = <&i2c3_master_sleep_pins1>;
clock-frequency = <400000>; /* max supported freq */
/* Ring LED */
lp5009: lp5009@14 {
compatible = "ti,led-lp5009";
reg = <0x14>;
num_leds = <3>; // 8 white LEDs. 1 channel is left unused.
start_num = <0 3 6>;
reset_gpio = <&gpio GPIOA_5 GPIO_ACTIVE_HIGH>;
soft-init = /bits/ 8 <1>;
};
/* Ring LED 2nd Source */
aw201xx_led: aw210xx_led@20 {
compatible = "awinic,aw210xx_led";
reg = <0x20>;
enable-gpio = <&gpio GPIOA_5 GPIO_ACTIVE_HIGH>;
global_current = <0xFF>;
// 32kHz for 9bits + 3bits dither BR
osc_clk = <1>;
// 9bits + 3bits dither
br_res = <4>;
status = "okay";
aw210xx,led {
aw210xx,name = "aw210xx_led";
aw210xx,imax = <1>;
aw210xx,brightness = <0>;
aw210xx,max_brightness = <4095>;
};
};
bq25618: bq25618@6a {
compatible = "ti,bq25618";
reg = <0x6a>;
monitored-battery = <&bat>;
interrupt-parent = <&gpio_intc>;
enable_gpio = <&gpio GPIOA_14 GPIO_ACTIVE_LOW>;
interrupts = <33 IRQ_TYPE_EDGE_FALLING>;
ti,watchdog-timeout-ms = <40000>;
input-voltage-limit-microvolt = <4500000>;
input-current-limit-microamp = <200000>;
};
ps13216: ps13216@10 {
compatible = "photeon,ps13216";
reg = <0x10>;
enable-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
interrupt-parent = <&gpio_intc>;
interrupts = <83 IRQ_TYPE_EDGE_BOTH>;
hvbuck-gpios = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
};
};
&spifc {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&spifc_pins>;
spi-nor@1 {
compatible = "jedec,spi-nor";
spi-max-frequency = <96000000>;
};
spi-nand@0 {
compatible = "spi-nand";
status = "disabled";
reg = <0>;
spi-max-frequency = <96000000>;
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>;
};
};
};
};
&spicc0 {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&spicc0_pins1>;
cs-gpios = <&gpio GPIOA_8 0>,
<&gpio GPIOA_9 0>;
};
&spicc1 {
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&spicc1_pins1>;
cs-gpios = <&gpio GPIOA_14 0>;
};
&uart_A {
status = "disabled";
};
&aml_wifi {
status = "okay";
power_on-gpios = <&gpio GPIOM_6 GPIO_ACTIVE_HIGH>;
interrupt-gpios= <&gpio GPIOM_13 GPIO_ACTIVE_HIGH>;
dhd_static_buf; //if use bcm wifi, config dhd_static_buf
pwm_config = <&wifi_pwm_conf>;
//single_pwm;
};
&aml_bt {
status = "okay";
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
};
&bluesleep {
status = "okay";
bt_port_id = <1>;
bt_ext_wake = <&gpio GPIOA_15 GPIO_ACTIVE_HIGH>;
bt_host_wake = <&gpio GPIOM_12 GPIO_ACTIVE_HIGH>;
};
&pwm_ef {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pwm_e_pins1>;
};
&pwm_gh {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pwm_g_pins7>;
};
&ethmac {
status = "disabled";
pinctrl-names = "external_eth_pins";
pinctrl-0 = <&external_eth_pins>;
mc_val = <0x1624>;
internal_phy=<0>;
};
/*8211f 1g ref setting*/
//&ethmac {
// status = "okay";
// pinctrl-names = "external_eth_rgmii_pins";
// pinctrl-0 = <&external_eth_rgmii_pins>;
// mc_val = <0x1601>;
// cali_val = <0xb0000>;
// internal_phy=<0>;
//};
&freertos {
status = "disabled";
};
&rtosfmw {
status = "okay";
firmware = "TYPE_SECPU","secpu.bin";
};
&saradc {
status = "okay";
thermal-name = "thermal";
vref-supply = <&vcc_1v8>;
};
&meson_fb {
status = "disabled";
memory-region = "";
display_size_default = <1920 1080 1920 1080 32>;
mem_size = <0x00800000>;
};
&pwm_ij {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pwm_i_pins1>;
};
&uart_E {
status = "okay";
pinctrl-0 = <&e_uart_pins2>;
};
&secmon {
reserve_mem_size = <0x00600000>;
};
&jpegenc {
status = "okay";
memory-region = <&jpegenc_reserved>;
};
&jtag {
status = "disabled";
};
&amlogic_unifykey {
status = "disabled";
};
&aml_reboot {
/* change poweroff to reset */
sys_poweroff = <0x84000009>;
};
&audiolocker {
status = "disabled";
};
&tdmb {
status = "disabled";
};
&pdm {
status = "disabled";
};