Lines Matching refs:tlc
195 struct hidbus_ivars *tlc; in hidbus_add_child() local
202 tlc = malloc(sizeof(struct hidbus_ivars), M_DEVBUF, M_WAITOK | M_ZERO); in hidbus_add_child()
203 tlc->mtx = &sc->mtx; in hidbus_add_child()
204 device_set_ivars(child, tlc); in hidbus_add_child()
206 CK_STAILQ_INSERT_TAIL(&sc->tlcs, tlc, link); in hidbus_add_child()
399 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_child_detached() local
401 KASSERT(tlc->refcnt == 0, ("Child device is running")); in hidbus_child_detached()
402 tlc->mtx = &sc->mtx; in hidbus_child_detached()
403 tlc->intr_handler = NULL; in hidbus_child_detached()
404 tlc->flags &= ~HIDBUS_FLAG_CAN_POLL; in hidbus_child_detached()
413 struct hidbus_ivars *tlc; in hidbus_ivar_dtor() local
415 tlc = __containerof(ctx, struct hidbus_ivars, epoch_ctx); in hidbus_ivar_dtor()
416 free(tlc, M_DEVBUF); in hidbus_ivar_dtor()
423 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_child_deleted() local
426 KASSERT(tlc->refcnt == 0, ("Child device is running")); in hidbus_child_deleted()
427 CK_STAILQ_REMOVE(&sc->tlcs, tlc, hidbus_ivars, link); in hidbus_child_deleted()
429 epoch_call(INPUT_EPOCH, hidbus_ivar_dtor, &tlc->epoch_ctx); in hidbus_child_deleted()
436 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_read_ivar() local
440 *result = tlc->index; in hidbus_read_ivar()
443 *result = tlc->usage; in hidbus_read_ivar()
446 *result = tlc->flags; in hidbus_read_ivar()
449 *result = tlc->driver_info; in hidbus_read_ivar()
452 *result = (uintptr_t)(tlc->mtx == &sc->mtx ? NULL : tlc->mtx); in hidbus_read_ivar()
464 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_write_ivar() local
468 tlc->index = value; in hidbus_write_ivar()
471 tlc->usage = value; in hidbus_write_ivar()
474 tlc->flags = value; in hidbus_write_ivar()
480 tlc->driver_info = value; in hidbus_write_ivar()
483 tlc->mtx = (struct mtx *)value == NULL ? in hidbus_write_ivar()
496 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_child_location() local
498 sbuf_printf(sb, "index=%hhu", tlc->index); in hidbus_child_location()
506 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_child_pnpinfo() local
511 HID_GET_USAGE_PAGE(tlc->usage), HID_GET_USAGE(tlc->usage), in hidbus_child_pnpinfo()
524 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_set_desc() local
528 (sc->nauto > 1 || (tlc->flags & HIDBUS_FLAG_AUTOCHILD) == 0)) in hidbus_set_desc()
562 struct hidbus_ivars *tlc; in hidbus_intr() local
574 CK_STAILQ_FOREACH(tlc, &sc->tlcs, link) { in hidbus_intr()
575 if (tlc->refcnt == 0 || tlc->intr_handler == NULL) in hidbus_intr()
578 if ((tlc->flags & HIDBUS_FLAG_CAN_POLL) != 0) in hidbus_intr()
579 tlc->intr_handler(tlc->intr_ctx, buf, len); in hidbus_intr()
581 mtx_lock(tlc->mtx); in hidbus_intr()
582 tlc->intr_handler(tlc->intr_ctx, buf, len); in hidbus_intr()
583 mtx_unlock(tlc->mtx); in hidbus_intr()
593 struct hidbus_ivars *tlc = device_get_ivars(child); in hidbus_set_intr() local
595 tlc->intr_handler = handler; in hidbus_set_intr()
596 tlc->intr_ctx = context; in hidbus_set_intr()
605 struct hidbus_ivars *tlc; in hidbus_intr_start() local
611 CK_STAILQ_FOREACH(tlc, &sc->tlcs, link) { in hidbus_intr_start()
612 refcnted |= (tlc->refcnt != 0); in hidbus_intr_start()
613 if (tlc == ivar) { in hidbus_intr_start()
614 mtx_lock(tlc->mtx); in hidbus_intr_start()
615 ++tlc->refcnt; in hidbus_intr_start()
616 mtx_unlock(tlc->mtx); in hidbus_intr_start()
631 struct hidbus_ivars *tlc; in hidbus_intr_stop() local
637 CK_STAILQ_FOREACH(tlc, &sc->tlcs, link) { in hidbus_intr_stop()
638 if (tlc == ivar) { in hidbus_intr_stop()
639 mtx_lock(tlc->mtx); in hidbus_intr_stop()
640 MPASS(tlc->refcnt != 0); in hidbus_intr_stop()
641 --tlc->refcnt; in hidbus_intr_stop()
642 mtx_unlock(tlc->mtx); in hidbus_intr_stop()
644 refcnted |= (tlc->refcnt != 0); in hidbus_intr_stop()