Message ID | 20181126200435.23408-13-minyard@acm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix/add vmstate handling in some I2C code | expand |
On 26/11/18 21:04, minyard@acm.org wrote: > From: Corey Minyard <cminyard@mvista.com> > > Create a type name and a cast macro and use those through the > code. > > Signed-off-by: Corey Minyard <cminyard@mvista.com> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > hw/i2c/smbus_eeprom.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c > index 4d25222e23..8d4eed129f 100644 > --- a/hw/i2c/smbus_eeprom.c > +++ b/hw/i2c/smbus_eeprom.c > @@ -30,6 +30,11 @@ > > //#define DEBUG > > +#define TYPE_SMBUS_EEPROM "smbus-eeprom" > + > +#define SMBUS_EEPROM(obj) \ > + OBJECT_CHECK(SMBusEEPROMDevice, (obj), TYPE_SMBUS_EEPROM) > + > typedef struct SMBusEEPROMDevice { > SMBusDevice smbusdev; > void *data; > @@ -38,7 +43,7 @@ typedef struct SMBusEEPROMDevice { > > static uint8_t eeprom_receive_byte(SMBusDevice *dev) > { > - SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *) dev; > + SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev); > uint8_t *data = eeprom->data; > uint8_t val = data[eeprom->offset++]; > > @@ -51,7 +56,7 @@ static uint8_t eeprom_receive_byte(SMBusDevice *dev) > > static int eeprom_write_data(SMBusDevice *dev, uint8_t *buf, uint8_t len) > { > - SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *) dev; > + SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev); > uint8_t *data = eeprom->data; > > #ifdef DEBUG > @@ -73,7 +78,7 @@ static int eeprom_write_data(SMBusDevice *dev, uint8_t *buf, uint8_t len) > > static void smbus_eeprom_realize(DeviceState *dev, Error **errp) > { > - SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *)dev; > + SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev); > > eeprom->offset = 0; > } > @@ -97,7 +102,7 @@ static void smbus_eeprom_class_initfn(ObjectClass *klass, void *data) > } > > static const TypeInfo smbus_eeprom_info = { > - .name = "smbus-eeprom", > + .name = TYPE_SMBUS_EEPROM, > .parent = TYPE_SMBUS_DEVICE, > .instance_size = sizeof(SMBusEEPROMDevice), > .class_init = smbus_eeprom_class_initfn, > @@ -114,7 +119,7 @@ void smbus_eeprom_init_one(I2CBus *smbus, uint8_t address, uint8_t *eeprom_buf) > { > DeviceState *dev; > > - dev = qdev_create((BusState *) smbus, "smbus-eeprom"); > + dev = qdev_create((BusState *) smbus, TYPE_SMBUS_EEPROM); > qdev_prop_set_uint8(dev, "address", address); > qdev_prop_set_ptr(dev, "data", eeprom_buf); > qdev_init_nofail(dev); >
diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index 4d25222e23..8d4eed129f 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -30,6 +30,11 @@ //#define DEBUG +#define TYPE_SMBUS_EEPROM "smbus-eeprom" + +#define SMBUS_EEPROM(obj) \ + OBJECT_CHECK(SMBusEEPROMDevice, (obj), TYPE_SMBUS_EEPROM) + typedef struct SMBusEEPROMDevice { SMBusDevice smbusdev; void *data; @@ -38,7 +43,7 @@ typedef struct SMBusEEPROMDevice { static uint8_t eeprom_receive_byte(SMBusDevice *dev) { - SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *) dev; + SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev); uint8_t *data = eeprom->data; uint8_t val = data[eeprom->offset++]; @@ -51,7 +56,7 @@ static uint8_t eeprom_receive_byte(SMBusDevice *dev) static int eeprom_write_data(SMBusDevice *dev, uint8_t *buf, uint8_t len) { - SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *) dev; + SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev); uint8_t *data = eeprom->data; #ifdef DEBUG @@ -73,7 +78,7 @@ static int eeprom_write_data(SMBusDevice *dev, uint8_t *buf, uint8_t len) static void smbus_eeprom_realize(DeviceState *dev, Error **errp) { - SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *)dev; + SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev); eeprom->offset = 0; } @@ -97,7 +102,7 @@ static void smbus_eeprom_class_initfn(ObjectClass *klass, void *data) } static const TypeInfo smbus_eeprom_info = { - .name = "smbus-eeprom", + .name = TYPE_SMBUS_EEPROM, .parent = TYPE_SMBUS_DEVICE, .instance_size = sizeof(SMBusEEPROMDevice), .class_init = smbus_eeprom_class_initfn, @@ -114,7 +119,7 @@ void smbus_eeprom_init_one(I2CBus *smbus, uint8_t address, uint8_t *eeprom_buf) { DeviceState *dev; - dev = qdev_create((BusState *) smbus, "smbus-eeprom"); + dev = qdev_create((BusState *) smbus, TYPE_SMBUS_EEPROM); qdev_prop_set_uint8(dev, "address", address); qdev_prop_set_ptr(dev, "data", eeprom_buf); qdev_init_nofail(dev);