From: Paolo Bonzini <pbonzini@redhat.com>
To: chenmiao <chenmiao@openatom.club>
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 11:46:26 +0100 [thread overview]
Message-ID: <CABgObfZEm7nu1gRPHQnYc-WJ2PHrBa40VX6Qv2bRTWBYt2BsOA@mail.gmail.com> (raw)
In-Reply-To: <90746cd6a57c0df971158f604c422a23d750e0b4.1761644606.git.chenmiao@openatom.club>
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
> 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
>
next prev parent reply other threads:[~2025-10-28 10:47 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 [this message]
2025-10-28 11:21 ` Chen Miao
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=CABgObfZEm7nu1gRPHQnYc-WJ2PHrBa40VX6Qv2bRTWBYt2BsOA@mail.gmail.com \
--to=pbonzini@redhat.com \
--cc=chao.liu@openatom.club \
--cc=chenmiao@openatom.club \
--cc=hust-os-kernel-patches@googlegroups.com \
--cc=manos.pitsidianakis@linaro.org \
--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).