Lines Matching refs:scd

405 		struct uhidev *scd = &sc->sc_subdevs[repid];  in uhidev_attach()  local
407 scd->sc_parent = sc; in uhidev_attach()
408 scd->sc_report_id = repid; in uhidev_attach()
409 scd->sc_in_rep_size = repsizes[repid]; in uhidev_attach()
417 uha.parent = scd; in uhidev_attach()
431 rnd_attach_source(&scd->sc_rndsource, in uhidev_attach()
541 struct uhidev *scd; in uhidev_intr() local
579 scd = &sc->sc_subdevs[rep]; in uhidev_intr()
581 rep, scd, scd->sc_state)); in uhidev_intr()
582 if (!(atomic_load_acquire(&scd->sc_state) & UHIDEV_OPEN)) in uhidev_intr()
585 if (scd->sc_in_rep_size != cc) { in uhidev_intr()
587 device_xname(sc->sc_dev), scd->sc_in_rep_size, cc)); in uhidev_intr()
595 rnd_add_uint32(&scd->sc_rndsource, (uintptr_t)(sc->sc_ibuf)); in uhidev_intr()
596 scd->sc_intr(scd->sc_cookie, p, cc); in uhidev_intr()
600 uhidev_get_report_desc(struct uhidev *scd, void **desc, int *size) in uhidev_get_report_desc() argument
602 struct uhidev_softc *sc = scd->sc_parent; in uhidev_get_report_desc()
855 uhidev_open(struct uhidev *scd, void (*intr)(void *, void *, u_int), in uhidev_open() argument
858 struct uhidev_softc *sc = scd->sc_parent; in uhidev_open()
865 scd->sc_report_id, in uhidev_open()
866 device_xname(scd->sc_dev), in uhidev_open()
867 scd->sc_state, in uhidev_open()
871 if (scd->sc_state & UHIDEV_OPEN) { in uhidev_open()
875 scd->sc_intr = intr; in uhidev_open()
876 scd->sc_cookie = cookie; in uhidev_open()
877 atomic_store_release(&scd->sc_state, scd->sc_state | UHIDEV_OPEN); in uhidev_open()
888 KASSERTMSG(scd->sc_state & UHIDEV_OPEN, in uhidev_open()
890 device_xname(sc->sc_dev), scd->sc_report_id); in uhidev_open()
891 atomic_store_relaxed(&scd->sc_state, in uhidev_open()
892 scd->sc_state & ~UHIDEV_OPEN); in uhidev_open()
912 uhidev_stop(struct uhidev *scd) in uhidev_stop() argument
914 struct uhidev_softc *sc = scd->sc_parent; in uhidev_stop()
919 atomic_store_relaxed(&scd->sc_state, scd->sc_state | UHIDEV_STOPPED); in uhidev_stop()
930 if (sc->sc_writereportid != scd->sc_report_id) in uhidev_stop()
945 sc->sc_stopreportid = scd->sc_report_id; in uhidev_stop()
951 KASSERT(sc->sc_stopreportid == scd->sc_report_id); in uhidev_stop()
952 sc->sc_stopreportid = scd->sc_report_id; in uhidev_stop()
965 uhidev_close(struct uhidev *scd) in uhidev_close() argument
967 struct uhidev_softc *sc = scd->sc_parent; in uhidev_close()
973 scd->sc_report_id, in uhidev_close()
974 device_xname(scd->sc_dev), in uhidev_close()
975 scd->sc_state, in uhidev_close()
978 KASSERTMSG(scd->sc_state & UHIDEV_OPEN, in uhidev_close()
980 device_xname(sc->sc_dev), scd->sc_report_id); in uhidev_close()
988 if (sc->sc_stopreportid == scd->sc_report_id) { in uhidev_close()
989 KASSERT(scd->sc_state & UHIDEV_STOPPED); in uhidev_close()
995 KASSERT(sc->sc_stopreportid == scd->sc_report_id); in uhidev_close()
996 KASSERT(scd->sc_state & UHIDEV_STOPPED); in uhidev_close()
1006 KASSERT(scd->sc_state & UHIDEV_OPEN); in uhidev_close()
1008 KASSERT(scd->sc_state & UHIDEV_OPEN); in uhidev_close()
1009 atomic_store_relaxed(&scd->sc_state, in uhidev_close()
1010 scd->sc_state & ~(UHIDEV_OPEN | UHIDEV_STOPPED)); in uhidev_close()
1029 KASSERT((scd->sc_state & UHIDEV_OPEN) == 0); in uhidev_close()
1030 scd->sc_intr = NULL; in uhidev_close()
1031 scd->sc_cookie = NULL; in uhidev_close()
1037 uhidev_set_report(struct uhidev *scd, int type, void *data, int len) in uhidev_set_report() argument
1042 if (scd->sc_report_id == 0) in uhidev_set_report()
1043 return usbd_set_report(scd->sc_parent->sc_iface, type, in uhidev_set_report()
1044 scd->sc_report_id, data, len); in uhidev_set_report()
1047 buf[0] = scd->sc_report_id; in uhidev_set_report()
1050 retstat = usbd_set_report(scd->sc_parent->sc_iface, type, in uhidev_set_report()
1051 scd->sc_report_id, buf, len + 1); in uhidev_set_report()
1059 uhidev_get_report(struct uhidev *scd, int type, void *data, int len) in uhidev_get_report() argument
1061 return usbd_get_report(scd->sc_parent->sc_iface, type, in uhidev_get_report()
1062 scd->sc_report_id, data, len); in uhidev_get_report()
1066 uhidev_write(struct uhidev *scd, void *data, int len) in uhidev_write() argument
1068 struct uhidev_softc *sc = scd->sc_parent; in uhidev_write()
1078 KASSERT(scd->sc_state & UHIDEV_OPEN); in uhidev_write()
1080 if (scd->sc_state & UHIDEV_STOPPED) { in uhidev_write()
1092 sc->sc_writereportid = scd->sc_report_id; in uhidev_write()
1112 KASSERT(scd->sc_state & UHIDEV_OPEN); in uhidev_write()
1115 KASSERTMSG(sc->sc_writereportid == scd->sc_report_id, in uhidev_write()
1117 device_xname(sc->sc_dev), scd->sc_report_id, sc->sc_writereportid); in uhidev_write()
1152 uhidev_write_async(struct uhidev *scd, void *data, int len, int flags, in uhidev_write_async() argument
1155 struct uhidev_softc *sc = scd->sc_parent; in uhidev_write_async()
1165 KASSERT(scd->sc_state & UHIDEV_OPEN); in uhidev_write_async()
1166 if (scd->sc_state & UHIDEV_STOPPED) { in uhidev_write_async()
1175 sc->sc_writereportid = scd->sc_report_id; in uhidev_write_async()