Lines Matching +full:sc +full:- +full:resource

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
45 #include <machine/resource.h>
59 struct resource *sc_gpios;
72 static struct resource *macgpio_alloc_resource(device_t, device_t, int, int *,
75 struct resource *);
77 struct resource *);
153 struct macgpio_softc *sc; in macgpio_attach() local
159 sc = device_get_softc(dev); in macgpio_attach()
160 root = sc->sc_node = ofw_bus_get_node(dev); in macgpio_attach()
162 sc->sc_gpios = bus_alloc_resource_any(dev, SYS_RES_MEMORY, in macgpio_attach()
163 &sc->sc_gpios_rid, RF_ACTIVE); in macgpio_attach()
166 * Iterate through the sub-devices in macgpio_attach()
170 if (ofw_bus_gen_setup_devinfo(&dinfo->mdi_obdinfo, child) != in macgpio_attach()
176 if (OF_getencprop(child, "reg", &dinfo->gpio_num, in macgpio_attach()
177 sizeof(dinfo->gpio_num)) != sizeof(dinfo->gpio_num)) { in macgpio_attach()
185 dinfo->gpio_num = -1; in macgpio_attach()
188 resource_list_init(&dinfo->mdi_resources); in macgpio_attach()
192 OF_searchencprop(child, "interrupt-parent", &iparent, in macgpio_attach()
194 resource_list_add(&dinfo->mdi_resources, SYS_RES_IRQ, in macgpio_attach()
199 /* Fix messed-up offsets */ in macgpio_attach()
200 if (dinfo->gpio_num > 0x50) in macgpio_attach()
201 dinfo->gpio_num -= 0x50; in macgpio_attach()
206 dinfo->mdi_obdinfo.obd_name); in macgpio_attach()
207 ofw_bus_gen_destroy_devinfo(&dinfo->mdi_obdinfo); in macgpio_attach()
228 if (dinfo->gpio_num >= GPIO_BASE) in macgpio_print_child()
229 printf(" gpio %d", dinfo->gpio_num - GPIO_BASE); in macgpio_print_child()
230 else if (dinfo->gpio_num >= GPIO_EXTINT_BASE) in macgpio_print_child()
231 printf(" extint-gpio %d", dinfo->gpio_num - GPIO_EXTINT_BASE); in macgpio_print_child()
232 else if (dinfo->gpio_num >= 0) in macgpio_print_child()
233 printf(" addr 0x%02x", dinfo->gpio_num); /* should not happen */ in macgpio_print_child()
235 resource_list_print_type(&dinfo->mdi_resources, "irq", SYS_RES_IRQ, in macgpio_print_child()
254 if (dinfo->gpio_num >= 0) in macgpio_probe_nomatch()
255 printf(" gpio %d",dinfo->gpio_num); in macgpio_probe_nomatch()
256 resource_list_print_type(&dinfo->mdi_resources, "irq", in macgpio_probe_nomatch()
262 static struct resource *
274 return (resource_list_alloc(&dinfo->mdi_resources, bus, child, type, in macgpio_alloc_resource()
279 macgpio_activate_resource(device_t bus, device_t child, struct resource *res) in macgpio_activate_resource()
281 struct macgpio_softc *sc; in macgpio_activate_resource() local
285 sc = device_get_softc(bus); in macgpio_activate_resource()
291 if (dinfo->gpio_num >= 0) { in macgpio_activate_resource()
292 val = bus_read_1(sc->sc_gpios,dinfo->gpio_num); in macgpio_activate_resource()
294 bus_write_1(sc->sc_gpios,dinfo->gpio_num,val); in macgpio_activate_resource()
301 macgpio_deactivate_resource(device_t bus, device_t child, struct resource *res) in macgpio_deactivate_resource()
303 struct macgpio_softc *sc; in macgpio_deactivate_resource() local
307 sc = device_get_softc(bus); in macgpio_deactivate_resource()
313 if (dinfo->gpio_num >= 0) { in macgpio_deactivate_resource()
314 val = bus_read_1(sc->sc_gpios,dinfo->gpio_num); in macgpio_deactivate_resource()
316 bus_write_1(sc->sc_gpios,dinfo->gpio_num,val); in macgpio_deactivate_resource()
325 struct macgpio_softc *sc; in macgpio_read() local
328 sc = device_get_softc(device_get_parent(dev)); in macgpio_read()
331 if (dinfo->gpio_num < 0) in macgpio_read()
334 return (bus_read_1(sc->sc_gpios,dinfo->gpio_num)); in macgpio_read()
340 struct macgpio_softc *sc; in macgpio_write() local
343 sc = device_get_softc(device_get_parent(dev)); in macgpio_write()
346 if (dinfo->gpio_num < 0) in macgpio_write()
349 bus_write_1(sc->sc_gpios,dinfo->gpio_num,val); in macgpio_write()
358 return (&dinfo->mdi_obdinfo); in macgpio_get_devinfo()
364 struct macgpio_softc *sc; in macgpio_suspend() local
367 sc = device_get_softc(dev); in macgpio_suspend()
368 sc->sc_saved_gpio_levels[0] = bus_read_4(sc->sc_gpios, GPIO_LEVELS_0); in macgpio_suspend()
369 sc->sc_saved_gpio_levels[1] = bus_read_4(sc->sc_gpios, GPIO_LEVELS_1); in macgpio_suspend()
372 sc->sc_saved_gpios[i] = bus_read_1(sc->sc_gpios, GPIO_BASE + i); in macgpio_suspend()
374 sc->sc_saved_extint_gpios[i] = bus_read_1(sc->sc_gpios, GPIO_EXTINT_BASE + i); in macgpio_suspend()
382 struct macgpio_softc *sc; in macgpio_resume() local
385 sc = device_get_softc(dev); in macgpio_resume()
386 bus_write_4(sc->sc_gpios, GPIO_LEVELS_0, sc->sc_saved_gpio_levels[0]); in macgpio_resume()
387 bus_write_4(sc->sc_gpios, GPIO_LEVELS_1, sc->sc_saved_gpio_levels[1]); in macgpio_resume()
390 bus_write_1(sc->sc_gpios, GPIO_BASE + i, sc->sc_saved_gpios[i]); in macgpio_resume()
392 bus_write_1(sc->sc_gpios, GPIO_EXTINT_BASE + i, sc->sc_saved_extint_gpios[i]); in macgpio_resume()