Message ID | 20181115192446.17187-11-minyard@acm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RFC: Fix/add vmstate handling in some I2C code | expand |
On 15/11/18 20:24, minyard@acm.org wrote: > From: Corey Minyard <cminyard@mvista.com> > > It was hard-coded to 256 in a number of places, create a constant > for that. > > Signed-off-by: Corey Minyard <cminyard@mvista.com> > --- > hw/i2c/smbus_eeprom.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c > index 8d4eed129f..8e9b734c09 100644 > --- a/hw/i2c/smbus_eeprom.c > +++ b/hw/i2c/smbus_eeprom.c > @@ -35,6 +35,8 @@ > #define SMBUS_EEPROM(obj) \ > OBJECT_CHECK(SMBusEEPROMDevice, (obj), TYPE_SMBUS_EEPROM) > > +#define SMBUS_EEPROM_SIZE 256 > + > typedef struct SMBusEEPROMDevice { > SMBusDevice smbusdev; > void *data; > @@ -70,7 +72,7 @@ static int eeprom_write_data(SMBusDevice *dev, uint8_t *buf, uint8_t len) > > for (; len > 0; len--) { > data[eeprom->offset] = *buf++; > - eeprom->offset = (eeprom->offset + 1) % 256; > + eeprom->offset = (eeprom->offset + 1) % SMBUS_EEPROM_SIZE; > } > > return 0; > @@ -129,12 +131,14 @@ void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, > const uint8_t *eeprom_spd, int eeprom_spd_size) > { > int i; > - uint8_t *eeprom_buf = g_malloc0(8 * 256); /* XXX: make this persistent */ > + /* XXX: make this persistent */ > + uint8_t *eeprom_buf = g_malloc0(8 * SMBUS_EEPROM_SIZE); Ideally this requires a previous patch replacing 8 -> nb_eeprom, fixing a long standing bug. Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > if (eeprom_spd_size > 0) { > memcpy(eeprom_buf, eeprom_spd, eeprom_spd_size); > } > > for (i = 0; i < nb_eeprom; i++) { > - smbus_eeprom_init_one(smbus, 0x50 + i, eeprom_buf + (i * 256)); > + smbus_eeprom_init_one(smbus, 0x50 + i, > + eeprom_buf + (i * SMBUS_EEPROM_SIZE)); > } > } >
diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index 8d4eed129f..8e9b734c09 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -35,6 +35,8 @@ #define SMBUS_EEPROM(obj) \ OBJECT_CHECK(SMBusEEPROMDevice, (obj), TYPE_SMBUS_EEPROM) +#define SMBUS_EEPROM_SIZE 256 + typedef struct SMBusEEPROMDevice { SMBusDevice smbusdev; void *data; @@ -70,7 +72,7 @@ static int eeprom_write_data(SMBusDevice *dev, uint8_t *buf, uint8_t len) for (; len > 0; len--) { data[eeprom->offset] = *buf++; - eeprom->offset = (eeprom->offset + 1) % 256; + eeprom->offset = (eeprom->offset + 1) % SMBUS_EEPROM_SIZE; } return 0; @@ -129,12 +131,14 @@ void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, const uint8_t *eeprom_spd, int eeprom_spd_size) { int i; - uint8_t *eeprom_buf = g_malloc0(8 * 256); /* XXX: make this persistent */ + /* XXX: make this persistent */ + uint8_t *eeprom_buf = g_malloc0(8 * SMBUS_EEPROM_SIZE); if (eeprom_spd_size > 0) { memcpy(eeprom_buf, eeprom_spd, eeprom_spd_size); } for (i = 0; i < nb_eeprom; i++) { - smbus_eeprom_init_one(smbus, 0x50 + i, eeprom_buf + (i * 256)); + smbus_eeprom_init_one(smbus, 0x50 + i, + eeprom_buf + (i * SMBUS_EEPROM_SIZE)); } }