On Wed, 7 Jun 2023 at 04:40, Cédric Le Goater <c...@kaod.org> wrote: > > Simple routine to retrieve a DeviceState object on a SPI bus using its > address/cs. It will be useful for the board to wire the CS lines. > > Cc: Alistair Francis <alist...@alistair23.me> > Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> > Signed-off-by: Cédric Le Goater <c...@kaod.org>
Reviewed-by: Joel Stanley <j...@jms.id.au> > --- > include/hw/ssi/ssi.h | 2 ++ > hw/ssi/ssi.c | 15 +++++++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/include/hw/ssi/ssi.h b/include/hw/ssi/ssi.h > index 9e0706a5248c..01662521b09a 100644 > --- a/include/hw/ssi/ssi.h > +++ b/include/hw/ssi/ssi.h > @@ -112,4 +112,6 @@ SSIBus *ssi_create_bus(DeviceState *parent, const char > *name); > > uint32_t ssi_transfer(SSIBus *bus, uint32_t val); > > +DeviceState *ssi_get_cs(SSIBus *bus, uint8_t addr); > + > #endif > diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c > index d4409535429c..7c71fce0db90 100644 > --- a/hw/ssi/ssi.c > +++ b/hw/ssi/ssi.c > @@ -27,6 +27,21 @@ struct SSIBus { > #define TYPE_SSI_BUS "SSI" > OBJECT_DECLARE_SIMPLE_TYPE(SSIBus, SSI_BUS) > > +DeviceState *ssi_get_cs(SSIBus *bus, uint8_t addr) > +{ > + BusState *b = BUS(bus); > + BusChild *kid; > + > + QTAILQ_FOREACH(kid, &b->children, sibling) { > + SSIPeripheral *kid_ssi = SSI_PERIPHERAL(kid->child); > + if (kid_ssi->addr == addr) { > + return kid->child; > + } > + } > + > + return NULL; > +} > + > static const TypeInfo ssi_bus_info = { > .name = TYPE_SSI_BUS, > .parent = TYPE_BUS, > -- > 2.40.1 >