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); 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 -- 2.21.3