blob: 39492193371042d2fc66fe00e2118254dd3f316a [file]
/* Copyright 2024 The ChromiumOS Authors
* SPDX-License-Identifier: Apache-2.0
*/
#include <mem.h>
/dts-v1/;
/ {
#address-cells = <1>;
#size-cells = <1>;
sram0: memory@4e100000 {
device_type = "memory";
compatible = "mmio-sram";
reg = <0x4e100000 DT_SIZE_K(512)>;
};
dram0: memory@90000000 {
device_type = "memory";
compatible = "mmio-sram";
reg = <0x90000000 DT_SIZE_M(6)>;
};
dram1: memory@90800000 {
device_type = "memory";
compatible = "mmio-sram";
reg = <0x90800000 DT_SIZE_M(1)>;
};
soc {
#address-cells = <1>;
#size-cells = <1>;
core_intc: core_intc@0 {
compatible = "cdns,xtensa-core-intc";
reg = <0 4>;
interrupt-controller;
#interrupt-cells = <3>;
};
/* The 8196 interrupt controller is actually more complicated
* than the driver here supports. There are 64 total
* interrupt inputs, each of which is a associated with one of
* 16 "groups", each of which is wired to a separate Xtensa
* architectural interrupt. (Whether the mapping of external
* interrupts to groups is mutable is an open question, the
* values here appear to be hardware defaults). We represent
* each group (strictly each of the high and low 32 interrupts
* of each group) as a separate adsp_intc controller, pointing
* at the same status and enable registers, but with disjoint
* masks. Note that this disallows configurations where a
* single controller needs to manage interrupts in both the
* high and low 32 bits of the set, but no current drivers
* rely on such a configuration.
*/
intc_g1: intc_g1@1a014010 {
compatible = "mediatek,adsp_intc";
interrupt-controller;
#interrupt-cells = <3>;
reg = <0x1a014010 4>;
status-reg = <0x1a014008>;
mask = <0x00007f3f>;
interrupts = <1 0 0>;
interrupt-parent = <&core_intc>;
};
intc_g2: intc_g2@1a014010 {
compatible = "mediatek,adsp_intc";
interrupt-controller;
#interrupt-cells = <3>;
reg = <0x1a014010 4>;
status-reg = <0x1a014008>;
mask = <0x000000c0>;
interrupts = <2 0 0>;
interrupt-parent = <&core_intc>;
};
ostimer64: ostimer64@1a00b080 {
compatible = "mediatek,ostimer64";
reg = <0x1a00b080 28>;
};
ostimer0: ostimer@1a00b000 {
compatible = "mediatek,ostimer";
reg = <0x1a00b000 16>;
interrupt-parent = <&intc_g1>;
interrupts = <8 0 0>;
};
mbox0: mbox@1a350100 {
compatible = "mediatek,mbox";
reg = <0x1a350100 16>;
interrupt-parent = <&intc_g2>;
interrupts = <6 0 0>;
};
mbox1: mbox@1a360100 {
compatible = "mediatek,mbox";
reg = <0x1a360100 16>;
interrupt-parent = <&intc_g2>;
interrupts = <7 0 0>;
};
/* Generated code for AFE devices */
#include "afe-mt8196.dts"
}; /* soc */
chosen {};
aliases {};
};