Comments
Patch
@@ -216,12 +216,21 @@ static int i2c_slave_qdev_init(DeviceState *dev)
return sc->init(s);
}
-DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, uint8_t addr)
+
+DeviceState *i2c_create_slave_no_init(i2c_bus *bus, const char *name,
+ uint8_t addr)
{
DeviceState *dev;
dev = qdev_create(&bus->qbus, name);
qdev_prop_set_uint8(dev, "address", addr);
+ return dev;
+}
+
+DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, uint8_t addr)
+{
+ DeviceState *dev = i2c_create_slave_no_init(bus, name, addr);
+
qdev_init_nofail(dev);
return dev;
}
@@ -68,6 +68,8 @@ int i2c_recv(i2c_bus *bus);
#define FROM_I2C_SLAVE(type, dev) DO_UPCAST(type, i2c, dev)
DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, uint8_t addr);
+DeviceState *i2c_create_slave_no_init(i2c_bus *bus, const char *name,
+ uint8_t addr);
/* wm8750.c */
void wm8750_data_req_set(DeviceState *dev,
Add a version of i2c_create_slave that does not qdev init the created device. This give the machine model a chance to set properites of the created device before qdev_init time. Based on equivalent function in ssi.c. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> --- hw/i2c.c | 11 ++++++++++- hw/i2c.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletions(-)