qemu-rust.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Chen Miao" <chenmiao@openatom.club>
To: "Paolo Bonzini" <pbonzini@redhat.com>
Cc: <zhao1.liu@intel.com>, <manos.pitsidianakis@linaro.org>,
	 <richard.henderson@linaro.org>, <philmd@linaro.org>,
	 <chao.liu@openatom.club>, <qemu-rust@nongnu.org>,
	 <qemu-devel@nongnu.org>,
	<hust-os-kernel-patches@googlegroups.com>
Subject: Re: [RFC PATCH v2 3/5] hw/gpio: Move the pcf8574 struct to header
Date: Tue, 28 Oct 2025 19:21:45 +0800	[thread overview]
Message-ID: <73983c4b-2e84-4344-9aba-edf12b1c2219@openatom.club> (raw)
In-Reply-To: <CABgObfZEm7nu1gRPHQnYc-WJ2PHrBa40VX6Qv2bRTWBYt2BsOA@mail.gmail.com>

On 10/28/2025 6:46 PM, Paolo Bonzini wrote:
> On Tue, Oct 28, 2025 at 11:18 AM chenmiao <chenmiao@openatom.club> wrote:
>> To better implement the Rust PCF8574 bindings, move its struct definition to
>> the header file.
> This should not be needed, the struct is entirely hidden within the C
> implementation and the same should be true for the Rust one.
>
> Paolo

Ok, delete it in subsequent versions​.

Chen Miao

>> Signed-off-by: chenmiao <chenmiao@openatom.club>
>> ---
>>   hw/gpio/pcf8574.c         | 32 --------------------------------
>>   include/hw/gpio/pcf8574.h | 36 ++++++++++++++++++++++++++++++++++++
>>   2 files changed, 36 insertions(+), 32 deletions(-)
>>
>> diff --git a/hw/gpio/pcf8574.c b/hw/gpio/pcf8574.c
>> index 274b44bb61..670fc006bb 100644
>> --- a/hw/gpio/pcf8574.c
>> +++ b/hw/gpio/pcf8574.c
>> @@ -15,38 +15,6 @@
>>   #include "qemu/module.h"
>>   #include "qom/object.h"
>>
>> -/*
>> - * PCF8574 and compatible chips incorporate quasi-bidirectional
>> - * IO. Electrically it means that device sustain pull-up to line
>> - * unless IO port is configured as output _and_ driven low.
>> - *
>> - * IO access is implemented as simple I2C single-byte read
>> - * or write operation. So, to configure line to input user write 1
>> - * to corresponding bit. To configure line to output and drive it low
>> - * user write 0 to corresponding bit.
>> - *
>> - * In essence, user can think of quasi-bidirectional IO as
>> - * open-drain line, except presence of builtin rising edge acceleration
>> - * embedded in PCF8574 IC
>> - *
>> - * PCF8574 has interrupt request line, which is being pulled down when
>> - * port line state differs from last read. Port read operation clears
>> - * state and INT line returns to high state via pullup.
>> - */
>> -
>> -OBJECT_DECLARE_SIMPLE_TYPE(PCF8574State, PCF8574)
>> -
>> -#define PORTS_COUNT (8)
>> -
>> -struct PCF8574State {
>> -    I2CSlave parent_obj;
>> -    uint8_t  lastrq;     /* Last requested state. If changed - assert irq */
>> -    uint8_t  input;      /* external electrical line state */
>> -    uint8_t  output;     /* Pull-up (1) or drive low (0) on bit */
>> -    qemu_irq handler[PORTS_COUNT];
>> -    qemu_irq intrq;      /* External irq request */
>> -};
>> -
>>   static void pcf8574_reset(DeviceState *dev)
>>   {
>>       PCF8574State *s = PCF8574(dev);
>> diff --git a/include/hw/gpio/pcf8574.h b/include/hw/gpio/pcf8574.h
>> index 3291d7dbbc..fe1ce891b7 100644
>> --- a/include/hw/gpio/pcf8574.h
>> +++ b/include/hw/gpio/pcf8574.h
>> @@ -10,6 +10,42 @@
>>   #ifndef _HW_GPIO_PCF8574
>>   #define _HW_GPIO_PCF8574
>>
>> +#include "qemu/osdep.h"
>> +#include "hw/i2c/i2c.h"
>> +#include "qom/object.h"
>> +
>>   #define TYPE_PCF8574 "pcf8574"
>>
>> +/*
>> + * PCF8574 and compatible chips incorporate quasi-bidirectional
>> + * IO. Electrically it means that device sustain pull-up to line
>> + * unless IO port is configured as output _and_ driven low.
>> + *
>> + * IO access is implemented as simple I2C single-byte read
>> + * or write operation. So, to configure line to input user write 1
>> + * to corresponding bit. To configure line to output and drive it low
>> + * user write 0 to corresponding bit.
>> + *
>> + * In essence, user can think of quasi-bidirectional IO as
>> + * open-drain line, except presence of builtin rising edge acceleration
>> + * embedded in PCF8574 IC
>> + *
>> + * PCF8574 has interrupt request line, which is being pulled down when
>> + * port line state differs from last read. Port read operation clears
>> + * state and INT line returns to high state via pullup.
>> + */
>> +
>> +OBJECT_DECLARE_SIMPLE_TYPE(PCF8574State, PCF8574)
>> +
>> +#define PORTS_COUNT (8)
>> +
>> +struct PCF8574State {
>> +    I2CSlave parent_obj;
>> +    uint8_t  lastrq;     /* Last requested state. If changed - assert irq */
>> +    uint8_t  input;      /* external electrical line state */
>> +    uint8_t  output;     /* Pull-up (1) or drive low (0) on bit */
>> +    qemu_irq handler[PORTS_COUNT];
>> +    qemu_irq intrq;      /* External irq request */
>> +};
>> +
>>   #endif /* _HW_GPIO_PCF8574 */
>> --
>> 2.43.0
>>


      reply	other threads:[~2025-10-28 11:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-28 10:18 [RFC PATCH v2 3/5] hw/gpio: Move the pcf8574 struct to header chenmiao
2025-10-28 10:46 ` Paolo Bonzini
2025-10-28 11:21   ` Chen Miao [this message]

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=73983c4b-2e84-4344-9aba-edf12b1c2219@openatom.club \
    --to=chenmiao@openatom.club \
    --cc=chao.liu@openatom.club \
    --cc=hust-os-kernel-patches@googlegroups.com \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-rust@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=zhao1.liu@intel.com \
    /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).