To retrieve the I3C bus object normally, the order is Aspeed I3C -> DW I3C[n] -> bus object, so make a nice wrapper for people to use.
Signed-off-by: Joe Komlodi <[email protected]> Reviewed-by: Jamin Lin <[email protected]> Signed-off-by: Jamin Lin <[email protected]> --- include/hw/i3c/aspeed_i3c.h | 3 +++ hw/i3c/aspeed_i3c.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/include/hw/i3c/aspeed_i3c.h b/include/hw/i3c/aspeed_i3c.h index b8827d31d7..42c9eedd85 100644 --- a/include/hw/i3c/aspeed_i3c.h +++ b/include/hw/i3c/aspeed_i3c.h @@ -31,4 +31,7 @@ struct AspeedI3CState { DWI3C devices[ASPEED_I3C_NR_DEVICES]; uint8_t id; }; + +I3CBus *aspeed_i3c_get_bus(AspeedI3CState *s, uint8_t bus_num); + #endif /* ASPEED_I3C_H */ diff --git a/hw/i3c/aspeed_i3c.c b/hw/i3c/aspeed_i3c.c index 2700c5f4cd..bac8c55bb0 100644 --- a/hw/i3c/aspeed_i3c.c +++ b/hw/i3c/aspeed_i3c.c @@ -153,6 +153,15 @@ static const MemoryRegionOps aspeed_i3c_ops = { } }; +I3CBus *aspeed_i3c_get_bus(AspeedI3CState *s, uint8_t bus_num) +{ + if (bus_num < ARRAY_SIZE(s->devices)) { + return s->devices[bus_num].bus; + } + /* Developer error, fail fast. */ + g_assert_not_reached(); +} + static void aspeed_i3c_reset(DeviceState *dev) { AspeedI3CState *s = ASPEED_I3C(dev); -- 2.43.0
