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 | 2 ++ hw/i3c/aspeed_i3c.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/include/hw/i3c/aspeed_i3c.h b/include/hw/i3c/aspeed_i3c.h index 436fb532b9..e4e8fda93b 100644 --- a/include/hw/i3c/aspeed_i3c.h +++ b/include/hw/i3c/aspeed_i3c.h @@ -34,3 +34,5 @@ typedef struct AspeedI3CState { uint8_t id; } AspeedI3CState; #endif /* ASPEED_I3C_H */ + +I3CBus *aspeed_i3c_get_bus(AspeedI3CState *s, uint8_t bus_num); diff --git a/hw/i3c/aspeed_i3c.c b/hw/i3c/aspeed_i3c.c index bb41493c55..867909ebe2 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
