diff options
author | Nathan Rossi <nathan.rossi@xilinx.com> | 2015-04-22 18:41:14 +1000 |
---|---|---|
committer | Nathan Rossi <nathan.rossi@xilinx.com> | 2015-04-22 18:41:14 +1000 |
commit | 36f8fc657039a8586c2d800d16771eb2b5a24da8 (patch) | |
tree | cfa7dad3ab4b70385de4bb7bbdd5fa785a15d2c5 /recipes-devtools | |
parent | 0691d6f5b89d24985655960d7f22baf896896324 (diff) | |
download | meta-xilinx-36f8fc657039a8586c2d800d16771eb2b5a24da8.tar.gz |
qemu_zynqmp: Update SRCREV and Patches
* Update SRCREV to point to newest master
* Update patches based on patches that are on qemu-devel at v4
Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
Diffstat (limited to 'recipes-devtools')
21 files changed, 529 insertions, 475 deletions
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0001-target-arm-cpu64-Factor-out-ARM-cortex-init.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0001-target-arm-cpu64-Factor-out-ARM-cortex-init.patch index 779e8c42..f759f27b 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0001-target-arm-cpu64-Factor-out-ARM-cortex-init.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0001-target-arm-cpu64-Factor-out-ARM-cortex-init.patch | |||
@@ -1,7 +1,10 @@ | |||
1 | From 17c53bfa9ce6bb75f9ff55722bc02e4050a148c1 Mon Sep 17 00:00:00 2001 | 1 | From 56489633015d2ac71d680bdd27accbd6f87b4fe3 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:38 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:11 -0700 |
4 | Subject: [PATCH 01/15] target-arm: cpu64: Factor out ARM cortex init | 4 | Subject: [PATCH 01/15] target-arm: cpu64: Factor out ARM cortex init |
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
5 | 8 | ||
6 | In preparation for support for Cortex a53. Use "axx" to describe the | 9 | In preparation for support for Cortex a53. Use "axx" to describe the |
7 | shareable features. Some of the CP15 registers (such as ACTLR) are | 10 | shareable features. Some of the CP15 registers (such as ACTLR) are |
@@ -13,13 +16,14 @@ The cache sizes and geometeries, the L1 I-cache policy and the physical | |||
13 | address range differ between A53 and A57 so those particulars are left | 16 | address range differ between A53 and A57 so those particulars are left |
14 | as A57 specific. The rest are moved to the generalisation. | 17 | as A57 specific. The rest are moved to the generalisation. |
15 | 18 | ||
19 | Reviewed-by: Alex Bennée <alex.bennee@linaro.org> | ||
16 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 20 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
17 | --- | 21 | --- |
18 | target-arm/cpu64.c | 32 +++++++++++++++++++------------- | 22 | target-arm/cpu64.c | 34 ++++++++++++++++++++-------------- |
19 | 1 file changed, 19 insertions(+), 13 deletions(-) | 23 | 1 file changed, 20 insertions(+), 14 deletions(-) |
20 | 24 | ||
21 | diff --git a/target-arm/cpu64.c b/target-arm/cpu64.c | 25 | diff --git a/target-arm/cpu64.c b/target-arm/cpu64.c |
22 | index 823c739..5cf3121 100644 | 26 | index 270bc2f..3eb58c6 100644 |
23 | --- a/target-arm/cpu64.c | 27 | --- a/target-arm/cpu64.c |
24 | +++ b/target-arm/cpu64.c | 28 | +++ b/target-arm/cpu64.c |
25 | @@ -38,22 +38,22 @@ static inline void unset_feature(CPUARMState *env, int feature) | 29 | @@ -38,22 +38,22 @@ static inline void unset_feature(CPUARMState *env, int feature) |
@@ -49,7 +53,7 @@ index 823c739..5cf3121 100644 | |||
49 | .writefn = arm_cp_write_ignore }, | 53 | .writefn = arm_cp_write_ignore }, |
50 | #endif | 54 | #endif |
51 | { .name = "L2ECTLR_EL1", .state = ARM_CP_STATE_AA64, | 55 | { .name = "L2ECTLR_EL1", .state = ARM_CP_STATE_AA64, |
52 | @@ -92,10 +92,8 @@ static const ARMCPRegInfo cortexa57_cp_reginfo[] = { | 56 | @@ -92,11 +92,8 @@ static const ARMCPRegInfo cortexa57_cp_reginfo[] = { |
53 | REGINFO_SENTINEL | 57 | REGINFO_SENTINEL |
54 | }; | 58 | }; |
55 | 59 | ||
@@ -58,10 +62,11 @@ index 823c739..5cf3121 100644 | |||
58 | { | 62 | { |
59 | - ARMCPU *cpu = ARM_CPU(obj); | 63 | - ARMCPU *cpu = ARM_CPU(obj); |
60 | - | 64 | - |
65 | - cpu->dtb_compatible = "arm,cortex-a57"; | ||
61 | set_feature(&cpu->env, ARM_FEATURE_V8); | 66 | set_feature(&cpu->env, ARM_FEATURE_V8); |
62 | set_feature(&cpu->env, ARM_FEATURE_VFP4); | 67 | set_feature(&cpu->env, ARM_FEATURE_VFP4); |
63 | set_feature(&cpu->env, ARM_FEATURE_NEON); | 68 | set_feature(&cpu->env, ARM_FEATURE_NEON); |
64 | @@ -107,13 +105,10 @@ static void aarch64_a57_initfn(Object *obj) | 69 | @@ -108,13 +105,10 @@ static void aarch64_a57_initfn(Object *obj) |
65 | set_feature(&cpu->env, ARM_FEATURE_V8_SHA256); | 70 | set_feature(&cpu->env, ARM_FEATURE_V8_SHA256); |
66 | set_feature(&cpu->env, ARM_FEATURE_V8_PMULL); | 71 | set_feature(&cpu->env, ARM_FEATURE_V8_PMULL); |
67 | set_feature(&cpu->env, ARM_FEATURE_CRC); | 72 | set_feature(&cpu->env, ARM_FEATURE_CRC); |
@@ -75,7 +80,7 @@ index 823c739..5cf3121 100644 | |||
75 | cpu->reset_sctlr = 0x00c50838; | 80 | cpu->reset_sctlr = 0x00c50838; |
76 | cpu->id_pfr0 = 0x00000131; | 81 | cpu->id_pfr0 = 0x00000131; |
77 | cpu->id_pfr1 = 0x00011011; | 82 | cpu->id_pfr1 = 0x00011011; |
78 | @@ -132,14 +127,25 @@ static void aarch64_a57_initfn(Object *obj) | 83 | @@ -133,14 +127,26 @@ static void aarch64_a57_initfn(Object *obj) |
79 | cpu->id_aa64pfr0 = 0x00002222; | 84 | cpu->id_aa64pfr0 = 0x00002222; |
80 | cpu->id_aa64dfr0 = 0x10305106; | 85 | cpu->id_aa64dfr0 = 0x10305106; |
81 | cpu->id_aa64isar0 = 0x00011120; | 86 | cpu->id_aa64isar0 = 0x00011120; |
@@ -92,6 +97,7 @@ index 823c739..5cf3121 100644 | |||
92 | + | 97 | + |
93 | + aarch64_axx_initfn(cpu); | 98 | + aarch64_axx_initfn(cpu); |
94 | + | 99 | + |
100 | + cpu->dtb_compatible = "arm,cortex-a57"; | ||
95 | + cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A57; | 101 | + cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A57; |
96 | + cpu->midr = 0x411fd070; | 102 | + cpu->midr = 0x411fd070; |
97 | + cpu->ctr = 0x8444c004; /* L1Ip = PIPT */ | 103 | + cpu->ctr = 0x8444c004; /* L1Ip = PIPT */ |
@@ -105,5 +111,5 @@ index 823c739..5cf3121 100644 | |||
105 | 111 | ||
106 | #ifdef CONFIG_USER_ONLY | 112 | #ifdef CONFIG_USER_ONLY |
107 | -- | 113 | -- |
108 | 2.1.1 | 114 | 1.7.10.4 |
109 | 115 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0002-target-arm-cpu64-Add-support-for-cortex-a53.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0002-target-arm-cpu64-Add-support-for-cortex-a53.patch index 4723bd2b..290f2870 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0002-target-arm-cpu64-Add-support-for-cortex-a53.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0002-target-arm-cpu64-Add-support-for-cortex-a53.patch | |||
@@ -1,23 +1,27 @@ | |||
1 | From 2390e80ace413722b0d41500c1927d78b2a0154b Mon Sep 17 00:00:00 2001 | 1 | From a69dfd5611a5671ff6163d3368d3628152251b04 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:39 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:11 -0700 |
4 | Subject: [PATCH 02/15] target-arm: cpu64: Add support for cortex-a53 | 4 | Subject: [PATCH 02/15] target-arm: cpu64: Add support for cortex-a53 |
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
5 | 8 | ||
6 | Similar to a53, but with different L1 I cache policy, phys addr size and | 9 | Similar to a53, but with different L1 I cache policy, phys addr size and |
7 | different cache geometries. The cache sizes is implementation | 10 | different cache geometries. The cache sizes is implementation |
8 | configurable, but use these values (from Xilinx MPSoC) as a default | 11 | configurable, but use these values (from Xilinx MPSoC) as a default |
9 | until cache size configurability is added. | 12 | until cache size configurability is added. |
10 | 13 | ||
14 | Reviewed-by: Alex Bennée <alex.bennee@linaro.org> | ||
11 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 15 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
12 | --- | 16 | --- |
13 | target-arm/cpu64.c | 15 +++++++++++++++ | 17 | target-arm/cpu64.c | 16 ++++++++++++++++ |
14 | 1 file changed, 15 insertions(+) | 18 | 1 file changed, 16 insertions(+) |
15 | 19 | ||
16 | diff --git a/target-arm/cpu64.c b/target-arm/cpu64.c | 20 | diff --git a/target-arm/cpu64.c b/target-arm/cpu64.c |
17 | index 5cf3121..0b9728e 100644 | 21 | index 3eb58c6..728d9a7 100644 |
18 | --- a/target-arm/cpu64.c | 22 | --- a/target-arm/cpu64.c |
19 | +++ b/target-arm/cpu64.c | 23 | +++ b/target-arm/cpu64.c |
20 | @@ -148,6 +148,20 @@ static void aarch64_a57_initfn(Object *obj) | 24 | @@ -149,6 +149,21 @@ static void aarch64_a57_initfn(Object *obj) |
21 | cpu->ccsidr[2] = 0x70ffe07a; /* 2048KB L2 cache */ | 25 | cpu->ccsidr[2] = 0x70ffe07a; /* 2048KB L2 cache */ |
22 | } | 26 | } |
23 | 27 | ||
@@ -27,6 +31,7 @@ index 5cf3121..0b9728e 100644 | |||
27 | + | 31 | + |
28 | + aarch64_axx_initfn(cpu); | 32 | + aarch64_axx_initfn(cpu); |
29 | + | 33 | + |
34 | + cpu->dtb_compatible = "arm,cortex-a53"; | ||
30 | + cpu->midr = 0x410fd034; | 35 | + cpu->midr = 0x410fd034; |
31 | + cpu->ctr = 0x84448004; /* L1Ip = VIPT */ | 36 | + cpu->ctr = 0x84448004; /* L1Ip = VIPT */ |
32 | + cpu->id_aa64mmfr0 = 0x00001122; /* 40 bit physical addr */ | 37 | + cpu->id_aa64mmfr0 = 0x00001122; /* 40 bit physical addr */ |
@@ -38,7 +43,7 @@ index 5cf3121..0b9728e 100644 | |||
38 | #ifdef CONFIG_USER_ONLY | 43 | #ifdef CONFIG_USER_ONLY |
39 | static void aarch64_any_initfn(Object *obj) | 44 | static void aarch64_any_initfn(Object *obj) |
40 | { | 45 | { |
41 | @@ -175,6 +189,7 @@ typedef struct ARMCPUInfo { | 46 | @@ -176,6 +191,7 @@ typedef struct ARMCPUInfo { |
42 | 47 | ||
43 | static const ARMCPUInfo aarch64_cpus[] = { | 48 | static const ARMCPUInfo aarch64_cpus[] = { |
44 | { .name = "cortex-a57", .initfn = aarch64_a57_initfn }, | 49 | { .name = "cortex-a57", .initfn = aarch64_a57_initfn }, |
@@ -47,5 +52,5 @@ index 5cf3121..0b9728e 100644 | |||
47 | { .name = "any", .initfn = aarch64_any_initfn }, | 52 | { .name = "any", .initfn = aarch64_any_initfn }, |
48 | #endif | 53 | #endif |
49 | -- | 54 | -- |
50 | 2.1.1 | 55 | 1.7.10.4 |
51 | 56 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0003-arm-Introduce-Xilinx-Zynq-MPSoC.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0003-arm-Introduce-Xilinx-ZynqMP-SoC.patch index fdff7c17..eb5740e0 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0003-arm-Introduce-Xilinx-Zynq-MPSoC.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0003-arm-Introduce-Xilinx-ZynqMP-SoC.patch | |||
@@ -1,22 +1,23 @@ | |||
1 | From 37b74b0626d6403da8d9b946d77d29296bc47bcc Mon Sep 17 00:00:00 2001 | 1 | From 7f403cd27dbef216c77faa32d015965dfa5fe34e Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:42 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:13 -0700 |
4 | Subject: [PATCH 03/15] arm: Introduce Xilinx Zynq MPSoC | 4 | Subject: [PATCH 03/15] arm: Introduce Xilinx ZynqMP SoC |
5 | 5 | ||
6 | With quad Cortex-A53 CPUs. | 6 | With quad Cortex-A53 CPUs. |
7 | 7 | ||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
9 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
9 | --- | 10 | --- |
10 | default-configs/aarch64-softmmu.mak | 2 +- | 11 | default-configs/aarch64-softmmu.mak | 2 +- |
11 | hw/arm/Makefile.objs | 1 + | 12 | hw/arm/Makefile.objs | 1 + |
12 | hw/arm/xlnx-zynq-mp.c | 71 +++++++++++++++++++++++++++++++++++++ | 13 | hw/arm/xlnx-zynqmp.c | 72 +++++++++++++++++++++++++++++++++++ |
13 | include/hw/arm/xlnx-zynq-mp.h | 21 +++++++++++ | 14 | include/hw/arm/xlnx-zynqmp.h | 21 ++++++++++ |
14 | 4 files changed, 94 insertions(+), 1 deletion(-) | 15 | 4 files changed, 95 insertions(+), 1 deletion(-) |
15 | create mode 100644 hw/arm/xlnx-zynq-mp.c | 16 | create mode 100644 hw/arm/xlnx-zynqmp.c |
16 | create mode 100644 include/hw/arm/xlnx-zynq-mp.h | 17 | create mode 100644 include/hw/arm/xlnx-zynqmp.h |
17 | 18 | ||
18 | diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak | 19 | diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak |
19 | index 6d3b5c7..a8011e0 100644 | 20 | index 6d3b5c7..96dd994 100644 |
20 | --- a/default-configs/aarch64-softmmu.mak | 21 | --- a/default-configs/aarch64-softmmu.mak |
21 | +++ b/default-configs/aarch64-softmmu.mak | 22 | +++ b/default-configs/aarch64-softmmu.mak |
22 | @@ -3,4 +3,4 @@ | 23 | @@ -3,4 +3,4 @@ |
@@ -24,22 +25,22 @@ index 6d3b5c7..a8011e0 100644 | |||
24 | include arm-softmmu.mak | 25 | include arm-softmmu.mak |
25 | 26 | ||
26 | -# Currently no 64-bit specific config requirements | 27 | -# Currently no 64-bit specific config requirements |
27 | +CONFIG_XLNX_ZYNQ_MP=y | 28 | +CONFIG_XLNX_ZYNQMP=y |
28 | diff --git a/hw/arm/Makefile.objs b/hw/arm/Makefile.objs | 29 | diff --git a/hw/arm/Makefile.objs b/hw/arm/Makefile.objs |
29 | index 6088e53..9bf072b 100644 | 30 | index 2577f68..d7cd5f4 100644 |
30 | --- a/hw/arm/Makefile.objs | 31 | --- a/hw/arm/Makefile.objs |
31 | +++ b/hw/arm/Makefile.objs | 32 | +++ b/hw/arm/Makefile.objs |
32 | @@ -8,3 +8,4 @@ obj-y += armv7m.o exynos4210.o pxa2xx.o pxa2xx_gpio.o pxa2xx_pic.o | 33 | @@ -10,3 +10,4 @@ obj-$(CONFIG_DIGIC) += digic.o |
33 | obj-$(CONFIG_DIGIC) += digic.o | ||
34 | obj-y += omap1.o omap2.o strongarm.o | 34 | obj-y += omap1.o omap2.o strongarm.o |
35 | obj-$(CONFIG_ALLWINNER_A10) += allwinner-a10.o cubieboard.o | 35 | obj-$(CONFIG_ALLWINNER_A10) += allwinner-a10.o cubieboard.o |
36 | +obj-$(CONFIG_XLNX_ZYNQ_MP) += xlnx-zynq-mp.o | 36 | obj-$(CONFIG_STM32F205_SOC) += stm32f205_soc.o |
37 | diff --git a/hw/arm/xlnx-zynq-mp.c b/hw/arm/xlnx-zynq-mp.c | 37 | +obj-$(CONFIG_XLNX_ZYNQMP) += xlnx-zynqmp.o |
38 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c | ||
38 | new file mode 100644 | 39 | new file mode 100644 |
39 | index 0000000..d553fb0 | 40 | index 0000000..41c207a |
40 | --- /dev/null | 41 | --- /dev/null |
41 | +++ b/hw/arm/xlnx-zynq-mp.c | 42 | +++ b/hw/arm/xlnx-zynqmp.c |
42 | @@ -0,0 +1,71 @@ | 43 | @@ -0,0 +1,72 @@ |
43 | +/* | 44 | +/* |
44 | + * Xilinx Zynq MPSoC emulation | 45 | + * Xilinx Zynq MPSoC emulation |
45 | + * | 46 | + * |
@@ -57,17 +58,18 @@ index 0000000..d553fb0 | |||
57 | + * for more details. | 58 | + * for more details. |
58 | + */ | 59 | + */ |
59 | + | 60 | + |
60 | +#include "hw/arm/xlnx-zynq-mp.h" | 61 | +#include "hw/arm/xlnx-zynqmp.h" |
61 | + | 62 | + |
62 | +static void xlnx_zynq_mp_init(Object *obj) | 63 | +static void xlnx_zynqmp_init(Object *obj) |
63 | +{ | 64 | +{ |
64 | + XlnxZynqMPState *s = XLNX_ZYNQ_MP(obj); | 65 | + XlnxZynqMPState *s = XLNX_ZYNQMP(obj); |
65 | + int i; | 66 | + int i; |
66 | + | 67 | + |
67 | + for (i = 0; i < XLNX_ZYNQ_MP_NUM_CPUS; i++) { | 68 | + for (i = 0; i < XLNX_ZYNQMP_NUM_CPUS; i++) { |
68 | + object_initialize(&s->cpu[i], sizeof(s->cpu[i]), | 69 | + object_initialize(&s->cpu[i], sizeof(s->cpu[i]), |
69 | + "cortex-a53-" TYPE_ARM_CPU); | 70 | + "cortex-a53-" TYPE_ARM_CPU); |
70 | + object_property_add_child(obj, "cpu", OBJECT(&s->cpu[i]), NULL); | 71 | + object_property_add_child(obj, "cpu[*]", OBJECT(&s->cpu[i]), |
72 | + &error_abort); | ||
71 | + } | 73 | + } |
72 | +} | 74 | +} |
73 | + | 75 | + |
@@ -78,66 +80,66 @@ index 0000000..d553fb0 | |||
78 | + } \ | 80 | + } \ |
79 | +} while (0) | 81 | +} while (0) |
80 | + | 82 | + |
81 | +static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | 83 | +static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) |
82 | +{ | 84 | +{ |
83 | + XlnxZynqMPState *s = XLNX_ZYNQ_MP(dev); | 85 | + XlnxZynqMPState *s = XLNX_ZYNQMP(dev); |
84 | + uint8_t i; | 86 | + uint8_t i; |
85 | + Error *err = NULL; | 87 | + Error *err = NULL; |
86 | + | 88 | + |
87 | + for (i = 0; i < XLNX_ZYNQ_MP_NUM_CPUS; i++) { | 89 | + for (i = 0; i < XLNX_ZYNQMP_NUM_CPUS; i++) { |
88 | + object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); | 90 | + object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); |
89 | + ERR_PROP_CHECK_RETURN(err, errp); | 91 | + ERR_PROP_CHECK_RETURN(err, errp); |
90 | + } | 92 | + } |
91 | +} | 93 | +} |
92 | + | 94 | + |
93 | +static void xlnx_zynq_mp_class_init(ObjectClass *oc, void *data) | 95 | +static void xlnx_zynqmp_class_init(ObjectClass *oc, void *data) |
94 | +{ | 96 | +{ |
95 | + DeviceClass *dc = DEVICE_CLASS(oc); | 97 | + DeviceClass *dc = DEVICE_CLASS(oc); |
96 | + | 98 | + |
97 | + dc->realize = xlnx_zynq_mp_realize; | 99 | + dc->realize = xlnx_zynqmp_realize; |
98 | +} | 100 | +} |
99 | + | 101 | + |
100 | +static const TypeInfo xlnx_zynq_mp_type_info = { | 102 | +static const TypeInfo xlnx_zynqmp_type_info = { |
101 | + .name = TYPE_XLNX_ZYNQ_MP, | 103 | + .name = TYPE_XLNX_ZYNQMP, |
102 | + .parent = TYPE_DEVICE, | 104 | + .parent = TYPE_DEVICE, |
103 | + .instance_size = sizeof(XlnxZynqMPState), | 105 | + .instance_size = sizeof(XlnxZynqMPState), |
104 | + .instance_init = xlnx_zynq_mp_init, | 106 | + .instance_init = xlnx_zynqmp_init, |
105 | + .class_init = xlnx_zynq_mp_class_init, | 107 | + .class_init = xlnx_zynqmp_class_init, |
106 | +}; | 108 | +}; |
107 | + | 109 | + |
108 | +static void xlnx_zynq_mp_register_types(void) | 110 | +static void xlnx_zynqmp_register_types(void) |
109 | +{ | 111 | +{ |
110 | + type_register_static(&xlnx_zynq_mp_type_info); | 112 | + type_register_static(&xlnx_zynqmp_type_info); |
111 | +} | 113 | +} |
112 | + | 114 | + |
113 | +type_init(xlnx_zynq_mp_register_types) | 115 | +type_init(xlnx_zynqmp_register_types) |
114 | diff --git a/include/hw/arm/xlnx-zynq-mp.h b/include/hw/arm/xlnx-zynq-mp.h | 116 | diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h |
115 | new file mode 100644 | 117 | new file mode 100644 |
116 | index 0000000..f7410dc | 118 | index 0000000..d6b3b92 |
117 | --- /dev/null | 119 | --- /dev/null |
118 | +++ b/include/hw/arm/xlnx-zynq-mp.h | 120 | +++ b/include/hw/arm/xlnx-zynqmp.h |
119 | @@ -0,0 +1,21 @@ | 121 | @@ -0,0 +1,21 @@ |
120 | +#ifndef XLNX_ZYNQ_MP_H_ | 122 | +#ifndef XLNX_ZYNQMP_H_ |
121 | + | 123 | + |
122 | +#include "qemu-common.h" | 124 | +#include "qemu-common.h" |
123 | +#include "hw/arm/arm.h" | 125 | +#include "hw/arm/arm.h" |
124 | + | 126 | + |
125 | +#define TYPE_XLNX_ZYNQ_MP "xlnx,zynq-mp" | 127 | +#define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" |
126 | +#define XLNX_ZYNQ_MP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ | 128 | +#define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ |
127 | + TYPE_XLNX_ZYNQ_MP) | 129 | + TYPE_XLNX_ZYNQMP) |
128 | + | 130 | + |
129 | +#define XLNX_ZYNQ_MP_NUM_CPUS 4 | 131 | +#define XLNX_ZYNQMP_NUM_CPUS 4 |
130 | + | 132 | + |
131 | +typedef struct XlnxZynqMPState { | 133 | +typedef struct XlnxZynqMPState { |
132 | + /*< private >*/ | 134 | + /*< private >*/ |
133 | + DeviceState parent_obj; | 135 | + DeviceState parent_obj; |
134 | + /*< public >*/ | 136 | + /*< public >*/ |
135 | + | 137 | + |
136 | + ARMCPU cpu[XLNX_ZYNQ_MP_NUM_CPUS]; | 138 | + ARMCPU cpu[XLNX_ZYNQMP_NUM_CPUS]; |
137 | +} XlnxZynqMPState; | 139 | +} XlnxZynqMPState; |
138 | + | 140 | + |
139 | +#define XLNX_ZYNQ_MP_H_ | 141 | +#define XLNX_ZYNQMP_H_ |
140 | +#endif | 142 | +#endif |
141 | -- | 143 | -- |
142 | 2.1.1 | 144 | 1.7.10.4 |
143 | 145 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynq-mp-Add-GIC.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch index 518ca702..c9cc17c3 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynq-mp-Add-GIC.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0004-arm-xlnx-zynqmp-Add-GIC.patch | |||
@@ -1,35 +1,36 @@ | |||
1 | From 307b6f846c7cc878f399a34a29a9db48f32e3432 Mon Sep 17 00:00:00 2001 | 1 | From c10adfae330dababc9752d02431e8e7b098f3ce2 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:43 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:13 -0700 |
4 | Subject: [PATCH 04/15] arm: xlnx-zynq-mp: Add GIC | 4 | Subject: [PATCH 04/15] arm: xlnx-zynqmp: Add GIC |
5 | 5 | ||
6 | And connect IRQ outputs to the CPUs. | 6 | And connect IRQ outputs to the CPUs. |
7 | 7 | ||
8 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 9 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
9 | --- | 10 | --- |
10 | hw/arm/xlnx-zynq-mp.c | 19 +++++++++++++++++++ | 11 | hw/arm/xlnx-zynqmp.c | 19 +++++++++++++++++++ |
11 | include/hw/arm/xlnx-zynq-mp.h | 2 ++ | 12 | include/hw/arm/xlnx-zynqmp.h | 2 ++ |
12 | 2 files changed, 21 insertions(+) | 13 | 2 files changed, 21 insertions(+) |
13 | 14 | ||
14 | diff --git a/hw/arm/xlnx-zynq-mp.c b/hw/arm/xlnx-zynq-mp.c | 15 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c |
15 | index d553fb0..9cdff13 100644 | 16 | index 41c207a..9465185 100644 |
16 | --- a/hw/arm/xlnx-zynq-mp.c | 17 | --- a/hw/arm/xlnx-zynqmp.c |
17 | +++ b/hw/arm/xlnx-zynq-mp.c | 18 | +++ b/hw/arm/xlnx-zynqmp.c |
18 | @@ -17,6 +17,11 @@ | 19 | @@ -17,6 +17,11 @@ |
19 | 20 | ||
20 | #include "hw/arm/xlnx-zynq-mp.h" | 21 | #include "hw/arm/xlnx-zynqmp.h" |
21 | 22 | ||
22 | +#define GIC_NUM_SPI_INTR 128 | 23 | +#define GIC_NUM_SPI_INTR 128 |
23 | + | 24 | + |
24 | +#define GIC_DIST_ADDR 0xf9010000 | 25 | +#define GIC_DIST_ADDR 0xf9010000 |
25 | +#define GIC_CPU_ADDR 0xf9020000 | 26 | +#define GIC_CPU_ADDR 0xf9020000 |
26 | + | 27 | + |
27 | static void xlnx_zynq_mp_init(Object *obj) | 28 | static void xlnx_zynqmp_init(Object *obj) |
28 | { | 29 | { |
29 | XlnxZynqMPState *s = XLNX_ZYNQ_MP(obj); | 30 | XlnxZynqMPState *s = XLNX_ZYNQMP(obj); |
30 | @@ -27,6 +32,9 @@ static void xlnx_zynq_mp_init(Object *obj) | 31 | @@ -28,6 +33,9 @@ static void xlnx_zynqmp_init(Object *obj) |
31 | "cortex-a53-" TYPE_ARM_CPU); | 32 | object_property_add_child(obj, "cpu[*]", OBJECT(&s->cpu[i]), |
32 | object_property_add_child(obj, "cpu", OBJECT(&s->cpu[i]), NULL); | 33 | &error_abort); |
33 | } | 34 | } |
34 | + | 35 | + |
35 | + object_initialize(&s->gic, sizeof(s->gic), TYPE_ARM_GIC); | 36 | + object_initialize(&s->gic, sizeof(s->gic), TYPE_ARM_GIC); |
@@ -37,19 +38,19 @@ index d553fb0..9cdff13 100644 | |||
37 | } | 38 | } |
38 | 39 | ||
39 | #define ERR_PROP_CHECK_RETURN(err, errp) do { \ | 40 | #define ERR_PROP_CHECK_RETURN(err, errp) do { \ |
40 | @@ -42,9 +50,20 @@ static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | 41 | @@ -43,9 +51,20 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) |
41 | uint8_t i; | 42 | uint8_t i; |
42 | Error *err = NULL; | 43 | Error *err = NULL; |
43 | 44 | ||
44 | + qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", GIC_NUM_SPI_INTR + 32); | 45 | + qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", GIC_NUM_SPI_INTR + 32); |
45 | + qdev_prop_set_uint32(DEVICE(&s->gic), "revision", 2); | 46 | + qdev_prop_set_uint32(DEVICE(&s->gic), "revision", 2); |
46 | + qdev_prop_set_uint32(DEVICE(&s->gic), "num-cpu", XLNX_ZYNQ_MP_NUM_CPUS); | 47 | + qdev_prop_set_uint32(DEVICE(&s->gic), "num-cpu", XLNX_ZYNQMP_NUM_CPUS); |
47 | + object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); | 48 | + object_property_set_bool(OBJECT(&s->gic), true, "realized", &err); |
48 | + ERR_PROP_CHECK_RETURN(err, errp); | 49 | + ERR_PROP_CHECK_RETURN(err, errp); |
49 | + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 0, GIC_DIST_ADDR); | 50 | + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 0, GIC_DIST_ADDR); |
50 | + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 1, GIC_CPU_ADDR); | 51 | + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 1, GIC_CPU_ADDR); |
51 | + | 52 | + |
52 | for (i = 0; i < XLNX_ZYNQ_MP_NUM_CPUS; i++) { | 53 | for (i = 0; i < XLNX_ZYNQMP_NUM_CPUS; i++) { |
53 | object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); | 54 | object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); |
54 | ERR_PROP_CHECK_RETURN(err, errp); | 55 | ERR_PROP_CHECK_RETURN(err, errp); |
55 | + | 56 | + |
@@ -58,26 +59,26 @@ index d553fb0..9cdff13 100644 | |||
58 | } | 59 | } |
59 | } | 60 | } |
60 | 61 | ||
61 | diff --git a/include/hw/arm/xlnx-zynq-mp.h b/include/hw/arm/xlnx-zynq-mp.h | 62 | diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h |
62 | index f7410dc..22b2af0 100644 | 63 | index d6b3b92..d29c7de 100644 |
63 | --- a/include/hw/arm/xlnx-zynq-mp.h | 64 | --- a/include/hw/arm/xlnx-zynqmp.h |
64 | +++ b/include/hw/arm/xlnx-zynq-mp.h | 65 | +++ b/include/hw/arm/xlnx-zynqmp.h |
65 | @@ -2,6 +2,7 @@ | 66 | @@ -2,6 +2,7 @@ |
66 | 67 | ||
67 | #include "qemu-common.h" | 68 | #include "qemu-common.h" |
68 | #include "hw/arm/arm.h" | 69 | #include "hw/arm/arm.h" |
69 | +#include "hw/intc/arm_gic.h" | 70 | +#include "hw/intc/arm_gic.h" |
70 | 71 | ||
71 | #define TYPE_XLNX_ZYNQ_MP "xlnx,zynq-mp" | 72 | #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" |
72 | #define XLNX_ZYNQ_MP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ | 73 | #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ |
73 | @@ -15,6 +16,7 @@ typedef struct XlnxZynqMPState { | 74 | @@ -15,6 +16,7 @@ typedef struct XlnxZynqMPState { |
74 | /*< public >*/ | 75 | /*< public >*/ |
75 | 76 | ||
76 | ARMCPU cpu[XLNX_ZYNQ_MP_NUM_CPUS]; | 77 | ARMCPU cpu[XLNX_ZYNQMP_NUM_CPUS]; |
77 | + GICState gic; | 78 | + GICState gic; |
78 | } XlnxZynqMPState; | 79 | } XlnxZynqMPState; |
79 | 80 | ||
80 | #define XLNX_ZYNQ_MP_H_ | 81 | #define XLNX_ZYNQMP_H_ |
81 | -- | 82 | -- |
82 | 2.1.1 | 83 | 1.7.10.4 |
83 | 84 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0005-arm-xlnx-zynq-mp-Connect-CPU-Timers-to-GIC.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0005-arm-xlnx-zynqmp-Connect-CPU-Timers-to-GIC.patch index 207dbc93..487d722c 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0005-arm-xlnx-zynq-mp-Connect-CPU-Timers-to-GIC.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0005-arm-xlnx-zynqmp-Connect-CPU-Timers-to-GIC.patch | |||
@@ -1,20 +1,20 @@ | |||
1 | From c2c5018da201c9eead0dba39263eb40549064511 Mon Sep 17 00:00:00 2001 | 1 | From 6eb0b99419e4f20cef0c0af2847e1635b2dbc04e Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:44 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:14 -0700 |
4 | Subject: [PATCH 05/15] arm: xlnx-zynq-mp: Connect CPU Timers to GIC | 4 | Subject: [PATCH 05/15] arm: xlnx-zynqmp: Connect CPU Timers to GIC |
5 | 5 | ||
6 | Connect the GPIO outputs from the individual CPUs for the timers to the | 6 | Connect the GPIO outputs from the individual CPUs for the timers to the |
7 | GIC. | 7 | GIC. |
8 | 8 | ||
9 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 9 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
10 | --- | 10 | --- |
11 | hw/arm/xlnx-zynq-mp.c | 16 ++++++++++++++++ | 11 | hw/arm/xlnx-zynqmp.c | 16 ++++++++++++++++ |
12 | 1 file changed, 16 insertions(+) | 12 | 1 file changed, 16 insertions(+) |
13 | 13 | ||
14 | diff --git a/hw/arm/xlnx-zynq-mp.c b/hw/arm/xlnx-zynq-mp.c | 14 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c |
15 | index 9cdff13..be82a66 100644 | 15 | index 9465185..29954f5 100644 |
16 | --- a/hw/arm/xlnx-zynq-mp.c | 16 | --- a/hw/arm/xlnx-zynqmp.c |
17 | +++ b/hw/arm/xlnx-zynq-mp.c | 17 | +++ b/hw/arm/xlnx-zynqmp.c |
18 | @@ -19,9 +19,17 @@ | 18 | @@ -19,9 +19,17 @@ |
19 | 19 | ||
20 | #define GIC_NUM_SPI_INTR 128 | 20 | #define GIC_NUM_SPI_INTR 128 |
@@ -30,13 +30,13 @@ index 9cdff13..be82a66 100644 | |||
30 | + return GIC_NUM_SPI_INTR + cpu_nr * 32 + ppi_index; | 30 | + return GIC_NUM_SPI_INTR + cpu_nr * 32 + ppi_index; |
31 | +} | 31 | +} |
32 | + | 32 | + |
33 | static void xlnx_zynq_mp_init(Object *obj) | 33 | static void xlnx_zynqmp_init(Object *obj) |
34 | { | 34 | { |
35 | XlnxZynqMPState *s = XLNX_ZYNQ_MP(obj); | 35 | XlnxZynqMPState *s = XLNX_ZYNQMP(obj); |
36 | @@ -59,11 +67,19 @@ static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | 36 | @@ -60,11 +68,19 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) |
37 | sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 1, GIC_CPU_ADDR); | 37 | sysbus_mmio_map(SYS_BUS_DEVICE(&s->gic), 1, GIC_CPU_ADDR); |
38 | 38 | ||
39 | for (i = 0; i < XLNX_ZYNQ_MP_NUM_CPUS; i++) { | 39 | for (i = 0; i < XLNX_ZYNQMP_NUM_CPUS; i++) { |
40 | + qemu_irq irq; | 40 | + qemu_irq irq; |
41 | + | 41 | + |
42 | object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); | 42 | object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); |
@@ -54,5 +54,5 @@ index 9cdff13..be82a66 100644 | |||
54 | } | 54 | } |
55 | 55 | ||
56 | -- | 56 | -- |
57 | 2.1.1 | 57 | 1.7.10.4 |
58 | 58 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0006-net-cadence_gem-Clean-up-variable-names.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0006-net-cadence_gem-Clean-up-variable-names.patch index c5bf07ef..53453ca9 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0006-net-cadence_gem-Clean-up-variable-names.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0006-net-cadence_gem-Clean-up-variable-names.patch | |||
@@ -1,7 +1,10 @@ | |||
1 | From 67513395caa586a2f6bc79e3791e26a129e6ec1c Mon Sep 17 00:00:00 2001 | 1 | From 7c37c0a33c598fe0dcb015aa4d48712e33e21a8b Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:45 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:14 -0700 |
4 | Subject: [PATCH 06/15] net: cadence_gem: Clean up variable names | 4 | Subject: [PATCH 06/15] net: cadence_gem: Clean up variable names |
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
5 | 8 | ||
6 | In preparation for migrating the state struct and type cast macro to a public | 9 | In preparation for migrating the state struct and type cast macro to a public |
7 | header. The acronym "GEM" on it's own is not specific enough to be used in a | 10 | header. The acronym "GEM" on it's own is not specific enough to be used in a |
@@ -9,9 +12,11 @@ more global namespace so preface with "cadence". Fix the capitalisation of | |||
9 | "gem" in the state type while touching the typename. Also preface the | 12 | "gem" in the state type while touching the typename. Also preface the |
10 | GEM_MAXREG macro as this will need to migrate to public header. | 13 | GEM_MAXREG macro as this will need to migrate to public header. |
11 | 14 | ||
15 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
16 | Reviewed-by: Alex Bennée <alex.bennee@linaro.org> | ||
12 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 17 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
13 | --- | 18 | --- |
14 | hw/net/cadence_gem.c | 70 ++++++++++++++++++++++++++-------------------------- | 19 | hw/net/cadence_gem.c | 70 +++++++++++++++++++++++++------------------------- |
15 | 1 file changed, 35 insertions(+), 35 deletions(-) | 20 | 1 file changed, 35 insertions(+), 35 deletions(-) |
16 | 21 | ||
17 | diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c | 22 | diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c |
@@ -260,5 +265,5 @@ index 55b6293..5994306 100644 | |||
260 | }; | 265 | }; |
261 | 266 | ||
262 | -- | 267 | -- |
263 | 2.1.1 | 268 | 1.7.10.4 |
264 | 269 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0007-net-cadence_gem-Split-state-struct-and-type-into-hea.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0007-net-cadence_gem-Split-state-struct-and-type-into-hea.patch index be4b30cf..e468563b 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0007-net-cadence_gem-Split-state-struct-and-type-into-hea.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0007-net-cadence_gem-Split-state-struct-and-type-into-hea.patch | |||
@@ -1,16 +1,17 @@ | |||
1 | From 3acfa69c02afc5c8f84c4e5b528a18959ddd8c1b Mon Sep 17 00:00:00 2001 | 1 | From 9f9cd8a67975d0973bf5d0dd0bdf6e0bff168774 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:46 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:15 -0700 |
4 | Subject: [PATCH 07/15] net: cadence_gem: Split state struct and type into | 4 | Subject: [PATCH 07/15] net: cadence_gem: Split state struct and type into |
5 | header | 5 | header |
6 | 6 | ||
7 | To allow using the device with modern SoC programming conventions. The | 7 | To allow using the device with modern SoC programming conventions. The |
8 | state struct needs to be visible to embed the device in SoC containers. | 8 | state struct needs to be visible to embed the device in SoC containers. |
9 | 9 | ||
10 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
10 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 11 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
11 | --- | 12 | --- |
12 | hw/net/cadence_gem.c | 43 +------------------------------------- | 13 | hw/net/cadence_gem.c | 43 +----------------------------------- |
13 | include/hw/net/cadence_gem.h | 49 ++++++++++++++++++++++++++++++++++++++++++++ | 14 | include/hw/net/cadence_gem.h | 49 ++++++++++++++++++++++++++++++++++++++++++ |
14 | 2 files changed, 50 insertions(+), 42 deletions(-) | 15 | 2 files changed, 50 insertions(+), 42 deletions(-) |
15 | create mode 100644 include/hw/net/cadence_gem.h | 16 | create mode 100644 include/hw/net/cadence_gem.h |
16 | 17 | ||
@@ -84,7 +85,7 @@ index 5994306..dafe914 100644 | |||
84 | 85 | ||
85 | diff --git a/include/hw/net/cadence_gem.h b/include/hw/net/cadence_gem.h | 86 | diff --git a/include/hw/net/cadence_gem.h b/include/hw/net/cadence_gem.h |
86 | new file mode 100644 | 87 | new file mode 100644 |
87 | index 0000000..e6413ff | 88 | index 0000000..12de820 |
88 | --- /dev/null | 89 | --- /dev/null |
89 | +++ b/include/hw/net/cadence_gem.h | 90 | +++ b/include/hw/net/cadence_gem.h |
90 | @@ -0,0 +1,49 @@ | 91 | @@ -0,0 +1,49 @@ |
@@ -101,8 +102,8 @@ index 0000000..e6413ff | |||
101 | +typedef struct CadenceGEMState { | 102 | +typedef struct CadenceGEMState { |
102 | + /*< private >*/ | 103 | + /*< private >*/ |
103 | + SysBusDevice parent_obj; | 104 | + SysBusDevice parent_obj; |
104 | + /*< public >*/ | ||
105 | + | 105 | + |
106 | + /*< public >*/ | ||
106 | + MemoryRegion iomem; | 107 | + MemoryRegion iomem; |
107 | + NICState *nic; | 108 | + NICState *nic; |
108 | + NICConf conf; | 109 | + NICConf conf; |
@@ -138,5 +139,5 @@ index 0000000..e6413ff | |||
138 | +#define CADENCE_GEM_H_ | 139 | +#define CADENCE_GEM_H_ |
139 | +#endif | 140 | +#endif |
140 | -- | 141 | -- |
141 | 2.1.1 | 142 | 1.7.10.4 |
142 | 143 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0008-arm-xilinx-zynq-mp-Add-GEM-support.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0008-arm-xilinx-zynqmp-Add-GEM-support.patch index 0cb42127..9441f609 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0008-arm-xilinx-zynq-mp-Add-GEM-support.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0008-arm-xilinx-zynqmp-Add-GEM-support.patch | |||
@@ -1,56 +1,56 @@ | |||
1 | From eed690e857579901b4571a250af0259e5051692f Mon Sep 17 00:00:00 2001 | 1 | From 5f3d79a3b5ede9d2da63dded227f7cdf44e7d476 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:48 -0800 | 3 | Date: Wed, 18 Feb 2015 18:56:37 -0800 |
4 | Subject: [PATCH 08/15] arm: xilinx-zynq-mp: Add GEM support | 4 | Subject: [PATCH 08/15] arm: xilinx-zynqmp: Add GEM support |
5 | 5 | ||
6 | There are 4x Cadence GEMs in Zynq MP. Add them. | 6 | There are 4x Cadence GEMs in ZynqMP. Add them. |
7 | 7 | ||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
9 | --- | 9 | --- |
10 | hw/arm/xlnx-zynq-mp.c | 32 ++++++++++++++++++++++++++++++++ | 10 | hw/arm/xlnx-zynqmp.c | 32 ++++++++++++++++++++++++++++++++ |
11 | include/hw/arm/xlnx-zynq-mp.h | 3 +++ | 11 | include/hw/arm/xlnx-zynqmp.h | 3 +++ |
12 | 2 files changed, 35 insertions(+) | 12 | 2 files changed, 35 insertions(+) |
13 | 13 | ||
14 | diff --git a/hw/arm/xlnx-zynq-mp.c b/hw/arm/xlnx-zynq-mp.c | 14 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c |
15 | index be82a66..2ef57d9 100644 | 15 | index 29954f5..d8c648d 100644 |
16 | --- a/hw/arm/xlnx-zynq-mp.c | 16 | --- a/hw/arm/xlnx-zynqmp.c |
17 | +++ b/hw/arm/xlnx-zynq-mp.c | 17 | +++ b/hw/arm/xlnx-zynqmp.c |
18 | @@ -25,6 +25,14 @@ | 18 | @@ -25,6 +25,14 @@ |
19 | #define GIC_DIST_ADDR 0xf9010000 | 19 | #define GIC_DIST_ADDR 0xf9010000 |
20 | #define GIC_CPU_ADDR 0xf9020000 | 20 | #define GIC_CPU_ADDR 0xf9020000 |
21 | 21 | ||
22 | +static const uint64_t gem_addr[XLNX_ZYNQ_MP_NUM_GEMS] = { | 22 | +static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { |
23 | + 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, | 23 | + 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, |
24 | +}; | 24 | +}; |
25 | + | 25 | + |
26 | +static const int gem_intr[XLNX_ZYNQ_MP_NUM_GEMS] = { | 26 | +static const int gem_intr[XLNX_ZYNQMP_NUM_GEMS] = { |
27 | + 57, 59, 61, 63, | 27 | + 57, 59, 61, 63, |
28 | +}; | 28 | +}; |
29 | + | 29 | + |
30 | static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index) | 30 | static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index) |
31 | { | 31 | { |
32 | return GIC_NUM_SPI_INTR + cpu_nr * 32 + ppi_index; | 32 | return GIC_NUM_SPI_INTR + cpu_nr * 32 + ppi_index; |
33 | @@ -43,6 +51,11 @@ static void xlnx_zynq_mp_init(Object *obj) | 33 | @@ -44,6 +52,11 @@ static void xlnx_zynqmp_init(Object *obj) |
34 | 34 | ||
35 | object_initialize(&s->gic, sizeof(s->gic), TYPE_ARM_GIC); | 35 | object_initialize(&s->gic, sizeof(s->gic), TYPE_ARM_GIC); |
36 | qdev_set_parent_bus(DEVICE(&s->gic), sysbus_get_default()); | 36 | qdev_set_parent_bus(DEVICE(&s->gic), sysbus_get_default()); |
37 | + | 37 | + |
38 | + for (i = 0; i < XLNX_ZYNQ_MP_NUM_GEMS; i++) { | 38 | + for (i = 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) { |
39 | + object_initialize(&s->gem[i], sizeof(s->gem[i]), TYPE_CADENCE_GEM); | 39 | + object_initialize(&s->gem[i], sizeof(s->gem[i]), TYPE_CADENCE_GEM); |
40 | + qdev_set_parent_bus(DEVICE(&s->gem[i]), sysbus_get_default()); | 40 | + qdev_set_parent_bus(DEVICE(&s->gem[i]), sysbus_get_default()); |
41 | + } | 41 | + } |
42 | } | 42 | } |
43 | 43 | ||
44 | #define ERR_PROP_CHECK_RETURN(err, errp) do { \ | 44 | #define ERR_PROP_CHECK_RETURN(err, errp) do { \ |
45 | @@ -56,6 +69,7 @@ static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | 45 | @@ -57,6 +70,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) |
46 | { | 46 | { |
47 | XlnxZynqMPState *s = XLNX_ZYNQ_MP(dev); | 47 | XlnxZynqMPState *s = XLNX_ZYNQMP(dev); |
48 | uint8_t i; | 48 | uint8_t i; |
49 | + qemu_irq gic_spi[GIC_NUM_SPI_INTR]; | 49 | + qemu_irq gic_spi[GIC_NUM_SPI_INTR]; |
50 | Error *err = NULL; | 50 | Error *err = NULL; |
51 | 51 | ||
52 | qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", GIC_NUM_SPI_INTR + 32); | 52 | qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", GIC_NUM_SPI_INTR + 32); |
53 | @@ -81,6 +95,24 @@ static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | 53 | @@ -82,6 +96,24 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) |
54 | arm_gic_ppi_index(i, ARM_VIRT_TIMER_PPI)); | 54 | arm_gic_ppi_index(i, ARM_VIRT_TIMER_PPI)); |
55 | qdev_connect_gpio_out(DEVICE(&s->cpu[i]), 1, irq); | 55 | qdev_connect_gpio_out(DEVICE(&s->cpu[i]), 1, irq); |
56 | } | 56 | } |
@@ -59,7 +59,7 @@ index be82a66..2ef57d9 100644 | |||
59 | + gic_spi[i] = qdev_get_gpio_in(DEVICE(&s->gic), i); | 59 | + gic_spi[i] = qdev_get_gpio_in(DEVICE(&s->gic), i); |
60 | + } | 60 | + } |
61 | + | 61 | + |
62 | + for (i = 0; i < XLNX_ZYNQ_MP_NUM_GEMS; i++) { | 62 | + for (i = 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) { |
63 | + NICInfo *nd = &nd_table[i]; | 63 | + NICInfo *nd = &nd_table[i]; |
64 | + | 64 | + |
65 | + if (nd->used) { | 65 | + if (nd->used) { |
@@ -74,34 +74,34 @@ index be82a66..2ef57d9 100644 | |||
74 | + } | 74 | + } |
75 | } | 75 | } |
76 | 76 | ||
77 | static void xlnx_zynq_mp_class_init(ObjectClass *oc, void *data) | 77 | static void xlnx_zynqmp_class_init(ObjectClass *oc, void *data) |
78 | diff --git a/include/hw/arm/xlnx-zynq-mp.h b/include/hw/arm/xlnx-zynq-mp.h | 78 | diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h |
79 | index 22b2af0..470503c 100644 | 79 | index d29c7de..12a1be1 100644 |
80 | --- a/include/hw/arm/xlnx-zynq-mp.h | 80 | --- a/include/hw/arm/xlnx-zynqmp.h |
81 | +++ b/include/hw/arm/xlnx-zynq-mp.h | 81 | +++ b/include/hw/arm/xlnx-zynqmp.h |
82 | @@ -3,12 +3,14 @@ | 82 | @@ -3,12 +3,14 @@ |
83 | #include "qemu-common.h" | 83 | #include "qemu-common.h" |
84 | #include "hw/arm/arm.h" | 84 | #include "hw/arm/arm.h" |
85 | #include "hw/intc/arm_gic.h" | 85 | #include "hw/intc/arm_gic.h" |
86 | +#include "hw/net/cadence_gem.h" | 86 | +#include "hw/net/cadence_gem.h" |
87 | 87 | ||
88 | #define TYPE_XLNX_ZYNQ_MP "xlnx,zynq-mp" | 88 | #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" |
89 | #define XLNX_ZYNQ_MP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ | 89 | #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ |
90 | TYPE_XLNX_ZYNQ_MP) | 90 | TYPE_XLNX_ZYNQMP) |
91 | 91 | ||
92 | #define XLNX_ZYNQ_MP_NUM_CPUS 4 | 92 | #define XLNX_ZYNQMP_NUM_CPUS 4 |
93 | +#define XLNX_ZYNQ_MP_NUM_GEMS 4 | 93 | +#define XLNX_ZYNQMP_NUM_GEMS 4 |
94 | 94 | ||
95 | typedef struct XlnxZynqMPState { | 95 | typedef struct XlnxZynqMPState { |
96 | /*< private >*/ | 96 | /*< private >*/ |
97 | @@ -17,6 +19,7 @@ typedef struct XlnxZynqMPState { | 97 | @@ -17,6 +19,7 @@ typedef struct XlnxZynqMPState { |
98 | 98 | ||
99 | ARMCPU cpu[XLNX_ZYNQ_MP_NUM_CPUS]; | 99 | ARMCPU cpu[XLNX_ZYNQMP_NUM_CPUS]; |
100 | GICState gic; | 100 | GICState gic; |
101 | + CadenceGEMState gem[XLNX_ZYNQ_MP_NUM_GEMS]; | 101 | + CadenceGEMState gem[XLNX_ZYNQMP_NUM_GEMS]; |
102 | } XlnxZynqMPState; | 102 | } XlnxZynqMPState; |
103 | 103 | ||
104 | #define XLNX_ZYNQ_MP_H_ | 104 | #define XLNX_ZYNQMP_H_ |
105 | -- | 105 | -- |
106 | 2.1.1 | 106 | 1.7.10.4 |
107 | 107 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0009-char-cadence_uart-Clean-up-variable-names.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0009-char-cadence_uart-Clean-up-variable-names.patch index b864f470..d94b23ad 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0009-char-cadence_uart-Clean-up-variable-names.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0009-char-cadence_uart-Clean-up-variable-names.patch | |||
@@ -1,6 +1,6 @@ | |||
1 | From 246128b68939e7cede11cf60cffbbc194e7643ed Mon Sep 17 00:00:00 2001 | 1 | From 7f5e56c8f0a8393b9cb930883059d873802338c6 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:49 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:16 -0700 |
4 | Subject: [PATCH 09/15] char: cadence_uart: Clean up variable names | 4 | Subject: [PATCH 09/15] char: cadence_uart: Clean up variable names |
5 | 5 | ||
6 | In preparation for migrating the state struct and type cast macro to a public | 6 | In preparation for migrating the state struct and type cast macro to a public |
@@ -10,13 +10,14 @@ more global namespace so preface with "cadence". Fix the capitalisation of | |||
10 | used by the state struct itself with CADENCE_UART so they don't conflict | 10 | used by the state struct itself with CADENCE_UART so they don't conflict |
11 | in namespace either. | 11 | in namespace either. |
12 | 12 | ||
13 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
13 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 14 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
14 | --- | 15 | --- |
15 | hw/char/cadence_uart.c | 100 ++++++++++++++++++++++++++----------------------- | 16 | hw/char/cadence_uart.c | 102 +++++++++++++++++++++++++----------------------- |
16 | 1 file changed, 53 insertions(+), 47 deletions(-) | 17 | 1 file changed, 54 insertions(+), 48 deletions(-) |
17 | 18 | ||
18 | diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c | 19 | diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c |
19 | index 7044b35..23f548d 100644 | 20 | index d145378..4a4d3eb 100644 |
20 | --- a/hw/char/cadence_uart.c | 21 | --- a/hw/char/cadence_uart.c |
21 | +++ b/hw/char/cadence_uart.c | 22 | +++ b/hw/char/cadence_uart.c |
22 | @@ -85,8 +85,8 @@ | 23 | @@ -85,8 +85,8 @@ |
@@ -271,14 +272,23 @@ index 7044b35..23f548d 100644 | |||
271 | s->r[R_IMR] = 0; | 272 | s->r[R_IMR] = 0; |
272 | @@ -478,7 +482,7 @@ static void cadence_uart_reset(DeviceState *dev) | 273 | @@ -478,7 +482,7 @@ static void cadence_uart_reset(DeviceState *dev) |
273 | 274 | ||
274 | static int cadence_uart_init(SysBusDevice *dev) | 275 | static void cadence_uart_realize(DeviceState *dev, Error **errp) |
275 | { | 276 | { |
276 | - UartState *s = CADENCE_UART(dev); | 277 | - UartState *s = CADENCE_UART(dev); |
277 | + CadenceUARTState *s = CADENCE_UART(dev); | 278 | + CadenceUARTState *s = CADENCE_UART(dev); |
278 | 279 | ||
279 | memory_region_init_io(&s->iomem, OBJECT(s), &uart_ops, s, "uart", 0x1000); | 280 | s->fifo_trigger_handle = timer_new_ns(QEMU_CLOCK_VIRTUAL, |
280 | sysbus_init_mmio(dev, &s->iomem); | 281 | fifo_trigger_update, s); |
281 | @@ -501,7 +505,7 @@ static int cadence_uart_init(SysBusDevice *dev) | 282 | @@ -495,7 +499,7 @@ static void cadence_uart_realize(DeviceState *dev, Error **errp) |
283 | static void cadence_uart_init(Object *obj) | ||
284 | { | ||
285 | SysBusDevice *sbd = SYS_BUS_DEVICE(obj); | ||
286 | - UartState *s = CADENCE_UART(obj); | ||
287 | + CadenceUARTState *s = CADENCE_UART(obj); | ||
288 | |||
289 | memory_region_init_io(&s->iomem, obj, &uart_ops, s, "uart", 0x1000); | ||
290 | sysbus_init_mmio(sbd, &s->iomem); | ||
291 | @@ -506,7 +510,7 @@ static void cadence_uart_init(Object *obj) | ||
282 | 292 | ||
283 | static int cadence_uart_post_load(void *opaque, int version_id) | 293 | static int cadence_uart_post_load(void *opaque, int version_id) |
284 | { | 294 | { |
@@ -287,7 +297,7 @@ index 7044b35..23f548d 100644 | |||
287 | 297 | ||
288 | uart_parameters_setup(s); | 298 | uart_parameters_setup(s); |
289 | uart_update_status(s); | 299 | uart_update_status(s); |
290 | @@ -514,13 +518,15 @@ static const VMStateDescription vmstate_cadence_uart = { | 300 | @@ -519,13 +523,15 @@ static const VMStateDescription vmstate_cadence_uart = { |
291 | .minimum_version_id = 2, | 301 | .minimum_version_id = 2, |
292 | .post_load = cadence_uart_post_load, | 302 | .post_load = cadence_uart_post_load, |
293 | .fields = (VMStateField[]) { | 303 | .fields = (VMStateField[]) { |
@@ -310,15 +320,15 @@ index 7044b35..23f548d 100644 | |||
310 | VMSTATE_END_OF_LIST() | 320 | VMSTATE_END_OF_LIST() |
311 | } | 321 | } |
312 | }; | 322 | }; |
313 | @@ -538,7 +544,7 @@ static void cadence_uart_class_init(ObjectClass *klass, void *data) | 323 | @@ -544,7 +550,7 @@ static void cadence_uart_class_init(ObjectClass *klass, void *data) |
314 | static const TypeInfo cadence_uart_info = { | 324 | static const TypeInfo cadence_uart_info = { |
315 | .name = TYPE_CADENCE_UART, | 325 | .name = TYPE_CADENCE_UART, |
316 | .parent = TYPE_SYS_BUS_DEVICE, | 326 | .parent = TYPE_SYS_BUS_DEVICE, |
317 | - .instance_size = sizeof(UartState), | 327 | - .instance_size = sizeof(UartState), |
318 | + .instance_size = sizeof(CadenceUARTState), | 328 | + .instance_size = sizeof(CadenceUARTState), |
329 | .instance_init = cadence_uart_init, | ||
319 | .class_init = cadence_uart_class_init, | 330 | .class_init = cadence_uart_class_init, |
320 | }; | 331 | }; |
321 | |||
322 | -- | 332 | -- |
323 | 2.1.1 | 333 | 1.7.10.4 |
324 | 334 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0010-char-cadence_uart-Split-state-struct-and-type-into-h.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0010-char-cadence_uart-Split-state-struct-and-type-into-h.patch index 6fe3f98a..e56aed88 100644 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0010-char-cadence_uart-Split-state-struct-and-type-into-h.patch +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0010-char-cadence_uart-Split-state-struct-and-type-into-h.patch | |||
@@ -1,21 +1,22 @@ | |||
1 | From 33e66004378aa203562e5b051282c1a7ffb8ee3b Mon Sep 17 00:00:00 2001 | 1 | From f50fc4d6e1ee32e47f0f9cd6b8b98aa754ced588 Mon Sep 17 00:00:00 2001 |
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
3 | Date: Mon, 23 Feb 2015 15:04:50 -0800 | 3 | Date: Mon, 23 Mar 2015 04:05:16 -0700 |
4 | Subject: [PATCH 10/15] char: cadence_uart: Split state struct and type into | 4 | Subject: [PATCH 10/15] char: cadence_uart: Split state struct and type into |
5 | header | 5 | header |
6 | 6 | ||
7 | To allow using the device with modern SoC programming conventions. The | 7 | To allow using the device with modern SoC programming conventions. The |
8 | state struct needs to be visible to embed the device in SoC containers. | 8 | state struct needs to be visible to embed the device in SoC containers. |
9 | 9 | ||
10 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
10 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | 11 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> |
11 | --- | 12 | --- |
12 | hw/char/cadence_uart.c | 29 +---------------------------- | 13 | hw/char/cadence_uart.c | 29 +---------------------------- |
13 | include/hw/char/cadence_uart.h | 35 +++++++++++++++++++++++++++++++++++ | 14 | include/hw/char/cadence_uart.h | 35 +++++++++++++++++++++++++++++++++++ |
14 | 2 files changed, 36 insertions(+), 28 deletions(-) | 15 | 2 files changed, 36 insertions(+), 28 deletions(-) |
15 | create mode 100644 include/hw/char/cadence_uart.h | 16 | create mode 100644 include/hw/char/cadence_uart.h |
16 | 17 | ||
17 | diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c | 18 | diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c |
18 | index 23f548d..4509e01 100644 | 19 | index 4a4d3eb..9d379e5 100644 |
19 | --- a/hw/char/cadence_uart.c | 20 | --- a/hw/char/cadence_uart.c |
20 | +++ b/hw/char/cadence_uart.c | 21 | +++ b/hw/char/cadence_uart.c |
21 | @@ -16,9 +16,7 @@ | 22 | @@ -16,9 +16,7 @@ |
@@ -70,7 +71,7 @@ index 23f548d..4509e01 100644 | |||
70 | { | 71 | { |
71 | diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h | 72 | diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h |
72 | new file mode 100644 | 73 | new file mode 100644 |
73 | index 0000000..0404785 | 74 | index 0000000..3456d4c |
74 | --- /dev/null | 75 | --- /dev/null |
75 | +++ b/include/hw/char/cadence_uart.h | 76 | +++ b/include/hw/char/cadence_uart.h |
76 | @@ -0,0 +1,35 @@ | 77 | @@ -0,0 +1,35 @@ |
@@ -92,8 +93,8 @@ index 0000000..0404785 | |||
92 | +typedef struct { | 93 | +typedef struct { |
93 | + /*< private >*/ | 94 | + /*< private >*/ |
94 | + SysBusDevice parent_obj; | 95 | + SysBusDevice parent_obj; |
95 | + /*< public >*/ | ||
96 | + | 96 | + |
97 | + /*< public >*/ | ||
97 | + MemoryRegion iomem; | 98 | + MemoryRegion iomem; |
98 | + uint32_t r[CADENCE_UART_R_MAX]; | 99 | + uint32_t r[CADENCE_UART_R_MAX]; |
99 | + uint8_t rx_fifo[CADENCE_UART_RX_FIFO_SIZE]; | 100 | + uint8_t rx_fifo[CADENCE_UART_RX_FIFO_SIZE]; |
@@ -110,5 +111,5 @@ index 0000000..0404785 | |||
110 | +#define CADENCE_UART_H_ | 111 | +#define CADENCE_UART_H_ |
111 | +#endif | 112 | +#endif |
112 | -- | 113 | -- |
113 | 2.1.1 | 114 | 1.7.10.4 |
114 | 115 | ||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0011-arm-xilinx-zynq-mp-Add-UART-support.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0011-arm-xilinx-zynq-mp-Add-UART-support.patch deleted file mode 100644 index 166aa129..00000000 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0011-arm-xilinx-zynq-mp-Add-UART-support.patch +++ /dev/null | |||
@@ -1,90 +0,0 @@ | |||
1 | From ef634b1cf1766a5798868d1299a9a4ae2e87bcc9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Feb 2015 15:04:51 -0800 | ||
4 | Subject: [PATCH 11/15] arm: xilinx-zynq-mp: Add UART support | ||
5 | |||
6 | There are 2x Cadence UARTSs in Zynq MP. Add them. | ||
7 | |||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
9 | --- | ||
10 | hw/arm/xlnx-zynq-mp.c | 21 +++++++++++++++++++++ | ||
11 | include/hw/arm/xlnx-zynq-mp.h | 3 +++ | ||
12 | 2 files changed, 24 insertions(+) | ||
13 | |||
14 | diff --git a/hw/arm/xlnx-zynq-mp.c b/hw/arm/xlnx-zynq-mp.c | ||
15 | index 2ef57d9..9d7e834 100644 | ||
16 | --- a/hw/arm/xlnx-zynq-mp.c | ||
17 | +++ b/hw/arm/xlnx-zynq-mp.c | ||
18 | @@ -33,6 +33,14 @@ static const int gem_intr[XLNX_ZYNQ_MP_NUM_GEMS] = { | ||
19 | 57, 59, 61, 63, | ||
20 | }; | ||
21 | |||
22 | +static const uint64_t uart_addr[XLNX_ZYNQ_MP_NUM_UARTS] = { | ||
23 | + 0xFF000000, 0xFF010000, | ||
24 | +}; | ||
25 | + | ||
26 | +static const int uart_intr[XLNX_ZYNQ_MP_NUM_UARTS] = { | ||
27 | + 21, 22, | ||
28 | +}; | ||
29 | + | ||
30 | static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index) | ||
31 | { | ||
32 | return GIC_NUM_SPI_INTR + cpu_nr * 32 + ppi_index; | ||
33 | @@ -56,6 +64,11 @@ static void xlnx_zynq_mp_init(Object *obj) | ||
34 | object_initialize(&s->gem[i], sizeof(s->gem[i]), TYPE_CADENCE_GEM); | ||
35 | qdev_set_parent_bus(DEVICE(&s->gem[i]), sysbus_get_default()); | ||
36 | } | ||
37 | + | ||
38 | + for (i = 0; i < XLNX_ZYNQ_MP_NUM_UARTS; i++) { | ||
39 | + object_initialize(&s->uart[i], sizeof(s->uart[i]), TYPE_CADENCE_UART); | ||
40 | + qdev_set_parent_bus(DEVICE(&s->uart[i]), sysbus_get_default()); | ||
41 | + } | ||
42 | } | ||
43 | |||
44 | #define ERR_PROP_CHECK_RETURN(err, errp) do { \ | ||
45 | @@ -113,6 +126,14 @@ static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | ||
46 | sysbus_connect_irq(SYS_BUS_DEVICE(&s->gem[i]), 0, | ||
47 | gic_spi[gem_intr[i]]); | ||
48 | } | ||
49 | + | ||
50 | + for (i = 0; i < XLNX_ZYNQ_MP_NUM_UARTS; i++) { | ||
51 | + object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &err); | ||
52 | + ERR_PROP_CHECK_RETURN(err, errp); | ||
53 | + sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, uart_addr[i]); | ||
54 | + sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0, | ||
55 | + gic_spi[uart_intr[i]]); | ||
56 | + } | ||
57 | } | ||
58 | |||
59 | static void xlnx_zynq_mp_class_init(ObjectClass *oc, void *data) | ||
60 | diff --git a/include/hw/arm/xlnx-zynq-mp.h b/include/hw/arm/xlnx-zynq-mp.h | ||
61 | index 470503c..c4ee658 100644 | ||
62 | --- a/include/hw/arm/xlnx-zynq-mp.h | ||
63 | +++ b/include/hw/arm/xlnx-zynq-mp.h | ||
64 | @@ -4,6 +4,7 @@ | ||
65 | #include "hw/arm/arm.h" | ||
66 | #include "hw/intc/arm_gic.h" | ||
67 | #include "hw/net/cadence_gem.h" | ||
68 | +#include "hw/char/cadence_uart.h" | ||
69 | |||
70 | #define TYPE_XLNX_ZYNQ_MP "xlnx,zynq-mp" | ||
71 | #define XLNX_ZYNQ_MP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ | ||
72 | @@ -11,6 +12,7 @@ | ||
73 | |||
74 | #define XLNX_ZYNQ_MP_NUM_CPUS 4 | ||
75 | #define XLNX_ZYNQ_MP_NUM_GEMS 4 | ||
76 | +#define XLNX_ZYNQ_MP_NUM_UARTS 2 | ||
77 | |||
78 | typedef struct XlnxZynqMPState { | ||
79 | /*< private >*/ | ||
80 | @@ -20,6 +22,7 @@ typedef struct XlnxZynqMPState { | ||
81 | ARMCPU cpu[XLNX_ZYNQ_MP_NUM_CPUS]; | ||
82 | GICState gic; | ||
83 | CadenceGEMState gem[XLNX_ZYNQ_MP_NUM_GEMS]; | ||
84 | + CadenceUARTState uart[XLNX_ZYNQ_MP_NUM_UARTS]; | ||
85 | } XlnxZynqMPState; | ||
86 | |||
87 | #define XLNX_ZYNQ_MP_H_ | ||
88 | -- | ||
89 | 2.1.1 | ||
90 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0011-arm-xilinx-zynqmp-Add-UART-support.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0011-arm-xilinx-zynqmp-Add-UART-support.patch new file mode 100644 index 00000000..ccf86cf7 --- /dev/null +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0011-arm-xilinx-zynqmp-Add-UART-support.patch | |||
@@ -0,0 +1,91 @@ | |||
1 | From d35149eea398ca20d0c1ec382e9fce5e2c229ce0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Wed, 18 Feb 2015 18:56:37 -0800 | ||
4 | Subject: [PATCH 11/15] arm: xilinx-zynqmp: Add UART support | ||
5 | |||
6 | There are 2x Cadence UARTs in Zynq MP. Add them. | ||
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 | 21 +++++++++++++++++++++ | ||
12 | include/hw/arm/xlnx-zynqmp.h | 3 +++ | ||
13 | 2 files changed, 24 insertions(+) | ||
14 | |||
15 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c | ||
16 | index d8c648d..e015025 100644 | ||
17 | --- a/hw/arm/xlnx-zynqmp.c | ||
18 | +++ b/hw/arm/xlnx-zynqmp.c | ||
19 | @@ -33,6 +33,14 @@ static const int gem_intr[XLNX_ZYNQMP_NUM_GEMS] = { | ||
20 | 57, 59, 61, 63, | ||
21 | }; | ||
22 | |||
23 | +static const uint64_t uart_addr[XLNX_ZYNQMP_NUM_UARTS] = { | ||
24 | + 0xFF000000, 0xFF010000, | ||
25 | +}; | ||
26 | + | ||
27 | +static const int uart_intr[XLNX_ZYNQMP_NUM_UARTS] = { | ||
28 | + 21, 22, | ||
29 | +}; | ||
30 | + | ||
31 | static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index) | ||
32 | { | ||
33 | return GIC_NUM_SPI_INTR + cpu_nr * 32 + ppi_index; | ||
34 | @@ -57,6 +65,11 @@ static void xlnx_zynqmp_init(Object *obj) | ||
35 | object_initialize(&s->gem[i], sizeof(s->gem[i]), TYPE_CADENCE_GEM); | ||
36 | qdev_set_parent_bus(DEVICE(&s->gem[i]), sysbus_get_default()); | ||
37 | } | ||
38 | + | ||
39 | + for (i = 0; i < XLNX_ZYNQMP_NUM_UARTS; i++) { | ||
40 | + object_initialize(&s->uart[i], sizeof(s->uart[i]), TYPE_CADENCE_UART); | ||
41 | + qdev_set_parent_bus(DEVICE(&s->uart[i]), sysbus_get_default()); | ||
42 | + } | ||
43 | } | ||
44 | |||
45 | #define ERR_PROP_CHECK_RETURN(err, errp) do { \ | ||
46 | @@ -114,6 +127,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) | ||
47 | sysbus_connect_irq(SYS_BUS_DEVICE(&s->gem[i]), 0, | ||
48 | gic_spi[gem_intr[i]]); | ||
49 | } | ||
50 | + | ||
51 | + for (i = 0; i < XLNX_ZYNQMP_NUM_UARTS; i++) { | ||
52 | + object_property_set_bool(OBJECT(&s->uart[i]), true, "realized", &err); | ||
53 | + ERR_PROP_CHECK_RETURN(err, errp); | ||
54 | + sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, uart_addr[i]); | ||
55 | + sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0, | ||
56 | + gic_spi[uart_intr[i]]); | ||
57 | + } | ||
58 | } | ||
59 | |||
60 | static void xlnx_zynqmp_class_init(ObjectClass *oc, void *data) | ||
61 | diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h | ||
62 | index 12a1be1..62d8d3f 100644 | ||
63 | --- a/include/hw/arm/xlnx-zynqmp.h | ||
64 | +++ b/include/hw/arm/xlnx-zynqmp.h | ||
65 | @@ -4,6 +4,7 @@ | ||
66 | #include "hw/arm/arm.h" | ||
67 | #include "hw/intc/arm_gic.h" | ||
68 | #include "hw/net/cadence_gem.h" | ||
69 | +#include "hw/char/cadence_uart.h" | ||
70 | |||
71 | #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" | ||
72 | #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ | ||
73 | @@ -11,6 +12,7 @@ | ||
74 | |||
75 | #define XLNX_ZYNQMP_NUM_CPUS 4 | ||
76 | #define XLNX_ZYNQMP_NUM_GEMS 4 | ||
77 | +#define XLNX_ZYNQMP_NUM_UARTS 2 | ||
78 | |||
79 | typedef struct XlnxZynqMPState { | ||
80 | /*< private >*/ | ||
81 | @@ -20,6 +22,7 @@ typedef struct XlnxZynqMPState { | ||
82 | ARMCPU cpu[XLNX_ZYNQMP_NUM_CPUS]; | ||
83 | GICState gic; | ||
84 | CadenceGEMState gem[XLNX_ZYNQMP_NUM_GEMS]; | ||
85 | + CadenceUARTState uart[XLNX_ZYNQMP_NUM_UARTS]; | ||
86 | } XlnxZynqMPState; | ||
87 | |||
88 | #define XLNX_ZYNQMP_H_ | ||
89 | -- | ||
90 | 1.7.10.4 | ||
91 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0012-arm-Add-xilinx-zynq-mp-generic-machine.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0012-arm-Add-xilinx-zynq-mp-generic-machine.patch deleted file mode 100644 index 4dbcc495..00000000 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0012-arm-Add-xilinx-zynq-mp-generic-machine.patch +++ /dev/null | |||
@@ -1,87 +0,0 @@ | |||
1 | From 48860a59e9fe23da638dde9c47a3665466ceefae Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Feb 2015 15:04:52 -0800 | ||
4 | Subject: [PATCH 12/15] arm: Add xilinx-zynq-mp-generic machine | ||
5 | |||
6 | Add a generic machine for the Xilinx Zynq MP SoC. This is a minimal | ||
7 | machine that exposes the capabilities of the raw SoC as a usable | ||
8 | machine. | ||
9 | |||
10 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
11 | --- | ||
12 | hw/arm/Makefile.objs | 2 +- | ||
13 | hw/arm/xlnx-zynq-mp-generic.c | 52 +++++++++++++++++++++++++++++++++++++++++++ | ||
14 | 2 files changed, 53 insertions(+), 1 deletion(-) | ||
15 | create mode 100644 hw/arm/xlnx-zynq-mp-generic.c | ||
16 | |||
17 | diff --git a/hw/arm/Makefile.objs b/hw/arm/Makefile.objs | ||
18 | index 9bf072b..776fbe3 100644 | ||
19 | --- a/hw/arm/Makefile.objs | ||
20 | +++ b/hw/arm/Makefile.objs | ||
21 | @@ -8,4 +8,4 @@ obj-y += armv7m.o exynos4210.o pxa2xx.o pxa2xx_gpio.o pxa2xx_pic.o | ||
22 | obj-$(CONFIG_DIGIC) += digic.o | ||
23 | obj-y += omap1.o omap2.o strongarm.o | ||
24 | obj-$(CONFIG_ALLWINNER_A10) += allwinner-a10.o cubieboard.o | ||
25 | -obj-$(CONFIG_XLNX_ZYNQ_MP) += xlnx-zynq-mp.o | ||
26 | +obj-$(CONFIG_XLNX_ZYNQ_MP) += xlnx-zynq-mp.o xlnx-zynq-mp-generic.o | ||
27 | diff --git a/hw/arm/xlnx-zynq-mp-generic.c b/hw/arm/xlnx-zynq-mp-generic.c | ||
28 | new file mode 100644 | ||
29 | index 0000000..ff69b07 | ||
30 | --- /dev/null | ||
31 | +++ b/hw/arm/xlnx-zynq-mp-generic.c | ||
32 | @@ -0,0 +1,52 @@ | ||
33 | +#/* | ||
34 | + * Xilinx Zynq MPSoC emulation | ||
35 | + * | ||
36 | + * Copyright (C) 2015 Xilinx Inc | ||
37 | + * Written by Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
38 | + * | ||
39 | + * This program is free software; you can redistribute it and/or modify it | ||
40 | + * under the terms of the GNU General Public License as published by the | ||
41 | + * Free Software Foundation; either version 2 of the License, or | ||
42 | + * (at your option) any later version. | ||
43 | + * | ||
44 | + * This program is distributed in the hope that it will be useful, but WITHOUT | ||
45 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
46 | + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
47 | + * for more details. | ||
48 | + */ | ||
49 | + | ||
50 | +#include "hw/arm/xlnx-zynq-mp.h" | ||
51 | +#include "hw/boards.h" | ||
52 | +#include "qemu/error-report.h" | ||
53 | + | ||
54 | +typedef struct XlnxZynqMPGeneric { | ||
55 | + XlnxZynqMPState soc; | ||
56 | +} XlnxZynqMPGeneric; | ||
57 | + | ||
58 | +static void xlnx_zynq_mp_generic_init(MachineState *machine) | ||
59 | +{ | ||
60 | + XlnxZynqMPGeneric *s = g_new0(XlnxZynqMPGeneric, 1); | ||
61 | + Error *err = NULL; | ||
62 | + | ||
63 | + object_initialize(&s->soc, sizeof(s->soc), TYPE_XLNX_ZYNQ_MP); | ||
64 | + object_property_add_child(OBJECT(machine), "soc", OBJECT(&s->soc), NULL); | ||
65 | + | ||
66 | + object_property_set_bool(OBJECT(&s->soc), true, "realized", &err); | ||
67 | + if (err) { | ||
68 | + error_report("%s", error_get_pretty(err)); | ||
69 | + exit(1); | ||
70 | + } | ||
71 | +} | ||
72 | + | ||
73 | +static QEMUMachine xlnx_zynq_mp_generic_machine = { | ||
74 | + .name = "xlnx-zynq-mp-generic", | ||
75 | + .desc = "Xilinx Zynq MP SoC generic machine", | ||
76 | + .init = xlnx_zynq_mp_generic_init, | ||
77 | +}; | ||
78 | + | ||
79 | +static void xlnx_zynq_mp_generic_machine_init(void) | ||
80 | +{ | ||
81 | + qemu_register_machine(&xlnx_zynq_mp_generic_machine); | ||
82 | +} | ||
83 | + | ||
84 | +machine_init(xlnx_zynq_mp_generic_machine_init); | ||
85 | -- | ||
86 | 2.1.1 | ||
87 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0012-arm-Add-xlnx-ep108-machine.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0012-arm-Add-xlnx-ep108-machine.patch new file mode 100644 index 00000000..4c7d05aa --- /dev/null +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0012-arm-Add-xlnx-ep108-machine.patch | |||
@@ -0,0 +1,87 @@ | |||
1 | From 0b9dbaa31007d9d7ef8bafcdcb756ffdcc591e03 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Mar 2015 04:05:17 -0700 | ||
4 | Subject: [PATCH 12/15] arm: Add xlnx-ep108 machine | ||
5 | |||
6 | Add a machine model for the Xilinx ZynqMP SoC EP108 board. | ||
7 | |||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
9 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
10 | --- | ||
11 | hw/arm/Makefile.objs | 2 +- | ||
12 | hw/arm/xlnx-ep108.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
13 | 2 files changed, 54 insertions(+), 1 deletion(-) | ||
14 | create mode 100644 hw/arm/xlnx-ep108.c | ||
15 | |||
16 | diff --git a/hw/arm/Makefile.objs b/hw/arm/Makefile.objs | ||
17 | index d7cd5f4..a75a182 100644 | ||
18 | --- a/hw/arm/Makefile.objs | ||
19 | +++ b/hw/arm/Makefile.objs | ||
20 | @@ -10,4 +10,4 @@ obj-$(CONFIG_DIGIC) += digic.o | ||
21 | obj-y += omap1.o omap2.o strongarm.o | ||
22 | obj-$(CONFIG_ALLWINNER_A10) += allwinner-a10.o cubieboard.o | ||
23 | obj-$(CONFIG_STM32F205_SOC) += stm32f205_soc.o | ||
24 | -obj-$(CONFIG_XLNX_ZYNQMP) += xlnx-zynqmp.o | ||
25 | +obj-$(CONFIG_XLNX_ZYNQMP) += xlnx-zynqmp.o xlnx-ep108.o | ||
26 | diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c | ||
27 | new file mode 100644 | ||
28 | index 0000000..81704bb | ||
29 | --- /dev/null | ||
30 | +++ b/hw/arm/xlnx-ep108.c | ||
31 | @@ -0,0 +1,53 @@ | ||
32 | +/* | ||
33 | + * Xilinx ZynqMP EP108 board | ||
34 | + * | ||
35 | + * Copyright (C) 2015 Xilinx Inc | ||
36 | + * Written by Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
37 | + * | ||
38 | + * This program is free software; you can redistribute it and/or modify it | ||
39 | + * under the terms of the GNU General Public License as published by the | ||
40 | + * Free Software Foundation; either version 2 of the License, or | ||
41 | + * (at your option) any later version. | ||
42 | + * | ||
43 | + * This program is distributed in the hope that it will be useful, but WITHOUT | ||
44 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
45 | + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
46 | + * for more details. | ||
47 | + */ | ||
48 | + | ||
49 | +#include "hw/arm/xlnx-zynqmp.h" | ||
50 | +#include "hw/boards.h" | ||
51 | +#include "qemu/error-report.h" | ||
52 | + | ||
53 | +typedef struct XlnxEP108 { | ||
54 | + XlnxZynqMPState soc; | ||
55 | +} XlnxEP108; | ||
56 | + | ||
57 | +static void xlnx_ep108_init(MachineState *machine) | ||
58 | +{ | ||
59 | + XlnxEP108 *s = g_new0(XlnxEP108, 1); | ||
60 | + Error *err = NULL; | ||
61 | + | ||
62 | + object_initialize(&s->soc, sizeof(s->soc), TYPE_XLNX_ZYNQMP); | ||
63 | + object_property_add_child(OBJECT(machine), "soc", OBJECT(&s->soc), | ||
64 | + &error_abort); | ||
65 | + | ||
66 | + object_property_set_bool(OBJECT(&s->soc), true, "realized", &err); | ||
67 | + if (err) { | ||
68 | + error_report("%s", error_get_pretty(err)); | ||
69 | + exit(1); | ||
70 | + } | ||
71 | +} | ||
72 | + | ||
73 | +static QEMUMachine xlnx_ep108_machine = { | ||
74 | + .name = "xlnx-ep108", | ||
75 | + .desc = "Xilinx ZynqMP EP108 board", | ||
76 | + .init = xlnx_ep108_init, | ||
77 | +}; | ||
78 | + | ||
79 | +static void xlnx_ep108_machine_init(void) | ||
80 | +{ | ||
81 | + qemu_register_machine(&xlnx_ep108_machine); | ||
82 | +} | ||
83 | + | ||
84 | +machine_init(xlnx_ep108_machine_init); | ||
85 | -- | ||
86 | 1.7.10.4 | ||
87 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0013-arm-xilinx-ep108-Add-external-RAM.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0013-arm-xilinx-ep108-Add-external-RAM.patch new file mode 100644 index 00000000..2030048e --- /dev/null +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0013-arm-xilinx-ep108-Add-external-RAM.patch | |||
@@ -0,0 +1,60 @@ | |||
1 | From 7c16af47e2ec33043ca0ef924232c9eef9dc60c4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Mar 2015 04:05:18 -0700 | ||
4 | Subject: [PATCH 13/15] arm: xilinx-ep108: Add external RAM | ||
5 | |||
6 | Zynq MPSoC supports external DDR RAM. Add a RAM at 0 to the model. | ||
7 | |||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
9 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
10 | --- | ||
11 | hw/arm/xlnx-ep108.c | 21 +++++++++++++++++++++ | ||
12 | 1 file changed, 21 insertions(+) | ||
13 | |||
14 | diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c | ||
15 | index 81704bb..6e89456 100644 | ||
16 | --- a/hw/arm/xlnx-ep108.c | ||
17 | +++ b/hw/arm/xlnx-ep108.c | ||
18 | @@ -18,11 +18,16 @@ | ||
19 | #include "hw/arm/xlnx-zynqmp.h" | ||
20 | #include "hw/boards.h" | ||
21 | #include "qemu/error-report.h" | ||
22 | +#include "exec/address-spaces.h" | ||
23 | |||
24 | typedef struct XlnxEP108 { | ||
25 | XlnxZynqMPState soc; | ||
26 | + MemoryRegion ddr_ram; | ||
27 | } XlnxEP108; | ||
28 | |||
29 | +/* Max 2GB RAM */ | ||
30 | +#define EP108_MAX_RAM_SIZE 0x80000000ull | ||
31 | + | ||
32 | static void xlnx_ep108_init(MachineState *machine) | ||
33 | { | ||
34 | XlnxEP108 *s = g_new0(XlnxEP108, 1); | ||
35 | @@ -37,6 +42,22 @@ static void xlnx_ep108_init(MachineState *machine) | ||
36 | error_report("%s", error_get_pretty(err)); | ||
37 | exit(1); | ||
38 | } | ||
39 | + | ||
40 | + if (machine->ram_size > EP108_MAX_RAM_SIZE) { | ||
41 | + error_report("WARNING: RAM size " RAM_ADDR_FMT " above max supported, " | ||
42 | + "reduced to %llx", machine->ram_size, EP108_MAX_RAM_SIZE); | ||
43 | + machine->ram_size = EP108_MAX_RAM_SIZE; | ||
44 | + } | ||
45 | + | ||
46 | + if (machine->ram_size <= 0x08000000) { | ||
47 | + error_report("WARNING: RAM size " RAM_ADDR_FMT " is small for EP108\n", | ||
48 | + machine->ram_size); | ||
49 | + } | ||
50 | + | ||
51 | + memory_region_init_ram(&s->ddr_ram, NULL, "ddr-ram", machine->ram_size, | ||
52 | + &error_abort); | ||
53 | + vmstate_register_ram_global(&s->ddr_ram); | ||
54 | + memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram); | ||
55 | } | ||
56 | |||
57 | static QEMUMachine xlnx_ep108_machine = { | ||
58 | -- | ||
59 | 1.7.10.4 | ||
60 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0013-arm-xilinx-zynq-mp-generic-Add-external-RAM.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0013-arm-xilinx-zynq-mp-generic-Add-external-RAM.patch deleted file mode 100644 index 0af560de..00000000 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0013-arm-xilinx-zynq-mp-generic-Add-external-RAM.patch +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | From 0b155ff9a1e19f2b4ed4324e822285d3a667f02a Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Feb 2015 15:04:53 -0800 | ||
4 | Subject: [PATCH 13/15] arm: xilinx-zynq-mp-generic: Add external RAM | ||
5 | |||
6 | Zynq MPSoC supports external DDR RAM. Add a RAM at 0 to the model. | ||
7 | |||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
9 | --- | ||
10 | hw/arm/xlnx-zynq-mp-generic.c | 7 +++++++ | ||
11 | 1 file changed, 7 insertions(+) | ||
12 | |||
13 | diff --git a/hw/arm/xlnx-zynq-mp-generic.c b/hw/arm/xlnx-zynq-mp-generic.c | ||
14 | index ff69b07..7394e82 100644 | ||
15 | --- a/hw/arm/xlnx-zynq-mp-generic.c | ||
16 | +++ b/hw/arm/xlnx-zynq-mp-generic.c | ||
17 | @@ -18,9 +18,11 @@ | ||
18 | #include "hw/arm/xlnx-zynq-mp.h" | ||
19 | #include "hw/boards.h" | ||
20 | #include "qemu/error-report.h" | ||
21 | +#include "exec/address-spaces.h" | ||
22 | |||
23 | typedef struct XlnxZynqMPGeneric { | ||
24 | XlnxZynqMPState soc; | ||
25 | + MemoryRegion ddr_ram; | ||
26 | } XlnxZynqMPGeneric; | ||
27 | |||
28 | static void xlnx_zynq_mp_generic_init(MachineState *machine) | ||
29 | @@ -36,6 +38,11 @@ static void xlnx_zynq_mp_generic_init(MachineState *machine) | ||
30 | error_report("%s", error_get_pretty(err)); | ||
31 | exit(1); | ||
32 | } | ||
33 | + | ||
34 | + memory_region_init_ram(&s->ddr_ram, NULL, "ddr-ram", machine->ram_size, | ||
35 | + &error_abort); | ||
36 | + vmstate_register_ram_global(&s->ddr_ram); | ||
37 | + memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram); | ||
38 | } | ||
39 | |||
40 | static QEMUMachine xlnx_zynq_mp_generic_machine = { | ||
41 | -- | ||
42 | 2.1.1 | ||
43 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0014-arm-xilinx-ep108-Add-bootloading.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0014-arm-xilinx-ep108-Add-bootloading.patch new file mode 100644 index 00000000..1a9a8a8f --- /dev/null +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0014-arm-xilinx-ep108-Add-bootloading.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 409477e2655e2169c5dd38de8cec00c863869670 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Mar 2015 04:05:18 -0700 | ||
4 | Subject: [PATCH 14/15] arm: xilinx-ep108: Add bootloading | ||
5 | |||
6 | Using standard ARM bootloader. | ||
7 | |||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
9 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
10 | --- | ||
11 | hw/arm/xlnx-ep108.c | 8 ++++++++ | ||
12 | 1 file changed, 8 insertions(+) | ||
13 | |||
14 | diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c | ||
15 | index 6e89456..a86f595 100644 | ||
16 | --- a/hw/arm/xlnx-ep108.c | ||
17 | +++ b/hw/arm/xlnx-ep108.c | ||
18 | @@ -28,6 +28,8 @@ typedef struct XlnxEP108 { | ||
19 | /* Max 2GB RAM */ | ||
20 | #define EP108_MAX_RAM_SIZE 0x80000000ull | ||
21 | |||
22 | +static struct arm_boot_info xlnx_ep108_binfo; | ||
23 | + | ||
24 | static void xlnx_ep108_init(MachineState *machine) | ||
25 | { | ||
26 | XlnxEP108 *s = g_new0(XlnxEP108, 1); | ||
27 | @@ -58,6 +60,12 @@ static void xlnx_ep108_init(MachineState *machine) | ||
28 | &error_abort); | ||
29 | vmstate_register_ram_global(&s->ddr_ram); | ||
30 | memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram); | ||
31 | + | ||
32 | + xlnx_ep108_binfo.ram_size = machine->ram_size; | ||
33 | + xlnx_ep108_binfo.kernel_filename = machine->kernel_filename; | ||
34 | + xlnx_ep108_binfo.kernel_cmdline = machine->kernel_cmdline; | ||
35 | + xlnx_ep108_binfo.initrd_filename = machine->initrd_filename; | ||
36 | + arm_load_kernel(&s->soc.cpu[0], &xlnx_ep108_binfo); | ||
37 | } | ||
38 | |||
39 | static QEMUMachine xlnx_ep108_machine = { | ||
40 | -- | ||
41 | 1.7.10.4 | ||
42 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0014-arm-xilinx-zynq-mp-generic-Add-bootloading.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0014-arm-xilinx-zynq-mp-generic-Add-bootloading.patch deleted file mode 100644 index 9c551bff..00000000 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0014-arm-xilinx-zynq-mp-generic-Add-bootloading.patch +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | From 8ef4b6e8f95d99dcee6ae1bae92f24cd05d1ff3a Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Feb 2015 15:04:54 -0800 | ||
4 | Subject: [PATCH 14/15] arm: xilinx-zynq-mp-generic: Add bootloading | ||
5 | |||
6 | Using standard ARM bootloader. | ||
7 | |||
8 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
9 | --- | ||
10 | hw/arm/xlnx-zynq-mp-generic.c | 8 ++++++++ | ||
11 | 1 file changed, 8 insertions(+) | ||
12 | |||
13 | diff --git a/hw/arm/xlnx-zynq-mp-generic.c b/hw/arm/xlnx-zynq-mp-generic.c | ||
14 | index 7394e82..a86f10d 100644 | ||
15 | --- a/hw/arm/xlnx-zynq-mp-generic.c | ||
16 | +++ b/hw/arm/xlnx-zynq-mp-generic.c | ||
17 | @@ -25,6 +25,8 @@ typedef struct XlnxZynqMPGeneric { | ||
18 | MemoryRegion ddr_ram; | ||
19 | } XlnxZynqMPGeneric; | ||
20 | |||
21 | +static struct arm_boot_info xlnx_zynq_mp_generic_binfo; | ||
22 | + | ||
23 | static void xlnx_zynq_mp_generic_init(MachineState *machine) | ||
24 | { | ||
25 | XlnxZynqMPGeneric *s = g_new0(XlnxZynqMPGeneric, 1); | ||
26 | @@ -43,6 +45,12 @@ static void xlnx_zynq_mp_generic_init(MachineState *machine) | ||
27 | &error_abort); | ||
28 | vmstate_register_ram_global(&s->ddr_ram); | ||
29 | memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram); | ||
30 | + | ||
31 | + xlnx_zynq_mp_generic_binfo.ram_size = machine->ram_size; | ||
32 | + xlnx_zynq_mp_generic_binfo.kernel_filename = machine->kernel_filename; | ||
33 | + xlnx_zynq_mp_generic_binfo.kernel_cmdline = machine->kernel_cmdline; | ||
34 | + xlnx_zynq_mp_generic_binfo.initrd_filename = machine->initrd_filename; | ||
35 | + arm_load_kernel(&s->soc.cpu[0], &xlnx_zynq_mp_generic_binfo); | ||
36 | } | ||
37 | |||
38 | static QEMUMachine xlnx_zynq_mp_generic_machine = { | ||
39 | -- | ||
40 | 2.1.1 | ||
41 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0015-arm-xlnx-zynq-mp-Add-PSCI-setup.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0015-arm-xlnx-zynq-mp-Add-PSCI-setup.patch deleted file mode 100644 index e145e4b4..00000000 --- a/recipes-devtools/qemu/qemu-zynqmp-mainline/0015-arm-xlnx-zynq-mp-Add-PSCI-setup.patch +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | From 97287cf7c4f7550d298c0ef11dde88ee91c209a3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Feb 2015 15:04:55 -0800 | ||
4 | Subject: [PATCH 15/15] arm: xlnx-zynq-mp: Add PSCI setup | ||
5 | |||
6 | Use SMC PSCI, with the standard policy of secondaries starting in | ||
7 | power-off. | ||
8 | |||
9 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
10 | --- | ||
11 | hw/arm/xlnx-zynq-mp.c | 8 ++++++++ | ||
12 | 1 file changed, 8 insertions(+) | ||
13 | |||
14 | diff --git a/hw/arm/xlnx-zynq-mp.c b/hw/arm/xlnx-zynq-mp.c | ||
15 | index 9d7e834..0952221 100644 | ||
16 | --- a/hw/arm/xlnx-zynq-mp.c | ||
17 | +++ b/hw/arm/xlnx-zynq-mp.c | ||
18 | @@ -96,6 +96,14 @@ static void xlnx_zynq_mp_realize(DeviceState *dev, Error **errp) | ||
19 | for (i = 0; i < XLNX_ZYNQ_MP_NUM_CPUS; i++) { | ||
20 | qemu_irq irq; | ||
21 | |||
22 | + object_property_set_int(OBJECT(&s->cpu[i]), QEMU_PSCI_CONDUIT_SMC, | ||
23 | + "psci-conduit", NULL); | ||
24 | + if (i > 0) { | ||
25 | + /* Secondary CPUs start in PSCI powered-down state */ | ||
26 | + object_property_set_bool(OBJECT(&s->cpu[i]), true, | ||
27 | + "start-powered-off", NULL); | ||
28 | + } | ||
29 | + | ||
30 | object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); | ||
31 | ERR_PROP_CHECK_RETURN(err, errp); | ||
32 | |||
33 | -- | ||
34 | 2.1.1 | ||
35 | |||
diff --git a/recipes-devtools/qemu/qemu-zynqmp-mainline/0015-arm-xlnx-zynqmp-Add-PSCI-setup.patch b/recipes-devtools/qemu/qemu-zynqmp-mainline/0015-arm-xlnx-zynqmp-Add-PSCI-setup.patch new file mode 100644 index 00000000..20b9b827 --- /dev/null +++ b/recipes-devtools/qemu/qemu-zynqmp-mainline/0015-arm-xlnx-zynqmp-Add-PSCI-setup.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From 5c6a101203322028e91586736b4f6e3c5ecc7d09 Mon Sep 17 00:00:00 2001 | ||
2 | From: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
3 | Date: Mon, 23 Mar 2015 04:05:19 -0700 | ||
4 | Subject: [PATCH 15/15] arm: xlnx-zynqmp: Add PSCI setup | ||
5 | |||
6 | Use SMC PSCI, with the standard policy of secondaries starting in | ||
7 | power-off. | ||
8 | |||
9 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
10 | Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> | ||
11 | --- | ||
12 | hw/arm/xlnx-zynqmp.c | 8 ++++++++ | ||
13 | 1 file changed, 8 insertions(+) | ||
14 | |||
15 | diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c | ||
16 | index e015025..0265fba 100644 | ||
17 | --- a/hw/arm/xlnx-zynqmp.c | ||
18 | +++ b/hw/arm/xlnx-zynqmp.c | ||
19 | @@ -97,6 +97,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) | ||
20 | for (i = 0; i < XLNX_ZYNQMP_NUM_CPUS; i++) { | ||
21 | qemu_irq irq; | ||
22 | |||
23 | + object_property_set_int(OBJECT(&s->cpu[i]), QEMU_PSCI_CONDUIT_SMC, | ||
24 | + "psci-conduit", &error_abort); | ||
25 | + if (i > 0) { | ||
26 | + /* Secondary CPUs start in PSCI powered-down state */ | ||
27 | + object_property_set_bool(OBJECT(&s->cpu[i]), true, | ||
28 | + "start-powered-off", &error_abort); | ||
29 | + } | ||
30 | + | ||
31 | object_property_set_bool(OBJECT(&s->cpu[i]), true, "realized", &err); | ||
32 | ERR_PROP_CHECK_RETURN(err, errp); | ||
33 | |||
34 | -- | ||
35 | 1.7.10.4 | ||
36 | |||
diff --git a/recipes-devtools/qemu/qemu_zynqmp.bb b/recipes-devtools/qemu/qemu_zynqmp.bb index 040147ec..679fc755 100644 --- a/recipes-devtools/qemu/qemu_zynqmp.bb +++ b/recipes-devtools/qemu/qemu_zynqmp.bb | |||
@@ -1,5 +1,8 @@ | |||
1 | require recipes-devtools/qemu/qemu.inc | 1 | require recipes-devtools/qemu/qemu.inc |
2 | 2 | ||
3 | # glx no longer valid config option | ||
4 | PACKAGECONFIG[glx] = "" | ||
5 | |||
3 | DEFAULT_PREFERENCE = "-1" | 6 | DEFAULT_PREFERENCE = "-1" |
4 | 7 | ||
5 | LIC_FILES_CHKSUM = " \ | 8 | LIC_FILES_CHKSUM = " \ |
@@ -7,7 +10,7 @@ LIC_FILES_CHKSUM = " \ | |||
7 | file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913 \ | 10 | file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913 \ |
8 | " | 11 | " |
9 | 12 | ||
10 | SRCREV = "cd2d5541271f1934345d8ca42f5fafff1744eee7" | 13 | SRCREV = "f2a581010cb8e3a2564a45a2863a33a732cc2fc7" |
11 | 14 | ||
12 | PV = "2.2.0+master+zynqmp+git${SRCPV}" | 15 | PV = "2.2.0+master+zynqmp+git${SRCPV}" |
13 | 16 | ||
@@ -22,18 +25,18 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/qemu-zynqmp-mainline:" | |||
22 | SRC_URI_append += " \ | 25 | SRC_URI_append += " \ |
23 | file://0001-target-arm-cpu64-Factor-out-ARM-cortex-init.patch \ | 26 | file://0001-target-arm-cpu64-Factor-out-ARM-cortex-init.patch \ |
24 | file://0002-target-arm-cpu64-Add-support-for-cortex-a53.patch \ | 27 | file://0002-target-arm-cpu64-Add-support-for-cortex-a53.patch \ |
25 | file://0003-arm-Introduce-Xilinx-Zynq-MPSoC.patch \ | 28 | file://0003-arm-Introduce-Xilinx-ZynqMP-SoC.patch \ |
26 | file://0004-arm-xlnx-zynq-mp-Add-GIC.patch \ | 29 | file://0004-arm-xlnx-zynqmp-Add-GIC.patch \ |
27 | file://0005-arm-xlnx-zynq-mp-Connect-CPU-Timers-to-GIC.patch \ | 30 | file://0005-arm-xlnx-zynqmp-Connect-CPU-Timers-to-GIC.patch \ |
28 | file://0006-net-cadence_gem-Clean-up-variable-names.patch \ | 31 | file://0006-net-cadence_gem-Clean-up-variable-names.patch \ |
29 | file://0007-net-cadence_gem-Split-state-struct-and-type-into-hea.patch \ | 32 | file://0007-net-cadence_gem-Split-state-struct-and-type-into-hea.patch \ |
30 | file://0008-arm-xilinx-zynq-mp-Add-GEM-support.patch \ | 33 | file://0008-arm-xilinx-zynqmp-Add-GEM-support.patch \ |
31 | file://0009-char-cadence_uart-Clean-up-variable-names.patch \ | 34 | file://0009-char-cadence_uart-Clean-up-variable-names.patch \ |
32 | file://0010-char-cadence_uart-Split-state-struct-and-type-into-h.patch \ | 35 | file://0010-char-cadence_uart-Split-state-struct-and-type-into-h.patch \ |
33 | file://0011-arm-xilinx-zynq-mp-Add-UART-support.patch \ | 36 | file://0011-arm-xilinx-zynqmp-Add-UART-support.patch \ |
34 | file://0012-arm-Add-xilinx-zynq-mp-generic-machine.patch \ | 37 | file://0012-arm-Add-xlnx-ep108-machine.patch \ |
35 | file://0013-arm-xilinx-zynq-mp-generic-Add-external-RAM.patch \ | 38 | file://0013-arm-xilinx-ep108-Add-external-RAM.patch \ |
36 | file://0014-arm-xilinx-zynq-mp-generic-Add-bootloading.patch \ | 39 | file://0014-arm-xilinx-ep108-Add-bootloading.patch \ |
37 | file://0015-arm-xlnx-zynq-mp-Add-PSCI-setup.patch \ | 40 | file://0015-arm-xlnx-zynqmp-Add-PSCI-setup.patch \ |
38 | " | 41 | " |
39 | 42 | ||