On 6/21/20 1:07 AM, Philippe Mathieu-Daudé wrote: > The recently added LED device reports LED status changes with > the 'led_set_intensity' trace event. It is less invasive than > the fprintf() calls. We need however to have a binary built > with tracing support. > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > hw/arm/tosa.c | 40 +++++++++++++--------------------------- > hw/arm/Kconfig | 1 + > 2 files changed, 14 insertions(+), 27 deletions(-) > > diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c > index 5dee2d76c6..74b5fd1049 100644 > --- a/hw/arm/tosa.c > +++ b/hw/arm/tosa.c > @@ -24,6 +24,7 @@ > #include "hw/irq.h" > #include "hw/ssi/ssi.h" > #include "hw/sysbus.h" > +#include "hw/misc/led.h" > #include "exec/address-spaces.h" > > #define TOSA_RAM 0x04000000 > @@ -65,27 +66,6 @@ static void tosa_microdrive_attach(PXA2xxState *cpu) > pxa2xx_pcmcia_attach(cpu->pcmcia[0], md); > } > > -static void tosa_out_switch(void *opaque, int line, int level) > -{ > - switch (line) { > - case 0: > - fprintf(stderr, "blue LED %s.\n", level ? "on" : "off"); > - break; > - case 1: > - fprintf(stderr, "green LED %s.\n", level ? "on" : "off"); > - break; > - case 2: > - fprintf(stderr, "amber LED %s.\n", level ? "on" : "off"); > - break; > - case 3: > - fprintf(stderr, "wlan LED %s.\n", level ? "on" : "off"); > - break; > - default: > - fprintf(stderr, "Uhandled out event: %d = %d\n", line, level); > - break; > - } > -} > - > static void tosa_reset(void *opaque, int line, int level) > { > if (level) { > @@ -98,7 +78,6 @@ static void tosa_gpio_setup(PXA2xxState *cpu, > DeviceState *scp1, > TC6393xbState *tmio) > { > - qemu_irq *outsignals = qemu_allocate_irqs(tosa_out_switch, cpu, 4); > qemu_irq reset; > > /* MMC/SD host */ > @@ -119,11 +98,6 @@ static void tosa_gpio_setup(PXA2xxState *cpu, > qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_JC_CF_IRQ), > NULL); > > - qdev_connect_gpio_out(scp1, TOSA_GPIO_BT_LED, outsignals[0]); > - qdev_connect_gpio_out(scp1, TOSA_GPIO_NOTE_LED, outsignals[1]); > - qdev_connect_gpio_out(scp1, TOSA_GPIO_CHRG_ERR_LED, outsignals[2]); > - qdev_connect_gpio_out(scp1, TOSA_GPIO_WLAN_LED, outsignals[3]); > - > qdev_connect_gpio_out(scp1, TOSA_GPIO_TC6393XB_L3V_ON, > tc6393xb_l3v_get(tmio)); > > /* UDC Vbus */ > @@ -234,6 +208,18 @@ static void tosa_init(MachineState *machine) > > scp0 = sysbus_create_simple("scoop", 0x08800000, NULL); > scp1 = sysbus_create_simple("scoop", 0x14800040, NULL); > + create_led_by_gpio_id(OBJECT(machine), DEVICE(scp1), > + TOSA_GPIO_BT_LED, > + LED_COLOR_BLUE, "bluetooth", 0); > + create_led_by_gpio_id(OBJECT(machine), DEVICE(scp1), > + TOSA_GPIO_NOTE_LED, > + LED_COLOR_GREEN, "note", 1); > + create_led_by_gpio_id(OBJECT(machine), DEVICE(scp1), > + TOSA_GPIO_CHRG_ERR_LED, > + LED_COLOR_AMBER, "charger-error", 2); > + create_led_by_gpio_id(OBJECT(machine), DEVICE(scp1), > + TOSA_GPIO_WLAN_LED, > + LED_COLOR_GREEN, "wlan", 3);
Oops, wrong last argument... > > tosa_gpio_setup(mpu, scp0, scp1, tmio); > > diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig > index 1a57a861ac..057c869d65 100644 > --- a/hw/arm/Kconfig > +++ b/hw/arm/Kconfig > @@ -150,6 +150,7 @@ config TOSA > select ZAURUS # scoop > select MICRODRIVE > select PXA2XX > + select LED > > config SPITZ > bool >