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));
> }
> }
>