Lines Matching refs:vs
356 #define uvideo_stream_probe(vs, act, data) \
357 (uvideo_stream_probe_and_commit((vs), (act), \
359 #define uvideo_stream_commit(vs, act, data) \
360 (uvideo_stream_probe_and_commit((vs), (act), \
498 struct uvideo_stream *vs;
561 vs = uvideo_find_stream(sc, ifdesc->bInterfaceNumber);
562 if (vs == NULL) {
563 vs = uvideo_stream_alloc();
564 err = uvideo_stream_init(vs, sc, ifdesc);
573 err = uvideo_stream_init_desc(vs, ifdesc, &iter);
611 SLIST_FOREACH(vs, &sc->sc_stream_list, entries) {
620 if (vs->vs_default_format == NULL)
623 vs->vs_videodev = video_attach_mi(&uvideo_hw_if, sc->sc_dev,
624 vs);
659 struct uvideo_stream *vs;
661 SLIST_FOREACH(vs, &sc->sc_stream_list, entries) {
662 if (child == vs->vs_videodev) {
663 vs->vs_videodev = NULL;
667 KASSERTMSG(vs != NULL, "unknown child of %s detached: %s @ %p",
676 struct uvideo_stream *vs;
693 vs = SLIST_FIRST(&sc->sc_stream_list);
695 uvideo_stream_stop_xfer(vs);
696 uvideo_stream_free(vs);
725 struct uvideo_stream *vs;
727 SLIST_FOREACH(vs, &sc->sc_stream_list, entries) {
728 if (vs->vs_ifaceno == ifaceno)
729 return vs;
743 uvideo_stream_find_format(struct uvideo_stream *vs,
748 SIMPLEQ_FOREACH(format, &vs->vs_formats, entries) {
758 uvideo_stream_guess_format(struct uvideo_stream *vs,
764 SIMPLEQ_FOREACH(format, &vs->vs_formats, entries) {
1055 uvideo_stream_init(struct uvideo_stream *vs,
1062 DPRINTF(("%s: %s ifaceno=%d vs=%p\n", __func__,
1065 vs));
1067 SLIST_INSERT_HEAD(&sc->sc_stream_list, vs, entries);
1068 vs->vs_parent = sc;
1069 vs->vs_ifaceno = ifdesc->bInterfaceNumber;
1070 vs->vs_subtype = 0;
1071 SIMPLEQ_INIT(&vs->vs_formats);
1072 SIMPLEQ_INIT(&vs->vs_pixel_formats);
1073 vs->vs_default_format = NULL;
1074 vs->vs_current_format.priv = -1;
1075 vs->vs_xfer_type = 0;
1076 vs->vs_state = UVIDEO_STATE_CLOSED;
1078 err = usbd_device2interface_handle(sc->sc_udev, vs->vs_ifaceno,
1079 &vs->vs_iface);
1082 "error getting vs interface: "
1096 err = usbd_set_interface(vs->vs_iface, 0);
1108 err = uvideo_stream_probe(vs, UR_GET_LEN, &len);
1114 vs->vs_probelen = 26; /* conservative v1.0 length */
1117 vs->vs_probelen = UGETW(len);
1121 vs->vs_probelen = 26;
1136 uvideo_stream_init_desc(struct uvideo_stream *vs,
1169 bx = &vs->vs_xfer.bulk;
1170 if (vs->vs_xfer_type == 0) {
1173 vs->vs_xfer_type = UE_BULK;
1180 device_xname(vs->vs_parent->sc_dev)
1186 ix = &vs->vs_xfer.isoc;
1189 ix->ix_i[i].i_vs = vs;
1191 if (vs->vs_xfer_type == 0) {
1195 vs->vs_xfer_type = UE_ISOCHRONOUS;
1235 vs->vs_subtype = UDESC_VS_INPUT_HEADER;
1239 DPRINTF(("uvideo: VS output not implemented\n"));
1240 vs->vs_subtype = UDESC_VS_OUTPUT_HEADER;
1245 uvideo_stream_init_frame_based_format(vs,
1253 DPRINTF(("uvideo: unimplemented VS CS "
1282 uvideo_stream_free(struct uvideo_stream *vs)
1289 if (vs->vs_xfer_type == UE_ISOCHRONOUS) {
1290 while (!SLIST_EMPTY(&vs->vs_xfer.isoc.ix_altlist)) {
1291 alt = SLIST_FIRST(&vs->vs_xfer.isoc.ix_altlist);
1292 SLIST_REMOVE_HEAD(&vs->vs_xfer.isoc.ix_altlist,
1299 while ((format = SIMPLEQ_FIRST(&vs->vs_formats)) != NULL) {
1300 SIMPLEQ_REMOVE_HEAD(&vs->vs_formats, entries);
1303 while ((pixel_format = SIMPLEQ_FIRST(&vs->vs_pixel_formats)) != NULL) {
1304 SIMPLEQ_REMOVE_HEAD(&vs->vs_pixel_formats, entries);
1308 kmem_free(vs, sizeof(*vs));
1320 uvideo_stream_init_frame_based_format(struct uvideo_stream *vs,
1334 vs->vs_ifaceno, vs->vs_subtype, vs->vs_probelen));
1402 SIMPLEQ_FOREACH(pfiter, &vs->vs_pixel_formats, entries) {
1413 SIMPLEQ_INSERT_TAIL(&vs->vs_pixel_formats,
1566 SIMPLEQ_INSERT_TAIL(&vs->vs_formats, format, entries);
1568 if (vs->vs_default_format == NULL && index == default_index
1574 vs->vs_default_format = &format->format;
1575 vs->vs_frame_interval = frame_interval;
1584 uvideo_stream_start_xfer(struct uvideo_stream *vs)
1586 struct uvideo_softc *sc = vs->vs_parent;
1598 switch (vs->vs_xfer_type) {
1601 bx = &vs->vs_xfer.bulk;
1603 err = usbd_open_pipe(vs->vs_iface, bx->bx_endpt, 0,
1612 error = usbd_create_xfer(bx->bx_pipe, vs->vs_max_payload_size,
1620 bx->bx_buflen = vs->vs_max_payload_size;
1627 uvideo_stream_recv_bulk_transfer, vs,
1645 ix = &vs->vs_xfer.isoc;
1667 if (alt_maybe->max_packet_size > vs->vs_max_payload_size)
1686 err = usbd_set_interface(vs->vs_iface, alt->altno);
1695 vframe_len = vs->vs_current_format.sample_size;
1711 err = usbd_open_pipe(vs->vs_iface, ix->ix_endpt,
1733 uvideo_stream_recv_isoc_start(vs);
1739 vs->vs_xfer_type));
1745 uvideo_stream_stop_xfer(struct uvideo_stream *vs)
1752 switch (vs->vs_xfer_type) {
1754 bx = &vs->vs_xfer.bulk;
1785 ix = &vs->vs_xfer.isoc;
1814 usbd_delay_ms(vs->vs_parent->sc_udev, 20);
1817 err = usbd_set_interface(vs->vs_iface, 0);
1830 vs->vs_xfer_type));
1836 uvideo_stream_recv_isoc_start(struct uvideo_stream *vs)
1841 uvideo_stream_recv_isoc_start1(&vs->vs_xfer.isoc.ix_i[i]);
1876 uvideo_stream_recv_process(struct uvideo_stream *vs, uint8_t *buf, uint32_t len)
1902 video_submit_payload(vs->vs_videodev, &payload);
1913 struct uvideo_stream *vs;
1921 vs = isoc->i_vs;
1945 status = uvideo_stream_recv_process(vs, buf,
1959 struct uvideo_stream *vs = addr;
1960 struct uvideo_bulk_xfer *bx = &vs->vs_xfer.bulk;
1965 "vs %p sc %p bx %p buffer %p\n", vs, vs->vs_parent, bx,
1975 uvideo_stream_recv_process(vs, bx->bx_buffer, len);
2000 struct uvideo_stream *vs = addr;
2001 struct uvideo_softc *sc = vs->vs_parent;
2009 if (vs->vs_default_format == NULL)
2011 fmt = *vs->vs_default_format;
2020 struct uvideo_stream *vs = addr;
2024 if (vs->vs_state != UVIDEO_STATE_CLOSED) {
2025 vs->vs_state = UVIDEO_STATE_CLOSED;
2032 struct uvideo_stream *vs = addr;
2034 return vs->vs_parent->sc_devname;
2040 struct uvideo_stream *vs = addr;
2042 return vs->vs_parent->sc_businfo;
2048 struct uvideo_stream *vs = addr;
2049 struct uvideo_softc *sc = vs->vs_parent;
2057 SIMPLEQ_FOREACH(video_format, &vs->vs_formats, entries) {
2075 struct uvideo_stream *vs = addr;
2076 struct uvideo_softc *sc = vs->vs_parent;
2081 *format = vs->vs_current_format;
2092 struct uvideo_stream *vs = addr;
2093 struct uvideo_softc *sc = vs->vs_parent;
2102 uvfmt = uvideo_stream_guess_format(vs, format->pixel_format,
2114 USETDW(probe.dwFrameInterval, vs->vs_frame_interval); /* XXX */
2117 err = uvideo_stream_probe(vs, UR_GET_MAX, &maxprobe);
2125 err = uvideo_stream_probe(vs, UR_SET_CUR, &probe);
2133 err = uvideo_stream_probe(vs, UR_GET_CUR, &probe);
2152 USETDW(probe.dwFrameInterval, vs->vs_frame_interval); /* XXX */
2159 err = uvideo_stream_commit(vs, UR_SET_CUR, &probe);
2182 if (vs->vs_probelen == 34) {
2194 vs->vs_frame_interval = UGETDW(probe.dwFrameInterval);
2195 vs->vs_max_payload_size = UGETDW(probe.dwMaxPayloadTransferSize);
2198 vs->vs_current_format = *format;
2207 struct uvideo_stream *vs = addr;
2210 uvfmt = uvideo_stream_guess_format(vs, format->pixel_format,
2222 struct uvideo_stream *vs = addr;
2224 switch (vs->vs_frame_interval) {
2235 fract->denominator = 10000000 / vs->vs_frame_interval;
2246 fract->numerator = vs->vs_frame_interval;
2264 struct uvideo_stream *vs = addr;
2268 err = uvideo_stream_start_xfer(vs);
2277 struct uvideo_stream *vs = addr;
2281 err = uvideo_stream_stop_xfer(vs);
2291 struct uvideo_stream *vs = addr;
2292 struct uvideo_softc *sc = vs->vs_parent;
2352 struct uvideo_stream *vs = addr;
2353 struct uvideo_softc *sc = vs->vs_parent;
2432 uvideo_stream_probe_and_commit(struct uvideo_stream *vs,
2441 USETW(req.wLength, vs->vs_probelen);
2448 USETW(req.wLength, vs->vs_probelen);
2466 USETW2(req.wIndex, 0, vs->vs_ifaceno);
2468 return (usbd_do_request_flags(vs->vs_parent->sc_udev, &req, data,
2763 printf("VS ");