misc/led: LED state is set opposite of what is expected
authorGlenn Miles <milesg@linux.vnet.ibm.com>
Tue, 24 Oct 2023 19:19:45 +0000 (14:19 -0500)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 27 Oct 2023 11:51:17 +0000 (12:51 +0100)
Testing of the LED state showed that when the LED polarity was
set to GPIO_POLARITY_ACTIVE_LOW and a low logic value was set on
the input GPIO of the LED, the LED was being turn off when it was
expected to be turned on.

Fixes: ddb67f6402 ("hw/misc/led: Allow connecting from GPIO output")
Signed-off-by: Glenn Miles <milesg@linux.vnet.ibm.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au>
Message-id: 20231024191945.4135036-1-milesg@linux.vnet.ibm.com
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/misc/led.c

index f6d6d68bce594ab3af2120abab701887d5329f7a..42bb43a39a2b2ceb5d849e778c3fd29703df66ea 100644 (file)
@@ -63,7 +63,7 @@ static void led_set_state_gpio_handler(void *opaque, int line, int new_state)
     LEDState *s = LED(opaque);
 
     assert(line == 0);
-    led_set_state(s, !!new_state != s->gpio_active_high);
+    led_set_state(s, !!new_state == s->gpio_active_high);
 }
 
 static void led_reset(DeviceState *dev)