[PATCH] ssi: Display chip select polarity in monitor 'info qtree'
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 40008000/1000 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é --- 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
Re: [PATCH] ssi: Display chip select polarity in monitor 'info qtree'
Cc'ing Markus for "Monitor" tree. On 10/5/20 9:44 AM, Philippe Mathieu-Daudé wrote: Hi Peter, Can you take this patch via your qemu-arm tree please? (most of SPI boards are ARM based) On 9/27/20 11:19 AM, Philippe Mathieu-Daudé 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 40008000/1000 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é --- 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)
Re: [PATCH] ssi: Display chip select polarity in monitor 'info qtree'
On Sun, Sep 27, 2020 at 2:20 AM Philippe Mathieu-Daudé 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 40008000/1000 > 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é Reviewed-by: Alistair Francis 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 > >
Re: [PATCH] ssi: Display chip select polarity in monitor 'info qtree'
On 9/27/20 11:19 AM, Philippe Mathieu-Daudé 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 40008000/1000 > 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é Reviewed-by: Cédric Le Goater Tested-by: Cédric Le Goater Thanks, C. dev: aspeed.spi2-ast2600, id "" gpio-out "sysbus-irq" 2 num-cs = 1 (0x1) inject-failure = false sdram-base = 0 (0x0) mmio 1e641000/0100 mmio 5000/1000 bus: spi type SSI dev: aspeed.spi1-ast2600, id "" gpio-out "sysbus-irq" 2 num-cs = 1 (0x1) inject-failure = false sdram-base = 0 (0x0) mmio 1e63/0100 mmio 3000/1000 bus: spi type SSI dev: mx66l1g45g, id "" gpio-in "ssi-gpio-cs" 1 nonvolatile-cfg = 36863 (0x8fff) spansion-cr1nv = 0 (0x0) spansion-cr2nv = 8 (0x8) spansion-cr3nv = 2 (0x2) spansion-cr4nv = 16 (0x10) drive = "mtd2" chip select polarity: low dev: aspeed.fmc-ast2600, id "" gpio-out "sysbus-irq" 3 num-cs = 2 (0x2) inject-failure = false sdram-base = 2147483648 (0x8000) mmio 1e62/0100 mmio 2000/1000 bus: spi type SSI dev: mx66l1g45g, id "" gpio-in "ssi-gpio-cs" 1 nonvolatile-cfg = 36863 (0x8fff) spansion-cr1nv = 0 (0x0) spansion-cr2nv = 8 (0x8) spansion-cr3nv = 2 (0x2) spansion-cr4nv = 16 (0x10) drive = "mtd1" chip select polarity: low dev: mx66l1g45g, id "" gpio-in "ssi-gpio-cs" 1 nonvolatile-cfg = 36863 (0x8fff) spansion-cr1nv = 0 (0x0) spansion-cr2nv = 8 (0x8) spansion-cr3nv = 2 (0x2) spansion-cr4nv = 16 (0x10) drive = "mtd0" chip select polarity: low
Re: [PATCH] ssi: Display chip select polarity in monitor 'info qtree'
Hi Peter, Can you take this patch via your qemu-arm tree please? (most of SPI boards are ARM based) On 9/27/20 11:19 AM, Philippe Mathieu-Daudé 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 40008000/1000 > 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é > --- > 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) >