Lines Matching refs:fuvc

77   .name    = "fuvc",
86 DRIVER_MODULE(fuvc, simple, g_fuvc_driver, g_fuvc_devclass, usbdev_uvc_initialize, 0);
1396 int fuvc_host_connected(struct uvc_dev_s *fuvc)
1398 if (fuvc == NULL)
1403 return fuvc->connected;
1408 int fuvc_transfer_initiate(struct uvc_dev_s *fuvc)
1413 fuvc->fid ^= 1;
1414 vs_ep = fuvc->vs_ep;
1415 req = &(fuvc->streamreq);
1423 static void set_probe_status(struct uvc_dev_s *fuvc, int cs, int req)
1431 fuvc->probe_status.set = 1;
1437 fuvc->probe_status.get = 1;
1443 fuvc->probe_status.min = 1;
1449 fuvc->probe_status.max = 1;
1459 static int check_probe_status(struct uvc_dev_s *fuvc)
1461 if (fuvc->probe_status.get == 1 &&
1462 fuvc->probe_status.set == 1 &&
1463 fuvc->probe_status.min == 1 &&
1464 fuvc->probe_status.max == 1)
1475 static void fuvc_streaming_set(struct uvc_dev_s *fuvc,
1489 switch (fuvc->control)
1498 target = &fuvc->probe;
1502 target = &fuvc->commit;
1547 if (fuvc->imgsize == 0)
1561 if (fuvc->control == USB_UVC_VS_COMMIT_CONTROL && check_probe_status(fuvc))
1563 fuvc->format_info.format = pformat->fcc;
1564 fuvc->format_info.width = frame->width;
1565 fuvc->format_info.height = frame->height;
1566 fuvc->format_info.status = FORMAT_SWITCH_PENDING;
1567 fuvc->connected = 0x1;
1569 fuvc->transfer_status = STREAM_ON;
1576 if (fuvc->control == USB_UVC_VS_COMMIT_CONTROL)
1578 (void)memset_s(&fuvc->probe_status, sizeof(fuvc->probe_status), 0, sizeof(fuvc->probe_status));
1584 struct uvc_dev_s *fuvc;
1588 fuvc = (struct uvc_dev_s *)req->priv;
1589 switch (fuvc->control)
1595 fuvc_streaming_set(fuvc, req, NULL);
1596 fuvc->control = ~0;
1600 fuvc_streaming_set(fuvc, req, NULL);
1601 fuvc->control = ~0;
1605 fuvc->control = ~0;
1619 static int fuvc_vs_req_complete_sub(struct uvc_dev_s *fuvc, struct uvc_isoc_transfer *transfer,
1632 if (fuvc->transfer_status == STREAM_OFF)
1645 temp_buf = fuvc->stream_buf;
1655 ret = uvc_continue_transfer(fuvc, transfer);
1672 struct uvc_dev_s *fuvc;
1674 fuvc = (struct uvc_dev_s *)ep->priv;
1676 ret = fuvc_vs_req_complete_sub(fuvc, &transfer, req);
1689 temp_buf = fuvc->stream_buf;
1697 (fuvc->fid & UVC_STREAM_HEADER_FID) | UVC_STREAM_HEADER_EOF);
1701 temp_buf[1] = (uint8_t)(UVC_STREAM_HEADER_EOH | (fuvc->fid & UVC_STREAM_HEADER_FID));
1704 fuvc->last_complete = LOS_TickCountGet();
1712 struct uvc_dev_s *fuvc;
1714 fuvc = (struct uvc_dev_s *)ep->priv;
1716 ret = fuvc_vs_req_complete_sub(fuvc, &transfer, req);
1723 if (fuvc->dyn_fc > 0x1)
1731 temp_buf = fuvc->stream_buf;
1734 if (fuvc->zero_packet_flag)
1736 fuvc->zero_packet_flag = 0;
1750 temp_buf[1] = (uint8_t)(UVC_STREAM_HEADER_EOH | (fuvc->fid & UVC_STREAM_HEADER_FID));
1754 fuvc->zero_packet_flag = 1;
1759 if (fuvc->dyn_fc)
1761 fuvc->dyn_fc++;
1765 fuvc->last_complete = LOS_TickCountGet();
1770 void fuvc_fill_streaming_control(struct uvc_dev_s *fuvc,
1838 static void fuvc_get_default_streaming_ctrl(struct uvc_dev_s *fuvc,
1841 fuvc_fill_streaming_control(fuvc, ctrl, 0, 0);
1846 struct uvc_dev_s *fuvc;
1851 fuvc = (struct uvc_dev_s *)req->priv;
1853 ret = run_cmd_func(req->buf, req->xfrd, fuvc->event_id, UVC_RC_SETCUR, fuvc->unit_id);
1860 static int fuvc_handle_camera_control(struct uvc_dev_s *fuvc,
1867 (void)fuvc; /* ignored for now */
1879 fuvc->event_id = w_value >> 8;
1880 fuvc->unit_id = UNIT_ID_CAMERA;
1895 static int fuvc_handle_process_control(struct uvc_dev_s *fuvc,
1901 (void)fuvc;
1909 fuvc->event_id = w_value >> 8;
1910 fuvc->unit_id = UNIT_ID_PROCESSING;
1934 static int fuvc_handle_ext_control(struct uvc_dev_s *fuvc, struct usbdev_req_s *req,
1946 fuvc->event_id = w_value >> 8;
1947 fuvc->unit_id = UNIT_ID_H264_EXTENSION;
1963 static int fuvc_handle_xu_hicamera_control(struct uvc_dev_s *fuvc, struct usbdev_req_s *req,
1973 fuvc->event_id = w_value >> 8;
1974 fuvc->unit_id = UNIT_ID_HICAMERA_EXTENSION;
1989 static void fuvc_handle_class_setup_control(struct uvc_dev_s *fuvc, struct usbdev_req_s *req,
2019 retval = fuvc_handle_camera_control(fuvc, req, ctrl);
2023 retval = fuvc_handle_process_control(fuvc, req, ctrl);
2028 retval = fuvc_handle_ext_control(fuvc, req, ctrl);
2033 retval = fuvc_handle_xu_hicamera_control(fuvc, req, ctrl);
2051 static int fuvc_handle_streaming_probe(struct uvc_dev_s *fuvc, struct usbdev_req_s *req,
2081 &fuvc->probe, SKB_DATA_ALIGN(sizeof(struct uvc_probe_commit_control1_1)));
2086 &fuvc->commit, SKB_DATA_ALIGN(sizeof(struct uvc_probe_commit_control1_1)));
2108 fuvc_get_default_streaming_ctrl(fuvc, &commit1_1, 333333);
2128 static int fuvc_handle_class_setup_streaming(struct uvc_dev_s *fuvc,
2145 fuvc->control = USB_UVC_VS_PROBE_CONTROL;
2146 ret = fuvc_handle_streaming_probe(fuvc, req, ctrl);
2149 errnum = memcpy_s(req->buf, USB_COMP_EP0_BUFSIZ, &fuvc->probe, SKB_DATA_ALIGN(n_len));
2161 fuvc->control = USB_UVC_VS_COMMIT_CONTROL;
2162 (void)fuvc_handle_streaming_probe(fuvc, req, ctrl);
2213 struct uvc_dev_s *fuvc = drvr->dev;
2215 (void)EP_DISABLE(fuvc->ctrl_ep);
2216 (void)EP_DISABLE(fuvc->vs_ep);
2218 DEV_FREEEP(dev, fuvc->ctrl_ep);
2219 DEV_FREEEP(dev, fuvc->vs_ep);
2225 if (fuvc->stream_buf != NULL)
2227 free(fuvc->stream_buf);
2228 fuvc->stream_buf = NULL;
2357 struct uvc_dev_s *fuvc;
2367 fuvc = drvr->dev;
2368 if (fuvc == NULL)
2408 void usbclass_uvc_stream_ep_reset(struct uvc_dev_s *fuvc)
2410 (void)EP_DISABLE(fuvc->vs_ep);
2411 (void)EP_FLUSH(fuvc->vs_ep);
2413 (void)EP_CONFIGURE(fuvc->vs_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_hs_isoc_streaming_ep, 0);
2415 (void)EP_CONFIGURE(fuvc->vs_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_hs_bulk_streaming_ep, 0);
2420 static void fuvc_streaming_on(struct uvc_dev_s *fuvc)
2424 fuvc->connected = 1;
2426 fuvc->transfer_status = STREAM_ON;
2428 req = &(fuvc->streamreq);
2430 req->buf = (uint8_t *)VMM_TO_DMA_ADDR((UINTPTR)fuvc->stream_buf);
2431 req->callback = fuvc->streamreq.callback;
2432 (void)EP_SUBMIT(fuvc->vs_ep, req);
2437 static void fuvc_streaming_off(struct uvc_dev_s *fuvc)
2439 fuvc->transfer_status = STREAM_OFF;
2441 fuvc->connected = 0;
2444 static int usbclass_uvc_set_alt(struct uvc_dev_s *fuvc, struct usbdev_s *dev,
2449 if (fuvc == NULL)
2457 if (fuvc->ctrl_ep->priv)
2459 (void)EP_DISABLE(fuvc->ctrl_ep);
2460 fuvc->ctrl_ep->priv = NULL;
2463 ret = EP_CONFIGURE(fuvc->ctrl_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_ctrl_ep_desc, 0);
2469 fuvc->ctrl_ep->priv = (void *)fuvc;
2476 if (fuvc->transfer_status != STREAM_ON)
2481 if (fuvc->vs_ep)
2483 (void)EP_DISABLE(fuvc->vs_ep);
2486 fuvc_streaming_off(fuvc);
2490 if (fuvc->vs_ep->priv)
2492 (void)EP_DISABLE(fuvc->vs_ep);
2493 fuvc->vs_ep->priv = NULL;
2496 ret = EP_CONFIGURE(fuvc->vs_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_hs_isoc_streaming_ep, 0);
2502 fuvc->vs_ep->priv = (void *)fuvc;
2504 fuvc_streaming_on(fuvc);
2515 static int usbclass_uvc_set_alt(struct uvc_dev_s *fuvc, struct usbdev_s *dev)
2519 if (fuvc != NULL)
2522 if (fuvc->ctrl_ep->priv)
2524 (void)EP_DISABLE(fuvc->ctrl_ep);
2525 fuvc->ctrl_ep->priv = NULL;
2527 ret = EP_CONFIGURE(fuvc->ctrl_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_ctrl_ep_desc, 0);
2533 fuvc->ctrl_ep->priv = (void *)fuvc;
2536 if (fuvc->vs_ep->priv)
2538 (void)EP_DISABLE(fuvc->vs_ep);
2539 fuvc->vs_ep->priv = NULL;
2544 ret = EP_CONFIGURE(fuvc->vs_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_hs_isoc_streaming_ep, 0);
2547 ret = EP_CONFIGURE(fuvc->vs_ep, (const usb_endpoint_descriptor_t *)&g_fuvc_hs_bulk_streaming_ep, 0);
2554 fuvc->vs_ep->priv = (void *)fuvc;
2565 if (g_start_transfer && fuvc->connected)
2567 usbclass_uvc_stream_ep_reset(fuvc);
2568 fuvc->transfer_status = STREAM_OFF;
2570 fuvc->connected = 0;
2585 struct uvc_dev_s *fuvc;
2600 fuvc = drvr->dev;
2601 if (fuvc == NULL)
2608 req->priv = fuvc;
2618 (void)usbclass_uvc_set_alt(fuvc, dev, w_index, w_value);
2620 (void)usbclass_uvc_set_alt(fuvc, dev);
2650 set_probe_status(fuvc, (UGETW(ctrl->wValue) >> 8), ctrl->bRequest);
2657 fuvc_handle_class_setup_control(fuvc, req, ctrl);
2662 if (fuvc_handle_class_setup_streaming(fuvc, req, ctrl))
2686 struct uvc_dev_s *fuvc;
2694 fuvc = drvr->dev;
2695 if (fuvc == NULL)
2700 if (fuvc->connected)
2702 fuvc->transfer_status = STREAM_OFF;
2706 fuvc->connected = 0;