Lines Matching refs:devi
139 gpiobus_print_pins(struct gpiobus_ivar *devi, char *buf, size_t buflen) in gpiobus_print_pins() argument
144 if (devi->npins == 0) in gpiobus_print_pins()
148 range_start = range_stop = devi->pins[0]; in gpiobus_print_pins()
149 for (i = 1; i < devi->npins; i++) { in gpiobus_print_pins()
150 if (devi->pins[i] != (range_stop + 1)) { in gpiobus_print_pins()
162 range_start = range_stop = devi->pins[i]; in gpiobus_print_pins()
250 gpiobus_alloc_ivars(struct gpiobus_ivar *devi) in gpiobus_alloc_ivars() argument
254 devi->pins = malloc(sizeof(uint32_t) * devi->npins, M_DEVBUF, in gpiobus_alloc_ivars()
256 if (devi->pins == NULL) in gpiobus_alloc_ivars()
262 gpiobus_free_ivars(struct gpiobus_ivar *devi) in gpiobus_free_ivars() argument
265 if (devi->pins) { in gpiobus_free_ivars()
266 free(devi->pins, M_DEVBUF); in gpiobus_free_ivars()
267 devi->pins = NULL; in gpiobus_free_ivars()
269 devi->npins = 0; in gpiobus_free_ivars()
321 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_acquire_child_pins() local
324 for (i = 0; i < devi->npins; i++) { in gpiobus_acquire_child_pins()
326 if (gpiobus_acquire_pin(dev, devi->pins[i]) != 0) { in gpiobus_acquire_child_pins()
328 devi->pins[i]); in gpiobus_acquire_child_pins()
331 devi->pins[i]); in gpiobus_acquire_child_pins()
333 gpiobus_free_ivars(devi); in gpiobus_acquire_child_pins()
337 for (i = 0; i < devi->npins; i++) { in gpiobus_acquire_child_pins()
339 GPIOBUS_PIN_SETNAME(dev, devi->pins[i], in gpiobus_acquire_child_pins()
349 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_parse_pins() local
361 devi->npins = npins; in gpiobus_parse_pins()
362 if (gpiobus_alloc_ivars(devi) != 0) { in gpiobus_parse_pins()
370 devi->pins[npins++] = i; in gpiobus_parse_pins()
382 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_parse_pin_list() local
409 devi->npins = npins; in gpiobus_parse_pin_list()
410 if (gpiobus_alloc_ivars(devi) != 0) { in gpiobus_parse_pin_list()
420 devi->pins[i] = pin; in gpiobus_parse_pin_list()
467 struct gpiobus_ivar *devi; in gpiobus_detach() local
482 devi = GPIOBUS_IVAR(devlist[i]); in gpiobus_detach()
483 gpiobus_free_ivars(devi); in gpiobus_detach()
484 resource_list_free(&devi->rl); in gpiobus_detach()
485 free(devi, M_DEVBUF); in gpiobus_detach()
521 struct gpiobus_ivar *devi; in gpiobus_probe_nomatch() local
523 devi = GPIOBUS_IVAR(child); in gpiobus_probe_nomatch()
525 gpiobus_print_pins(devi, pins, sizeof(pins)); in gpiobus_probe_nomatch()
526 if (devi->npins > 1) in gpiobus_probe_nomatch()
530 resource_list_print_type(&devi->rl, "irq", SYS_RES_IRQ, "%jd"); in gpiobus_probe_nomatch()
539 struct gpiobus_ivar *devi; in gpiobus_print_child() local
541 devi = GPIOBUS_IVAR(child); in gpiobus_print_child()
544 if (devi->npins > 0) { in gpiobus_print_child()
545 if (devi->npins > 1) in gpiobus_print_child()
549 gpiobus_print_pins(devi, pins, sizeof(pins)); in gpiobus_print_child()
552 resource_list_print_type(&devi->rl, "irq", SYS_RES_IRQ, "%jd"); in gpiobus_print_child()
562 struct gpiobus_ivar *devi; in gpiobus_child_location_str() local
564 devi = GPIOBUS_IVAR(child); in gpiobus_child_location_str()
565 if (devi->npins > 1) in gpiobus_child_location_str()
569 gpiobus_print_pins(devi, buf, buflen); in gpiobus_child_location_str()
587 struct gpiobus_ivar *devi; in gpiobus_add_child() local
592 devi = malloc(sizeof(struct gpiobus_ivar), M_DEVBUF, M_NOWAIT | M_ZERO); in gpiobus_add_child()
593 if (devi == NULL) { in gpiobus_add_child()
597 resource_list_init(&devi->rl); in gpiobus_add_child()
598 device_set_ivars(child, devi); in gpiobus_add_child()
607 struct gpiobus_ivar *devi; in gpiobus_hinted_child() local
613 devi = GPIOBUS_IVAR(child); in gpiobus_hinted_child()
616 resource_list_free(&devi->rl); in gpiobus_hinted_child()
617 free(devi, M_DEVBUF); in gpiobus_hinted_child()
624 resource_list_free(&devi->rl); in gpiobus_hinted_child()
625 free(devi, M_DEVBUF); in gpiobus_hinted_child()
641 struct gpiobus_ivar *devi; in gpiobus_set_resource() local
646 devi = GPIOBUS_IVAR(child); in gpiobus_set_resource()
647 rle = resource_list_add(&devi->rl, type, rid, start, in gpiobus_set_resource()
658 struct gpiobus_ivar *devi; in gpiobus_read_ivar() local
660 devi = GPIOBUS_IVAR(child); in gpiobus_read_ivar()
663 *result = devi->npins; in gpiobus_read_ivar()
678 struct gpiobus_ivar *devi; in gpiobus_write_ivar() local
682 devi = GPIOBUS_IVAR(child); in gpiobus_write_ivar()
686 if (devi->npins != 0) { in gpiobus_write_ivar()
689 devi->npins = value; in gpiobus_write_ivar()
690 if (gpiobus_alloc_ivars(devi) != 0) { in gpiobus_write_ivar()
692 devi->npins = 0; in gpiobus_write_ivar()
698 for (i = 0; i < devi->npins; i++) in gpiobus_write_ivar()
699 devi->pins[i] = ptr[i]; in gpiobus_write_ivar()
830 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_pin_setflags() local
833 if (pin >= devi->npins) in gpiobus_pin_setflags()
835 if (GPIO_PIN_GETCAPS(sc->sc_dev, devi->pins[pin], &caps) != 0) in gpiobus_pin_setflags()
840 return (GPIO_PIN_SETFLAGS(sc->sc_dev, devi->pins[pin], flags)); in gpiobus_pin_setflags()
848 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_pin_getflags() local
850 if (pin >= devi->npins) in gpiobus_pin_getflags()
853 return GPIO_PIN_GETFLAGS(sc->sc_dev, devi->pins[pin], flags); in gpiobus_pin_getflags()
861 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_pin_getcaps() local
863 if (pin >= devi->npins) in gpiobus_pin_getcaps()
866 return GPIO_PIN_GETCAPS(sc->sc_dev, devi->pins[pin], caps); in gpiobus_pin_getcaps()
874 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_pin_set() local
876 if (pin >= devi->npins) in gpiobus_pin_set()
879 return GPIO_PIN_SET(sc->sc_dev, devi->pins[pin], value); in gpiobus_pin_set()
887 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_pin_get() local
889 if (pin >= devi->npins) in gpiobus_pin_get()
892 return GPIO_PIN_GET(sc->sc_dev, devi->pins[pin], value); in gpiobus_pin_get()
899 struct gpiobus_ivar *devi = GPIOBUS_IVAR(child); in gpiobus_pin_toggle() local
901 if (pin >= devi->npins) in gpiobus_pin_toggle()
904 return GPIO_PIN_TOGGLE(sc->sc_dev, devi->pins[pin]); in gpiobus_pin_toggle()