aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/arm/aspeed.c4
-rw-r--r--hw/i2c/core.c11
-rw-r--r--include/hw/i2c/i2c.h2
3 files changed, 8 insertions, 9 deletions
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index dc3f443..51687fd 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -513,7 +513,7 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState *bmc)
/* Bus 3: TODO bmp280@77 */
/* Bus 3: TODO max31785@52 */
/* Bus 3: TODO dps310@76 */
- dev = i2c_try_create_slave(TYPE_PCA9552, 0x60);
+ dev = DEVICE(i2c_slave_new(TYPE_PCA9552, 0x60));
qdev_prop_set_string(dev, "description", "pca1");
i2c_realize_and_unref(dev, aspeed_i2c_get_bus(&soc->i2c, 3),
&error_fatal);
@@ -531,7 +531,7 @@ static void witherspoon_bmc_i2c_init(AspeedMachineState *bmc)
smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 11), 0x51,
eeprom_buf);
- dev = i2c_try_create_slave(TYPE_PCA9552, 0x60);
+ dev = DEVICE(i2c_slave_new(TYPE_PCA9552, 0x60));
qdev_prop_set_string(dev, "description", "pca0");
i2c_realize_and_unref(dev, aspeed_i2c_get_bus(&soc->i2c, 11),
&error_fatal);
diff --git a/hw/i2c/core.c b/hw/i2c/core.c
index acf34a1..144786f 100644
--- a/hw/i2c/core.c
+++ b/hw/i2c/core.c
@@ -267,13 +267,13 @@ const VMStateDescription vmstate_i2c_slave = {
}
};
-DeviceState *i2c_try_create_slave(const char *name, uint8_t addr)
+I2CSlave *i2c_slave_new(const char *name, uint8_t addr)
{
DeviceState *dev;
dev = qdev_new(name);
qdev_prop_set_uint8(dev, "address", addr);
- return dev;
+ return I2C_SLAVE(dev);
}
bool i2c_realize_and_unref(DeviceState *dev, I2CBus *bus, Error **errp)
@@ -283,12 +283,11 @@ bool i2c_realize_and_unref(DeviceState *dev, I2CBus *bus, Error **errp)
DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr)
{
- DeviceState *dev;
+ I2CSlave *dev = i2c_slave_new(name, addr);
- dev = i2c_try_create_slave(name, addr);
- i2c_realize_and_unref(dev, bus, &error_fatal);
+ i2c_realize_and_unref(DEVICE(dev), bus, &error_fatal);
- return dev;
+ return DEVICE(dev);
}
static void i2c_slave_class_init(ObjectClass *klass, void *data)
diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h
index d6e3d85..18efc66 100644
--- a/include/hw/i2c/i2c.h
+++ b/include/hw/i2c/i2c.h
@@ -79,8 +79,8 @@ int i2c_send_recv(I2CBus *bus, uint8_t *data, bool send);
int i2c_send(I2CBus *bus, uint8_t data);
uint8_t i2c_recv(I2CBus *bus);
+I2CSlave *i2c_slave_new(const char *name, uint8_t addr);
DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr);
-DeviceState *i2c_try_create_slave(const char *name, uint8_t addr);
bool i2c_realize_and_unref(DeviceState *dev, I2CBus *bus, Error **errp);
/* lm832x.c */