zephyr/dts/arm/xilinx/zynqmp_rpu.dtsi
Tanmay Shah 09e2a4e9eb drivers: ipm: add zynqmp r5f support
Add ipm driver to use Inter Processor Interrupts
on Xilinx ZynqMP platform. This patch also adds sample
application that shows use of xlnx ipm driver.

This driver uses default arm gic interrupt controller
and works only for lockstep mode of cortex-r5f
cluster for now.

In split mode the cortex-r5 cluster will
have two r5f cores and they are expected to work in AMP
mode. If both r5f cores run simultaneouly, only one of
the core is able to receive IPI interrupts at this time
and it will be the one that started later. In future
this limitation shall be removed.

Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
2023-08-15 11:23:04 +00:00

111 lines
2.4 KiB
Plaintext

/*
* Copyright (c) 2019 Stephanos Ioannidis <root@stephanos.io>
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <arm/xilinx/zynqmp.dtsi>
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-r5f";
reg = <0>;
};
};
soc {
rpu0_ipi: zynqmp-ipi@ff310000 {
status = "disabled";
compatible = "xlnx,zynqmp-ipi-mailbox";
#address-cells = <1>;
#size-cells = <1>;
reg = <0xff310000 0x10000>;
reg-names = "host_ipi_reg";
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL
IRQ_DEFAULT_PRIORITY>;
local-ipi-id = <1>;
rpu0_apu_mailbox: mailbox@ff990200 {
remote-ipi-id = <0>;
reg = <0xff990200 0x20>,
<0xff990220 0x20>,
<0xff990040 0x20>,
<0xff990060 0x20>;
reg-names = "local_request_region",
"local_response_region",
"remote_request_region",
"remote_response_region";
};
rpu0_rpu1_mailbox: mailbox@ff990260 {
remote-ipi-id = <2>;
reg = <0xff990260 0x20>,
<0xff990280 0x20>,
<0xff990420 0x20>,
<0xff990440 0x20>;
reg-names = "local_request_region",
"local_response_region",
"remote_request_region",
"remote_response_region";
};
};
rpu1_ipi: zynqmp-ipi@ff320000 {
status = "disabled";
#address-cells = <1>;
#size-cells = <1>;
compatible = "xlnx,zynqmp-ipi-mailbox";
local-ipi-id = <2>;
reg = <0xff320000 0x10000>;
reg-names = "host_ipi_reg";
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL
IRQ_DEFAULT_PRIORITY>;
rpu1_apu_mailbox: mailbox@ff990400 {
remote-ipi-id = <0>;
reg = <0xff990400 0x20>,
<0xff990420 0x20>,
<0xff990080 0x20>,
<0xff9900a0 0x20>;
reg-names = "local_request_region",
"local_response_region",
"remote_request_region",
"remote_response_region";
};
rpu1_rpu0_mailbox: mailbox@ff990420 {
remote-ipi-id = <1>;
reg = <0xff990420 0x20>,
<0xff990440 0x20>,
<0xff990260 0x20>,
<0xff990280 0x20>;
reg-names = "local_request_region",
"local_response_region",
"remote_request_region",
"remote_response_region";
};
};
interrupt-parent = <&gic>;
gic: interrupt-controller@f9000000 {
compatible = "arm,gic-v1", "arm,gic";
reg = <0xf9000000 0x1000>,
<0xf9001000 0x100>;
interrupt-controller;
#interrupt-cells = <4>;
status = "okay";
};
};
};