Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/arm/tosa.c | 7 +++----
hw/arm/Kconfig | 1 +
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 5dee2d76c6..86d7e0283a 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
@@ -68,9 +69,6 @@ static void tosa_microdrive_attach(PXA2xxState *cpu)
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;
@@ -119,7 +117,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]);
@@ -234,6 +231,8 @@ 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, "blue LED");
tosa_gpio_setup(mpu, scp0, scp1, tmio);
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
index 2afaa7c8e9..009336cac8 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
On Fri, 12 Jun 2020 at 18:54, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> hw/arm/tosa.c | 7 +++----
> hw/arm/Kconfig | 1 +
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
> index 5dee2d76c6..86d7e0283a 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
> @@ -68,9 +69,6 @@ static void tosa_microdrive_attach(PXA2xxState *cpu)
> 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;
Why convert the blue LED and not the green, amber or wlan LEDs ?
thanks
-- PMM
On 6/15/20 6:00 PM, Peter Maydell wrote:
> On Fri, 12 Jun 2020 at 18:54, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>> hw/arm/tosa.c | 7 +++----
>> hw/arm/Kconfig | 1 +
>> 2 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
>> index 5dee2d76c6..86d7e0283a 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
>> @@ -68,9 +69,6 @@ static void tosa_microdrive_attach(PXA2xxState *cpu)
>> 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;
>
> Why convert the blue LED and not the green, amber or wlan LEDs ?
I don't have the schematics to verify the mapping is correct:
#define TOSA_GPIO_BT_LED (TOSA_SCOOP_JC_GPIO_BASE + 0)
#define TOSA_GPIO_NOTE_LED (TOSA_SCOOP_JC_GPIO_BASE + 1)
#define TOSA_GPIO_CHRG_ERR_LED (TOSA_SCOOP_JC_GPIO_BASE + 2)
#define TOSA_GPIO_TC6393XB_L3V_ON (TOSA_SCOOP_JC_GPIO_BASE + 5)
#define TOSA_GPIO_WLAN_LED (TOSA_SCOOP_JC_GPIO_BASE + 7)
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;
}
}
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]);
I wanted a simple proof-of-concept I could test with a board,
to show how easy this API can be used.
Using the binaries from here:
https://www.omegamoon.com/blog/static.php?page=ZaurusAndroid
the blue LED never blinks, probably because we remove the
bluetooth stack. Or maybe I haven't figured the correct
command line options.
For the next RFC I plan to rework to have a single LED container
per board, to have a unique singleton object that generates QMP
events.
>
> thanks
> -- PMM
>
© 2016 - 2026 Red Hat, Inc.