diff mbox series

[v2,10/12] i2c: Add a size constant for the smbus_eeprom size

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

Commit Message

Corey Minyard Nov. 15, 2018, 7:24 p.m. UTC
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(-)

Comments

Philippe Mathieu-Daudé Nov. 15, 2018, 10:34 p.m. UTC | #1
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 mbox series

Patch

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