On Mon, May 11, 2026 at 12:18:41PM +0200, Philippe Mathieu-Daudé wrote:
> On 7/5/26 14:05, Nicholas Piggin wrote:
> > Alistair suggested moving to Fifo8, which I think is
> > a good improvement.
> >
> > Broken out for individual review, but IMO we should
> > squash before merge since it changes VMState format.
> >
> > Signed-off-by: Nicholas Piggin
> > ---
> > hw/i2c/designware_i2c.c | 37 -
> > include/hw/i2c/designware_i2c.h | 7 +++
> > 2 files changed, 25 insertions(+), 19 deletions(-)
>
>
> > @@ -53,8 +54,6 @@ typedef enum DesignWareI2CStatus {
> >* @ic_comp_version: I2C component version register
> >* @ic_comp_type: I2C component type register
> >* @rx_fifo: The FIFO buffer for receiving in FIFO mode.
> > - * @rx_cur: The current position of rx_fifo.
> > - * @status: The current status of the SMBus.
> >*/
> > typedef struct DesignWareI2CState {
> > SysBusDevice parent_obj;
> > @@ -88,8 +87,8 @@ typedef struct DesignWareI2CState {
> > uint32_t ic_comp_version;
> > uint32_t ic_comp_type;
> > -uint8_t rx_fifo[DESIGNWARE_I2C_RX_FIFO_SIZE];
> > -uint8_t rx_cur;
> > +/* fifo8_num_used(rx_fifo) should always equal ic_rxflr */
>
> Why not remove ic_rxflr then?
I did consider that... but the next patch to rework the registers
adds storage for them all as a block. We could still just ignore
the storage and use fifo8_num_used() instead but I was vaguely
worried about complexity of vmstate compat if we change things, but
not sure if that is a rational concern. In the end the code is
quite simple and only a couple of places where this is adjusted so
I kept it this way.
Thanks,
Nick