Esempio n. 1
0
static int
gpioled_attach(device_t dev)
{
    struct gpioled_softc *sc;
    int state;
    const char *name;

    sc = device_get_softc(dev);
    sc->sc_dev = dev;
    sc->sc_busdev = device_get_parent(dev);
    GPIOLED_LOCK_INIT(sc);

    state = 0;

    if (resource_string_value(device_get_name(dev),
                              device_get_unit(dev), "name", &name))
        name = NULL;
    resource_int_value(device_get_name(dev),
                       device_get_unit(dev), "invert", &sc->sc_invert);

    sc->sc_leddev = led_create_state(gpioled_control, sc, name ? name :
                                     device_get_nameunit(dev), state);

    return (0);
}
Esempio n. 2
0
static int
gpioled_attach(device_t dev)
{
	struct gpioled_softc *sc;
#ifdef FDT
	phandle_t node;
	char *name;
#else
	const char *name;
#endif

	sc = device_get_softc(dev);
	sc->sc_dev = dev;
	sc->sc_busdev = device_get_parent(dev);
	GPIOLED_LOCK_INIT(sc);
#ifdef FDT
	name = NULL;
	if ((node = ofw_bus_get_node(dev)) == -1)
		return (ENXIO);
	if (OF_getprop_alloc(node, "label", 1, (void **)&name) == -1)
		OF_getprop_alloc(node, "name", 1, (void **)&name);
#else
	if (resource_string_value(device_get_name(dev), 
	    device_get_unit(dev), "name", &name))
		name = NULL;
#endif

	sc->sc_leddev = led_create(gpioled_control, sc, name ? name :
	    device_get_nameunit(dev));
#ifdef FDT
	if (name != NULL)
		free(name, M_OFWPROP);
#endif

	return (0);
}