diff options
author | Bibo Mao <maobibo@loongson.cn> | 2025-01-07 11:08:13 +0800 |
---|---|---|
committer | Bibo Mao <maobibo@loongson.cn> | 2025-01-15 14:19:21 +0800 |
commit | 59c54c1ceb1d84cb48d27a5b26d6f21cb76ee9e1 (patch) | |
tree | 02027db6847a9750d0b20823141cfa78072d74dc | |
parent | dd291171740871a84c183d886f70b8d2e6a68d09 (diff) | |
download | qemu-59c54c1ceb1d84cb48d27a5b26d6f21cb76ee9e1.zip qemu-59c54c1ceb1d84cb48d27a5b26d6f21cb76ee9e1.tar.gz qemu-59c54c1ceb1d84cb48d27a5b26d6f21cb76ee9e1.tar.bz2 |
hw/intc/loongarch_ipi: Implement realize interface
Add realize interface for loongarch ipi device.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
-rw-r--r-- | hw/intc/loongarch_ipi.c | 19 | ||||
-rw-r--r-- | include/hw/intc/loongarch_ipi.h | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/hw/intc/loongarch_ipi.c b/hw/intc/loongarch_ipi.c index 2ae1a42..4e2f9ac 100644 --- a/hw/intc/loongarch_ipi.c +++ b/hw/intc/loongarch_ipi.c @@ -7,6 +7,7 @@ #include "qemu/osdep.h" #include "hw/boards.h" +#include "qapi/error.h" #include "hw/intc/loongarch_ipi.h" #include "target/loongarch/cpu.h" @@ -49,10 +50,26 @@ static CPUState *loongarch_cpu_by_arch_id(int64_t arch_id) return NULL; } +static void loongarch_ipi_realize(DeviceState *dev, Error **errp) +{ + LoongarchIPIClass *lic = LOONGARCH_IPI_GET_CLASS(dev); + Error *local_err = NULL; + + lic->parent_realize(dev, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } +} + static void loongarch_ipi_class_init(ObjectClass *klass, void *data) { LoongsonIPICommonClass *licc = LOONGSON_IPI_COMMON_CLASS(klass); + LoongarchIPIClass *lic = LOONGARCH_IPI_CLASS(klass); + DeviceClass *dc = DEVICE_CLASS(klass); + device_class_set_parent_realize(dc, loongarch_ipi_realize, + &lic->parent_realize); licc->get_iocsr_as = get_iocsr_as; licc->cpu_by_arch_id = loongarch_cpu_by_arch_id; } @@ -61,6 +78,8 @@ static const TypeInfo loongarch_ipi_types[] = { { .name = TYPE_LOONGARCH_IPI, .parent = TYPE_LOONGSON_IPI_COMMON, + .instance_size = sizeof(LoongarchIPIState), + .class_size = sizeof(LoongarchIPIClass), .class_init = loongarch_ipi_class_init, } }; diff --git a/include/hw/intc/loongarch_ipi.h b/include/hw/intc/loongarch_ipi.h index 276b304..923bf21 100644 --- a/include/hw/intc/loongarch_ipi.h +++ b/include/hw/intc/loongarch_ipi.h @@ -20,6 +20,7 @@ struct LoongarchIPIState { struct LoongarchIPIClass { LoongsonIPICommonClass parent_class; + DeviceRealize parent_realize; }; #endif |