mbox series

[RFC,0/7] aspeed: i2c: Add new mode support

Message ID 20220331043248.2237838-1-komlodi@google.com
Headers show
Series aspeed: i2c: Add new mode support | expand

Message

Joe Komlodi March 31, 2022, 4:32 a.m. UTC
Hi all,

This series migrates the Aspeed I2C controller to use the register API,
and then adds new mode support.

New mode has some behavior changes and a register layout change compared
to old mode.

The series starts by adding "shared field" macros to help simplify logic
when adding new mode.
Generally, the macros are to be used in cases where register locations
change depending on what mode a peripheral is operating in, but
the fields in those registers have the same offsets.
Specifically, this happens very frequently with new and old I2C modes on
Aspeed I2C.

After that we migrate over to the register API and then add new mode
support.

Thanks!
Joe

Joe Komlodi (7):
  hw/registerfields: Add shared fields macros
  aspeed: i2c: Add ctrl_global_rsvd property
  aspeed: i2c: Migrate to registerfields API
  aspeed: i2c: Use reg array instead of individual vars
  aspeed: i2c: Add new mode support
  aspeed: i2c: Add PKT_DONE IRQ to trace
  aspeed: i2c: Move regs and helpers to header file

 hw/arm/aspeed_ast2600.c     |   2 +
 hw/i2c/aspeed_i2c.c         | 792 ++++++++++++++++++++++--------------
 hw/i2c/trace-events         |   2 +-
 include/hw/i2c/aspeed_i2c.h | 282 ++++++++++++-
 include/hw/registerfields.h |  70 ++++
 5 files changed, 828 insertions(+), 320 deletions(-)

Comments

Cédric Le Goater April 6, 2022, 10:36 a.m. UTC | #1
Hello Joe,

On 3/31/22 06:32, Joe Komlodi wrote:
> Hi all,
> 
> This series migrates the Aspeed I2C controller to use the register API,

I like the idea but it's an earthquake in the I2C model and they are other
patchsets on the way. Let's wait a bit before changing it all.

> and then adds new mode support.
>
> New mode has some behavior changes and a register layout change compared
> to old mode.

Troy sent a similar proposal. Did you have a look ?

   http://patchwork.ozlabs.org/project/qemu-devel/list/?series=291804

Thanks,

C.


> The series starts by adding "shared field" macros to help simplify logic
> when adding new mode.
> Generally, the macros are to be used in cases where register locations
> change depending on what mode a peripheral is operating in, but
> the fields in those registers have the same offsets.
> Specifically, this happens very frequently with new and old I2C modes on
> Aspeed I2C.
> 
> After that we migrate over to the register API and then add new mode
> support.
> 
> Thanks!
> Joe
> 
> Joe Komlodi (7):
>    hw/registerfields: Add shared fields macros
>    aspeed: i2c: Add ctrl_global_rsvd property
>    aspeed: i2c: Migrate to registerfields API
>    aspeed: i2c: Use reg array instead of individual vars
>    aspeed: i2c: Add new mode support
>    aspeed: i2c: Add PKT_DONE IRQ to trace
>    aspeed: i2c: Move regs and helpers to header file
> 
>   hw/arm/aspeed_ast2600.c     |   2 +
>   hw/i2c/aspeed_i2c.c         | 792 ++++++++++++++++++++++--------------
>   hw/i2c/trace-events         |   2 +-
>   include/hw/i2c/aspeed_i2c.h | 282 ++++++++++++-
>   include/hw/registerfields.h |  70 ++++
>   5 files changed, 828 insertions(+), 320 deletions(-)
>