@samitouri / QOSamiQemu / commits / b58f5486df

hw/misc/aspeed_scu: convert to use Resettable interface

Replace the legacy reset callback registered via device_class_set_legacy_reset() with the Resettable interface. Signed-off-by: Kane Chen <kane_chen@aspeedtech.com> Reviewed-by: Jamin Lin <jamin_lin@aspeedtech.com> Link: https://lore.kernel.org/qemu-devel/20260525044129.3133916-9-kane_chen@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>

Kane Chen committed May 25, 2026 at 04:41 UTC b58f5486df4a070dfc1ce9c90a91c0682b2381e6
1 file changed +22 -17
hw/misc/aspeed_scu.c
+22 -17
@@ -542,10 +542,10 @@ static uint32_t aspeed_2600_scu_calc_hpll(AspeedSCUState *s, uint32_t hpll_reg)
542 return clkin * multiplier;
543 }
544
545 -static void aspeed_scu_reset(DeviceState *dev)
545 +static void aspeed_scu_reset_hold(Object *obj, ResetType type)
546 {
547 - AspeedSCUState *s = ASPEED_SCU(dev);
548 - AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(dev);
547 + AspeedSCUState *s = ASPEED_SCU(obj);
548 + AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(obj);
549
550 memcpy(s->regs, asc->resets, asc->nr_regs * 4);
551 s->regs[SILICON_REV] = s->silicon_rev;
@@ -616,8 +616,9 @@ static const Property aspeed_scu_properties[] = {
616 static void aspeed_scu_class_init(ObjectClass *klass, const void *data)
617 {
618 DeviceClass *dc = DEVICE_CLASS(klass);
619 + ResettableClass *rc = RESETTABLE_CLASS(klass);
620 dc->realize = aspeed_scu_realize;
620 - device_class_set_legacy_reset(dc, aspeed_scu_reset);
621 + rc->phases.hold = aspeed_scu_reset_hold;
622 dc->desc = "ASPEED System Control Unit";
623 dc->vmsd = &vmstate_aspeed_scu;
624 device_class_set_props(dc, aspeed_scu_properties);
@@ -822,10 +823,10 @@ static const uint32_t ast2600_a3_resets[ASPEED_AST2600_SCU_NR_REGS] = {
823 [AST2600_CHIP_ID1] = 0x88884444,
824 };
825
825 -static void aspeed_ast2600_scu_reset(DeviceState *dev)
826 +static void aspeed_ast2600_scu_reset_hold(Object *obj, ResetType type)
827 {
827 - AspeedSCUState *s = ASPEED_SCU(dev);
828 - AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(dev);
828 + AspeedSCUState *s = ASPEED_SCU(obj);
829 + AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(obj);
830
831 memcpy(s->regs, asc->resets, asc->nr_regs * 4);
832
@@ -844,10 +845,11 @@ static void aspeed_ast2600_scu_reset(DeviceState *dev)
845 static void aspeed_2600_scu_class_init(ObjectClass *klass, const void *data)
846 {
847 DeviceClass *dc = DEVICE_CLASS(klass);
848 + ResettableClass *rc = RESETTABLE_CLASS(klass);
849 AspeedSCUClass *asc = ASPEED_SCU_CLASS(klass);
850
851 dc->desc = "ASPEED 2600 System Control Unit";
850 - device_class_set_legacy_reset(dc, aspeed_ast2600_scu_reset);
852 + rc->phases.hold = aspeed_ast2600_scu_reset_hold;
853 asc->resets = ast2600_a3_resets;
854 asc->calc_hpll = aspeed_2600_scu_calc_hpll;
855 asc->get_apb = aspeed_2600_scu_get_apb_freq;
@@ -950,10 +952,10 @@ static const uint32_t ast2700_a0_resets[ASPEED_AST2700_SCU_NR_REGS] = {
952 [AST2700_SCU_VGA_SCRATCH_0] = 0x00000040,
953 };
954
953 -static void aspeed_ast2700_scu_reset(DeviceState *dev)
955 +static void aspeed_ast2700_scu_reset_hold(Object *obj, ResetType type)
956 {
955 - AspeedSCUState *s = ASPEED_SCU(dev);
956 - AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(dev);
957 + AspeedSCUState *s = ASPEED_SCU(obj);
958 + AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(obj);
959
960 memcpy(s->regs, asc->resets, asc->nr_regs * 4);
961 s->regs[AST2700_SILICON_REV] = s->silicon_rev;
@@ -963,10 +965,11 @@ static void aspeed_ast2700_scu_reset(DeviceState *dev)
965 static void aspeed_2700_scu_class_init(ObjectClass *klass, const void *data)
966 {
967 DeviceClass *dc = DEVICE_CLASS(klass);
968 + ResettableClass *rc = RESETTABLE_CLASS(klass);
969 AspeedSCUClass *asc = ASPEED_SCU_CLASS(klass);
970
971 dc->desc = "ASPEED 2700 System Control Unit";
969 - device_class_set_legacy_reset(dc, aspeed_ast2700_scu_reset);
972 + rc->phases.hold = aspeed_ast2700_scu_reset_hold;
973 asc->resets = ast2700_a0_resets;
974 asc->calc_hpll = aspeed_2600_scu_calc_hpll;
975 asc->get_apb = aspeed_2700_scu_get_apb_freq;
@@ -1082,10 +1085,11 @@ static const uint32_t ast2700_a0_resets_io[ASPEED_AST2700_SCU_NR_REGS] = {
1085 static void aspeed_2700_scuio_class_init(ObjectClass *klass, const void *data)
1086 {
1087 DeviceClass *dc = DEVICE_CLASS(klass);
1088 + ResettableClass *rc = RESETTABLE_CLASS(klass);
1089 AspeedSCUClass *asc = ASPEED_SCU_CLASS(klass);
1090
1091 dc->desc = "ASPEED 2700 System Control Unit I/O";
1088 - device_class_set_legacy_reset(dc, aspeed_ast2700_scu_reset);
1092 + rc->phases.hold = aspeed_ast2700_scu_reset_hold;
1093 asc->resets = ast2700_a0_resets_io;
1094 asc->calc_hpll = aspeed_2600_scu_calc_hpll;
1095 asc->get_apb = aspeed_2700_scuio_get_apb_freq;
@@ -1123,10 +1127,10 @@ static const uint32_t ast1030_a1_resets[ASPEED_AST2600_SCU_NR_REGS] = {
1127 [AST2600_CHIP_ID1] = 0x0BADCAFE,
1128 };
1129
1126 -static void aspeed_ast1030_scu_reset(DeviceState *dev)
1130 +static void aspeed_ast1030_scu_reset_hold(Object *obj, ResetType type)
1131 {
1128 - AspeedSCUState *s = ASPEED_SCU(dev);
1129 - AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(dev);
1132 + AspeedSCUState *s = ASPEED_SCU(obj);
1133 + AspeedSCUClass *asc = ASPEED_SCU_GET_CLASS(obj);
1134
1135 memcpy(s->regs, asc->resets, asc->nr_regs * 4);
1136
@@ -1140,10 +1144,11 @@ static void aspeed_ast1030_scu_reset(DeviceState *dev)
1144 static void aspeed_1030_scu_class_init(ObjectClass *klass, const void *data)
1145 {
1146 DeviceClass *dc = DEVICE_CLASS(klass);
1147 + ResettableClass *rc = RESETTABLE_CLASS(klass);
1148 AspeedSCUClass *asc = ASPEED_SCU_CLASS(klass);
1149
1150 dc->desc = "ASPEED 1030 System Control Unit";
1146 - device_class_set_legacy_reset(dc, aspeed_ast1030_scu_reset);
1151 + rc->phases.hold = aspeed_ast1030_scu_reset_hold;
1152 asc->resets = ast1030_a1_resets;
1153 asc->calc_hpll = aspeed_2600_scu_calc_hpll;
1154 asc->get_apb = aspeed_1030_scu_get_apb_freq;