hw/ssi: Introduce a ssi_get_cs() helper

Simple routine to retrieve a DeviceState object on a SPI bus using its
CS index. It will be useful for the board to wire the CS lines.

Cc: Alistair Francis <alistair@alistair23.me>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
Cédric Le Goater 2023-06-07 06:39:36 +02:00
parent 243975c055
commit 8a211fa3b2
2 changed files with 17 additions and 0 deletions

View File

@ -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 cs_index)
{
BusState *b = BUS(bus);
BusChild *kid;
QTAILQ_FOREACH(kid, &b->children, sibling) {
SSIPeripheral *kid_ssi = SSI_PERIPHERAL(kid->child);
if (kid_ssi->cs_index == cs_index) {
return kid->child;
}
}
return NULL;
}
static const TypeInfo ssi_bus_info = {
.name = TYPE_SSI_BUS,
.parent = TYPE_BUS,

View File

@ -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 cs_index);
#endif