On Mon, 2023-10-09 at 23:06 +0200, Cédric Le Goater wrote: > Hello Glenn, > > On 10/5/23 23:10, Glenn Miles wrote: > > Testing of the pca9552 device on the powernv platform > > showed that the reset method was not being called when > > an instance of the device was realized. This was causing > > the INPUT0/INPUT1 POR values to be incorrect. > > > > Fixed by overriding the parent pca955x_realize method with a > > new pca9552_realize method which first calls > > the parent pca955x_realize method followed by the > > pca9552_reset function. > > > > Signed-off-by: Glenn Miles <mil...@linux.vnet.ibm.com> > > --- > > hw/misc/pca9552.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/hw/misc/pca9552.c b/hw/misc/pca9552.c > > index fff19e369a..bc12dced7f 100644 > > --- a/hw/misc/pca9552.c > > +++ b/hw/misc/pca9552.c > > @@ -384,6 +384,12 @@ static void pca955x_realize(DeviceState *dev, > > Error **errp) > > qdev_init_gpio_out(dev, s->gpio, k->pin_count); > > } > > > > +static void pca9552_realize(DeviceState *dev, Error **errp) > > +{ > > + pca955x_realize(dev, errp); > > + pca9552_reset(dev); > > +} > > This looks wrong. You need both handlers, a realize and a reset. > > Thanks, > > C. >
Ok, sent version 3. Thanks, Glenn > > > + > > static Property pca955x_properties[] = { > > DEFINE_PROP_STRING("description", PCA955xState, description), > > DEFINE_PROP_END_OF_LIST(), > > @@ -416,7 +422,7 @@ static void pca9552_class_init(ObjectClass *oc, > > void *data) > > DeviceClass *dc = DEVICE_CLASS(oc); > > PCA955xClass *pc = PCA955X_CLASS(oc); > > > > - dc->reset = pca9552_reset; > > + dc->realize = pca9552_realize; > > dc->vmsd = &pca9552_vmstate; > > pc->max_reg = PCA9552_LS3; > > pc->pin_count = 16;