summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/hw/misc/led.h10
-rw-r--r--include/hw/qdev-core.h16
2 files changed, 26 insertions, 0 deletions
diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h
index 286d37c75c..aa359b87c2 100644
--- a/include/hw/misc/led.h
+++ b/include/hw/misc/led.h
@@ -9,6 +9,7 @@
#define HW_MISC_LED_H
#include "qom/object.h"
+#include "hw/qdev-core.h"
#define TYPE_LED "led"
@@ -37,10 +38,17 @@ struct LEDState {
/* Public */
uint8_t intensity_percent;
+ qemu_irq irq;
/* Properties */
char *description;
char *color;
+ /*
+ * Determines whether a GPIO is using a positive (active-high)
+ * logic (when used with GPIO, the intensity at reset is related
+ * to the GPIO polarity).
+ */
+ bool gpio_active_high;
};
typedef struct LEDState LEDState;
DECLARE_INSTANCE_CHECKER(LEDState, LED, TYPE_LED)
@@ -72,6 +80,7 @@ void led_set_state(LEDState *s, bool is_emitting);
/**
* led_create_simple: Create and realize a LED device
* @parentobj: the parent object
+ * @gpio_polarity: GPIO polarity
* @color: color of the LED
* @description: description of the LED (optional)
*
@@ -81,6 +90,7 @@ void led_set_state(LEDState *s, bool is_emitting);
* Returns: The newly allocated and instantiated LED object.
*/
LEDState *led_create_simple(Object *parentobj,
+ GpioPolarity gpio_polarity,
LEDColor color,
const char *description);
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 868973319e..a653295d6f 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -444,6 +444,22 @@ void qdev_machine_creation_done(void);
bool qdev_machine_modified(void);
/**
+ * GpioPolarity: Polarity of a GPIO line
+ *
+ * GPIO lines use either positive (active-high) logic,
+ * or negative (active-low) logic.
+ *
+ * In active-high logic (%GPIO_POLARITY_ACTIVE_HIGH), a pin is
+ * active when the voltage on the pin is high (relative to ground);
+ * whereas in active-low logic (%GPIO_POLARITY_ACTIVE_LOW), a pin
+ * is active when the voltage on the pin is low (or grounded).
+ */
+typedef enum {
+ GPIO_POLARITY_ACTIVE_LOW,
+ GPIO_POLARITY_ACTIVE_HIGH
+} GpioPolarity;
+
+/**
* qdev_get_gpio_in: Get one of a device's anonymous input GPIO lines
* @dev: Device whose GPIO we want
* @n: Number of the anonymous GPIO line (which must be in range)