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;