summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch')
-rw-r--r--recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch84
1 files changed, 0 insertions, 84 deletions
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch
deleted file mode 100644
index c9cc17c3..00000000
--- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch
+++ /dev/null
@@ -1,84 +0,0 @@
1From c10adfae330dababc9752d02431e8e7b098f3ce2 Mon Sep 17 00:00:00 2001
2From: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
3Date: Mon, 23 Mar 2015 04:05:13 -0700
4Subject: [PATCH 04/15] arm: xlnx-zynqmp: Add GIC
5
6And connect IRQ outputs to the CPUs.
7
8Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
9Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
10---
11 hw/arm/xlnx-zynqmp.c | 19 +++++++++++++++++++
12 include/hw/arm/xlnx-zynqmp.h | 2 ++
13 2 files changed, 21 insertions(+)
14
15diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
16index 41c207a..9465185 100644
17--- a/hw/arm/xlnx-zynqmp.c
18+++ b/hw/arm/xlnx-zynqmp.c
19@@ -17,6 +17,11 @@
20
21 #include "hw/arm/xlnx-zynqmp.h"
22
23+#define GIC_NUM_SPI_INTR 128
24+
25+#define GIC_DIST_ADDR 0xf9010000
26+#define GIC_CPU_ADDR 0xf9020000
27+
28 static void xlnx_zynqmp_init(Object *obj)
29 {
30 XlnxZynqMPState *s = XLNX_ZYNQMP(obj);
31@@ -28,6 +33,9 @@ static void xlnx_zynqmp_init(Object *obj)
32 object_property_add_child(obj, "cpu[*]", OBJECT(&s->cpu[i]),
33 &error_abort);
34 }
35+
36+ object_initialize(&s->gic, sizeof(s->gic), TYPE_ARM_GIC);
37+ qdev_set_parent_bus(DEVICE(&s->gic), sysbus_get_default());
38 }
39
40 #define ERR_PROP_CHECK_RETURN(err, errp) do { \
41@@ -43,9 +51,20 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
42 uint8_t i;
43 Error *err = NULL;
44
45+ qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", GIC_NUM_SPI_INTR + 32);
46+ qdev_prop_set_uint32(DEVICE(&s->gic), "revision", 2);
47+ qdev_prop_set_uint32(DEVICE(&s->gic), "num-cpu", XLNX_ZYNQMP_NUM_CPUS);
48+ object_property_set_bool(OBJECT(&s->gic), true, "realized", &err);
49+ ERR_PROP_CHECK_RETURN(err, errp);
50+ sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 0, GIC_DIST_ADDR);
51+ sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 1, GIC_CPU_ADDR);
52+
53 for (i = 0; i < XLNX_ZYNQMP_NUM_CPUS; i++) {
54 object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err);
55 ERR_PROP_CHECK_RETURN(err, errp);
56+
57+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->gic), i,
58+ qdev_get_gpio_in(DEVICE(&s->cpu[i]), ARM_CPU_IRQ));
59 }
60 }
61
62diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
63index d6b3b92..d29c7de 100644
64--- a/include/hw/arm/xlnx-zynqmp.h
65+++ b/include/hw/arm/xlnx-zynqmp.h
66@@ -2,6 +2,7 @@
67
68 #include "qemu-common.h"
69 #include "hw/arm/arm.h"
70+#include "hw/intc/arm_gic.h"
71
72 #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp"
73 #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \
74@@ -15,6 +16,7 @@ typedef struct XlnxZynqMPState {
75 /*< public >*/
76
77 ARMCPU cpu[XLNX_ZYNQMP_NUM_CPUS];
78+ GICState gic;
79 } XlnxZynqMPState;
80
81 #define XLNX_ZYNQMP_H_
82--
831.7.10.4
84