Page MenuHomeFreeBSD

D2615.id5541.diff
No OneTemporary

D2615.id5541.diff

Index: sys/dev/acpi_support/acpi_ibm.c
===================================================================
--- sys/dev/acpi_support/acpi_ibm.c
+++ sys/dev/acpi_support/acpi_ibm.c
@@ -445,7 +445,8 @@
/* Hook up light to led(4) */
if (sc->light_set_supported)
- sc->led_dev = led_create_state(ibm_led, sc, "thinklight", sc->light_val);
+ sc->led_dev = led_create_state(ibm_led, sc, "thinklight",
+ (sc->light_val ? 1 : 0));
return (0);
}
Index: sys/dev/gpio/gpioled.c
===================================================================
--- sys/dev/gpio/gpioled.c
+++ sys/dev/gpio/gpioled.c
@@ -166,8 +166,10 @@
gpioled_attach(device_t dev)
{
struct gpioled_softc *sc;
+ int state;
#ifdef FDT
phandle_t node;
+ char *default_state;
char *name;
#else
const char *name;
@@ -177,10 +179,29 @@
sc->sc_dev = dev;
sc->sc_busdev = device_get_parent(dev);
GPIOLED_LOCK_INIT(sc);
+
+ state = 0;
+
#ifdef FDT
- name = NULL;
if ((node = ofw_bus_get_node(dev)) == -1)
return (ENXIO);
+
+ if (OF_getprop_alloc(node, "default-state",
+ sizeof(char), (void **)&default_state) != -1) {
+ if (strcasecmp(default_state, "on") == 0)
+ state = 1;
+ else if (strcasecmp(default_state, "off") == 0)
+ state = 0;
+ else if (strcasecmp(default_state, "keep") == 0)
+ state = -1;
+ else {
+ device_printf(dev,
+ "unknown value for default-state in FDT\n");
+ }
+ free(default_state, M_OFWPROP);
+ }
+
+ name = NULL;
if (OF_getprop_alloc(node, "label", 1, (void **)&name) == -1)
OF_getprop_alloc(node, "name", 1, (void **)&name);
#else
@@ -189,8 +210,8 @@
name = NULL;
#endif
- sc->sc_leddev = led_create(gpioled_control, sc, name ? name :
- device_get_nameunit(dev));
+ sc->sc_leddev = led_create_state(gpioled_control, sc, name ? name :
+ device_get_nameunit(dev), state);
#ifdef FDT
if (name != NULL)
free(name, M_OFWPROP);
Index: sys/dev/led/led.c
===================================================================
--- sys/dev/led/led.c
+++ sys/dev/led/led.c
@@ -293,7 +293,8 @@
mtx_lock(&led_mtx);
sc->dev->si_drv1 = sc;
LIST_INSERT_HEAD(&led_list, sc, list);
- sc->func(sc->private, state != 0);
+ if (state != -1)
+ sc->func(sc->private, state != 0);
mtx_unlock(&led_mtx);
return (sc->dev);

File Metadata

Mime Type
text/plain
Expires
Mon, Jun 8, 11:56 AM (4 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33811313
Default Alt Text
D2615.id5541.diff (2 KB)

Event Timeline