09e2a4e9eb
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>
111 lines
2.4 KiB
Plaintext
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";
|
|
};
|
|
};
|
|
};
|