Lines Matching refs:sc
139 struct uhid_softc *sc = usbd_xfer_softc(xfer);
148 if (usb_fifo_get_data(sc->sc_fifo.fp[USB_FIFO_TX], pc,
195 struct uhid_softc *sc = usbd_xfer_softc(xfer);
206 if (sc->input_dev && sc->input_dev->devType == INDEV_TYPE_MOUSE) {
207 mouse_report_events(sc->input_dev, pc->buffer, actlen);
211 usbd_xfer_set_frame_len(xfer, 0, sc->sc_isize);
218 usbd_xfer_set_frame_len(xfer, 0, sc->sc_isize);
252 struct uhid_softc *sc = usbd_xfer_softc(xfer);
255 uint32_t size = sc->sc_osize;
263 if (sc->sc_oid) {
265 if (usb_fifo_get_data(sc->sc_fifo.fp[USB_FIFO_TX], pc,
283 if (usb_fifo_get_data(sc->sc_fifo.fp[USB_FIFO_TX], pc,
289 (&req, sc->sc_iface_no,
305 usb_fifo_get_data_error(sc->sc_fifo.fp[USB_FIFO_TX]);
313 struct uhid_softc *sc = usbd_xfer_softc(xfer);
323 usb_fifo_put_data(sc->sc_fifo.fp[USB_FIFO_RX], pc, sizeof(req),
324 sc->sc_isize, 1);
329 if (usb_fifo_put_bytes_max(sc->sc_fifo.fp[USB_FIFO_RX]) > 0) {
331 (&req, sc->sc_iface_no, UHID_INPUT_REPORT,
332 sc->sc_iid, sc->sc_isize);
337 usbd_xfer_set_frame_len(xfer, 1, sc->sc_isize);
338 usbd_xfer_set_frames(xfer, sc->sc_isize ? 2 : 1);
345 usb_fifo_put_data_error(sc->sc_fifo.fp[USB_FIFO_RX]);
391 struct uhid_softc *sc = usb_fifo_softc(fifo);
393 if (sc->sc_flags & UHID_FLAG_IMMED) {
394 usbd_transfer_start(sc->sc_xfer[UHID_CTRL_DT_RD]);
396 usbd_transfer_start(sc->sc_xfer[UHID_INTR_DT_RD]);
403 struct uhid_softc *sc = usb_fifo_softc(fifo);
405 usbd_transfer_stop(sc->sc_xfer[UHID_CTRL_DT_RD]);
406 usbd_transfer_stop(sc->sc_xfer[UHID_INTR_DT_RD]);
412 struct uhid_softc *sc = usb_fifo_softc(fifo);
414 if ((sc->sc_flags & UHID_FLAG_IMMED) ||
415 sc->sc_xfer[UHID_INTR_DT_WR] == NULL) {
416 usbd_transfer_start(sc->sc_xfer[UHID_CTRL_DT_WR]);
418 usbd_transfer_start(sc->sc_xfer[UHID_INTR_DT_WR]);
425 struct uhid_softc *sc = usb_fifo_softc(fifo);
427 usbd_transfer_stop(sc->sc_xfer[UHID_CTRL_DT_WR]);
428 usbd_transfer_stop(sc->sc_xfer[UHID_INTR_DT_WR]);
432 uhid_get_report(struct uhid_softc *sc, uint8_t type,
452 err = usbd_req_get_report(sc->sc_udev, NULL, kern_data,
453 len, sc->sc_iface_index, type, id);
473 uhid_set_report(struct uhid_softc *sc, uint8_t type,
497 err = usbd_req_set_report(sc->sc_udev, NULL, kern_data,
498 len, sc->sc_iface_index, type, id);
513 struct uhid_softc *sc = usb_fifo_softc(fifo);
521 mtx_lock(&sc->sc_mtx);
522 sc->sc_flags &= ~UHID_FLAG_IMMED;
523 mtx_unlock(&sc->sc_mtx);
526 sc->sc_isize + 1, UHID_FRAME_NUM)) {
532 sc->sc_osize + 1, UHID_FRAME_NUM)) {
552 struct uhid_softc *sc = usb_fifo_softc(fifo);
564 if (sc->sc_repdesc_size > ugd.ugd_maxlen) {
567 size = sc->sc_repdesc_size;
572 error = copyout(sc->sc_repdesc_ptr, ugd.ugd_data, size);
591 error = uhid_get_report(sc, UHID_INPUT_REPORT,
592 sc->sc_iid, NULL, NULL, sc->sc_isize);
596 mtx_lock(&sc->sc_mtx);
597 sc->sc_flags |= UHID_FLAG_IMMED;
598 mtx_unlock(&sc->sc_mtx);
600 mtx_lock(&sc->sc_mtx);
601 sc->sc_flags &= ~UHID_FLAG_IMMED;
602 mtx_unlock(&sc->sc_mtx);
618 size = sc->sc_isize;
619 id = sc->sc_iid;
622 size = sc->sc_osize;
623 id = sc->sc_oid;
626 size = sc->sc_fsize;
627 id = sc->sc_fid;
634 error = uhid_get_report(sc, ugd.ugd_report_type, id,
649 size = sc->sc_isize;
650 id = sc->sc_iid;
653 size = sc->sc_osize;
654 id = sc->sc_oid;
657 size = sc->sc_fsize;
658 id = sc->sc_fid;
665 error = uhid_set_report(sc, ugd.ugd_report_type, id,
736 struct uhid_softc *sc = device_get_softc(dev);
741 DPRINTFN(10, "sc=%p\n", sc);
745 mtx_init(&sc->sc_mtx, "uhid lock", NULL, MTX_DEF | MTX_RECURSE);
747 sc->sc_udev = uaa->device;
749 sc->sc_iface_no = uaa->info.bIfaceNum;
750 sc->sc_iface_index = uaa->info.bIfaceIndex;
753 &uaa->info.bIfaceIndex, sc->sc_xfer, uhid_config,
754 UHID_N_TRANSFER, sc, &sc->sc_mtx);
764 sc->sc_repdesc_size = sizeof(uhid_graphire_report_descr);
765 sc->sc_repdesc_ptr = __DECONST(void *, &uhid_graphire_report_descr);
766 sc->sc_flags |= UHID_FLAG_STATIC_DESC;
784 sc->sc_repdesc_size = sizeof(uhid_graphire3_4x5_report_descr);
785 sc->sc_repdesc_ptr = __DECONST(void *, &uhid_graphire3_4x5_report_descr);
786 sc->sc_flags |= UHID_FLAG_STATIC_DESC;
804 sc->sc_repdesc_size = sizeof(uhid_xb360gp_report_descr);
805 sc->sc_repdesc_ptr = __DECONST(void *, &uhid_xb360gp_report_descr);
806 sc->sc_flags |= UHID_FLAG_STATIC_DESC;
809 if (sc->sc_repdesc_ptr == NULL) {
811 &sc->sc_repdesc_ptr, &sc->sc_repdesc_size,
828 sc->sc_isize = hid_report_size
829 (sc->sc_repdesc_ptr, sc->sc_repdesc_size, hid_input, &sc->sc_iid);
831 sc->sc_osize = hid_report_size
832 (sc->sc_repdesc_ptr, sc->sc_repdesc_size, hid_output, &sc->sc_oid);
834 sc->sc_fsize = hid_report_size
835 (sc->sc_repdesc_ptr, sc->sc_repdesc_size, hid_feature, &sc->sc_fid);
837 if (sc->sc_isize > UHID_BSIZE) {
840 sc->sc_isize);
841 sc->sc_isize = UHID_BSIZE;
843 if (sc->sc_osize > UHID_BSIZE) {
846 sc->sc_osize);
847 sc->sc_osize = UHID_BSIZE;
849 if (sc->sc_fsize > UHID_BSIZE) {
852 sc->sc_fsize);
853 sc->sc_fsize = UHID_BSIZE;
856 error = usb_fifo_attach(uaa->device, sc, &sc->sc_mtx,
857 &uhid_fifo_methods, &sc->sc_fifo,
864 sc->input_dev = (InputDevice*)zalloc(sizeof(InputDevice));
865 if (sc->input_dev) {
867 sc->input_dev->devType = INDEV_TYPE_MOUSE;
868 sc->input_dev->devName = "mouse";
870 sc->input_dev->devType = INDEV_TYPE_UNKNOWN;
871 sc->input_dev->devName = "other";
874 ret = RegisterInputDevice(sc->input_dev);
876 DPRINTF("%s register failed, ret = %d!\n", sc->input_dev->devName, ret);
877 free(sc->input_dev);
878 sc->input_dev = NULL;
879 } else if (sc->input_dev->devType == INDEV_TYPE_MOUSE) {
881 mtx_lock(&sc->sc_mtx);
882 sc->sc_flags &= ~UHID_FLAG_IMMED;
883 usbd_transfer_start(sc->sc_xfer[UHID_INTR_DT_RD]);
884 mtx_unlock(&sc->sc_mtx);
898 struct uhid_softc *sc = device_get_softc(dev);
902 if (sc->input_dev) {
903 if (sc->input_dev->devType == INDEV_TYPE_MOUSE) {
904 usbd_transfer_stop(sc->sc_xfer[UHID_INTR_DT_RD]);
907 UnregisterInputDevice(sc->input_dev);
908 free(sc->input_dev);
909 sc->input_dev = NULL;
912 usb_fifo_detach(&sc->sc_fifo);
914 usbd_transfer_unsetup(sc->sc_xfer, UHID_N_TRANSFER);
916 if (sc->sc_repdesc_ptr) {
917 if (!(sc->sc_flags & UHID_FLAG_STATIC_DESC)) {
918 free(sc->sc_repdesc_ptr);
921 mtx_destroy(&sc->sc_mtx);