Signed-off-by: Markus Armbruster <[email protected]>
---
 hw/gpio/pca9554.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/hw/gpio/pca9554.c b/hw/gpio/pca9554.c
index 1362b605c2..ed304e4639 100644
--- a/hw/gpio/pca9554.c
+++ b/hw/gpio/pca9554.c
@@ -290,18 +290,18 @@ static void pca9554_reset(DeviceState *dev)
     s->len = 0;
 }
 
-static void pca9554_initfn(Object *obj)
+static void pca9554_pin_init(PCA9554Class *pc)
 {
-    PCA9554Class *pc = PCA9554_BASE_GET_CLASS(obj);
     int pin;
 
     for (pin = 0; pin < pc->pin_count; pin++) {
         char *name;
 
         name = g_strdup_printf("pin%d", pin);
-        object_property_add(obj, name, "str", &str_type_info,
-                            pca9554_get_pin, pca9554_set_pin,
-                            NULL, NULL);
+        object_class_property_add(OBJECT_CLASS(pc), name,
+                                  "str", &str_type_info,
+                                  pca9554_get_pin, pca9554_set_pin,
+                                  NULL, NULL);
         g_free(name);
     }
 }
@@ -352,6 +352,7 @@ static void pca9554_class_init(ObjectClass *klass, const 
void *data)
     PCA9554Class *pc = PCA9554_BASE_CLASS(klass);
 
     pc->pin_count = PCA9554_PIN_COUNT;
+    pca9554_pin_init(pc);
 }
 
 static void pca9536_class_init(ObjectClass *klass, const void *data)
@@ -359,13 +360,13 @@ static void pca9536_class_init(ObjectClass *klass, const 
void *data)
     PCA9554Class *pc = PCA9554_BASE_CLASS(klass);
 
     pc->pin_count = PCA9536_PIN_COUNT;
+    pca9554_pin_init(pc);
 }
 
 static const TypeInfo pca9554_types[] = {
     {
         .name          = TYPE_PCA9554_BASE,
         .parent        = TYPE_I2C_SLAVE,
-        .instance_init = pca9554_initfn,
         .instance_size = sizeof(PCA9554State),
         .class_init    = pca9554_base_class_init,
         .class_size    = sizeof(PCA9554Class),
@@ -378,7 +379,7 @@ static const TypeInfo pca9554_types[] = {
     },
     {
         .name          = TYPE_PCA9536,
-        .parent        = TYPE_PCA9554,
+        .parent        = TYPE_PCA9554_BASE,
         .class_init    = pca9536_class_init,
     }
 };
-- 
2.55.0


Reply via email to