Documentation: usb: UVC function testing
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Tue, 16 Dec 2014 13:56:42 +0000 (14:56 +0100)
committerFelipe Balbi <balbi@ti.com>
Mon, 12 Jan 2015 18:13:26 +0000 (12:13 -0600)
Summary of how to test UVC function of USB gadget.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Documentation/usb/gadget-testing.txt

index 5ac9dc702c0edb65dfd833d08dacf822f2439e04..076ac7ba7f935e03d6b37bd214ad53fa36ff472b 100644 (file)
@@ -18,6 +18,7 @@ provided by gadgets.
 15. SOURCESINK function
 16. UAC1 function
 17. UAC2 function
+18. UVC function
 
 
 1. ACM function
@@ -653,3 +654,75 @@ e.g.:
 
 $ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \
 aplay -D default:CARD=OdroidU3
+
+18. UVC function
+================
+
+The function is provided by usb_f_uvc.ko module.
+
+Function-specific configfs interface
+------------------------------------
+
+The function name to use when creating the function directory is "uvc".
+The uvc function provides these attributes in its function directory:
+
+       streaming_interval - interval for polling endpoint for data transfers
+       streaming_maxburst - bMaxBurst for super speed companion descriptor
+       streaming_maxpacket - maximum packet size this endpoint is capable of
+                             sending or receiving when this configuration is
+                             selected
+
+There are also "control" and "streaming" subdirectories, each of which contain
+a number of their subdirectories. There are some sane defaults provided, but
+the user must provide the following:
+
+       control header - create in control/header, link from control/class/fs
+                       and/or control/class/ss
+       streaming header - create in streaming/header, link from
+                       streaming/class/fs and/or streaming/class/hs and/or
+                       streaming/class/ss
+       format description - create in streaming/mjpeg and/or
+                       streaming/uncompressed
+       frame description - create in streaming/mjpeg/<format> and/or in
+                       streaming/uncompressed/<format>
+
+Each frame description contains frame interval specification, and each
+such specification consists of a number of lines with an inverval value
+in each line. The rules stated above are best illustrated with an example:
+
+# mkdir functions/uvc.usb0/control/header/h
+# cd functions/uvc.usb0/control/header/h
+# ln -s header/h class/fs
+# ln -s header/h class/ss
+# mkdir -p functions/uvc.usb0/streaming/uncompressed/u/360p
+# cat <<EOF > functions/uvc.usb0/streaming/uncompressed/u/360p/dwFrameInterval
+666666
+1000000
+5000000
+EOF
+# cd $GADGET_CONFIGFS_ROOT
+# mkdir functions/uvc.usb0/streaming/header/h
+# cd functions/uvc.usb0/streaming/header/h
+# ln -s ../../uncompressed/u
+# cd ../../class/fs
+# ln -s ../../header/h
+# cd ../../class/hs
+# ln -s ../../header/h
+# cd ../../class/ss
+# ln -s ../../header/h
+
+
+Testing the UVC function
+------------------------
+
+device: run the gadget, modprobe vivid
+
+# uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>
+
+where uvc-gadget is this program:
+http://git.ideasonboard.org/uvc-gadget.git
+
+with these patches:
+http://www.spinics.net/lists/linux-usb/msg99220.html
+
+host: luvcview -f yuv