Files
kernel-zhihe-a210/arch/riscv/boot/dts/zhihe/a210-haps.dts
2026-01-30 17:09:03 +08:00

555 lines
11 KiB
Plaintext

/dts-v1/;
#include "a210-soc-core.dtsi"
#include "a210-soc-peri.dtsi"
#include "a210-platform-haps.dtsi"
#define SOUND_CARD_LINK(REG, FMT, CPU, M, CODEC, N) \
simple-audio-card,dai-link@##REG { \
reg = <REG>; \
format = #FMT; \
cpu { \
sound-dai = <&audio_##CPU M>; \
}; \
codec { \
sound-dai = <&codec_##CODEC N>; \
}; \
}
/ {
model = "A210 HAPS configuration";
aliases {
ethernet0 = &gmac0;
ethernet1 = &gmac1;
gpio0 = &gpio0;
gpio1 = &gpio1;
gpio2 = &gpio2;
gpio3 = &gpio3;
gpio4 = &gpio4;
i2c0 = &i2c0;
i2c1 = &i2c1;
i2c2 = &i2c2;
i2c3 = &i2c3;
i2c4 = &i2c4;
i2c5 = &i2c5;
i2c6 = &i2c6;
i2c7 = &i2c7;
can0 = &can0;
can1 = &can1;
can2 = &can2;
mmc0 = &emmc;
mmc1 = &sdhci0;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
serial3 = &uart3;
serial4 = &uart4;
serial5 = &uart5;
serial6 = &uart6;
serial7 = &uart7;
serial8 = &uart8;
serial9 = &uart9;
spi0 = &spi0;
spi1 = &spi1;
qspi0 = &qspi0;
qspi1 = &qspi1;
pcie3x4 = &dm3x4;
pcie3x1 = &rp3x1;
};
/* The first 2M will be reserved in the Kernel, and the entire available range is set here */
memory@0 {
device_type = "memory";
reg = <0x00 0x80000000 0x01 0x00000000>; /* 4G - 64MB */
numa-node-id = <0>;
};
reserved-memory {
#address-cells = <0x02>;
#size-cells = <0x02>;
ranges;
linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0x00 0x4000000>;
alloc-ranges = <0x00 0x90000000 0x00 0x4000000>;
linux,cma-default;
};
memory@1c000000 {
reg = <0x00 0x1c000000 0x00 0x2000000>;
no-map;
};
framebuffer: framebuffer@10000000 {
reg = <0x01 0x00 0x00 0x20000000>;
no-map;
};
zh_videomem@100000000 {
reg = <0x01 0x00 0x00 0x20000000>;
no-map;
};
memblock-memory@17b800000 {
reg = <0x01 0x7b800000 0x00 0x04000000>;
no-map;
};
};
/* The bootargs in U-Boot will override the configuration set here. */
chosen {
stdout-path = "serial4";
};
codec_dummy_i2s: codec_dummy_i2s {
compatible = "zhihe,dummy-pcm-i2s";
sound-name-prefix = "DUMMY";
#address-cells = <0>;
#size-cells = <0>;
#sound-dai-cells = <1>;
status = "okay";
};
codec_dummy_i2s_8ch: codec_dummy_i2s_8ch {
compatible = "zhihe,dummy-pcm-i2s-8ch";
sound-name-prefix = "DUMMY";
#address-cells = <0>;
#size-cells = <0>;
#sound-dai-cells = <1>;
status = "okay";
};
codec_dummy_tdm: codec_dummy_tdm {
compatible = "zhihe,dummy-pcm-tdm";
sound-name-prefix = "DUMMY";
#address-cells = <0>;
#size-cells = <0>;
#sound-dai-cells = <1>;
status = "okay";
};
codec_dmic: dmic-codec {
compatible = "dmic-codec";
num-channels = <8>;
#sound-dai-cells = <1>;
};
sound_i2s {
compatible = "simple-audio-card";
simple-audio-card,name = "Sound-Card-I2S";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
SOUND_CARD_LINK(0, i2s, i2s0, 0, dummy_i2s, 0); /* I2S0 <-> DUMMY_CODEC */
SOUND_CARD_LINK(1, i2s, i2s1, 0, dummy_i2s, 0); /* I2S1 <-> DUMMY_CODEC */
SOUND_CARD_LINK(2, i2s, i2s2, 0, dummy_i2s, 0); /* I2S2 <-> DUMMY_CODEC */
};
sound_i2s_8ch {
compatible = "simple-audio-card";
simple-audio-card,name = "Sound-Card-I2S-8CH";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
SOUND_CARD_LINK(0, i2s, i2s_8ch_sd0, 0, dummy_i2s_8ch, 0); /* i2s_8ch_sd0 <-> DUMMY_CODEC */
SOUND_CARD_LINK(1, i2s, i2s_8ch_sd1, 0, dummy_i2s_8ch, 0); /* i2s_8ch_sd1 <-> DUMMY_CODEC */
SOUND_CARD_LINK(2, i2s, i2s_8ch_sd2, 0, dummy_i2s_8ch, 0); /* i2s_8ch_sd2 <-> DUMMY_CODEC */
SOUND_CARD_LINK(3, i2s, i2s_8ch_sd3, 0, dummy_i2s_8ch, 0); /* i2s_8ch_sd3 <-> DUMMY_CODEC */
};
sound_tdm {
compatible = "simple-audio-card";
simple-audio-card,name = "Sound-Card-TDM";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
SOUND_CARD_LINK(0, dsp_a, tdm_slot0, 0, dummy_tdm, 0); /* TDM_SLOT0 <-> DUMMY_CODEC */
SOUND_CARD_LINK(1, dsp_a, tdm_slot1, 0, dummy_tdm, 0); /* TDM_SLOT1 <-> DUMMY_CODEC */
SOUND_CARD_LINK(2, dsp_a, tdm_slot2, 0, dummy_tdm, 0); /* TDM_SLOT2 <-> DUMMY_CODEC */
SOUND_CARD_LINK(3, dsp_a, tdm_slot3, 0, dummy_tdm, 0); /* TDM_SLOT3 <-> DUMMY_CODEC */
SOUND_CARD_LINK(4, dsp_a, tdm_slot4, 0, dummy_tdm, 0); /* TDM_SLOT4 <-> DUMMY_CODEC */
SOUND_CARD_LINK(5, dsp_a, tdm_slot5, 0, dummy_tdm, 0); /* TDM_SLOT5 <-> DUMMY_CODEC */
SOUND_CARD_LINK(6, dsp_a, tdm_slot6, 0, dummy_tdm, 0); /* TDM_SLOT6 <-> DUMMY_CODEC */
SOUND_CARD_LINK(7, dsp_a, tdm_slot7, 0, dummy_tdm, 0); /* TDM_SLOT7 <-> DUMMY_CODEC */
};
sound_pdm {
compatible = "simple-audio-card";
simple-audio-card,name = "Sound-Card-PDM";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
SOUND_CARD_LINK(0, pdm, pdm0, 0, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(1, pdm, pdm1, 1, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(2, pdm, pdm2, 2, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(3, pdm, pdm3, 3, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(4, pdm, pdm4, 4, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(5, pdm, pdm5, 5, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(6, pdm, pdm6, 6, dmic, 0); /* PDM <-> Dmic */
SOUND_CARD_LINK(7, pdm, pdm7, 7, dmic, 0); /* PDM <-> Dmic */
};
};
&clk {
compatible = "zhihe,a210-clk-haps";
/* pll */
audio0_pll_foutvco_frequency = <150000000>;
audio1_pll_foutvco_frequency = <80000000>;
video_pll_foutvco_frequency = <80000000>;
gmac_pll_foutvco_frequency = <300000000>;
dvfs_pll_foutvco_frequency = <150000000>;
tee_pll_foutvco_frequency = <130000000>;
/* top */
top_cfg_aclk_frequency = <10000000>;
top_pclk_frequency = <10000000>;
top_amux_clk_frequency = <20000000>;
iommu_ptw_aclk_frequency = <10000000>;
noc_cclk_frequency = <792000000>;
};
&clk_peri {
peri0_timer_clk_frequency = <10000000>;
peri1_i2s0_src_clk_frequency = <10000000>;
peri2_i2s1_src_clk_frequency = <10000000>;
peri2_i2s2_src_clk_frequency = <10000000>;
peri2_i2s3_src_clk_frequency = <10000000>;
peri1_spi_ssi_clk_frequency = <10000000>;
peri2_spi_ssi_clk_frequency = <10000000>;
peri1_qspi_ssi_clk_frequency = <10000000>;
peri2_qspi_ssi_clk_frequency = <10000000>;
peri1_pdm_mclk_frequency = <10000000>;
uart_sclk_frequency = <10000000>;
peri1_tdm_src_clk_frequency = <10000000>;
peri1_hires_clk_frequency = <10000000>;
peri2_hires_clk_frequency = <10000000>;
emmc_ref_clk_frequency = <10000000>;
peri1_mst_aclk_frequency = <10000000>;
peri3_mst_aclk_frequency = <10000000>;
};
&clk_vi {
/* Reg_base redirect to BRAM */
reg = <0x00 0x00100000 0x0 0x1000>;
};
&clk_vp {
/* Reg_base redirect to BRAM */
reg = <0x00 0x00101000 0x0 0x1000>;
};
&clk_vo {
/* Reg_base redirect to BRAM */
reg = <0x00 0x00102000 0x0 0x1000>;
};
&spi0 {
cs-gpios = <&gpio1 7 0>;
rx-sample-delay-ns = <10>;
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins>;
spi_norflash@0 {
status = "okay";
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <1000000>;
w25q,fast-read;
};
spidev@1 {
status = "disabled";
compatible = "spidev";
#address-cells = <0x1>;
#size-cells = <0x1>;
reg = <0x1>;
spi-max-frequency = <1000000>;
};
};
&spi1 {
// cs-gpios = <&gpio2 15 0>;
rx-sample-delay-ns = <10>;
pinctrl-names = "default";
pinctrl-0 = <&spi1_pins>;
spi_norflash@0 {
status = "disabled";
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <1000000>;
w25q,fast-read;
};
};
&qspi0 {
cs-gpios = <&gpio0 19 0>;
rx-sample-dly = <4>;
pinctrl-names = "default";
pinctrl-0 = <&qspi0_pins>;
spi_norflash@0 {
status = "disabled";
compatible = "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
spi-max-frequency = <1000000>;
};
spi-nandflash@1 {
status = "disabled";
#address-cells = <1>;
#size-cells = <1>;
compatible = "spi-nand";
spi-max-frequency = <1000000>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
reg = <1>;
partition@0 {
label = "nand0";
reg = <0x00000000 0x08000000>;
};
};
};
&qspi1 {
cs-gpios = <&gpio2 29 0>;
rx-sample-dly = <4>;
pinctrl-names = "default";
pinctrl-0 = <&qspi1_pins>;
spi_norflash@0 {
status = "okay";
compatible = "jedec,spi-nor";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
spi-max-frequency = <1000000>;
};
spi-nandflash@1 {
status = "disabled";
#address-cells = <1>;
#size-cells = <1>;
compatible = "spi-nand";
spi-max-frequency = <1000000>;
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
reg = <1>;
partition@0 {
label = "nand1";
reg = <0x00000000 0x08000000>;
};
};
};
&emmc {
max-frequency = <400000>;
non-removable;
mmc-hs200-1_8v;
io_fixed_1v8;
is_emmc;
no-sdio;
no-sd;
pull_up;
bus-width = <8>;
};
&sdhci0 {
max-frequency = <400000>;
bus-width = <4>;
pull_up;
wprtn_ignore;
};
&gmac0 {
phy-mode = "rgmii-id";
rx-clk-delay = <0x00>; /* for RGMII */
tx-clk-delay = <0x00>; /* for RGMII */
phy-handle = <&phy_88E1111_0>;
mdio0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
phy_88E1111_0: ethernet-phy@0 {
reg = <0x0>;
};
phy_88E1111_1: ethernet-phy@1 {
reg = <0x2>;
};
};
};
&gmac1 {
phy-mode = "rgmii-id";
rx-clk-delay = <0x00>; /* for RGMII */
tx-clk-delay = <0x00>; /* for RGMII */
phy-handle = <&phy_88E1111_1>;
};
&vidmem {
status = "okay";
memory-region = <&framebuffer>;
};
&peri1_padctrl {
spi0_pins: spi0-0 {
spi-pins {
pins = "GPIO1_6", "GPIO1_9", "GPIO1_10";
function = "spi0";
bias-disable;
drive-strength = <7>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
};
qspi0_pins: qspi0-0 {
qspi-pins {
pins = "GPIO0_18", "GPIO0_20", "GPIO0_21", "GPIO0_22", "GPIO0_23";
function = "qspi0";
bias-disable;
drive-strength = <7>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
};
};
&peri2_padctrl {
spi1_pins: spi1-0 {
spi-pins {
pins = "GPIO2_8", "GPIO2_11", "GPIO2_12";
function = "spi1";
bias-disable;
drive-strength = <7>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
};
qspi1_pins: qspi1-0 {
qspi-pins {
pins = "GPIO3_2", "GPIO3_5", "GPIO3_6", "GPIO3_7", "GPIO3_8";
function = "qspi1";
bias-disable;
drive-strength = <7>;
input-enable;
input-schmitt-enable;
slew-rate = <0>;
};
};
};
&i2c0 {
clock-frequency = <400000>;
eeprom@50 {
status = "okay";
compatible = "atmel,24c02";
reg = <0x50>;
pagesize = <16>;
};
};
&i2c1 {
clock-frequency = <400000>;
};
&i2c2 {
clock-frequency = <400000>;
};
&i2c3 {
clock-frequency = <400000>;
};
&i2c4 {
clock-frequency = <400000>;
};
&i2c5 {
clock-frequency = <400000>;
};
&i2c6 {
clock-frequency = <400000>;
};
&i2c7 {
clock-frequency = <400000>;
tmp102@49 {
status = "disabled";
compatible = "ti,tmp102";
host-notify;
reg = <0x49>;
};
};
&bmu0 {
status = "okay";
};
&bmu1 {
status = "disabled";
};
&bmu2 {
status = "disabled";
};
&bmu3 {
status = "disabled";
};
&bmu4 {
status = "disabled";
};
&bmu5 {
status = "disabled";
};
&bmu6 {
status = "disabled";
};
&bmu7 {
status = "disabled";
};
&bmu8 {
status = "disabled";
};
&bmu9 {
status = "disabled";
};