Message ID | 20220606150732.2282041-13-clg@kaod.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | aspeed: Extend ast2600 I2C model with new mode | expand |
On Mon, 6 Jun 2022 at 15:09, Cédric Le Goater <clg@kaod.org> wrote: > > Based on : > https://lists.nongnu.org/archive/html/qemu-devel/2022-03/msg06017.html Perhaps use the link to lore (which also includes the message id): https://lore.kernel.org/qemu-devel/20220324100439.478317-2-troy_lee@aspeedtech.com/ Reviewed-by: Joel Stanley <joel@jms.id.au> > > Cc: Troy Lee <troy_lee@aspeedtech.com> > Cc: Jamin Lin <jamin_lin@aspeedtech.com> > Cc: Steven Lee <steven_lee@aspeedtech.com> > Signed-off-by: Cédric Le Goater <clg@kaod.org> > --- > include/hw/i2c/aspeed_i2c.h | 1 + > hw/i2c/aspeed_i2c.c | 24 ++++++++++++++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h > index 506bcf1a9daf..79c6779c6c1e 100644 > --- a/include/hw/i2c/aspeed_i2c.h > +++ b/include/hw/i2c/aspeed_i2c.h > @@ -30,6 +30,7 @@ > #define TYPE_ASPEED_2400_I2C TYPE_ASPEED_I2C "-ast2400" > #define TYPE_ASPEED_2500_I2C TYPE_ASPEED_I2C "-ast2500" > #define TYPE_ASPEED_2600_I2C TYPE_ASPEED_I2C "-ast2600" > +#define TYPE_ASPEED_1030_I2C TYPE_ASPEED_I2C "-ast1030" > OBJECT_DECLARE_TYPE(AspeedI2CState, AspeedI2CClass, ASPEED_I2C) > > #define ASPEED_I2C_NR_BUSSES 16 > diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c > index 8425e928890a..5fce516517a5 100644 > --- a/hw/i2c/aspeed_i2c.c > +++ b/hw/i2c/aspeed_i2c.c > @@ -1185,6 +1185,29 @@ static const TypeInfo aspeed_2600_i2c_info = { > .class_init = aspeed_2600_i2c_class_init, > }; > > +static void aspeed_1030_i2c_class_init(ObjectClass *klass, void *data) > +{ > + DeviceClass *dc = DEVICE_CLASS(klass); > + AspeedI2CClass *aic = ASPEED_I2C_CLASS(klass); > + > + dc->desc = "ASPEED 1030 I2C Controller"; > + > + aic->num_busses = 14; > + aic->reg_size = 0x80; > + aic->gap = -1; /* no gap */ > + aic->bus_get_irq = aspeed_2600_i2c_bus_get_irq; > + aic->pool_size = 0x200; > + aic->pool_base = 0xC00; > + aic->bus_pool_base = aspeed_2600_i2c_bus_pool_base; > + aic->has_dma = true; > +} > + > +static const TypeInfo aspeed_1030_i2c_info = { > + .name = TYPE_ASPEED_1030_I2C, > + .parent = TYPE_ASPEED_I2C, > + .class_init = aspeed_1030_i2c_class_init, > +}; > + > static void aspeed_i2c_register_types(void) > { > type_register_static(&aspeed_i2c_bus_info); > @@ -1192,6 +1215,7 @@ static void aspeed_i2c_register_types(void) > type_register_static(&aspeed_2400_i2c_info); > type_register_static(&aspeed_2500_i2c_info); > type_register_static(&aspeed_2600_i2c_info); > + type_register_static(&aspeed_1030_i2c_info); > } > > type_init(aspeed_i2c_register_types) > -- > 2.35.3 >
diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h index 506bcf1a9daf..79c6779c6c1e 100644 --- a/include/hw/i2c/aspeed_i2c.h +++ b/include/hw/i2c/aspeed_i2c.h @@ -30,6 +30,7 @@ #define TYPE_ASPEED_2400_I2C TYPE_ASPEED_I2C "-ast2400" #define TYPE_ASPEED_2500_I2C TYPE_ASPEED_I2C "-ast2500" #define TYPE_ASPEED_2600_I2C TYPE_ASPEED_I2C "-ast2600" +#define TYPE_ASPEED_1030_I2C TYPE_ASPEED_I2C "-ast1030" OBJECT_DECLARE_TYPE(AspeedI2CState, AspeedI2CClass, ASPEED_I2C) #define ASPEED_I2C_NR_BUSSES 16 diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 8425e928890a..5fce516517a5 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -1185,6 +1185,29 @@ static const TypeInfo aspeed_2600_i2c_info = { .class_init = aspeed_2600_i2c_class_init, }; +static void aspeed_1030_i2c_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + AspeedI2CClass *aic = ASPEED_I2C_CLASS(klass); + + dc->desc = "ASPEED 1030 I2C Controller"; + + aic->num_busses = 14; + aic->reg_size = 0x80; + aic->gap = -1; /* no gap */ + aic->bus_get_irq = aspeed_2600_i2c_bus_get_irq; + aic->pool_size = 0x200; + aic->pool_base = 0xC00; + aic->bus_pool_base = aspeed_2600_i2c_bus_pool_base; + aic->has_dma = true; +} + +static const TypeInfo aspeed_1030_i2c_info = { + .name = TYPE_ASPEED_1030_I2C, + .parent = TYPE_ASPEED_I2C, + .class_init = aspeed_1030_i2c_class_init, +}; + static void aspeed_i2c_register_types(void) { type_register_static(&aspeed_i2c_bus_info); @@ -1192,6 +1215,7 @@ static void aspeed_i2c_register_types(void) type_register_static(&aspeed_2400_i2c_info); type_register_static(&aspeed_2500_i2c_info); type_register_static(&aspeed_2600_i2c_info); + type_register_static(&aspeed_1030_i2c_info); } type_init(aspeed_i2c_register_types)
Based on : https://lists.nongnu.org/archive/html/qemu-devel/2022-03/msg06017.html Cc: Troy Lee <troy_lee@aspeedtech.com> Cc: Jamin Lin <jamin_lin@aspeedtech.com> Cc: Steven Lee <steven_lee@aspeedtech.com> Signed-off-by: Cédric Le Goater <clg@kaod.org> --- include/hw/i2c/aspeed_i2c.h | 1 + hw/i2c/aspeed_i2c.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+)