[RFC PATCH v2 073/137] hw/arm/aspeed: Give onboard devices a QOM parent (part 2)
Alexander Graf <[email protected]>
| Newsgroups | org.nongnu.qemu-riscv,org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
Convert the *_orphan() device-creation calls in the four large
hw/arm/aspeed_ast2600_{anacapa,catalina,fuji,rainier}.c board
files to the new parented API introduced earlier in this series,
so every onboard I2C peripheral gets a stable path in the
composition tree instead of landing in /machine/unattached with an
unstable device[N] name.
The parent for each device is the machine (AspeedMachineState); the
board's .i2c_init() callback receives it directly. Names are
derived from the device type and auto-indexed.
Per-site rationale (reviewers: dispute the modeling here):
hw/arm/aspeed_ast2600_anacapa.c:240 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | anacapa_bmc_i2c_init(AspeedMachineState *bmc) is amc->i2c_init callback invoked from board init; bmc IS the MachineState. Multiple PCA954x muxes -> auto-index. Local Object *o = OBJECT(bmc) added.
hw/arm/aspeed_ast2600_anacapa.c:246 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:250 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:259 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:264 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; PCA9552 GPIO expander behind mux, many instances -> auto-index.
hw/arm/aspeed_ast2600_anacapa.c:267 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:275 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:278 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:294 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:298 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:306 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:312 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_anacapa.c:320 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:475 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | catalina_bmc_i2c_init(AspeedMachineState *bmc) board i2c_init callback. Local Object *o = OBJECT(bmc) added. Many PCA954x -> auto-index.
hw/arm/aspeed_ast2600_catalina.c:478 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:482 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; PCA9535 GPIO expander -> auto-index.
hw/arm/aspeed_ast2600_catalina.c:489 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:492 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:495 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:499 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:506 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:511 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:528 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; multiple TMP75 -> auto-index.
hw/arm/aspeed_ast2600_catalina.c:532 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; PCA9554 GPIO expander -> auto-index with other GPIO expanders.
hw/arm/aspeed_ast2600_catalina.c:535 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:546 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:550 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:552 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:554 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:562 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:575 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:577 | i2c_slave_create_simple | OBJECT(bmc) | "rtc" | Board i2c_init; single DS1338 RTC.
hw/arm/aspeed_ast2600_catalina.c:581 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:583 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:591 | i2c_slave_create_simple | OBJECT(bmc) | "tmp421[*]" | Board i2c_init; two TMP421 -> auto-index.
hw/arm/aspeed_ast2600_catalina.c:618 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:620 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:622 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:624 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:626 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:628 | i2c_slave_create_simple | OBJECT(bmc) | "gpio[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_catalina.c:632 | i2c_slave_create_simple | OBJECT(bmc) | "tmp421[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:30 | i2c_slave_create_simple | parent | "i2c-mux[*]" | get_pca9548_channels() static helper called only from fuji_bmc_i2c_init(); no parent-capable pointer -> add Object *parent as first arg and thread OBJECT(bmc) from all 8 direct + 1 loop callers. 15 muxes total -> auto-index.
hw/arm/aspeed_ast2600_fuji.c:60 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | fuji_bmc_i2c_init(AspeedMachineState *bmc) board i2c_init. Local Object *o = OBJECT(bmc) added. LM75/TMP75 both alias TYPE_TMP105 but keep source-macro-derived names for readability; auto-index.
hw/arm/aspeed_ast2600_fuji.c:61 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:71 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:72 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:73 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:74 | i2c_slave_create_simple | OBJECT(bmc) | "tmp422" | Board i2c_init; single TMP422.
hw/arm/aspeed_ast2600_fuji.c:77 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:79 | i2c_slave_create_simple | OBJECT(bmc) | "lm75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:81 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:82 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:84 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:85 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:88 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:89 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:96 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:97 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_fuji.c:106 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; loop x8 -> auto-index.
hw/arm/aspeed_ast2600_fuji.c:107 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; loop x8 -> auto-index.
hw/arm/aspeed_ast2600_fuji.c:108 | i2c_slave_create_simple | OBJECT(bmc) | "tmp75[*]" | Board i2c_init; loop x8 -> auto-index.
hw/arm/aspeed_ast2600_rainier.c:76 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | rainier_bmc_i2c_init(AspeedMachineState *bmc) board i2c_init. Local Object *o = OBJECT(bmc) added. Many TMP105 -> auto-index.
hw/arm/aspeed_ast2600_rainier.c:78 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:80 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:82 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; multiple PCA9546 -> auto-index.
hw/arm/aspeed_ast2600_rainier.c:89 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:91 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:95 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:100 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:102 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:104 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:106 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:119 | i2c_slave_create_simple | OBJECT(bmc) | "dps310" | Board i2c_init; single dps310 pressure sensor.
hw/arm/aspeed_ast2600_rainier.c:121 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:123 | i2c_slave_create_simple | OBJECT(bmc) | "max31785" | Board i2c_init; single max31785 fan controller.
hw/arm/aspeed_ast2600_rainier.c:127 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:129 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:141 | i2c_slave_create_simple | OBJECT(bmc) | "tmp423[*]" | Board i2c_init; four tmp423 -> auto-index.
hw/arm/aspeed_ast2600_rainier.c:142 | i2c_slave_create_simple | OBJECT(bmc) | "tmp423[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:145 | i2c_slave_create_simple | OBJECT(bmc) | "tmp423[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:146 | i2c_slave_create_simple | OBJECT(bmc) | "tmp423[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:149 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:151 | i2c_slave_create_simple | OBJECT(bmc) | "tmp105[*]" | Board i2c_init; auto-index.
hw/arm/aspeed_ast2600_rainier.c:153 | i2c_slave_create_simple | OBJECT(bmc) | "i2c-mux[*]" | Board i2c_init; auto-index.
Link: https://lore.kernel.org/qemu-devel/[email protected]/
AI-used-for: code (refactoring)
Signed-off-by: Alexander Graf <[email protected]>
---
hw/arm/aspeed_ast2600_anacapa.c | 31 ++++++----
hw/arm/aspeed_ast2600_catalina.c | 65 +++++++++++---------
hw/arm/aspeed_ast2600_fuji.c | 65 +++++++++++---------
hw/arm/aspeed_ast2600_rainier.c | 102 ++++++++++++++++++++-----------
4 files changed, 155 insertions(+), 108 deletions(-)
diff --git a/hw/arm/aspeed_ast2600_anacapa.c b/hw/arm/aspeed_ast2600_anacapa.c
index 98395f196b..d6412f5b0c 100644
--- a/hw/arm/aspeed_ast2600_anacapa.c
+++ b/hw/arm/aspeed_ast2600_anacapa.c
@@ -228,6 +228,7 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
AspeedSoCState *soc = bmc->soc;
I2CBus *i2c[16] = {};
I2CSlave *i2c_mux;
+ Object *o = OBJECT(bmc);
for (int i = 0; i < ARRAY_SIZE(i2c); i++) {
i2c[i] = aspeed_i2c_get_bus(&soc->i2c, i);
@@ -237,17 +238,17 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
/* eeprom@50 */
at24c_eeprom_init(i2c[0], 0x50, 256 * KiB);
/* i2c-mux@70 */
- i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x70);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x70);
/* &i2c1 */
/* eeprom@50 */
at24c_eeprom_init(i2c[1], 0x50, 256 * KiB);
/* i2c-mux@70 (PCA9546) — 4 channels, empty */
- i2c_slave_create_simple_orphan(i2c[1], TYPE_PCA9546, 0x70);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[1], TYPE_PCA9546, 0x70);
/* &i2c4 */
/* i2c-mux@70 (PCA9548) */
- i2c_slave_create_simple_orphan(i2c[4], TYPE_PCA9548, 0x70);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[4], TYPE_PCA9548, 0x70);
/* &i2c6 */
/* eeprom@50 */
@@ -256,15 +257,16 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c8 */
/* i2c-mux@72 (PCA9546) */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[8], TYPE_PCA9546, 0x72);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[8],
+ TYPE_PCA9546, 0x72);
/* i2c8mux ch0 */
/* adc128d818@1f — no model */
/* pca9555@22 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 0),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 0),
TYPE_PCA9552, 0x22);
/* pca9555@24 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 0),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 0),
TYPE_PCA9552, 0x24);
/* eeprom@50 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 16 * KiB,
@@ -272,10 +274,10 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
/* i2c8mux ch1 */
/* pca9555@22 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1),
TYPE_PCA9552, 0x22);
/* pca9555@24 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1),
TYPE_PCA9552, 0x24);
/* eeprom@50 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 16 * KiB,
@@ -291,11 +293,12 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c10 */
/* i2c-mux@71 (PCA9548) */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[10], TYPE_PCA9548, 0x71);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[10],
+ TYPE_PCA9548, 0x71);
/* i2c10mux ch5 */
/* pca9555@22*/
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 5),
TYPE_PCA9552, 0x22);
/* eeprom@52 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB,
@@ -303,13 +306,14 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c11 */
/* i2c-mux@71 (PCA9548) */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[11], TYPE_PCA9548, 0x71);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[11],
+ TYPE_PCA9548, 0x71);
/* i2c11mux ch0-ch4 — empty */
/* i2c11mux ch5 */
/* pca9555@22 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 5),
TYPE_PCA9552, 0x22);
/* eeprom@52 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x52, 32 * KiB,
@@ -317,7 +321,8 @@ static void anacapa_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c13 */
/* i2c-mux@70 (PCA9548) */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[13], TYPE_PCA9548, 0x70);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[13],
+ TYPE_PCA9548, 0x70);
/* i2c13mux ch3 */
/* adc128d818@1f - no model */
diff --git a/hw/arm/aspeed_ast2600_catalina.c b/hw/arm/aspeed_ast2600_catalina.c
index c2c949ace3..59fc0d2437 100644
--- a/hw/arm/aspeed_ast2600_catalina.c
+++ b/hw/arm/aspeed_ast2600_catalina.c
@@ -464,6 +464,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
AspeedSoCState *soc = bmc->soc;
I2CBus *i2c[16] = {};
I2CSlave *i2c_mux;
+ Object *o = OBJECT(bmc);
/* busses 0-15 are all used. */
for (int i = 0; i < ARRAY_SIZE(i2c); i++) {
@@ -472,43 +473,46 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c0 */
/* i2c-mux@71 (PCA9546) on i2c0 */
- i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x71);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x71);
/* i2c-mux@72 (PCA9546) on i2c0 */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x72);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0],
+ TYPE_PCA9546, 0x72);
/* i2c0mux1ch1 */
/* io_expander7 - pca9535@20 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1),
TYPE_PCA9535, 0x20);
/* eeprom@50 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB,
gb200io_eeprom, gb200io_eeprom_len);
/* i2c-mux@73 (PCA9546) on i2c0 */
- i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x73);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x73);
/* i2c-mux@75 (PCA9546) on i2c0 */
- i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x75);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x75);
/* i2c-mux@76 (PCA9546) on i2c0 */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x76);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0],
+ TYPE_PCA9546, 0x76);
/* i2c0mux4ch1 */
/* io_expander8 - pca9535@21 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 1),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 1),
TYPE_PCA9535, 0x21);
/* eeprom@50 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 1), 0x50, 8 * KiB,
gb200io_eeprom, gb200io_eeprom_len);
/* i2c-mux@77 (PCA9546) on i2c0 */
- i2c_slave_create_simple_orphan(i2c[0], TYPE_PCA9546, 0x77);
+ i2c_slave_create_simple(o, "i2c-mux[*]", i2c[0], TYPE_PCA9546, 0x77);
/* &i2c1 */
/* i2c-mux@70 (PCA9548) on i2c1 */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[1], TYPE_PCA9548, 0x70);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[1],
+ TYPE_PCA9548, 0x70);
/* i2c1mux0ch0 */
/* ina238@41 - no model */
/* ina238@42 - no model */
@@ -525,14 +529,15 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 5), 0x54, 8 * KiB,
pdb_eeprom, pdb_eeprom_len);
/* tpm75@4f */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 5), TYPE_TMP75, 0x4f);
+ i2c_slave_create_simple(o, "tmp75[*]", pca954x_i2c_get_bus(i2c_mux, 5),
+ TYPE_TMP75, 0x4f);
/* i2c1mux0ch6 */
/* io_expander5 - pca9554@27 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 6),
TYPE_PCA9554, 0x27);
/* io_expander6 - pca9555@25 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 6),
+ i2c_slave_create_simple(o, "gpio[*]", pca954x_i2c_get_bus(i2c_mux, 6),
TYPE_PCA9552, 0x25);
/* eeprom@51 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x51, 8 * KiB,
@@ -543,15 +548,16 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 7), 0x53, 8 * KiB,
fio_eeprom, fio_eeprom_len);
/* temperature-sensor@4b - tmp75 */
- i2c_slave_create_simple_orphan(pca954x_i2c_get_bus(i2c_mux, 7), TYPE_TMP75, 0x4b);
+ i2c_slave_create_simple(o, "tmp75[*]", pca954x_i2c_get_bus(i2c_mux, 7),
+ TYPE_TMP75, 0x4b);
/* &i2c2 */
/* io_expander0 - pca9555@20 */
- i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x20);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x20);
/* io_expander0 - pca9555@21 */
- i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x21);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x21);
/* io_expander0 - pca9555@27 */
- i2c_slave_create_simple_orphan(i2c[2], TYPE_PCA9552, 0x27);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[2], TYPE_PCA9552, 0x27);
/* eeprom@50 */
at24c_eeprom_init(i2c[2], 0x50, 8 * KiB);
/* eeprom@51 */
@@ -559,7 +565,8 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c5 */
/* i2c-mux@70 (PCA9548) on i2c5 */
- i2c_mux = i2c_slave_create_simple_orphan(i2c[5], TYPE_PCA9548, 0x70);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]", i2c[5],
+ TYPE_PCA9548, 0x70);
/* i2c5mux0ch6 */
/* eeprom@52 */
at24c_eeprom_init_rom(pca954x_i2c_get_bus(i2c_mux, 6), 0x52, 8 * KiB,
@@ -572,15 +579,15 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c6 */
/* io_expander3 - pca9555@21 */
- i2c_slave_create_simple_orphan(i2c[6], TYPE_PCA9552, 0x21);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[6], TYPE_PCA9552, 0x21);
/* rtc@6f - nct3018y */
- i2c_slave_create_simple_orphan(i2c[6], TYPE_DS1338, 0x6f);
+ i2c_slave_create_simple(o, "rtc", i2c[6], TYPE_DS1338, 0x6f);
/* &i2c9 */
/* io_expander4 - pca9555@4f */
- i2c_slave_create_simple_orphan(i2c[9], TYPE_PCA9552, 0x4f);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[9], TYPE_PCA9552, 0x4f);
/* temperature-sensor@4b - tpm75 */
- i2c_slave_create_simple_orphan(i2c[9], TYPE_TMP75, 0x4b);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[9], TYPE_TMP75, 0x4b);
/* eeprom@50 */
at24c_eeprom_init_rom(i2c[9], 0x50, 8 * KiB, scm_eeprom, scm_eeprom_len);
/* eeprom@56 */
@@ -588,7 +595,7 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c10 */
/* temperature-sensor@1f - tpm421 */
- i2c_slave_create_simple_orphan(i2c[10], TYPE_TMP421, 0x1f);
+ i2c_slave_create_simple(o, "tmp421[*]", i2c[10], TYPE_TMP421, 0x1f);
/* eeprom@50 */
at24c_eeprom_init_rom(i2c[10], 0x50, 8 * KiB, nic_eeprom, nic_eeprom_len);
@@ -615,21 +622,21 @@ static void catalina_bmc_i2c_init(AspeedMachineState *bmc)
/* &i2c14 */
/* io_expander9 - pca9555@10 */
- i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x10);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x10);
/* io_expander10 - pca9555@11 */
- i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x11);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x11);
/* io_expander11 - pca9555@12 */
- i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x12);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x12);
/* io_expander12 - pca9555@13 */
- i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x13);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x13);
/* io_expander13 - pca9555@14 */
- i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x14);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x14);
/* io_expander14 - pca9555@15 */
- i2c_slave_create_simple_orphan(i2c[14], TYPE_PCA9552, 0x15);
+ i2c_slave_create_simple(o, "gpio[*]", i2c[14], TYPE_PCA9552, 0x15);
/* &i2c15 */
/* temperature-sensor@1f - tmp421 */
- i2c_slave_create_simple_orphan(i2c[15], TYPE_TMP421, 0x1f);
+ i2c_slave_create_simple(o, "tmp421[*]", i2c[15], TYPE_TMP421, 0x1f);
/* eeprom@52 */
at24c_eeprom_init_rom(i2c[15], 0x52, 8 * KiB, nic_eeprom, nic_eeprom_len);
}
diff --git a/hw/arm/aspeed_ast2600_fuji.c b/hw/arm/aspeed_ast2600_fuji.c
index 59b2da1ccf..1e681d0090 100644
--- a/hw/arm/aspeed_ast2600_fuji.c
+++ b/hw/arm/aspeed_ast2600_fuji.c
@@ -24,10 +24,11 @@
#define FUJI_BMC_HW_STRAP2 0x00000000
#define FUJI_BMC_RAM_SIZE ASPEED_RAM_SIZE(2 * GiB)
-static void get_pca9548_channels(I2CBus *bus, uint8_t mux_addr,
- I2CBus **channels)
+static void get_pca9548_channels(Object *parent, I2CBus *bus,
+ uint8_t mux_addr, I2CBus **channels)
{
- I2CSlave *mux = i2c_slave_create_simple_orphan(bus, "pca9548", mux_addr);
+ I2CSlave *mux = i2c_slave_create_simple(parent, "i2c-mux[*]", bus,
+ "pca9548", mux_addr);
for (int i = 0; i < 8; i++) {
channels[i] = pca954x_i2c_get_bus(mux, i);
}
@@ -37,6 +38,7 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc)
{
AspeedSoCState *soc = bmc->soc;
I2CBus *i2c[144] = {};
+ Object *o = OBJECT(bmc);
for (int i = 0; i < 16; i++) {
i2c[i] = aspeed_i2c_get_bus(&soc->i2c, i);
@@ -45,20 +47,20 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc)
I2CBus *i2c480 = i2c[8];
I2CBus *i2c600 = i2c[11];
- get_pca9548_channels(i2c180, 0x70, &i2c[16]);
- get_pca9548_channels(i2c480, 0x70, &i2c[24]);
+ get_pca9548_channels(o, i2c180, 0x70, &i2c[16]);
+ get_pca9548_channels(o, i2c480, 0x70, &i2c[24]);
/* NOTE: The device tree skips [32, 40) in the alias numbering */
- get_pca9548_channels(i2c600, 0x77, &i2c[40]);
- get_pca9548_channels(i2c[24], 0x71, &i2c[48]);
- get_pca9548_channels(i2c[25], 0x72, &i2c[56]);
- get_pca9548_channels(i2c[26], 0x76, &i2c[64]);
- get_pca9548_channels(i2c[27], 0x76, &i2c[72]);
+ get_pca9548_channels(o, i2c600, 0x77, &i2c[40]);
+ get_pca9548_channels(o, i2c[24], 0x71, &i2c[48]);
+ get_pca9548_channels(o, i2c[25], 0x72, &i2c[56]);
+ get_pca9548_channels(o, i2c[26], 0x76, &i2c[64]);
+ get_pca9548_channels(o, i2c[27], 0x76, &i2c[72]);
for (int i = 0; i < 8; i++) {
- get_pca9548_channels(i2c[40 + i], 0x76, &i2c[80 + i * 8]);
+ get_pca9548_channels(o, i2c[40 + i], 0x76, &i2c[80 + i * 8]);
}
- i2c_slave_create_simple_orphan(i2c[17], TYPE_LM75, 0x4c);
- i2c_slave_create_simple_orphan(i2c[17], TYPE_LM75, 0x4d);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[17], TYPE_LM75, 0x4c);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[17], TYPE_LM75, 0x4d);
/*
* EEPROM 24c64 size is 64Kbits or 8 Kbytes
@@ -68,33 +70,33 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc)
at24c_eeprom_init(i2c[20], 0x50, 256);
at24c_eeprom_init(i2c[22], 0x52, 256);
- i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x48);
- i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x49);
- i2c_slave_create_simple_orphan(i2c[3], TYPE_LM75, 0x4a);
- i2c_slave_create_simple_orphan(i2c[3], TYPE_TMP422, 0x4c);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x48);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x49);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[3], TYPE_LM75, 0x4a);
+ i2c_slave_create_simple(o, "tmp422", i2c[3], TYPE_TMP422, 0x4c);
at24c_eeprom_init(i2c[8], 0x51, 8 * KiB);
- i2c_slave_create_simple_orphan(i2c[8], TYPE_LM75, 0x4a);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[8], TYPE_LM75, 0x4a);
- i2c_slave_create_simple_orphan(i2c[50], TYPE_LM75, 0x4c);
+ i2c_slave_create_simple(o, "lm75[*]", i2c[50], TYPE_LM75, 0x4c);
at24c_eeprom_init(i2c[50], 0x52, 8 * KiB);
- i2c_slave_create_simple_orphan(i2c[51], TYPE_TMP75, 0x48);
- i2c_slave_create_simple_orphan(i2c[52], TYPE_TMP75, 0x49);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[51], TYPE_TMP75, 0x48);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[52], TYPE_TMP75, 0x49);
- i2c_slave_create_simple_orphan(i2c[59], TYPE_TMP75, 0x48);
- i2c_slave_create_simple_orphan(i2c[60], TYPE_TMP75, 0x49);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[59], TYPE_TMP75, 0x48);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[60], TYPE_TMP75, 0x49);
at24c_eeprom_init(i2c[65], 0x53, 8 * KiB);
- i2c_slave_create_simple_orphan(i2c[66], TYPE_TMP75, 0x49);
- i2c_slave_create_simple_orphan(i2c[66], TYPE_TMP75, 0x48);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[66], TYPE_TMP75, 0x49);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[66], TYPE_TMP75, 0x48);
at24c_eeprom_init(i2c[68], 0x52, 8 * KiB);
at24c_eeprom_init(i2c[69], 0x52, 8 * KiB);
at24c_eeprom_init(i2c[70], 0x52, 8 * KiB);
at24c_eeprom_init(i2c[71], 0x52, 8 * KiB);
at24c_eeprom_init(i2c[73], 0x53, 8 * KiB);
- i2c_slave_create_simple_orphan(i2c[74], TYPE_TMP75, 0x49);
- i2c_slave_create_simple_orphan(i2c[74], TYPE_TMP75, 0x48);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[74], TYPE_TMP75, 0x49);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[74], TYPE_TMP75, 0x48);
at24c_eeprom_init(i2c[76], 0x52, 8 * KiB);
at24c_eeprom_init(i2c[77], 0x52, 8 * KiB);
at24c_eeprom_init(i2c[78], 0x52, 8 * KiB);
@@ -103,9 +105,12 @@ static void fuji_bmc_i2c_init(AspeedMachineState *bmc)
for (int i = 0; i < 8; i++) {
at24c_eeprom_init(i2c[81 + i * 8], 0x56, 64 * KiB);
- i2c_slave_create_simple_orphan(i2c[82 + i * 8], TYPE_TMP75, 0x48);
- i2c_slave_create_simple_orphan(i2c[83 + i * 8], TYPE_TMP75, 0x4b);
- i2c_slave_create_simple_orphan(i2c[84 + i * 8], TYPE_TMP75, 0x4a);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[82 + i * 8],
+ TYPE_TMP75, 0x48);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[83 + i * 8],
+ TYPE_TMP75, 0x4b);
+ i2c_slave_create_simple(o, "tmp75[*]", i2c[84 + i * 8],
+ TYPE_TMP75, 0x4a);
}
}
diff --git a/hw/arm/aspeed_ast2600_rainier.c b/hw/arm/aspeed_ast2600_rainier.c
index 8ba15aceca..2f5e3daf3b 100644
--- a/hw/arm/aspeed_ast2600_rainier.c
+++ b/hw/arm/aspeed_ast2600_rainier.c
@@ -67,43 +67,55 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bmc)
{
AspeedSoCState *soc = bmc->soc;
I2CSlave *i2c_mux;
+ Object *o = OBJECT(bmc);
at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 0), 0x51, 32 * KiB);
aspeed_create_pca9552(OBJECT(bmc), soc, 3, 0x61);
/* The rainier expects a TMP275 but a TMP105 is compatible */
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105,
- 0x49);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4), TYPE_TMP105,
- 0x4a);
- i2c_mux = i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 4),
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 4),
+ TYPE_TMP105, 0x48);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 4),
+ TYPE_TMP105, 0x49);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 4),
+ TYPE_TMP105, 0x4a);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 4),
"pca9546", 0x70);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 2), 0x52, 64 * KiB);
aspeed_create_pca9552(OBJECT(bmc), soc, 4, 0x60);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5), TYPE_TMP105,
- 0x49);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 5),
+ TYPE_TMP105, 0x48);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 5),
+ TYPE_TMP105, 0x49);
aspeed_create_pca9552(OBJECT(bmc), soc, 5, 0x60);
aspeed_create_pca9552(OBJECT(bmc), soc, 5, 0x61);
- i2c_mux = i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 5),
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 5),
"pca9546", 0x70);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105,
- 0x4a);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6), TYPE_TMP105,
- 0x4b);
- i2c_mux = i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 6),
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 6),
+ TYPE_TMP105, 0x48);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 6),
+ TYPE_TMP105, 0x4a);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 6),
+ TYPE_TMP105, 0x4b);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 6),
"pca9546", 0x70);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB);
@@ -116,18 +128,25 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bmc)
aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x33);
aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x60);
aspeed_create_pca9552(OBJECT(bmc), soc, 7, 0x61);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "dps310", 0x76);
+ i2c_slave_create_simple(o, "dps310",
+ aspeed_i2c_get_bus(&soc->i2c, 7),
+ "dps310", 0x76);
/* Bus 7: TODO si7021-a20@20 */
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 7), "max31785", 0x52);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 7),
+ TYPE_TMP105, 0x48);
+ i2c_slave_create_simple(o, "max31785",
+ aspeed_i2c_get_bus(&soc->i2c, 7),
+ "max31785", 0x52);
at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x50, 64 * KiB);
at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 7), 0x51, 64 * KiB);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 8), TYPE_TMP105,
- 0x4a);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 8),
+ TYPE_TMP105, 0x48);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 8),
+ TYPE_TMP105, 0x4a);
at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x50,
64 * KiB, rainier_bb_fruid, rainier_bb_fruid_len);
at24c_eeprom_init_rom(aspeed_i2c_get_bus(&soc->i2c, 8), 0x51,
@@ -138,19 +157,30 @@ static void rainier_bmc_i2c_init(AspeedMachineState *bmc)
/* Bus 8: ucd90320@b */
/* Bus 8: ucd90320@c */
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x4c);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 9), "tmp423", 0x4d);
+ i2c_slave_create_simple(o, "tmp423[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 9),
+ "tmp423", 0x4c);
+ i2c_slave_create_simple(o, "tmp423[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 9),
+ "tmp423", 0x4d);
at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 9), 0x50, 128 * KiB);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0x4c);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 10), "tmp423", 0x4d);
+ i2c_slave_create_simple(o, "tmp423[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 10),
+ "tmp423", 0x4c);
+ i2c_slave_create_simple(o, "tmp423[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 10),
+ "tmp423", 0x4d);
at24c_eeprom_init(aspeed_i2c_get_bus(&soc->i2c, 10), 0x50, 128 * KiB);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE_TMP105,
- 0x48);
- i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11), TYPE_TMP105,
- 0x49);
- i2c_mux = i2c_slave_create_simple_orphan(aspeed_i2c_get_bus(&soc->i2c, 11),
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 11),
+ TYPE_TMP105, 0x48);
+ i2c_slave_create_simple(o, "tmp105[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 11),
+ TYPE_TMP105, 0x49);
+ i2c_mux = i2c_slave_create_simple(o, "i2c-mux[*]",
+ aspeed_i2c_get_bus(&soc->i2c, 11),
"pca9546", 0x70);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 0), 0x50, 64 * KiB);
at24c_eeprom_init(pca954x_i2c_get_bus(i2c_mux, 1), 0x51, 64 * KiB);
--
2.47.1