blob: 19f9d462af2d4b5b2974ba730c1850becd4fe350 [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
/dts-v1/;
#include <dt-bindings/usb/pd.h>
#include "meson-s4.dtsi"
#include "mesons4_drm.dtsi"
#include "firmware_ab.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/iio/adc/amlogic-saradc.h>
/ {
model = "Amlogic";
amlogic-dt-id = "s4_s805x2_boreal";
compatible = "amlogic, s4";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
aliases {
serial0 = &uart_B;
serial1 = &uart_A;
serial2 = &uart_C;
serial3 = &uart_D;
serial4 = &uart_E;
i2c0 = &i2c0;
i2c1 = &i2c1;
i2c2 = &i2c2;
i2c3 = &i2c3;
i2c4 = &i2c4;
spi0 = &spifc;
spi1 = &spicc0;
tsensor0 = &p_tsensor;
};
memory@00000000 {
device_type = "memory";
linux,usable-memory = <0x0 0x0 0x0 0x60000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* global autoconfigured region for contiguous allocations */
ramoops@0x07400000 {
compatible = "ramoops";
reg = <0x0 0x07400000 0x0 0x00100000>;
console-size = <0x80000>;
pmsg-size = <0x80000>;
};
secmon_reserved:linux,secmon {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x3400000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x05000000 0x0 0x3400000>;
};
logo_reserved:linux,meson-fb {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x800000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x3f800000 0x0 0x800000>;
};
ion_cma_reserved:linux,ion-dev {
compatible = "shared-dma-pool";
reusable;
size = <0x0 0x4C00000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
ion_fb_reserved:linux,ion-fb {
compatible = "shared-dma-pool";
reusable;
/* 1920x1080x4x6 round up 4M align */
size = <0x0 0x3400000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
/*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>;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
/* POST PROCESS MANAGER */
ppmgr_reserved:linux,ppmgr {
compatible = "shared-dma-pool";
size = <0x0>;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
codec_mm_cma:linux,codec_mm_cma {
compatible = "shared-dma-pool";
reusable;
/* ion_codec_mm max can alloc size 232M*/
size = <0x0 0xE800000>;
alignment = <0x0 0x400000>;
linux,contiguous-region;
};
/* codec shared reserved */
codec_mm_reserved:linux,codec_mm_reserved {
compatible = "amlogic, codec-mm-reserved";
size = <0x0 0x0>;
alignment = <0x0 0x100000>;
//no-map;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
/* vdin0 CMA pool */
//vdin0_cma_reserved:linux,vdin0_cma {
// compatible = "shared-dma-pool";
// reusable;
/* up to 1920x1080 yuv422 8bit and 5 buffers
* 1920x1080x2x5 = 20 M
*/
// size = <0x0 0x01400000>;
// alignment = <0x0 0x400000>;
//};
/* vdin1 CMA pool */
vdin1_cma_reserved:linux,vdin1_cma {
compatible = "shared-dma-pool";
reusable;
/* up to 1920x1080 yuv422 8bit and 5 buffers
* 1920x1080x2x5 = 20 M
*/
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
/* demod_reserved:linux,demod {
* compatible = "amlogic, demod-mem";
* size = <0x0 0x6400000>; //8M //100m 0x6400000
* alloc-ranges = <0x0 0x0 0x0 0x30000000>;
* //multi-use;
* //no-map;
* };
*/
demod_cma_reserved:linux,demod_cma {
compatible = "shared-dma-pool";
reusable;
/* 20M */
size = <0x0 0x1400000>;
alignment = <0x0 0x400000>;
alloc-ranges = <0x0 0x0 0x0 0x3f800000>;
};
};
codec_mm {
compatible = "amlogic, codec, mm";
memory-region = <&codec_mm_cma &codec_mm_reserved>;
dev_name = "codec_mm";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-s4";
status = "okay";
/* clk path */
/* 0:vid_pll vid2_clk */
/* 1:gp0_pll vid2_clk */
/* 2:vid_pll vid1_clk */
/* 3:gp0_pll vid1_clk */
clk_path = <0>;
};
ionvideo {
compatible = "amlogic, ionvideo";
dev_name = "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>;
};
ppmgr {
compatible = "amlogic, ppmgr";
memory-region = <&ppmgr_reserved>;
dev_name = "ppmgr";
status = "okay";
};
amlvecm {
compatible = "amlogic, vecm";
dev_name = "aml_vecm";
status = "okay";
gamma_en = <0>;/*1:enabel ;0:disable*/
wb_en = <0>;/*1:enabel ;0:disable*/
cm_en = <0>;/*1:enabel ;0:disable*/
/*0: 709/601 1: bt2020*/
tx_op_color_primary = <0>;
};
multi-di {
compatible = "amlogic, dim-s4";
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 667>;
/* buffer-size = <3621952>;(yuv422 8bit) */
buffer-size = <4074560>;/*yuv422 fullpack*/
/* reserve-iomap = "true"; */
/* if enable nr10bit, set nr10bit-support to 1 */
post-wr-support = <1>;
nr10bit-support = <1>;
nrds-enable = <1>;
pps-enable = <1>;
};
unifykey{
compatible = "amlogic,unifykey";
status = "ok";
unifykey-num = <19>;
unifykey-index-0 = <&keysn_0>;
unifykey-index-1 = <&keysn_1>;
unifykey-index-2 = <&keysn_2>;
unifykey-index-3 = <&keysn_3>;
unifykey-index-4 = <&keysn_4>;
unifykey-index-5 = <&keysn_5>;
unifykey-index-6 = <&keysn_6>;
unifykey-index-7 = <&keysn_7>;
unifykey-index-8 = <&keysn_8>;
unifykey-index-9 = <&keysn_9>;
unifykey-index-10= <&keysn_10>;
unifykey-index-11= <&keysn_11>;
unifykey-index-12= <&keysn_12>;
unifykey-index-13= <&keysn_13>;
unifykey-index-14= <&keysn_14>;
unifykey-index-15= <&keysn_15>;
unifykey-index-16= <&keysn_16>;
unifykey-index-17= <&keysn_17>;
unifykey-index-18= <&keysn_18>;
keysn_0: key_0{
key-name = "usid";
key-device = "normal";
key-permit = "read","write","del";
};
keysn_1:key_1{
key-name = "mac";
key-device = "normal";
key-permit = "read","write","del";
};
keysn_2:key_2{
key-name = "hdcp";
key-device = "secure";
key-type = "sha1";
key-permit = "read","write","del";
};
keysn_3:key_3{
key-name = "secure_boot_set";
key-device = "efuse";
key-permit = "write";
};
keysn_4:key_4{
key-name = "mac_bt";
key-device = "normal";
key-permit = "read","write","del";
key-type = "mac";
};
keysn_5:key_5{
key-name = "mac_wifi";
key-device = "normal";
key-permit = "read","write","del";
key-type = "mac";
};
keysn_6:key_6{
key-name = "hdcp2_tx";
key-device = "normal";
key-permit = "read","write","del";
};
keysn_7:key_7{
key-name = "hdcp2_rx";
key-device = "normal";
key-permit = "read","write","del";
};
keysn_8:key_8{
key-name = "widevinekeybox";
key-device = "secure";
key-permit = "read","write","del";
};
keysn_9:key_9{
key-name = "deviceid";
key-device = "normal";
key-permit = "read","write","del";
};
keysn_10:key_10{
key-name = "hdcp22_fw_private";
key-device = "secure";
key-permit = "read","write","del";
};
keysn_11:key_11{
key-name = "PlayReadykeybox25";
key-device = "secure";
key-permit = "read","write","del";
};
keysn_12:key_12{
key-name = "prpubkeybox";// PlayReady
key-device = "secure";
key-permit = "read","write","del";
};
keysn_13:key_13{
key-name = "prprivkeybox";// PlayReady
key-device = "secure";
key-permit = "read","write","del";
};
keysn_14:key_14{
key-name = "attestationkeybox";// attestation key
key-device = "secure";
key-permit = "read","write","del";
};
keysn_15:key_15{
key-name = "region_code";
key-device = "normal";
key-permit = "read","write","del";
};
keysn_16:key_16{
key-name = "netflix_mgkid";
key-device = "secure";
key-permit = "read","write","del";
};
keysn_17:key_17{
key-name = "attestationdevidbox";// attest dev id box
key-device = "secure";
key-permit = "read","write","del";
};
keysn_18:key_18{
key-name = "oemkey";
key-device = "normal";
key-permit = "read","write","del";
};
}; /* end of 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 of efusekey */
/* Audio Related start */
auge_sound {
compatible = "amlogic, auge-sound-card";
aml-audio-card,name = "AML-AUGESOUND";
aml-audio-card,dai-link@0 {
format = "dsp_a";
mclk-fs = <512>;
//continuous-clock;
//bitclock-inversion;
//frame-inversion;
/* master mode */
bitclock-master = <&tdma>;
frame-master = <&tdma>;
/* slave mode */
/*
* bitclock-master = <&tdmacodec>;
* frame-master = <&tdmacodec>;
*/
suffix-name = "alsaPORT-pcm";
tdmacpu: cpu {
sound-dai = <&tdma>;
dai-tdm-slot-tx-mask =
<1>;
dai-tdm-slot-rx-mask =
<1>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <16>;
system-clock-frequency = <256000>;
};
tdmacodec: codec {
sound-dai = <&dummy_codec>;
};
};
aml-audio-card,dai-link@1 {
format = "i2s";// "dsp_a";
mclk-fs = <256>;
//continuous-clock;
//bitclock-inversion;
//frame-inversion;
/* master mode */
bitclock-master = <&tdmb>;
frame-master = <&tdmb>;
/* slave mode */
//bitclock-master = <&tdmbcodec>;
//frame-master = <&tdmbcodec>;
/* suffix-name, sync with android audio hal
* what's the dai link used for
*/
suffix-name = "alsaPORT-i2s2hdmi";
cpu {
sound-dai = <&tdmb>;
dai-tdm-slot-tx-mask = <1 1>;
dai-tdm-slot-rx-mask = <1 1>;
dai-tdm-slot-num = <2>;
/*
* dai-tdm-slot-tx-mask =
* <1 1 1 1 1 1 1 1>;
* dai-tdm-slot-rx-mask =
* <1 1 1 1 1 1 1 1>;
* dai-tdm-slot-num = <8>;
*/
dai-tdm-slot-width = <32>;
system-clock-frequency = <12288000>;
};
tdmbcodec: codec {
sound-dai = <&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-i2s";
cpu {
sound-dai = <&tdmc>;
dai-tdm-slot-tx-mask = <1 1>;
dai-tdm-slot-rx-mask = <1 1>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
system-clock-frequency = <12288000>;
};
tdmccodec: codec {
sound-dai = <&dummy_codec>;
};
};
/* reserve dai-link@3 for pdm_in */
aml-audio-card,dai-link@4 {
mclk-fs = <128>;
/* suffix-name, sync with android audio hal used for */
suffix-name = "alsaPORT-spdif";
cpu {
sound-dai = <&spdifa>;
system-clock-frequency = <6144000>;
};
codec {
sound-dai = <&dummy_codec>;
};
};
};
picdec {
compatible = "amlogic, picdec";
status = "okay";
};
gpio_keypad {
compatible = "amlogic, gpio_keypad";
status = "okay";
scan_period = <20>;
key_num = <1>;
key_name = "fdr";
key_code = <218>;
key-gpios = <&gpio GPIOD_10 GPIO_ACTIVE_HIGH>;
detect_mode = <0>; /* 0:polling mode, 1:irq mode */
};
pwmleds {
compatible = "pwm-leds";
status = "okay";
pinctrl-names = "default", "default";
pinctrl-0 = <&pwm_g_pins1>;
pinctrl-1 = <&pwm_b_pins1>;
white_led {
pwms = <&pwm_gh MESON_PWM_0 12500 0>;
max-brightness = <255>;
/* Synchronize brightness with uboot */
default-brightness = <85>;
};
orange_led {
pwms = <&pwm_ab MESON_PWM_1 12500 0>;
max-brightness = <255>;
/* Synchronize brightness with uboot */
default-brightness = <0>;
};
};
pp1800_sys: regulator-pp1800_sys {
compatible = "regulator-fixed";
regulator-name = "PP1800_SYS";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
thermistor_ddr: thermistor@0 {
compatible = "murata,ncp03wf104";
pullup-uv = <1800000>;
pullup-ohm = <47000>;
pulldown-ohm = <0>;
io-channels = <&saradc SARADC_CH0>;
#thermal-sensor-cells = <0>;
};
thermistor_wifi: thermistor@1 {
compatible = "murata,ncp03wf104";
pullup-uv = <1800000>;
pullup-ohm = <47000>;
pulldown-ohm = <0>;
io-channels = <&saradc SARADC_CH1>;
#thermal-sensor-cells = <0>;
};
thermistor_soc: thermistor@2 {
compatible = "murata,ncp03wf104";
pullup-uv = <1800000>;
pullup-ohm = <47000>;
pulldown-ohm = <0>;
io-channels = <&saradc SARADC_CH2>;
#thermal-sensor-cells = <0>;
};
usb_power_monitor: usb-power-monitor {
compatible = "google,usb-power-monitor";
bc_chg_det-gpio = <&gpio GPIOZ_2 GPIO_ACTIVE_HIGH>;
typec_power_supply = <&rt1711h>;
#thermal-sensor-cells = <0>;
};
thermal-zones {
core_soc_thermal: core_soc_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
policy = "step_wise";
thermal-sensors = <&p_tsensor 0>;
trips {
core_soc_trip0: trip-point@0 {
temperature = <88000>;
hysteresis = <1000>;
type = "passive";
};
core_soc_trip1: trip-point@1 {
temperature = <91000>;
hysteresis = <1000>;
type = "passive";
};
core_soc_trip2: trip-point@2 {
temperature = <94000>;
hysteresis = <1000>;
type = "passive";
};
core_soc_trip3: trip-point@3 {
temperature = <97000>;
hysteresis = <1000>;
type = "passive";
};
core_soc_critical: trip-point@4 {
temperature = <100000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map0 {
trip = <&core_soc_trip0>;
cooling-device = <&CPU0 0 3>;
};
cpufreq_cooling_map1 {
trip = <&core_soc_trip1>;
cooling-device = <&CPU0 4 5>;
};
cpufreq_cooling_map2 {
trip = <&core_soc_trip2>;
cooling-device = <&CPU0 6 6>;
};
cpufreq_cooling_map3 {
trip = <&core_soc_trip3>;
cooling-device = <&CPU0 7 7>;
};
gpufreq_cooling_map0 {
trip = <&core_soc_trip0>;
cooling-device = <&gpu 1 1>;
};
gpufreq_cooling_map1 {
trip = <&core_soc_trip1>;
cooling-device = <&gpu 2 2>;
};
};
};
board_ddr_thermal: board_ddr_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
policy = "step_wise";
thermal-sensors = <&thermistor_ddr>;
trips {
board_ddr_trip0: trip-point@0 {
temperature = <78000>;
hysteresis = <1000>;
type = "passive";
};
board_ddr_trip1: trip-point@1 {
temperature = <80000>;
hysteresis = <1000>;
type = "passive";
};
board_ddr_trip2: trip-point@2 {
temperature = <83000>;
hysteresis = <1000>;
type = "passive";
};
board_ddr_trip3: trip-point@3 {
temperature = <84000>;
hysteresis = <1000>;
type = "passive";
};
board_ddr_critical: trip-point@4 {
temperature = <86000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map0 {
trip = <&board_ddr_trip0>;
cooling-device = <&CPU0 0 3>;
};
cpufreq_cooling_map1 {
trip = <&board_ddr_trip1>;
cooling-device = <&CPU0 4 5>;
};
cpufreq_cooling_map2 {
trip = <&board_ddr_trip2>;
cooling-device = <&CPU0 6 6>;
};
cpufreq_cooling_map3 {
trip = <&board_ddr_trip3>;
cooling-device = <&CPU0 7 7>;
};
gpufreq_cooling_map0 {
trip = <&board_ddr_trip0>;
cooling-device = <&gpu 1 1>;
};
gpufreq_cooling_map1 {
trip = <&board_ddr_trip1>;
cooling-device = <&gpu 2 2>;
};
};
};
board_wifi_thermal: board_wifi_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
policy = "step_wise";
thermal-sensors = <&thermistor_wifi>;
trips {
board_wifi_trip0: trip-point@0 {
temperature = <78000>;
hysteresis = <1000>;
type = "passive";
};
board_wifi_trip1: trip-point@1 {
temperature = <80000>;
hysteresis = <1000>;
type = "passive";
};
board_wifi_trip2: trip-point@2 {
temperature = <83000>;
hysteresis = <1000>;
type = "passive";
};
board_wifi_trip3: trip-point@3 {
temperature = <84000>;
hysteresis = <1000>;
type = "passive";
};
board_wifi_critical: trip-point@4 {
temperature = <86000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map0 {
trip = <&board_wifi_trip0>;
cooling-device = <&CPU0 0 3>;
};
cpufreq_cooling_map1 {
trip = <&board_wifi_trip1>;
cooling-device = <&CPU0 4 5>;
};
cpufreq_cooling_map2 {
trip = <&board_wifi_trip2>;
cooling-device = <&CPU0 6 6>;
};
cpufreq_cooling_map3 {
trip = <&board_wifi_trip3>;
cooling-device = <&CPU0 7 7>;
};
gpufreq_cooling_map0 {
trip = <&board_wifi_trip0>;
cooling-device = <&gpu 1 1>;
};
gpufreq_cooling_map1 {
trip = <&board_wifi_trip1>;
cooling-device = <&gpu 2 2>;
};
};
};
board_soc_thermal: board_soc_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
policy = "step_wise";
thermal-sensors = <&thermistor_soc>;
trips {
board_soc_trip0: trip-point@0 {
temperature = <78000>;
hysteresis = <1000>;
type = "passive";
};
board_soc_trip1: trip-point@1 {
temperature = <80000>;
hysteresis = <1000>;
type = "passive";
};
board_soc_trip2: trip-point@2 {
temperature = <83000>;
hysteresis = <1000>;
type = "passive";
};
board_soc_trip3: trip-point@3 {
temperature = <84000>;
hysteresis = <1000>;
type = "passive";
};
board_soc_critical: trip-point@4 {
temperature = <86000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map0 {
trip = <&board_soc_trip0>;
cooling-device = <&CPU0 0 3>;
};
cpufreq_cooling_map1 {
trip = <&board_soc_trip1>;
cooling-device = <&CPU0 4 5>;
};
cpufreq_cooling_map2 {
trip = <&board_soc_trip2>;
cooling-device = <&CPU0 6 6>;
};
cpufreq_cooling_map3 {
trip = <&board_soc_trip3>;
cooling-device = <&CPU0 7 7>;
};
gpufreq_cooling_map0 {
trip = <&board_soc_trip0>;
cooling-device = <&gpu 1 1>;
};
gpufreq_cooling_map1 {
trip = <&board_soc_trip1>;
cooling-device = <&gpu 2 2>;
};
};
};
skin_thermal: skin_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
policy = "step_wise";
thermal-sensors = <&thermistor_ddr>;
coefficients = <1 (-1800)>;
trips {
skin_trip0: trip-point@0 {
temperature = <69000>;
hysteresis = <1000>;
type = "passive";
};
skin_trip1: trip-point@1 {
temperature = <70000>;
hysteresis = <1000>;
type = "passive";
};
skin_trip2: trip-point@2 {
temperature = <71000>;
hysteresis = <1000>;
type = "passive";
};
skin_trip3: trip-point@3 {
temperature = <72000>;
hysteresis = <1000>;
type = "passive";
};
skin_critical: trip-point@4 {
temperature = <73000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map0 {
trip = <&skin_trip0>;
cooling-device = <&CPU0 0 3>;
};
cpufreq_cooling_map1 {
trip = <&skin_trip1>;
cooling-device = <&CPU0 4 5>;
};
cpufreq_cooling_map2 {
trip = <&skin_trip2>;
cooling-device = <&CPU0 6 6>;
};
cpufreq_cooling_map3 {
trip = <&skin_trip3>;
cooling-device = <&CPU0 7 7>;
};
gpufreq_cooling_map0 {
trip = <&skin_trip0>;
cooling-device = <&gpu 1 1>;
};
gpufreq_cooling_map1 {
trip = <&skin_trip1>;
cooling-device = <&gpu 2 2>;
};
};
};
/* virtual thermal zone */
usb_power_vthermal: usb_power_vthermal {
polling-delay = <2000>;
polling-delay-passive = <1000>;
thermal-sensors = <&usb_power_monitor>;
trips {
usb_power_low: trip-point@0 {
temperature = <(-2500000)>;
hysteresis = <0>;
type = "passive";
};
};
};
};
};
&pwm_ab {
status = "okay";
};
&pwm_gh {
status = "okay";
};
&s805x2_opp_table0 {
compatible = "operating-points-v2";
status = "okay";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <770000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <770000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <770000>;
};
opp03 {
opp-hz = /bits/ 64 <666000000>;
opp-microvolt = <770000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <770000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <770000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <800000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <830000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <870000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <910000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <1010000>;
};
};
&s805x2_opp_table1 {
compatible = "operating-points-v2";
status = "okay";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <770000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <770000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <770000>;
};
opp03 {
opp-hz = /bits/ 64 <666000000>;
opp-microvolt = <770000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <770000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <770000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <800000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <830000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <870000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <910000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <1010000>;
};
};
&s805x2_opp_table2 {
compatible = "operating-points-v2";
status = "okay";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <760000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <760000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <760000>;
};
opp03 {
opp-hz = /bits/ 64 <666000000>;
opp-microvolt = <760000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <760000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <760000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <760000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <770000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <800000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <830000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <1000000>;
};
};
&s805x2_opp_table3 {
compatible = "operating-points-v2";
status = "okay";
opp-shared;
opp00 {
opp-hz = /bits/ 64 <100000000>;
opp-microvolt = <760000>;
};
opp01 {
opp-hz = /bits/ 64 <250000000>;
opp-microvolt = <760000>;
};
opp02 {
opp-hz = /bits/ 64 <500000000>;
opp-microvolt = <760000>;
};
opp03 {
opp-hz = /bits/ 64 <666000000>;
opp-microvolt = <760000>;
};
opp04 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <760000>;
};
opp05 {
opp-hz = /bits/ 64 <1200000000>;
opp-microvolt = <760000>;
};
opp06 {
opp-hz = /bits/ 64 <1404000000>;
opp-microvolt = <760000>;
};
opp07 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <760000>;
};
opp08 {
opp-hz = /bits/ 64 <1608000000>;
opp-microvolt = <770000>;
};
opp09 {
opp-hz = /bits/ 64 <1704000000>;
opp-microvolt = <810000>;
};
opp10 {
opp-hz = /bits/ 64 <1800000000>;
opp-microvolt = <940000>;
};
};
&CPU0 {
multi_tables_available;
operating-points-v2 = <&s805x2_opp_table0>,
<&s805x2_opp_table1>,
<&s805x2_opp_table2>,
<&s805x2_opp_table3>;
};
&CPU1 {
multi_tables_available;
operating-points-v2 = <&s805x2_opp_table0>,
<&s805x2_opp_table1>,
<&s805x2_opp_table2>,
<&s805x2_opp_table3>;
};
&CPU2 {
multi_tables_available;
operating-points-v2 = <&s805x2_opp_table0>,
<&s805x2_opp_table1>,
<&s805x2_opp_table2>,
<&s805x2_opp_table3>;
};
&CPU3 {
multi_tables_available;
operating-points-v2 = <&s805x2_opp_table0>,
<&s805x2_opp_table1>,
<&s805x2_opp_table2>,
<&s805x2_opp_table3>;
};
&i2c4 {
status = "okay";
pinctrl-names="default";
pinctrl-0=<&i2c4_pins2>;
clock-frequency = <100000>;
rt1711h: rt1711h@4e {
compatible = "richtek,rt1711h";
reg = <0x4e>;
//interrupt-parent = <&gpio_intc>;
//interrupts = <GPIOC_7 GPIO_ACTIVE_LOW>;
gpios = <&gpio GPIOC_7 GPIO_ACTIVE_LOW>;
usb_con: connector {
compatible = "usb-c-connector";
label = "USB-C";
power-role = "sink";
data-role = "dual";
sink-pdos = <PDO_FIXED(5000, 900, PDO_FIXED_USB_COMM)>;
op-sink-microwatt = <4500000>;
no-vconn = "true";
no-send-disc = "true";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
};
};
};
};
};
&audiobus {
tdma: tdm@0 {
compatible = "amlogic, t5-snd-tdma";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <1>;
dai-tdm-lane-slot-mask-out = <1 0>;
dai-tdm-clk-sel = <0>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_A
&clkc CLKID_MPLL0>;
clock-names = "mclk", "clk_srcpll";
pinctrl-names = "tdm_pins";
pinctrl-0 = <&tdm_a
&tdm_d0_pins
&tdm_d1_pins
&tdma_clk_pins>;
status = "okay";
};
tdmb: tdm@1 {
compatible = "amlogic, t5-snd-tdmb";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <0 1 0 0>;
dai-tdm-lane-slot-mask-out = <1 1 1 1>;
dai-tdm-clk-sel = <1>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
&clkc CLKID_MPLL1>;
clock-names = "mclk", "clk_srcpll";
pinctrl-names = "tdm_pins";
pinctrl-0 = </*&tdmb_mclk &tdmout_b &tdmin_b*/>;
i2s2hdmi = <1>;
status = "okay";
};
tdmc: tdm@2 {
compatible = "amlogic, t5-snd-tdmc";
#sound-dai-cells = <0>;
dai-tdm-lane-slot-mask-in = <1>;
dai-tdm-lane-slot-mask-out = <1>;
dai-tdm-clk-sel = <2>;
clocks = <&clkaudio CLKID_AUDIO_MCLK_C
&clkaudio CLKID_AUDIO_MCLK_PAD0
&clkc CLKID_MPLL2
&clkc CLKID_MPLL0
&clkaudio CLKID_AUDIO_SPDIFOUT_A>;
clock-names = "mclk", "mclk_pad", "clk_srcpll",
"samesource_srcpll", "samesource_clk";
/*
* 0: tdmout_a;
* 1: tdmout_b;
* 2: tdmout_c;
* 3: spdifout;
* 4: spdifout_b;
*/
samesource_sel = <3>;
/*enable default mclk(12.288M), before extern codec start*/
start_clk_enable = <1>;
/*tdm clk tuning enable*/
clk_tuning_enable = <1>;
status = "okay";
};
spdifa: spdif@0 {
compatible = "amlogic, tm2-revb-snd-spdif-a";
#sound-dai-cells = <0>;
clocks = <&clkc CLKID_MPLL0
&clkc CLKID_FCLK_DIV4
&clkaudio CLKID_AUDIO_GATE_SPDIFIN
&clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A
&clkaudio CLKID_AUDIO_SPDIFIN
&clkaudio CLKID_AUDIO_SPDIFOUT_A>;
clock-names = "sysclk", "fixed_clk", "gate_spdifin",
"gate_spdifout", "clk_spdifin", "clk_spdifout";
interrupts =
<GIC_SPI 35 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "irq_spdifin";
pinctrl-names = "spdif_pins", "spdif_pins_mute";
pinctrl-0 = <&spdifout>;
pinctrl-1 = <&spdifout_a_mute>;
/*spdif clk tuning enable*/
clk_tuning_enable = <1>;
status = "okay";
};
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 = <2>;
/* max 0xf, each bit for one lane, usually one lane */
lane_mask = <0x1>;
/* max 0xff, each bit for one channel */
channel_mask = <0x3>;
status = "okay";
};
}; /* end of audiobus */
&pinctrl_audio {
tdm_d0_pins: tdm_d0_pin {
mux {
groups = "tdm_d0";
function = "tdmouta_lane0";
};
};
tdm_d1_pins: tdm_d1_pin {
mux {
groups = "tdm_d1";
function = "tdmina_lane0";
};
};
tdma_clk_pins: tdm_clk_pin {
mux {
groups = "tdm_sclk0", "tdm_lrclk0";
function = "tdm_clk_outa";
};
};
};
&periphs_pinctrl {
tdm_a: tdm_a {
mux { /* GPIOX_11, GPIOX_10, GPIOX_9, GPIOX_8 */
groups = "tdm_sclk0",
"tdm_fs0",
"tdm_d0",
"tdm_d1";
function = "tdm";
};
};
spdifout: spdifout {
mux { /* GPIOH_4 */
groups = "spdif_out_h";
function = "spdif_out";
};
};
spdifout_a_mute: spdifout_a_mute {
mux { /* GPIOH_4 */
groups = "GPIOH_4";
function = "gpio_periphs";
output-low;
};
};
a_uart_pins:a_uart {
mux {
groups = "uart_a_tx",
"uart_a_rx",
"uart_a_cts",
"uart_a_rts";
function = "uart_a";
bias-disable;
};
};
}; /* end of periphs_pinctrl */
&audio_data {
status = "okay";
};
&dwc2_a {
status = "okay";
/** 0: normal, 1: otg+dwc3 host only, 2: otg+dwc3 device only*/
controller-type = <3>;
};
&crg {
status = "okay";
};
&usb2_phy_v2 {
status = "okay";
portnum = <2>;
};
&usb3_phy_v2 {
status = "okay";
portnum = <0>;
otg = <1>;
/*gpio-vbus-power = "GPIOH_6";*/
/*gpios = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;*/
};
/* Wifi 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;
/delete-property/ use_intf3_tuning;
non-removable;
disable-wp;
};
/* SD card */
&sd_emmc_b {
status = "okay";
pinctrl-0 = <&sdcard_pins>;
pinctrl-1 = <&sdcard_clk_gate_pins>;
pinctrl-2 = <&sd_1bit_pins>;
pinctrl-3 = <&sd_to_ao_uart_clr_pins
&sdcard_pins &ao_to_sd_uart_pins>;
pinctrl-4 = <&sd_to_ao_uart_clr_pins
&sd_1bit_pins &ao_to_sd_uart_pins>;
pinctrl-5 = <&sdcard_pins &ao_uart_pins>;
pinctrl-6 = <&sd_to_ao_uart_clr_pins
&ao_to_sd_uart_pins>;
pinctrl-7 = <&sdcard_pins &ao_uart_pins>;
pinctrl-8 = <&sd_to_ao_uart_clr_pins
&ao_to_sd_uart_pins>;
pinctrl-names = "sd_default",
"clk-gate",
"sd_1bit_pins",
"sd_clk_cmd_uart_pins",
"sd_1bit_uart_pins",
"sd_to_ao_uart_pins",
"ao_to_sd_uart_pins",
"sd_to_ao_jtag_pins",
"ao_to_sd_jtag_pins";
bus-width = <4>;
cap-sd-highspeed;
// sd-uhs-sdr12;
// sd-uhs-sdr25;
// sd-uhs-sdr50;
// sd-uhs-sdr104;
max-frequency = <200000000>;
disable-wp;
cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_HIGH>;
dat1-gpios = <&gpio GPIOC_1 GPIO_ACTIVE_HIGH>;
//vmmc-supply = <&vddao_3v3>;
//vqmmc-supply = <&emmc_1v8>;
};
/* eMMC */
&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>;
};
&saradc {
status = "okay";
vref-supply = <&pp1800_sys>;
};
&fb {
status = "disabled";
display_size_default = <1920 1080 1920 2160 32>;
mem_size = <0x00800000 0x1980000 0x100000>;
logo_addr = "0x3f800000";
mem_alloc = <0>;
pxp_mode = <0>; /** 0:normal mode 1:pxp mode */
};
&drm_vpu {
status = "okay";
logo_addr = "0x3f800000";
};
&amhdmitx {
res_1080p = <1>;
status = "okay";
cedst_en = <1>;
};
&drm_amhdmitx {
status = "okay";
hdcp = "disabled";
};
&drm_amcvbsout {
status = "okay";
};
&drm_lcd {
status = "disabled";
};
&vpu {
clk_level = <5>;
};
/*if you want to use vdin just modify status to "ok"*/
&vdin0 {
/*compatible = "amlogic, vdin-sc2";*/
/*memory-region = <&vdin0_cma_reserved>;*/
/*status = "disabled";*/
/* up to 1920x1080 yuv422 8bit and 5 buffers
* 1920x1080x2x5 = 20 M
*/
cma_size = <20>;
/*vdin write mem color depth support:
*bit0:support 8bit
*bit1:support 9bit
*bit2:support 10bit
*bit3:support 12bit
*bit4:support yuv422 10bit full pack mode (from txl new add)
*/
tv_bit_mode = <0x1>;
};
&vdin1 {
/*compatible = "amlogic, vdin-sc2";*/
memory-region = <&vdin1_cma_reserved>;
/*status = "disabled";*/
/*vdin write mem color depth support:
*bit0:support 8bit
*bit1:support 9bit
*bit2:support 10bit
*bit3:support 12bit
*/
tv_bit_mode = <1>;
};
&aml_wifi{
status = "okay";
interrupt-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
power_on-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
disable-wifi-32k;
};
&aml_bt {
status = "okay";
reset-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
hostwake-gpios = <&gpio GPIOX_16 GPIO_ACTIVE_HIGH>;
btwakeup-gpios = <&gpio GPIOX_18 GPIO_ACTIVE_HIGH>;
};
&uart_A {
status = "okay";
uart-has-rtscts;
};
&vdec_cpu_ver {
compatible = "amlogic, cpu-major-id-s4-805x2";
};
&gpu {
tbl = <&dvfs285_cfg
&dvfs400_cfg
&dvfs500_cfg
&dvfs666_cfg
&dvfs800_cfg
&dvfs800_cfg>;
};
&cma_shrinker {
free = <7680 24288 28528 32600 32768 36624>;
};
&vend_data {
vendor_name = "Google"; /* Max Chars: 8 */
vendor_id = <0x001a11>;
product_desc = "Chromecast HD"; /* Max Chars: 16 */
};
&aocec {
vendor_name = "Google"; /* Max Chars: 8 */
vendor_id = <0x001a11>;
product_desc = "Chromecast HD"; /* Max Chars: 16 */
cec_osd_string = "Chromecast HD"; /* Max Chars: 14 */
};
&vdac {
status = "disabled";
};
&amlogic_codec {
status = "disabled";
};
&soc_thermal {
status = "disabled";
};