From: "Cédric Le Goater" <clegoate@redhat.com>
To: Miles Glenn <milesg@linux.vnet.ibm.com>,
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, clg@kaod.org, andrew@codeconstruct.com.au,
joel@jms.id.au
Subject: Re: [PATCH v3] misc/pca9552: Fix for pca9552 not getting reset
Date: Tue, 10 Oct 2023 22:41:29 +0200 [thread overview]
Message-ID: <4a6e370f-f966-8905-a4ec-338ea42da980@redhat.com> (raw)
In-Reply-To: <1fcb9e1820b2ca5c5e6b84d7186c328c1df426e8.camel@linux.vnet.ibm.com>
On 10/10/23 22:35, Miles Glenn wrote:
> On Tue, 2023-10-10 at 21:31 +0100, Mark Cave-Ayland wrote:
>> On 10/10/2023 20:52, 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 <milesg@linux.vnet.ibm.com>
>>> ---
>>> hw/misc/pca9552.c | 7 +++++++
>>> 1 file changed, 7 insertions(+)
>>>
>>> diff --git a/hw/misc/pca9552.c b/hw/misc/pca9552.c
>>> index fff19e369a..4e183cc554 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);
>>> +}
>>> +
>>> static Property pca955x_properties[] = {
>>> DEFINE_PROP_STRING("description", PCA955xState, description),
>>> DEFINE_PROP_END_OF_LIST(),
>>> @@ -417,6 +423,7 @@ static void pca9552_class_init(ObjectClass *oc,
>>> void *data)
>>> 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;
>>
>> The reason that the reset function isn't being called here is because
>> TYPE_I2C_SLAVE
>> is derived from TYPE_DEVICE, and for various historical reasons the
>> DeviceClass reset
>> function is only called for devices that inherit from
>> TYPE_SYS_BUS_DEVICE.
>>
>> Probably the best way to make this work instead of mixing up the
>> reset and realize
>> parts of the object lifecycle is to convert pca9552_reset() to use
>> the new Resettable
>> interface for TYPE_PCA9552: take a look at commit d43e967f69 ("q800-
>> glue.c: convert
>> to Resettable interface") as an example, along with the documentation
>> at
>> https://www.qemu.org/docs/master/devel/reset.html.
>>
>
> Ahh, that's very helpful. Thanks, Mark!
yes. My bad, I didn't look close enough. Thanks Mark
C.
next prev parent reply other threads:[~2023-10-10 20:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-10 19:52 [PATCH v3] misc/pca9552: Fix for pca9552 not getting reset Glenn Miles
2023-10-10 19:58 ` Cédric Le Goater
2023-10-10 20:29 ` Miles Glenn
2023-10-10 20:31 ` Mark Cave-Ayland
2023-10-10 20:35 ` Miles Glenn
2023-10-10 20:41 ` Cédric Le Goater [this message]
2023-10-19 17:32 ` Miles Glenn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4a6e370f-f966-8905-a4ec-338ea42da980@redhat.com \
--to=clegoate@redhat.com \
--cc=andrew@codeconstruct.com.au \
--cc=clg@kaod.org \
--cc=joel@jms.id.au \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=milesg@linux.vnet.ibm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).