smbus-eeprom: remove PROP_PTR

Instead, set the initial data field directly.

(the initial data is an array of 256 bytes. As I don't know if it may
change over time, I keep the pointer to original buffer as is, but it
might be worth to consider to copy it instead)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Corey Minyard <cminyard@mvista.com>
This commit is contained in:
Marc-André Lureau 2019-10-18 12:19:36 +02:00
parent f4f643882d
commit b9751d205f
1 changed files with 10 additions and 10 deletions

View File

@ -44,7 +44,7 @@
typedef struct SMBusEEPROMDevice {
SMBusDevice smbusdev;
uint8_t data[SMBUS_EEPROM_SIZE];
void *init_data;
uint8_t *init_data;
uint8_t offset;
bool accessed;
} SMBusEEPROMDevice;
@ -129,13 +129,13 @@ static void smbus_eeprom_reset(DeviceState *dev)
static void smbus_eeprom_realize(DeviceState *dev, Error **errp)
{
smbus_eeprom_reset(dev);
}
SMBusEEPROMDevice *eeprom = SMBUS_EEPROM(dev);
static Property smbus_eeprom_properties[] = {
DEFINE_PROP_PTR("data", SMBusEEPROMDevice, init_data),
DEFINE_PROP_END_OF_LIST(),
};
smbus_eeprom_reset(dev);
if (eeprom->init_data == NULL) {
error_setg(errp, "init_data cannot be NULL");
}
}
static void smbus_eeprom_class_initfn(ObjectClass *klass, void *data)
{
@ -146,9 +146,8 @@ static void smbus_eeprom_class_initfn(ObjectClass *klass, void *data)
dc->reset = smbus_eeprom_reset;
sc->receive_byte = eeprom_receive_byte;
sc->write_data = eeprom_write_data;
dc->props = smbus_eeprom_properties;
dc->vmsd = &vmstate_smbus_eeprom;
/* Reason: pointer property "data" */
/* Reason: init_data */
dc->user_creatable = false;
}
@ -172,7 +171,8 @@ void smbus_eeprom_init_one(I2CBus *smbus, uint8_t address, uint8_t *eeprom_buf)
dev = qdev_create((BusState *) smbus, TYPE_SMBUS_EEPROM);
qdev_prop_set_uint8(dev, "address", address);
qdev_prop_set_ptr(dev, "data", eeprom_buf);
/* FIXME: use an array of byte or block backend property? */
SMBUS_EEPROM(dev)->init_data = eeprom_buf;
qdev_init_nofail(dev);
}