hw/gpio: pca9552: use the Resettable interface instead of legacy reset
Convert the PCA9552 and PCA9535/PCA9555 reset handlers from the legacy device reset hook to the Resettable interface: move each reset body into a ResettableHoldPhase handler and register it through the class's ResettableClass::phases.hold instead of device_class_set_legacy_reset(). No functional change. Signed-off-by: Emmanuel Blot <emmanuel.blot@free.fr> Reviewed-by: Glenn Miles <milesg@linux.ibm.com> Link: https://lore.kernel.org/qemu-devel/20260709-catalina-upgrade-v1-6-814575bc076b@free.fr Signed-off-by: Cédric Le Goater <clg@redhat.com>
Emmanuel Blot committed
Jul 9, 2026 at 17:23 UTC
0bfc57212e2ec42fd4b8da2d23b801224344304a
1 file changed
+8
-6
hw/gpio/pca9552.c
+8
-6
@@ -406,9 +406,9 @@ static const VMStateDescription pca9552_vmstate = {
406
}
407
};
408
409
-static void pca9552_reset(DeviceState *dev)
409
+static void pca9552_reset_hold(Object *obj, ResetType type)
410
{
411
- PCA955xState *s = PCA955X(dev);
411
+ PCA955xState *s = PCA955X(obj);
412
413
s->regs[PCA9552_PSC0] = 0xFF;
414
s->regs[PCA9552_PWM0] = 0x80;
@@ -426,9 +426,9 @@ static void pca9552_reset(DeviceState *dev)
426
s->len = 0;
427
}
428
429
-static void pca9535_reset(DeviceState *dev)
429
+static void pca9535_reset_hold(Object *obj, ResetType type)
430
{
431
- PCA955xState *s = PCA955X(dev);
431
+ PCA955xState *s = PCA955X(obj);
432
433
s->regs[PCA9535_INPUT0] = 0xFF; /* All inputs high (pull-ups) */
434
s->regs[PCA9535_INPUT1] = 0xFF; /* All inputs high (pull-ups) */
@@ -514,9 +514,10 @@ static void pca955x_class_init(ObjectClass *klass, const void *data)
514
static void pca9552_class_init(ObjectClass *oc, const void *data)
515
{
516
DeviceClass *dc = DEVICE_CLASS(oc);
517
+ ResettableClass *rc = RESETTABLE_CLASS(oc);
518
PCA955xClass *pc = PCA955X_CLASS(oc);
519
519
- device_class_set_legacy_reset(dc, pca9552_reset);
520
+ rc->phases.hold = pca9552_reset_hold;
521
dc->vmsd = &pca9552_vmstate;
522
pc->max_reg = PCA9552_LS3;
523
pc->pin_count = 16;
@@ -526,9 +527,10 @@ static void pca9552_class_init(ObjectClass *oc, const void *data)
527
static void pca95x5_class_init(ObjectClass *oc, const void *data)
528
{
529
DeviceClass *dc = DEVICE_CLASS(oc);
530
+ ResettableClass *rc = RESETTABLE_CLASS(oc);
531
PCA955xClass *pc = PCA955X_CLASS(oc);
532
531
- device_class_set_legacy_reset(dc, pca9535_reset);
533
+ rc->phases.hold = pca9535_reset_hold;
534
dc->vmsd = &pca9552_vmstate;
535
pc->max_reg = PCA9535_CONFIG1;
536
pc->pin_count = 16;