@samitouri / QOSamiQemu / commits / 0bfc57212e

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;