blob: d3e50b5e990e961453f53c95dc228dd0e9371002 [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/dts-v1/;
#include "src/devices/lib/amlogic/include/soc/aml-a311d/a311d-hw.h"
#include "src/devices/lib/amlogic/include/soc/aml-a311d/a311d-gpio.h"
#include "sdk/lib/driver/devicetree/visitors/drivers/interrupt-controllers/arm-gicv2/arm-gicv2.h"
/ {
interrupt-parent = <&gic>;
soc {
#address-cells = <2>;
#size-cells = <2>;
ranges;
dwmac@ff3f0000 {
compatible = "amlogic,meson-g12a-dwmac";
reg = <0x0 0xff3f0000 0x0 0x10000>;
interrupts = <GIC_SPI 8 GIC_IRQ_MODE_LEVEL_HIGH>;
phys = <&ethmac>;
iommus = <&dummy_iommu 8>;
boot-metadata = <0x43414D6D 0>; /*DEVICE_METADATA_MAC_ADDRESS*/
};
video-decoder@ffd00000 {
compatible = "amlogic,g12b-vdec";
reg = <0x0 A311D_FULL_CBUS_BASE 0x0 A311D_FULL_CBUS_LENGTH>,
<0x0 A311D_DOS_BASE 0x0 A311D_DOS_LENGTH>,
<0x0 A311D_HIU_BASE 0x0 A311D_HIU_LENGTH>,
<0x0 A311D_AOBUS_BASE 0x0 A311D_AOBUS_LENGTH>,
<0x0 A311D_DMC_BASE 0x0 A311D_DMC_LENGTH>;
iommus = <&dummy_iommu 10>;
interrupts = <GIC_SPI 23 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 32 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 43 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 44 GIC_IRQ_MODE_EDGE_RISING>;
fuchsia,sysmem = <&sysmem>;
amlogic,canvas = <&canvas>;
clocks = <&clock 0x10005>,
<&clock 0x10007>;
clock-names = "DOS_GCLK_VDEC", "DOS";
};
ethmac: ethernet-phy@ff634000 {
compatible = "amlogic,ethernet-phy";
reg = <0x0 0xff634000 0x0 0x1000>,
<0x0 0xff63c000 0x0 0x2000>;
gpios = <&gpio A311D_GPIOZ(14) 0>;
gpio-names = "ETH_INTERRUPT";
pinctrl-0 = <&ethernet_phy_cfg>;
#phy-cells = <0>;
};
gpio: gpio-controller@ff634400 {
compatible = "amlogic,meson-g12a-gpio";
reg = <0x0 A311D_GPIO_BASE 0x0 A311D_GPIO_LENGTH>,
<0x0 A311D_GPIO_AO_BASE 0x0 A311D_GPIO_AO_LENGTH>,
<0x0 A311D_GPIO_INTERRUPT_BASE 0x0 A311D_GPIO_INTERRUPT_LENGTH>;
interrupts = <GIC_SPI 64 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 65 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 66 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 67 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 68 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 69 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 70 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 71 GIC_IRQ_MODE_EDGE_RISING>;
gpio-controller;
#gpio-cells = <2>;
audio_tdm_a_cfg1: audio-tdm-a-cfg1 {
pins = <A311D_GPIOX(11) A311D_GPIOX(10) A311D_GPIOX(9)>;
function = <0 1>;
drive-strength-microamp = <0 3000>;
};
audio_tdm_a_cfg2: audio-tdm-a-cfg2 {
pins = <A311D_GPIOX(8)>;
function = <0 2>;
};
audio_tdm_b_cfg1: audio-tdm-b-cfg1 {
pins = <A311D_GPIOA(1) A311D_GPIOA(2) A311D_GPIOA(3)>;
function = <0 1>;
drive-strength-microamp = <0 3000>;
};
audio_tdm_b_cfg2: audio-tdm-b-cfg2 {
pins = <A311D_GPIOA(4)>;
function = <0 2>;
};
usb_power: usb-power {
pins = <A311D_GPIOA(6)>;
output-high;
};
emmc_d0_d7_cfg: emmc-d0-d7-cfg {
pins = <A311D_GPIOBOOT(0) A311D_GPIOBOOT(1) A311D_GPIOBOOT(2) A311D_GPIOBOOT(3)>,
<A311D_GPIOBOOT(4) A311D_GPIOBOOT(5) A311D_GPIOBOOT(6) A311D_GPIOBOOT(7)>;
function = <0 1>;
};
emmc_clk_cfg: emmc-clk-cfg {
pins = <A311D_GPIOBOOT(8)>;
function = <0 1>;
};
emmc_cmd_cfg: emmc-cmd-cfg {
pins = <A311D_GPIOBOOT(10)>;
function = <0 1>;
};
emmc_ds_cfg: emmc-ds-cfg {
pins = <A311D_GPIOBOOT(13)>;
function = <0 1>;
};
emmc_cs_cfg: emmc-cs-cfg {
pins = <A311D_GPIOBOOT(14)>;
output-high;
};
sdcard_d0_d3_cfg: sdcard-d0-d3-cfg{
pins = <A311D_GPIOC(0) A311D_GPIOC(1) A311D_GPIOC(2) A311D_GPIOC(3)>;
function = <0 1>;
};
sdcard_clk_cfg: sdcard-clk-cfg{
pins = <A311D_GPIOC(4)>;
function = <0 1>;
};
sdcard_cmd_cfg: sdcard-cmd-cfg{
pins = <A311D_GPIOC(5)>;
function = <0 1>;
};
sdio_d0_d3_cfg: sdio-d0-d3-cfg{
pins = <A311D_GPIOX(0) A311D_GPIOX(1) A311D_GPIOX(2) A311D_GPIOX(3)>;
input-enable;
bias-disable;
function = <0 1>;
drive-strength-microamp = <0 4000>;
};
sdio_clk_cfg: sdio-clk-cfg{
pins = <A311D_GPIOX(4)>;
input-enable;
bias-disable;
function = <0 1>;
drive-strength-microamp = <0 4000>;
};
sdio_cmd_cfg: sdio-cmd-cfg{
pins = <A311D_GPIOX(5)>;
input-enable;
bias-disable;
function = <0 1>;
drive-strength-microamp = <0 4000>;
};
ethernet_phy_cfg: ethernet-phy-cfg {
pins = <A311D_GPIOZ(0) A311D_GPIOZ(1) A311D_GPIOZ(2) A311D_GPIOZ(3)>,
<A311D_GPIOZ(4) A311D_GPIOZ(5) A311D_GPIOZ(6) A311D_GPIOZ(7)>,
<A311D_GPIOZ(8) A311D_GPIOZ(9) A311D_GPIOZ(10) A311D_GPIOZ(11)>,
<A311D_GPIOZ(12) A311D_GPIOZ(13)>;
function = <0 1>;
drive-strength-microamp = <0 2500>;
};
};
cpu_temp: temperature-sensor@ff634800 {
compatible = "amlogic,g12a-thermal";
reg = <0x0 A311D_TEMP_SENSOR_PLL_BASE 0x0 A311D_TEMP_SENSOR_PLL_LENGTH>,
<0x0 A311D_TEMP_SENSOR_PLL_TRIM 0x0 A311D_TEMP_SENSOR_TRIM_LENGTH>;
interrupts = <GIC_SPI 35 GIC_IRQ_MODE_EDGE_RISING>;
assigned-clocks = <&clock 0x1000d>;
#thermal-sensor-cells = <0>;
};
ddr_temp: temperature-sensor@ff634c00 {
compatible = "amlogic,g12a-thermal";
reg = <0x0 A311D_TEMP_SENSOR_DDR_BASE 0x0 A311D_TEMP_SENSOR_DDR_LENGTH>,
<0x0 A311D_TEMP_SENSOR_DDR_TRIM 0x0 A311D_TEMP_SENSOR_TRIM_LENGTH>;
interrupts = <GIC_SPI 36 GIC_IRQ_MODE_EDGE_RISING>;
assigned-clocks = <&clock 0x1000d>;
#thermal-sensor-cells = <0>;
};
audio: audio-controller@ff642000 {
compatible = "amlogic,audio-controller";
reg = <0x0 0xff642000 0x0 0x2000>;
iommus = <&dummy_iommu 4>;
clocks = <&clock 0x1000b &clock 0x20002>;
clock-names = "AUDIO_GATE", "AUDIO_PLL" ;
assigned-clocks = <&clock 0x20002>;
assigned-clock-rates = <768000000>;
gpios = <&gpio A311D_GPIOX(11) 0 &gpio A311D_GPIOA(1) 0>;
gpio-names = "TDM_A_SCLK", "TDM_B_SCLK";
pinctrl-0 = <&audio_tdm_a_cfg1 &audio_tdm_a_cfg2>,
<&audio_tdm_b_cfg1 &audio_tdm_b_cfg2>;
};
aobus: bus@ff800000 {
reg = <0x0 0xff800000 0x0 0x100000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xff800000 0x0 0x100000>;
i2c_AO: i2c@5000 {
compatible = "amlogic,meson-axg-i2c";
reg = <0x0 0x05000 0x0 0x20>;
interrupts = <GIC_SPI 195 GIC_IRQ_MODE_EDGE_RISING>;
#address-cells = <1>;
#size-cells = <0>;
};
saradc: adc@9000 {
compatible = "amlogic,meson-g12a-saradc";
reg = <0x0 0x9000 0x0 0x1000>,
<0x0 0x0 0x0 0x100000>;
interrupts = <GIC_SPI 200 GIC_IRQ_MODE_EDGE_RISING>;
};
};
gic: interrupt-controller@ffc01000 {
compatible = "arm,gic-400";
reg = <0x0 0xffc01000 0 0x1000>,
<0x0 0xffc02000 0 0x2000>,
<0x0 0xffc04000 0 0x2000>,
<0x0 0xffc06000 0 0x2000>;
interrupt-controller;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | GIC_IRQ_MODE_LEVEL_HIGH)>;
#interrupt-cells = <3>;
#address-cells = <0>;
};
cbus: bus@ffd00000 {
reg = <0x0 0xFFD00000 0x0 0x100000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xFFD00000 0x0 0x100000>;
hrtimer: hrtimer@0 {
compatible = "amlogic,hrtimer";
reg = <0x0 0x0 0x0 A311D_TIMER_LENGTH>;
interrupts = <GIC_SPI 10 GIC_IRQ_MODE_EDGE_RISING>, // Timer A
<GIC_SPI 11 GIC_IRQ_MODE_EDGE_RISING>, // Timer B
<GIC_SPI 6 GIC_IRQ_MODE_EDGE_RISING>, // Timer C
<GIC_SPI 29 GIC_IRQ_MODE_EDGE_RISING>, // Timer D
<GIC_SPI 60 GIC_IRQ_MODE_EDGE_RISING>, // Timer F. Timer E does not trigger IRQ.
<GIC_SPI 61 GIC_IRQ_MODE_EDGE_RISING>, // Timer G
<GIC_SPI 62 GIC_IRQ_MODE_EDGE_RISING>, // Timer H
<GIC_SPI 63 GIC_IRQ_MODE_EDGE_RISING>; // Timer I
};
reset: register-controller@1000 {
compatible = "fuchsia,registers";
reg = <0x0 0x1000 0x0 0x100>;
#register-cells = <4>;
};
mipi_dsi: dsi@7000 {
compatible = "dw,dsi";
reg = <0x0 0x7000 0x0 0x1000>;
};
i2c3: i2c@1c000 {
compatible = "amlogic,meson-axg-i2c";
reg = <0x0 0x1c000 0x0 0x20>;
interrupts = <GIC_SPI 39 GIC_IRQ_MODE_EDGE_RISING>;
#address-cells = <1>;
#size-cells = <0>;
};
};
pwm: pwm@ffd1b000 {
compatible = "amlogic,meson-g12a-ee-pwm";
reg = <0x0 0xffd1b000 0x0 0x1000>, //PWM_AB
<0x0 0xffd1a000 0x0 0x1000>, //PWM_CD
<0x0 0xffd19000 0x0 0x1000>, //PWM_EF
<0x0 0xff807000 0x0 0x1000>, //PWM_A0_AB
<0x0 0xff802000 0x0 0x1000>; //PWM_A0_CD
#pwm-cells = <3>;
};
pwm_init: pwm-init {
pwms = <&pwm 4 0 0>; //A311D_PWM_E
gpios = <&gpio A311D_GPIOX(16) 0 &gpio A311D_GPIOX(17) 0>;
gpio-names = "WIFI_LPO", "BT_REG_ON";
};
usb_phy: phy@ffe09000 {
compatible = "amlogic,g12b-usb-phy";
reg = <0x0 A311D_USBCTRL_BASE 0x0 A311D_USBCTRL_LENGTH>,
<0x0 A311D_USBPHY20_BASE 0x0 A311D_USBPHY20_LENGTH>,
<0x0 A311D_USBPHY21_BASE 0x0 A311D_USBPHY21_LENGTH>,
<0x0 A311D_USB3_PCIE_PHY_BASE 0x0 A311D_USB3_PCIE_PHY_LENGTH>;
reg-names = "usb-ctrl", "usb2-phy", "usb2-otg-phy", "usb3-phy";
dr_modes = "host", "peripheral", "host";
interrupts = <GIC_SPI 16 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 6>;
assigned-clocks = <&clock 0x10008 &clock 0x10009 &clock 0x20001>;
assigned-clock-rates = <0 0 100000000>;
pinctrl-0 = <&usb_power>;
registers = <&reset A311D_RESET1_REGISTER 4 0x0 0x10004>,
<&reset A311D_RESET1_LEVEL 4 0x0 0x30000>;
#phy-cells = <0>;
};
dwc2: usb@ff400000 {
compatible = "snps,dwc2";
reg = <0x0 A311D_USB1_BASE 0x0 A311D_USB1_LENGTH>;
interrupts = <GIC_SPI 31 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 6>;
phys = <&usb_phy>;
phy-names = "dwc2-phy";
g-rx-fifo-size = <256>;
g-np-tx-fifo-size = <32>;
g-tx-fifo-size = <128 4 128 16>;
g-turnaround-time = <9>;
dma-burst-len = <5>;
boot-metadata = <0x43414D6D 0>, /*DEVICE_METADATA_MAC_ADDRESS*/
<0x4e4c5253 0>; /*DEVICE_METADATA_SERIAL_NUMBER*/
};
xhci: usb@ff500000 {
compatible = "generic-xhci";
reg = <0x0 A311D_USB0_BASE 0x0 A311D_USB0_LENGTH>;
interrupts = <GIC_SPI 30 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 6>;
phys = <&usb_phy>;
phy-names = "xhci-phy";
};
sd_emmc_a: mmc@ffe03000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0xffe03000 0x0 0x2000>;
interrupts = <GIC_SPI 189 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 10>;
gpios = <&gpio A311D_GPIOX(6) 0>;
gpio-names = "SDMMC_RESET";
pinctrl-0 = <&sdio_d0_d3_cfg &sdio_clk_cfg &sdio_cmd_cfg>;
max-frequency = <100000000>;
pwm-init = <&pwm_init>;
};
sd_emmc_b: mmc@ffe05000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0xffe05000 0x0 0x2000>;
interrupts = <GIC_SPI 190 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 7>;
pinctrl-0 = <&sdcard_d0_d3_cfg &sdcard_clk_cfg &sdcard_cmd_cfg>;
max-frequency = <50000000>;
};
sd_emmc_c: mmc@ffe07000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0xffe07000 0x0 0x2000>;
interrupts = <GIC_SPI 191 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 6>;
boot-metadata = <0x5452506D 0>;
clocks = <&clock 0x1000C>;
gpios = <&gpio A311D_GPIOBOOT(12) 0>;
gpio-names = "SDMMC_RESET";
pinctrl-0 = <&emmc_d0_d7_cfg &emmc_clk_cfg &emmc_cmd_cfg>,
<&emmc_ds_cfg &emmc_cs_cfg>;
max-frequency = <120000000>;
non-removable;
no-mmc-hs400;
use-fidl;
};
aml_gpu: gpu@ffe40000 {
compatible = "amlogic,gpu";
reg = <0x0 0xffe40000 0x0 0x40000>, // MALI GPU
<0x0 0xff63c000 0x0 0x2000>; // HUI
registers = <&reset A311D_RESET0_MASK 4 0x0 0x100000>,
<&reset A311D_RESET0_LEVEL 4 0x0 0x100000>,
<&reset A311D_RESET2_MASK 4 0x0 0x4000>,
<&reset A311D_RESET2_LEVEL 4 0x0 0x4000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xffe40000 0x0 0x40000>;
arm_mali: arm-mali@0 {
compatible = "arm,mali-gpu";
reg = <0x0 0x0 0x0 0x40000>;
interrupts = <GIC_SPI 162 GIC_IRQ_MODE_LEVEL_HIGH>,
<GIC_SPI 161 GIC_IRQ_MODE_LEVEL_HIGH>,
<GIC_SPI 160 GIC_IRQ_MODE_LEVEL_HIGH>;
mali-gpu-parent = <&aml_gpu>;
iommus = <&dummy_iommu 5>;
};
};
};
nna@ff100000 {
compatible = "amlogic,nna";
reg = <0x0 A311D_NNA_BASE 0x0 A311D_NNA_LENGTH>,
<0x0 A311D_HIU_BASE 0x0 A311D_HIU_LENGTH>,
<0x0 A311D_POWER_DOMAIN_BASE 0x0 A311D_POWER_DOMAIN_LENGTH>,
<0x0 A311D_MEMORY_PD_BASE 0x0 A311D_MEMORY_PD_LENGTH>,
<0x0 A311D_NNA_SRAM_BASE 0x0 A311D_NNA_SRAM_LENGTH>;
interrupts = <GIC_SPI 147 GIC_IRQ_MODE_LEVEL_HIGH>;
iommus = <&dummy_iommu 3>;
registers = <&reset A311D_RESET2_LEVEL 4 0x0 0x1000>;
};
thermal-zones {
cpu_thermal: cpu-thermal {
thermal-sensors = <&cpu_temp>;
trips {
cpu_critical: cpu-critical {
temperature = <101000>; /* millicelsius */
type = "critical";
};
};
};
ddr_thermal: ddr-thermal {
thermal-sensors = <&ddr_temp>;
trips {
ddr_critical: ddr-critical {
temperature = <110000>; /* millicelsius */
type = "critical";
};
};
};
};
};