diff options
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.patch | 84 |
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 @@ | |||
1 | From c10adfae330dababc9752d02431e8e7b098f3ce2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Mar 2015 04:05:13 -0700 | ||
4 | Subject: [PATCH 04/15] arm: xlnx-zynqmp: Add GIC | ||
5 | |||
6 | And connect IRQ outputs to the CPUs. | ||
7 | |||
8 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
9 | Signed-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 | |||
15 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c | ||
16 | index 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 | |||
62 | diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h | ||
63 | index 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 | -- | ||
83 | 1.7.10.4 | ||
84 | |||