Move the GPIOBUS_SET_PINFLAGS(..., ..., pin, GPIO_PIN_OUTPUT) to led(4)

control callback function.  This makes gpioled(4) works even if the pin
is accidentally set to an input.

Approved by:	adrian (mentor)
This commit is contained in:
Luiz Otavio O Souza 2013-12-06 17:56:20 +00:00
parent 41ec463c1e
commit d442709662

View File

@ -75,6 +75,8 @@ gpioled_control(void *priv, int onoff)
GPIOLED_LOCK(sc);
GPIOBUS_LOCK_BUS(sc->sc_busdev);
GPIOBUS_ACQUIRE_BUS(sc->sc_busdev, sc->sc_dev);
GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, GPIOLED_PIN,
GPIO_PIN_OUTPUT);
GPIOBUS_PIN_SET(sc->sc_busdev, sc->sc_dev, GPIOLED_PIN,
onoff ? GPIO_PIN_HIGH : GPIO_PIN_LOW);
GPIOBUS_RELEASE_BUS(sc->sc_busdev, sc->sc_dev);
@ -103,9 +105,6 @@ gpioled_attach(device_t dev)
device_get_unit(dev), "name", &name))
name = NULL;
GPIOBUS_PIN_SETFLAGS(sc->sc_busdev, sc->sc_dev, GPIOLED_PIN,
GPIO_PIN_OUTPUT);
sc->sc_leddev = led_create(gpioled_control, sc, name ? name :
device_get_nameunit(dev));