Message ID | 20201212001537.24520-9-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/ppc: Convert UIC device to QOM | expand |
On Sat, Dec 12, 2020 at 12:15:37AM +0000, Peter Maydell wrote: > Now we've converted all the callsites to directly create the QOM UIC > device themselves, the ppcuic_init() function is unused and can be > removed. The enum defining PPCUIC symbolic constants can be moved > to the ppc-uic.h header where it more naturally belongs. Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Tested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > include/hw/intc/ppc-uic.h | 7 +++++++ > include/hw/ppc/ppc4xx.h | 9 --------- > hw/ppc/ppc4xx_devs.c | 38 -------------------------------------- > 3 files changed, 7 insertions(+), 47 deletions(-) > > diff --git a/include/hw/intc/ppc-uic.h b/include/hw/intc/ppc-uic.h > index e614e2ffd80..22dd5e5ac2c 100644 > --- a/include/hw/intc/ppc-uic.h > +++ b/include/hw/intc/ppc-uic.h > @@ -47,6 +47,13 @@ OBJECT_DECLARE_SIMPLE_TYPE(PPCUIC, PPC_UIC) > > #define UIC_MAX_IRQ 32 > > +/* Symbolic constants for the sysbus IRQ outputs */ > +enum { > + PPCUIC_OUTPUT_INT = 0, > + PPCUIC_OUTPUT_CINT = 1, > + PPCUIC_OUTPUT_NB, > +}; > + > struct PPCUIC { > /*< private >*/ > SysBusDevice parent_obj; > diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h > index cc19c8da5be..980f964b5a9 100644 > --- a/include/hw/ppc/ppc4xx.h > +++ b/include/hw/ppc/ppc4xx.h > @@ -33,15 +33,6 @@ PowerPCCPU *ppc4xx_init(const char *cpu_model, > clk_setup_t *cpu_clk, clk_setup_t *tb_clk, > uint32_t sysclk); > > -/* PowerPC 4xx universal interrupt controller */ > -enum { > - PPCUIC_OUTPUT_INT = 0, > - PPCUIC_OUTPUT_CINT = 1, > - PPCUIC_OUTPUT_NB, > -}; > -qemu_irq *ppcuic_init (CPUPPCState *env, qemu_irq *irqs, > - uint32_t dcr_base, int has_ssr, int has_vr); > - > void ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, > MemoryRegion ram_memories[], > hwaddr ram_bases[], hwaddr ram_sizes[], > diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c > index ffe4cf43e88..fe9d4f7155e 100644 > --- a/hw/ppc/ppc4xx_devs.c > +++ b/hw/ppc/ppc4xx_devs.c > @@ -77,44 +77,6 @@ PowerPCCPU *ppc4xx_init(const char *cpu_type, > return cpu; > } > > -/*****************************************************************************/ > -/* "Universal" Interrupt controller */ > - > -qemu_irq *ppcuic_init (CPUPPCState *env, qemu_irq *irqs, > - uint32_t dcr_base, int has_ssr, int has_vr) > -{ > - DeviceState *uicdev = qdev_new(TYPE_PPC_UIC); > - SysBusDevice *uicsbd = SYS_BUS_DEVICE(uicdev); > - qemu_irq *uic_irqs; > - int i; > - > - qdev_prop_set_uint32(uicdev, "dcr-base", dcr_base); > - qdev_prop_set_bit(uicdev, "use-vectors", has_vr); > - object_property_set_link(OBJECT(uicdev), "cpu", OBJECT(env_cpu(env)), > - &error_fatal); > - sysbus_realize_and_unref(uicsbd, &error_fatal); > - > - sysbus_connect_irq(uicsbd, PPCUIC_OUTPUT_INT, irqs[PPCUIC_OUTPUT_INT]); > - sysbus_connect_irq(uicsbd, PPCUIC_OUTPUT_CINT, irqs[PPCUIC_OUTPUT_CINT]); > - > - /* > - * Return an allocated array of the UIC's input IRQ lines. > - * This is an ugly temporary API to retain compatibility with > - * the ppcuic_init() interface from the pre-QOM-conversion UIC. > - * None of the callers free this array, so it is leaked -- but > - * so was the array allocated by qemu_allocate_irqs() in the > - * old code. > - * > - * The callers should just instantiate the UIC and wire it up > - * themselves rather than passing qemu_irq* in and out of this function. > - */ > - uic_irqs = g_new0(qemu_irq, UIC_MAX_IRQ); > - for (i = 0; i < UIC_MAX_IRQ; i++) { > - uic_irqs[i] = qdev_get_gpio_in(uicdev, i); > - } > - return uic_irqs; > -} > - > /*****************************************************************************/ > /* SDRAM controller */ > typedef struct ppc4xx_sdram_t ppc4xx_sdram_t; > -- > 2.20.1 >
diff --git a/include/hw/intc/ppc-uic.h b/include/hw/intc/ppc-uic.h index e614e2ffd80..22dd5e5ac2c 100644 --- a/include/hw/intc/ppc-uic.h +++ b/include/hw/intc/ppc-uic.h @@ -47,6 +47,13 @@ OBJECT_DECLARE_SIMPLE_TYPE(PPCUIC, PPC_UIC) #define UIC_MAX_IRQ 32 +/* Symbolic constants for the sysbus IRQ outputs */ +enum { + PPCUIC_OUTPUT_INT = 0, + PPCUIC_OUTPUT_CINT = 1, + PPCUIC_OUTPUT_NB, +}; + struct PPCUIC { /*< private >*/ SysBusDevice parent_obj; diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h index cc19c8da5be..980f964b5a9 100644 --- a/include/hw/ppc/ppc4xx.h +++ b/include/hw/ppc/ppc4xx.h @@ -33,15 +33,6 @@ PowerPCCPU *ppc4xx_init(const char *cpu_model, clk_setup_t *cpu_clk, clk_setup_t *tb_clk, uint32_t sysclk); -/* PowerPC 4xx universal interrupt controller */ -enum { - PPCUIC_OUTPUT_INT = 0, - PPCUIC_OUTPUT_CINT = 1, - PPCUIC_OUTPUT_NB, -}; -qemu_irq *ppcuic_init (CPUPPCState *env, qemu_irq *irqs, - uint32_t dcr_base, int has_ssr, int has_vr); - void ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, MemoryRegion ram_memories[], hwaddr ram_bases[], hwaddr ram_sizes[], diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c index ffe4cf43e88..fe9d4f7155e 100644 --- a/hw/ppc/ppc4xx_devs.c +++ b/hw/ppc/ppc4xx_devs.c @@ -77,44 +77,6 @@ PowerPCCPU *ppc4xx_init(const char *cpu_type, return cpu; } -/*****************************************************************************/ -/* "Universal" Interrupt controller */ - -qemu_irq *ppcuic_init (CPUPPCState *env, qemu_irq *irqs, - uint32_t dcr_base, int has_ssr, int has_vr) -{ - DeviceState *uicdev = qdev_new(TYPE_PPC_UIC); - SysBusDevice *uicsbd = SYS_BUS_DEVICE(uicdev); - qemu_irq *uic_irqs; - int i; - - qdev_prop_set_uint32(uicdev, "dcr-base", dcr_base); - qdev_prop_set_bit(uicdev, "use-vectors", has_vr); - object_property_set_link(OBJECT(uicdev), "cpu", OBJECT(env_cpu(env)), - &error_fatal); - sysbus_realize_and_unref(uicsbd, &error_fatal); - - sysbus_connect_irq(uicsbd, PPCUIC_OUTPUT_INT, irqs[PPCUIC_OUTPUT_INT]); - sysbus_connect_irq(uicsbd, PPCUIC_OUTPUT_CINT, irqs[PPCUIC_OUTPUT_CINT]); - - /* - * Return an allocated array of the UIC's input IRQ lines. - * This is an ugly temporary API to retain compatibility with - * the ppcuic_init() interface from the pre-QOM-conversion UIC. - * None of the callers free this array, so it is leaked -- but - * so was the array allocated by qemu_allocate_irqs() in the - * old code. - * - * The callers should just instantiate the UIC and wire it up - * themselves rather than passing qemu_irq* in and out of this function. - */ - uic_irqs = g_new0(qemu_irq, UIC_MAX_IRQ); - for (i = 0; i < UIC_MAX_IRQ; i++) { - uic_irqs[i] = qdev_get_gpio_in(uicdev, i); - } - return uic_irqs; -} - /*****************************************************************************/ /* SDRAM controller */ typedef struct ppc4xx_sdram_t ppc4xx_sdram_t;
Now we've converted all the callsites to directly create the QOM UIC device themselves, the ppcuic_init() function is unused and can be removed. The enum defining PPCUIC symbolic constants can be moved to the ppc-uic.h header where it more naturally belongs. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- include/hw/intc/ppc-uic.h | 7 +++++++ include/hw/ppc/ppc4xx.h | 9 --------- hw/ppc/ppc4xx_devs.c | 38 -------------------------------------- 3 files changed, 7 insertions(+), 47 deletions(-)