[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 6/6] xlnx-zynqmp: Connect the IPI device to the Z
From: |
Alistair Francis |
Subject: |
[Qemu-devel] [PATCH v2 6/6] xlnx-zynqmp: Connect the IPI device to the ZynqMP SoC |
Date: |
Fri, 1 Sep 2017 14:00:47 -0700 |
Signed-off-by: Alistair Francis <address@hidden>
---
hw/arm/xlnx-zynqmp.c | 14 ++++++++++++++
include/hw/arm/xlnx-zynqmp.h | 2 ++
2 files changed, 16 insertions(+)
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 9eceadbdc8..1988cb47f4 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -46,6 +46,9 @@
#define DPDMA_ADDR 0xfd4c0000
#define DPDMA_IRQ 116
+#define IPI_ADDR 0xFF300000
+#define IPI_IRQ 64
+
static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = {
0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000,
};
@@ -179,6 +182,9 @@ static void xlnx_zynqmp_init(Object *obj)
object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA);
qdev_set_parent_bus(DEVICE(&s->dpdma), sysbus_get_default());
+
+ object_initialize(&s->ipi, sizeof(s->ipi), TYPE_XLNX_ZYNQMP_IPI);
+ qdev_set_parent_bus(DEVICE(&s->ipi), sysbus_get_default());
}
static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
@@ -427,6 +433,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error
**errp)
&error_abort);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR);
sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, gic_spi[DPDMA_IRQ]);
+
+ object_property_set_bool(OBJECT(&s->ipi), true, "realized", &err);
+ if (err) {
+ error_propagate(errp, err);
+ return;
+ }
+ sysbus_mmio_map(SYS_BUS_DEVICE(&s->ipi), 0, IPI_ADDR);
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->ipi), 0, gic_spi[IPI_IRQ]);
}
static Property xlnx_zynqmp_props[] = {
diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
index c2931bf39c..02a89766e8 100644
--- a/include/hw/arm/xlnx-zynqmp.h
+++ b/include/hw/arm/xlnx-zynqmp.h
@@ -28,6 +28,7 @@
#include "hw/ssi/xilinx_spips.h"
#include "hw/dma/xlnx_dpdma.h"
#include "hw/display/xlnx_dp.h"
+#include "hw/intc/xlnx-zynqmp-ipi.h"
#define TYPE_XLNX_ZYNQMP "xlnx,zynqmp"
#define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \
@@ -85,6 +86,7 @@ typedef struct XlnxZynqMPState {
XilinxSPIPS spi[XLNX_ZYNQMP_NUM_SPIS];
XlnxDPState dp;
XlnxDPDMAState dpdma;
+ XlnxZynqMPIPI ipi;
char *boot_cpu;
ARMCPU *boot_cpu_ptr;
--
2.11.0
- [Qemu-devel] [PATCH v2 0/6] Add the ZynqMP PMU and IPI, Alistair Francis, 2017/09/01
- [Qemu-devel] [PATCH v2 2/6] xlnx-zynqmp-pmu: Add the CPU and memory, Alistair Francis, 2017/09/01
- [Qemu-devel] [PATCH v2 3/6] aarch64-softmmu.mak: Use an ARM specific config, Alistair Francis, 2017/09/01
- [Qemu-devel] [PATCH v2 5/6] xlnx-zynqmp-pmu: Connect the IPI device to the PMU, Alistair Francis, 2017/09/01
- [Qemu-devel] [PATCH v2 1/6] xlnx-zynqmp-pmu: Initial commit of the ZynqMP PMU, Alistair Francis, 2017/09/01
- [Qemu-devel] [PATCH v2 6/6] xlnx-zynqmp: Connect the IPI device to the ZynqMP SoC,
Alistair Francis <=
- [Qemu-devel] [PATCH v2 4/6] xlnx-zynqmp-ipi: Initial version of the Xilinx IPI device, Alistair Francis, 2017/09/01