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]/
Assisted-by: Kiro
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


Reply via email to