Documentation: usb: UVC function testing
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>
This commit is contained in:
parent
020c6f9348
commit
9c4f538bfa
@ -18,6 +18,7 @@ provided by gadgets.
|
|||||||
15. SOURCESINK function
|
15. SOURCESINK function
|
||||||
16. UAC1 function
|
16. UAC1 function
|
||||||
17. UAC2 function
|
17. UAC2 function
|
||||||
|
18. UVC function
|
||||||
|
|
||||||
|
|
||||||
1. ACM function
|
1. ACM function
|
||||||
@ -653,3 +654,75 @@ e.g.:
|
|||||||
|
|
||||||
$ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \
|
$ arecord -f dat -t wav -D hw:CARD=UAC2Gadget,DEV=0 | \
|
||||||
aplay -D default:CARD=OdroidU3
|
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
|
||||||
|
Loading…
Reference in New Issue
Block a user