Message ID | 20210827210417.4022054-2-pdel@fb.com |
---|---|
State | New |
Headers | show |
Series | hw/arm/aspeed: Add fuji machine type | expand |
Just noticed, I forgot to initialize get_irq for the AST2500. I didn’t notice it because I hadn’t tested booting an image for -machine ast2500-evb. I’ll make sure to test with images for all 3 chip revisions, then I’ll resubmit with PATCH v2. I’ll wait a little while though, for comments on the rest of the series. From: pdel@fb.com <pdel@fb.com> Date: Friday, August 27, 2021 at 2:06 PM To: Cc: clg@kaod.org <clg@kaod.org>, joel@jms.id.au <joel@jms.id.au>, qemu-devel@nongnu.org <qemu-devel@nongnu.org>, qemu-arm@nongnu.org <qemu-arm@nongnu.org>, Peter Delevoryas <pdel@fb.com> Subject: [PATCH 1/5] hw/arm/aspeed: Add get_irq to AspeedSoCClass From: Peter Delevoryas <pdel@fb.com> The AST2500 uses different logic than the AST2600 for getting IRQ's. This adds a virtual `get_irq` function to the Aspeed SOC class, so that the shared initialization code in `hw/arm/aspeed.c` can retrieve IRQ's. Signed-off-by: Peter Delevoryas <pdel@fb.com> --- hw/arm/aspeed_ast2600.c | 1 + hw/arm/aspeed_soc.c | 1 + include/hw/arm/aspeed_soc.h | 1 + 3 files changed, 3 insertions(+) diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c index e3013128c6..56e1adb343 100644 --- a/hw/arm/aspeed_ast2600.c +++ b/hw/arm/aspeed_ast2600.c @@ -527,6 +527,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data) sc->irqmap = aspeed_soc_ast2600_irqmap; sc->memmap = aspeed_soc_ast2600_memmap; sc->num_cpus = 2; + sc->get_irq = aspeed_soc_get_irq; } static const TypeInfo aspeed_soc_ast2600_type_info = { diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c index 3ad6c56fa9..c373182299 100644 --- a/hw/arm/aspeed_soc.c +++ b/hw/arm/aspeed_soc.c @@ -476,6 +476,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, void *data) sc->irqmap = aspeed_soc_ast2400_irqmap; sc->memmap = aspeed_soc_ast2400_memmap; sc->num_cpus = 1; + sc->get_irq = aspeed_soc_get_irq; } static const TypeInfo aspeed_soc_ast2400_type_info = { diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h index d9161d26d6..ca16e1e383 100644 --- a/include/hw/arm/aspeed_soc.h +++ b/include/hw/arm/aspeed_soc.h @@ -84,6 +84,7 @@ struct AspeedSoCClass { const int *irqmap; const hwaddr *memmap; uint32_t num_cpus; + qemu_irq (*get_irq)(AspeedSoCState *s, int ctrl); }; -- 2.30.2
Hello Peter, On 8/27/21 11:04 PM, pdel@fb.com wrote: > From: Peter Delevoryas <pdel@fb.com> > > The AST2500 uses different logic than the AST2600 for getting IRQ's. > This adds a virtual `get_irq` function to the Aspeed SOC class, so that > the shared initialization code in `hw/arm/aspeed.c` can retrieve IRQ's. Thanks for this new machine. See my comment on patch 2. We might need to rework the serial initialization which would deprecate this change. C. > Signed-off-by: Peter Delevoryas <pdel@fb.com> > --- > hw/arm/aspeed_ast2600.c | 1 + > hw/arm/aspeed_soc.c | 1 + > include/hw/arm/aspeed_soc.h | 1 + > 3 files changed, 3 insertions(+) > > diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c > index e3013128c6..56e1adb343 100644 > --- a/hw/arm/aspeed_ast2600.c > +++ b/hw/arm/aspeed_ast2600.c > @@ -527,6 +527,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data) > sc->irqmap = aspeed_soc_ast2600_irqmap; > sc->memmap = aspeed_soc_ast2600_memmap; > sc->num_cpus = 2; > + sc->get_irq = aspeed_soc_get_irq; > } > > static const TypeInfo aspeed_soc_ast2600_type_info = { > diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c > index 3ad6c56fa9..c373182299 100644 > --- a/hw/arm/aspeed_soc.c > +++ b/hw/arm/aspeed_soc.c > @@ -476,6 +476,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, void *data) > sc->irqmap = aspeed_soc_ast2400_irqmap; > sc->memmap = aspeed_soc_ast2400_memmap; > sc->num_cpus = 1; > + sc->get_irq = aspeed_soc_get_irq; > } > > static const TypeInfo aspeed_soc_ast2400_type_info = { > diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h > index d9161d26d6..ca16e1e383 100644 > --- a/include/hw/arm/aspeed_soc.h > +++ b/include/hw/arm/aspeed_soc.h > @@ -84,6 +84,7 @@ struct AspeedSoCClass { > const int *irqmap; > const hwaddr *memmap; > uint32_t num_cpus; > + qemu_irq (*get_irq)(AspeedSoCState *s, int ctrl); > }; > > >
diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c index e3013128c6..56e1adb343 100644 --- a/hw/arm/aspeed_ast2600.c +++ b/hw/arm/aspeed_ast2600.c @@ -527,6 +527,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, void *data) sc->irqmap = aspeed_soc_ast2600_irqmap; sc->memmap = aspeed_soc_ast2600_memmap; sc->num_cpus = 2; + sc->get_irq = aspeed_soc_get_irq; } static const TypeInfo aspeed_soc_ast2600_type_info = { diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c index 3ad6c56fa9..c373182299 100644 --- a/hw/arm/aspeed_soc.c +++ b/hw/arm/aspeed_soc.c @@ -476,6 +476,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, void *data) sc->irqmap = aspeed_soc_ast2400_irqmap; sc->memmap = aspeed_soc_ast2400_memmap; sc->num_cpus = 1; + sc->get_irq = aspeed_soc_get_irq; } static const TypeInfo aspeed_soc_ast2400_type_info = { diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h index d9161d26d6..ca16e1e383 100644 --- a/include/hw/arm/aspeed_soc.h +++ b/include/hw/arm/aspeed_soc.h @@ -84,6 +84,7 @@ struct AspeedSoCClass { const int *irqmap; const hwaddr *memmap; uint32_t num_cpus; + qemu_irq (*get_irq)(AspeedSoCState *s, int ctrl); };