blob: f701561d000550a468eac3e8b8e7920ef13a4f9d [file] [log] [blame]
/*
* arch/arm/boot/dts/amlogic/meson8b_m200.dts
*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
/dts-v1/;
#include "meson8b.dtsi"
/ {
model = "Meson M8b S805";
compatible = "amlogic,meson8b";
aliases {
serial0 = &uart_AO;
serial1 = &uart_A;
serial2 = &uart_B;
};
memory {
reg = <0x00000000 0x40000000>;
linux,usable-memory = <0x00200000 0x3fe00000>;
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
pm_reserved:linux,pm {
compatible = "amlogic, pm-m8b-reserve";
reg = <0x04f00000 0x100000>;
};
secos_reserved:linux,secos {
status = "disabled";
compatible = "amlogic, aml_secos_memory";
reg = <0x06100000 0x3000000>;
no-map;
};
};
bt-dev{
compatible = "amlogic, bt-dev";
dev_name = "bt-dev";
status = "okay";
gpio_reset = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
};
wifi{
compatible = "amlogic, aml_wifi";
dev_name = "aml_wifi";
status = "okay";
interrupt_pin = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
interrupts = < 0 68 4>;
irq_trigger_type = "GPIO_IRQ_HIGH";
power_on_pin = <&gpio GPIOX_11 GPIO_ACTIVE_HIGH>;
};
sdio {
compatible = "amlogic, aml_sdio";
dev_name = "aml_sdio.0";
status = "okay";
interrupts = <0 28 1>;
reg = <0xc1108c20 0x20>;
pinctrl-names = "sd_clk_cmd_pins",
"sd_all_pins",
"emmc_clk_cmd_pins",
"emmc_all_pins",
"sdio_clk_cmd_pins",
"sdio_all_pins",
"sd_1bit_pins";
pinctrl-0 = <&sd_clk_cmd_pins>;
pinctrl-1 = <&sd_all_pins>;
pinctrl-2 = <&emmc_clk_cmd_pins>;
pinctrl-3 = <&emmc_all_pins>;
pinctrl-4 = <&sdio_clk_cmd_pins>;
pinctrl-5 = <&sdio_all_pins>;
pinctrl-6 = <&sd_1bit_pins>;
clocks = <&clkc CLKID_SDIO>;
clock-names = "core";
sd {
status = "okay";
port = <1>;
/* 0:sdio_a,
* 1:sdio_b,
* 2:sdio_c,
* 3:sdhc_a,
* 4:sdhc_b,
* 5:sdhc_c
*/
pinname = "sd";
ocr_avail = <0x200000>; /**VDD voltage 3.3 ~ 3.4 */
caps = "MMC_CAP_4_BIT_DATA",
"MMC_CAP_MMC_HIGHSPEED",
"MMC_CAP_SD_HIGHSPEED";
f_min = <300000>;
f_max = <50000000>;
f_max_w = <50000000>;
max_req_size = <0x20000>; /*128KB*/
gpio_dat3 = <&gpio CARD_4 GPIO_ACTIVE_HIGH>;
jtag_pin = <&gpio CARD_0 GPIO_ACTIVE_HIGH>;
gpio_cd = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
/*gpio_ro = <&gpio GPIODV_25 GPIO_ACTIVE_HIGH>;*/
card_type = <5>;
/* 0:unknown,
* 1:mmc card(include eMMC),
* 2:sd card(include tSD),
* 3:sdio device(ie:sdio-wifi),
* 4:SD combo (IO+mem) card,
* 5:NON sdio device(means sd/mmc card),
* other:reserved
*/
};
};
sdhc {
compatible = "amlogic, aml_sdhc";
dev_name = "aml_sdhc.0";
status = "okay";
interrupts = <0 78 1>;
reg = <0xc1108e00 0x3c>;
pinctrl-names = "sdhc_sd_clk_cmd_pins",
"sdhc_sd_all_pins",
"sdhc_emmc_clk_cmd_pins",
"sdhc_emmc_all_pins",
"sdhc_sdio_clk_cmd_pins",
"sdhc_sdio_all_pins";
pinctrl-0 = <&sdhc_sd_clk_cmd_pins>;
pinctrl-1 = <&sdhc_sd_all_pins>;
pinctrl-2 = <&sdhc_emmc_clk_cmd_pins>;
pinctrl-3 = <&sdhc_emmc_all_pins>;
pinctrl-4 = <&sdhc_sdio_clk_cmd_pins>;
pinctrl-5 = <&sdhc_sdio_all_pins>;
clocks = <&clkc CLKID_SDHC>,
<&clkc CLKID_FCLK_DIV3>;
clock-names = "core", "div3";
emmc {
status = "okay";
port = <5>;
/* 0:sdio_a,
* 1:sdio_b,
* 2:sdio_c,
* 3:sdhc_a,
* 4:sdhc_b,
* 5:sdhc_c
*/
pinname = "emmc";
ocr_avail = <0x00200080>;
/* 3.3:0x200000, 1.8+3.3:0x00200080 */
caps = "MMC_CAP_8_BIT_DATA",
"MMC_CAP_MMC_HIGHSPEED",
"MMC_CAP_SD_HIGHSPEED",
"MMC_CAP_NONREMOVABLE",
"MMC_CAP_ERASE",
"MMC_CAP_HW_RESET";
caps2 = "MMC_CAP2_HS200_1_8V_SDR";
f_min = <300000>;
f_max = <100000000>;
max_req_size = <0x20000>; /* 128KB */
gpio_dat3 = <&gpio BOOT_3 GPIO_ACTIVE_HIGH>;
hw_reset = <&gpio BOOT_9 GPIO_ACTIVE_HIGH>;
card_type = <1>;
/* 0:unknown,
* 1:mmc card(include eMMC),
* 2:sd card(include tSD),
* 3:sdio device(ie:sdio-wifi),
* 4:SD combo (IO+mem) card,
* 5:NON sdio device(means sd/mmc card),
* other:reserved
*/
};
sdio {
status = "okay";
port = <3>;
/* 0:sdio_a,
* 1:sdio_b,
* 2:sdio_c,
* 3:sdhc_a,
* 4:sdhc_b,
* 5:sdhc_c
*/
pinname = "sdio";
ocr_avail = <0x00200080>;
/* 3.3:0x200000, 1.8+3.3:0x00200080 */
caps = "MMC_CAP_4_BIT_DATA",
"MMC_CAP_MMC_HIGHSPEED",
"MMC_CAP_SD_HIGHSPEED",
"MMC_CAP_NONREMOVABLE",
"MMC_CAP_UHS_SDR12",
"MMC_CAP_UHS_SDR25",
"MMC_CAP_UHS_SDR50",
"MMC_CAP_UHS_SDR104",
"MMC_PM_KEEP_POWER";
f_min = <300000>;
f_max = <100000000>;
max_req_size = <0x20000>; /* 128KB */
card_type = <3>;
/* 0:unknown,
* 1:mmc card(include eMMC),
* 2:sd card(include tSD),
* 3:sdio device(ie:sdio-wifi),
* 4:SD combo (IO+mem) card,
* 5:NON sdio device(means sd/mmc card),
* other:reserved
*/
};
};
unifykey{
compatible = "amlogic, unifykey-m8b";
status = "ok";
unifykey-num = <6>;
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>;
keysn_0: key_0{
key-name = "usid";
key-device = "nandkey";
key-dataformat = "allascii";
key-permit = "read","write","del";
};
keysn_1:key_1{
key-name = "mac";
key-device = "nandkey";
key-dataformat = "hexdata";
key-permit = "read","write","del";
};
keysn_2:key_2{
key-name = "hdcp";
key-device = "nandkey";
key-dataformat = "hexdata";
key-permit = "read","write","del";
};
keysn_3:key_3{
key-name = "secure_boot_set";
key-device = "efusekey";
key-dataformat = "hexdata";
key-permit = "read","write";
};
keysn_4:key_4{
key-name = "mac_bt";
key-device = "nandkey";
key-dataformat = "hexdata";
key-permit = "read","write","del";
};
keysn_5:key_5{
key-name = "mac_wifi";
key-device = "nandkey";
key-dataformat = "hexdata";
key-permit = "read","write","del";
};
};//End unifykey
cpufreq-meson{
compatible = "amlogic, cpufreq-meson";
status = "okay";
fixpll_target = <1536000>;
clocks = <&clkc CLKID_CPUCLK>,
<&clkc CLKID_PLL_SYS>;
clock-names = "cpu_clk", "sys_clk";
opp_table = <
/* frequent(Khz) uV */
96000 860000
312000 860000
504000 860000
600000 860000
720000 860000
816000 900000
1008000 1140000
1200000 1140000
1320000 1140000
1488000 1140000
1536000 1140000
>;
};
dvfs {
compatible = "amlogic, amlogic-dvfs";
status = "okay";
vcck_dvfs {
dvfs_id = <1>;
};
};
pmu {
compatible = "amlogic, aml_pmu_prober";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
aml1218 {
compatible = "amlogic, amlogic_pmu";
sub_type = "aml1218_pmu";
i2c_bus = "i2c_bus_ao";
slave_address = <0x35>;
status = "okay";
};
};
aocec: aocec{
compatible = "amlogic, amlogic-aocec";
device_name = "aocec";
status = "okay";
vendor_id = <0x000000>;
cec_osd_string = "MBox"; /* Max Chars: 14 */
cec_version = <6>; /* 5: 1.4, 6: 2.0 */
port_num = <1>;
arc_port_mask = <0x0>;
interrupts = <0 151 1>;
interrupt-names = "hdmi_aocec";
pinctrl-names = "hdmi_cec_1";
pinctrl-0=<&hdmi_cec_1>;
reg = <0xc8100000 0x200>;
};
aml_sensor0: aml-sensor@0 {
compatible = "amlogic, aml-thermal";
device_name = "thermal";
#thermal-sensor-cells = <1>;
io-channels = <&saradc SARADC_CH6>;
io-channel-names = "TEMP_CHAN";
cooling_devices {
cpufreq_cool_cluster0 {
min_state = <768000>;
dyn_coeff = <110>;
cluster_id = <0>;
node_name = "cpufreq_cool0";
device_type = "cpufreq";
};
cpucore_cool_cluster0 {
min_state = <1>;
dyn_coeff = <0>;
cluster_id = <0>;
node_name = "cpucore_cool0";
device_type = "cpucore";
};
gpufreq_cool {
min_state = <318>;
dyn_coeff = <437>;
cluster_id = <0>;
node_name = "gpufreq_cool0";
device_type = "gpufreq";
};
gpucore_cool {
min_state = <1>;
dyn_coeff = <0>;
cluster_id = <0>;
node_name = "gpucore_cool0";
device_type = "gpucore";
};
};
cpufreq_cool0:cpufreq_cool0 {
#cooling-cells = <2>; /* min followed by max */
};
cpucore_cool0:cpucore_cool0 {
#cooling-cells = <2>; /* min followed by max */
};
gpufreq_cool0:gpufreq_cool0 {
#cooling-cells = <2>; /* min followed by max */
};
gpucore_cool0:gpucore_cool0 {
#cooling-cells = <2>; /* min followed by max */
};
};
thermal-zones {
soc_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
sustainable-power = <1350>;
thermal-sensors = <&aml_sensor0 3>;
trips {
switch_on: trip-point@0 {
temperature = <70000>;
hysteresis = <1000>;
type = "passive";
};
control: trip-point@1 {
temperature = <80000>;
hysteresis = <1000>;
type = "passive";
};
hot: trip-point@2 {
temperature = <85000>;
hysteresis = <5000>;
type = "hot";
};
critical: trip-point@3 {
temperature = <260000>;
hysteresis = <1000>;
type = "critical";
};
};
cooling-maps {
cpufreq_cooling_map {
trip = <&control>;
cooling-device = <&cpufreq_cool0 0 4>;
contribution = <1024>;
};
cpucore_cooling_map {
trip = <&control>;
cooling-device = <&cpucore_cool0 0 3>;
contribution = <1024>;
};
gpufreq_cooling_map {
trip = <&control>;
cooling-device = <&gpufreq_cool0 0 4>;
contribution = <1024>;
};
gpucore_cooling_map {
trip = <&control>;
cooling-device = <&gpucore_cool0 0 2>;
contribution = <1024>;
};
};
};
};
/* AUDIO MESON DEVICES */
i2s_dai: I2S {
#sound-dai-cells = <0>;
compatible = "amlogic, aml-i2s-dai";
clocks =
<&clkc CLKID_MPLL2>,
<&clkc CLKID_AMCLK_COMP>,
<&clkc CLKID_AIU_GLUE>,
<&clkc CLKID_IEC958>,
<&clkc CLKID_I2S_OUT>,
<&clkc CLKID_AMCLK>,
<&clkc CLKID_AIFIFO2>,
<&clkc CLKID_MIXER>,
<&clkc CLKID_MIXER_IFACE>,
<&clkc CLKID_ADC>,
<&clkc CLKID_AIU>,
<&clkc CLKID_AOCLK_GATE>,
<&clkc CLKID_I2S_SPDIF>;
clock-names =
"mpll2",
"mclk",
"top_glue",
"aud_buf",
"i2s_out",
"amclk_measure",
"aififo2",
"aud_mixer",
"mixer_reg",
"adc",
"top_level",
"aoclk",
"aud_in";
/*DMIC;*/ /* I2s Mic or Dmic, default for I2S mic */
};
spdif_dai: SPDIF {
#sound-dai-cells = <0>;
compatible = "amlogic, aml-spdif-dai";
clocks =
<&clkc CLKID_MPLL1>,
<&clkc CLKID_I958_COMP>,
<&clkc CLKID_AMCLK_COMP>,
<&clkc CLKID_I958_COMP_SPDIF>,
<&clkc CLKID_CLK81>,
<&clkc CLKID_IEC958>,
<&clkc CLKID_IEC958_GATE>;
clock-names =
"mpll1",
"i958",
"mclk",
"spdif",
"clk_81",
"iec958",
"iec958_amclk";
};
pcm_dai: PCM {
#sound-dai-cells = <0>;
compatible = "amlogic, aml-pcm-dai";
pinctrl-names = "aml_audio_pcm";
pinctrl-0 = <&audio_pcm_pins>;
clocks =
<&clkc CLKID_MPLL0>,
<&clkc CLKID_PCM_MCLK_COMP>,
<&clkc CLKID_PCM_SCLK_GATE>;
clock-names =
"mpll0",
"pcm_mclk",
"pcm_sclk";
pcm_mode = <1>; /* 0=slave mode, 1=master mode */
};
i2s_plat: i2s_platform {
compatible = "amlogic, aml-i2s";
interrupts = <0 29 1>;
};
pcm_plat: pcm_platform {
compatible = "amlogic, aml-pcm";
};
spdif_codec: spdif_codec {
#sound-dai-cells = <0>;
compatible = "amlogic, aml-spdif-codec";
pinctrl-names = "aml_audio_spdif";
pinctrl-0 = <&audio_spdif_pins>;
};
pcm_codec: pcm_codec {
#sound-dai-cells = <0>;
compatible = "amlogic, pcm2BT-codec";
};
/* endof AUDIO MESON DEVICES */
/* AUDIO board specific */
dummy_codec:dummy {
#sound-dai-cells = <0>;
compatible = "amlogic, aml_dummy_codec";
status = "disabled";
};
amlogic_codec:t9015 {
#sound-dai-cells = <0>;
compatible = "amlogic, aml_codec_T9015";
reg = <0x0 0xc8832000 0x0 0x14>;
status = "disabled";
};
audio_pmu3_codec:aml_pmu3 {
#sound-dai-cells = <0>;
compatible = "amlogic, aml_pmu3_codec";
status = "okay";
};
aml_sound_meson {
compatible = "aml, meson-snd-card";
status = "okay";
aml-sound-card,format = "i2s";
aml_sound_card,name = "AML-MESONAUDIO";
aml,audio-routing =
"Ext Spk","LOUTL",
"Ext Spk","LOUTR";
mute_gpio-gpios = <&gpio GPIOH_5 0>;
mute_inv;
hp_disable;
hp_paraments = <800 300 0 5 1>;
pinctrl-names = "aml_audio_i2s";
pinctrl-0 = <&audio_i2s_pins>;
cpu_list = <&cpudai0 &cpudai1 &cpudai2>;
codec_list = <&codec0 &codec1 &codec2>;
plat_list = <&i2s_plat &i2s_plat &pcm_plat>;
cpudai0: cpudai0 {
sound-dai = <&i2s_dai>;
};
cpudai1: cpudai1 {
sound-dai = <&spdif_dai>;
};
cpudai2: cpudai2 {
sound-dai = <&pcm_dai>;
};
codec0: codec0 {
sound-dai = <&audio_pmu3_codec>;
};
codec1: codec1 {
sound-dai = <&spdif_codec>;
};
codec2: codec2 {
sound-dai = <&pcm_codec>;
};
};
/* END OF AUDIO board specific */
sysled {
compatible = "amlogic, sysled";
dev_name = "sysled";
status = "disabled";
led_gpio = <&gpio_ao GPIOAO_1 GPIO_ACTIVE_HIGH>;
led_active_low = <1>;
};
};
&uart_AO {
status = "okay";
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
&uart_A {
status = "okay";
pinctrl-0 = <&uart_a_pins>;
pinctrl-names = "default";
};
&uart_B {
status = "okay";
pinctrl-0 = <&uart_b0_pins>;
pinctrl-names = "default";
};
&i2c0 {
status = "ok";
pinctrl-names="default";
pinctrl-0=<&a_i2c_master>;
};
&i2c_AO {
status = "ok";
pinctrl-names="default";
pinctrl-0=<&ao_i2c_master>;
};
&pinctrl_cbus {
sdhc_emmc_clk_cmd_pins:sdhc_emmc_clk_cmd_pins {
mux {
groups = "sdxc_clk_c",
"sdxc_cmd_c";
function = "sdxc_c";
input-enable;
bias-pull-up;
};
mux1 {
groups = "GPIOX_0",
"GPIOX_1",
"GPIOX_2",
"GPIOX_3",
"GPIOX_8",
"GPIOX_9";
function = "gpio_periphs";
};
};
sdhc_emmc_all_pins:sdhc_emmc_all_pins {
mux {
groups = "sdxc_d0_c",
"sdxc_d13_c",
"sdxc_d47_c",
"sdxc_clk_c",
"sdxc_cmd_c";
function = "sdxc_c";
input-enable;
bias-pull-up;
};
mux1 {
groups = "GPIOX_0",
"GPIOX_1",
"GPIOX_2",
"GPIOX_3",
"GPIOX_8",
"GPIOX_9";
function = "gpio_periphs";
};
};
sdhc_sdio_clk_cmd_pins:sdhc_sdio_clk_cmd_pins {
mux {
groups = "sdxc_clk_a",
"sdxc_cmd_a";
function = "sdxc_a";
input-enable;
bias-pull-up;
};
mux1 {
groups = "BOOT_0",
"BOOT_1",
"BOOT_2",
"BOOT_3",
"BOOT_4",
"BOOT_5",
"BOOT_6",
"BOOT_7",
"BOOT_8",
"BOOT_10";
function = "gpio_periphs";
};
};
sdhc_sdio_all_pins:sdhc_sdio_all_pins {
mux {
groups = "sdxc_d0_1_a",
"sdxc_d13_1_a",
"sdxc_clk_a",
"sdxc_cmd_a";
function = "sdxc_a";
input-enable;
bias-pull-up;
};
mux1 {
groups = "BOOT_0",
"BOOT_1",
"BOOT_2",
"BOOT_3",
"BOOT_4",
"BOOT_5",
"BOOT_6",
"BOOT_7",
"BOOT_8",
"BOOT_10";
function = "gpio_periphs";
};
};
};