On Fri, Mar 31, 2023 at 01:01:15AM +0000, Joe Komlodi wrote: > Hi all, > > This series adds I3C bus support to QEMU and adds more functionality to the > Aspeed I3C controller. > > This implementation is a basic implementation that introduces IBIs > (including hot-join), CCCs, and SDR data transfer. As-is, it doesnt support > multi-controller buses or HDR transfers. > > First we add the I3C bus and controller model. With that added we > gradually extend the functionality of the Aspeed I3C controller so it > can do transfers. > > With that added, we add 2 targets. The first target is a mock I3C > target. It's intended to be a very simple target just to verify that I3C > is working on the guest. Internally, we've used it on Linux to verify > that i3C devices can be probed and can send/receive data and send IBIs. > > The second target is a remote target. The intention of this is to be > able to communicate to a target that exists outside of QEMU. > > Lastly we add hotplugging support. The hotplugging doesn't do anything too > complicated, it just adds the device attempting to hotplug to the bus. It is > the device's responsibility to hot-join and go through the DAA process to > participate on the bus. > > Thanks! > Joe > > Joe Komlodi (16): > hw/misc/aspeed_i3c: Move to i3c directory > hw/i3c: Add bus support > hw/i3c/aspeed_i3c: Add more register fields > hw/i3c/aspeed_i3c: Add more reset values > hw/i3c/aspeed_i3c: Add register RO field masks > hw/i3c/aspeed_i3c: Treat more registers as read-as-zero > hw/i3c/aspeed_i3c: Use 32 bits on MMIO writes > hw/i3c/aspeed_i3c: Add IRQ MMIO behavior > hw/i3c/aspeed_i3c: Add data TX and RX > hw/i3c/aspeed_i3c: Add IBI handling > hw/i3c/aspeed_i3c: Add ctrl MMIO handling > hw/i3c/aspeed_i3c: Add controller resets > hw/i3c: Add Mock target > hw/i3c: remote_i3c: Add model > qtest: remote_i3c: Add remote I3C qtest > hw/i3c: Add hotplug support
Isn't this the designware i3c ip block, and as such could we name it so? I was going to send an i2c only version of this but it seems you've beaten me to it and got the i3c core going. > hw/Kconfig | 1 + > hw/arm/Kconfig | 2 + > hw/i3c/Kconfig | 17 + > hw/i3c/aspeed_i3c.c | 2044 +++++++++++++++++++++++++++++++++ > hw/i3c/core.c | 646 +++++++++++ > hw/i3c/meson.build | 6 + > hw/i3c/mock-target.c | 314 +++++ > hw/i3c/remote-i3c.c | 469 ++++++++ > hw/i3c/trace-events | 52 + > hw/i3c/trace.h | 1 + > hw/meson.build | 1 + > hw/misc/aspeed_i3c.c | 384 ------- > hw/misc/meson.build | 1 - > hw/misc/trace-events | 6 - > include/hw/arm/aspeed_soc.h | 2 +- > include/hw/i3c/aspeed_i3c.h | 207 ++++ > include/hw/i3c/i3c.h | 275 +++++ > include/hw/i3c/mock-target.h | 60 + > include/hw/i3c/remote-i3c.h | 72 ++ > include/hw/misc/aspeed_i3c.h | 48 - > meson.build | 1 + > tests/qtest/meson.build | 1 + > tests/qtest/remote-i3c-test.c | 610 ++++++++++ > 23 files changed, 4780 insertions(+), 440 deletions(-) > create mode 100644 hw/i3c/Kconfig > create mode 100644 hw/i3c/aspeed_i3c.c > create mode 100644 hw/i3c/core.c > create mode 100644 hw/i3c/meson.build > create mode 100644 hw/i3c/mock-target.c > create mode 100644 hw/i3c/remote-i3c.c > create mode 100644 hw/i3c/trace-events > create mode 100644 hw/i3c/trace.h > delete mode 100644 hw/misc/aspeed_i3c.c > create mode 100644 include/hw/i3c/aspeed_i3c.h > create mode 100644 include/hw/i3c/i3c.h > create mode 100644 include/hw/i3c/mock-target.h > create mode 100644 include/hw/i3c/remote-i3c.h > delete mode 100644 include/hw/misc/aspeed_i3c.h > create mode 100644 tests/qtest/remote-i3c-test.c > > -- > 2.40.0.348.gf938b09366-goog > > -- Ben Dooks, b...@fluff.org, http://www.fluff.org/ben/ Large Hadron Colada: A large Pina Colada that makes the universe disappear.