mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
usb: gadget: f_uvc: trace uvc control request
This patch add new uvc trace for setup request processing. 1. enable trace echo 4 > /sys/module/usb_f_uvc/parameters/trace 2. dump trace dmesg Test on RV1109 EVB with UVC function when streaming on: [ 426.441316] uvcvideo: setup request a1 81 value 0100 index 0003 001a [ 426.450280] uvcvideo: uvc_send_response: req len 26 [ 426.450444] uvcvideo: event_setup_out 0, data len 26 [ 426.451545] uvcvideo: setup request 21 01 value 0100 index 0003 001a [ 426.460862] uvcvideo: uvc_send_response: req len 26 [ 426.461014] uvcvideo: event_setup_out 1, data len 26 [ 426.461173] uvcvideo: setup request a1 81 value 0100 index 0003 001a [ 426.485791] uvcvideo: uvc_send_response: req len 26 [ 426.486672] uvcvideo: event_setup_out 0, data len 26 [ 426.487145] uvcvideo: setup request a1 83 value 0100 index 0003 001a [ 426.496529] uvcvideo: uvc_send_response: req len 26 [ 426.496655] uvcvideo: event_setup_out 0, data len 26 [ 426.497485] uvcvideo: setup request a1 82 value 0100 index 0003 001a [ 426.506737] uvcvideo: uvc_send_response: req len 26 [ 426.507195] uvcvideo: event_setup_out 0, data len 26 Signed-off-by: William Wu <william.wu@rock-chips.com> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> Change-Id: If882728e891d033c249e6c466b40d3e2a28bccb6
This commit is contained in:
@@ -275,6 +275,10 @@ uvc_function_ep0_complete(struct usb_ep *ep, struct usb_request *req)
|
||||
struct v4l2_event v4l2_event;
|
||||
struct uvc_event *uvc_event = (void *)&v4l2_event.u.data;
|
||||
|
||||
uvc_trace(UVC_TRACE_CONTROL,
|
||||
"event_setup_out %d, data len %d\n",
|
||||
uvc->event_setup_out, req->actual);
|
||||
|
||||
if (uvc->event_setup_out) {
|
||||
uvc->event_setup_out = 0;
|
||||
|
||||
@@ -293,6 +297,11 @@ uvc_function_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
|
||||
struct v4l2_event v4l2_event;
|
||||
struct uvc_event *uvc_event = (void *)&v4l2_event.u.data;
|
||||
|
||||
uvc_trace(UVC_TRACE_CONTROL,
|
||||
"setup request %02x %02x value %04x index %04x %04x\n",
|
||||
ctrl->bRequestType, ctrl->bRequest, le16_to_cpu(ctrl->wValue),
|
||||
le16_to_cpu(ctrl->wIndex), le16_to_cpu(ctrl->wLength));
|
||||
|
||||
if ((ctrl->bRequestType & USB_TYPE_MASK) != USB_TYPE_CLASS) {
|
||||
uvcg_info(f, "invalid request type\n");
|
||||
return -EINVAL;
|
||||
|
||||
@@ -41,6 +41,7 @@ uvc_send_response(struct uvc_device *uvc, struct uvc_request_data *data)
|
||||
req->length = min_t(unsigned int, uvc->event_length, data->length);
|
||||
req->zero = data->length < uvc->event_length;
|
||||
|
||||
uvc_trace(UVC_TRACE_CONTROL, "%s: req len %d\n", __func__, req->length);
|
||||
memcpy(req->buf, data->data, req->length);
|
||||
|
||||
return usb_ep_queue(cdev->gadget->ep0, req, GFP_KERNEL);
|
||||
|
||||
Reference in New Issue
Block a user