On Sun, Sep 27, 2020 at 2:20 AM Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > > It is sometime useful to verify a device chip select polarity > on a SPI bus. Since we have this information available, display > it in the 'info qtree' monitor output: > > $ qemu-system-arm -M lm3s6965evb -monitor stdio -S > (qemu) info qtree > [...] > dev: pl022, id "" > gpio-out "sysbus-irq" 1 > mmio 0000000040008000/0000000000001000 > bus: ssi > type SSI > dev: ssd0323, id "" > gpio-in "" 1 > gpio-in "ssi-gpio-cs" 1 > chip select polarity: high <--- > dev: ssi-sd, id "" > gpio-in "ssi-gpio-cs" 1 > chip select polarity: low <--- > bus: sd-bus > type sd-bus > dev: sd-card, id "" > spec_version = 2 (0x2) > drive = "sd0" > spi = true > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > hw/ssi/ssi.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c > index 4278d0e4440..4c9f8d66d23 100644 > --- a/hw/ssi/ssi.c > +++ b/hw/ssi/ssi.c > @@ -17,6 +17,7 @@ > #include "migration/vmstate.h" > #include "qemu/module.h" > #include "qapi/error.h" > +#include "monitor/monitor.h" > #include "qom/object.h" > > struct SSIBus { > @@ -26,10 +27,31 @@ struct SSIBus { > #define TYPE_SSI_BUS "SSI" > OBJECT_DECLARE_SIMPLE_TYPE(SSIBus, SSI_BUS) > > +static void ssi_print_dev(Monitor *mon, DeviceState *dev, int indent) > +{ > + static const char *const polarity_s[] = { > + [SSI_CS_NONE] = "unknown", > + [SSI_CS_LOW] = "low", > + [SSI_CS_HIGH] = "high" > + }; > + SSISlaveClass *ssc = SSI_SLAVE_GET_CLASS(dev); > + > + monitor_printf(mon, "%*schip select polarity: %s\n", > + indent, "", polarity_s[ssc->cs_polarity]); > +} > + > +static void ssi_bus_class_init(ObjectClass *klass, void *data) > +{ > + BusClass *k = BUS_CLASS(klass); > + > + k->print_dev = ssi_print_dev; > +} > + > static const TypeInfo ssi_bus_info = { > .name = TYPE_SSI_BUS, > .parent = TYPE_BUS, > .instance_size = sizeof(SSIBus), > + .class_init = ssi_bus_class_init, > }; > > static void ssi_cs_default(void *opaque, int n, int level) > -- > 2.26.2 > >