CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Michael Grzeschik <[email protected]>
TO: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]

Hi Michael,

I love your patch! Perhaps something to improve:

[auto build test WARNING on media-tree/master]
[also build test WARNING on usb/usb-testing v5.16-rc4 next-20211208]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Michael-Grzeschik/usb-gadget-uvc-use-configfs-entries-for-negotiation-and-v4l2-VIDIOCS/20211209-164457
base:   git://linuxtv.org/media_tree.git master
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: arm-randconfig-c002-20211209 
(https://download.01.org/0day-ci/archive/20211211/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://github.com/0day-ci/linux/commit/f141049e618ab8d196ccc48917c226c3f63ace67
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Michael-Grzeschik/usb-gadget-uvc-use-configfs-entries-for-negotiation-and-v4l2-VIDIOCS/20211209-164457
        git checkout f141049e618ab8d196ccc48917c226c3f63ace67
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/hwtracing/coresight/coresight-syscfg.c:407:2: note: Undefined or 
garbage value returned to caller
           return err;
           ^      ~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   11 warnings generated.
   drivers/hwtracing/coresight/coresight-config.c:167:4: warning: Value stored 
to 'name' is never read [clang-analyzer-deadcode.DeadStores]
                           name = feat_csdev->feat_desc->params_desc[j].name;
                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwtracing/coresight/coresight-config.c:167:4: note: Value stored to 
'name' is never read
                           name = feat_csdev->feat_desc->params_desc[j].name;
                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwtracing/coresight/coresight-config.c:206:4: warning: Value stored 
to 'name' is never read [clang-analyzer-deadcode.DeadStores]
                           name = feat_csdev->feat_desc->params_desc[j].name;
                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwtracing/coresight/coresight-config.c:206:4: note: Value stored to 
'name' is never read
                           name = feat_csdev->feat_desc->params_desc[j].name;
                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwtracing/coresight/coresight-config.c:234:3: warning: Value stored 
to 'csdev' is never read [clang-analyzer-deadcode.DeadStores]
                   csdev = feat_csdev->csdev;
                   ^       ~~~~~~~~~~~~~~~~~
   drivers/hwtracing/coresight/coresight-config.c:234:3: note: Value stored to 
'csdev' is never read
                   csdev = feat_csdev->csdev;
                   ^       ~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   fs/gfs2/file.c:793:3: warning: Value stored to 'pages' is never read 
[clang-analyzer-deadcode.DeadStores]
                   pages = min(pages, nr_dirtied);
                   ^
   fs/gfs2/file.c:793:3: note: Value stored to 'pages' is never read
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   fs/gfs2/ops_fstype.c:852:2: warning: Value stored to 'jindex' is never read 
[clang-analyzer-deadcode.DeadStores]
           jindex = 0;
           ^        ~
   fs/gfs2/ops_fstype.c:852:2: note: Value stored to 'jindex' is never read
           jindex = 0;
           ^        ~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   10 warnings generated.
   fs/gfs2/inode.c:1493:4: warning: Value stored to 'error' is never read 
[clang-analyzer-deadcode.DeadStores]
                           error = 0;
                           ^       ~
   fs/gfs2/inode.c:1493:4: note: Value stored to 'error' is never read
                           error = 0;
                           ^       ~
   fs/gfs2/inode.c:1558:3: warning: Value stored to 'error' is never read 
[clang-analyzer-deadcode.DeadStores]
                   error = gfs2_unlink_inode(ndip, ndentry);
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/gfs2/inode.c:1558:3: note: Value stored to 'error' is never read
                   error = gfs2_unlink_inode(ndip, ndentry);
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   drivers/usb/gadget/function/f_uac2.c:1587:28: warning: Value stored to 
'cdev' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]
           struct usb_composite_dev *cdev = agdev->func.config->cdev;
                                     ^~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/usb/gadget/function/f_uac2.c:1587:28: note: Value stored to 'cdev' 
during its initialization is never read
           struct usb_composite_dev *cdev = agdev->func.config->cdev;
                                     ^~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   11 warnings generated.
>> drivers/usb/gadget/function/uvc_v4l2.c:128:20: warning: Value stored to 
>> 'video' during its initialization is never read 
>> [clang-analyzer-deadcode.DeadStores]
           struct uvc_video *video = &uvc->video;
                             ^~~~~   ~~~~~~~~~~~
   drivers/usb/gadget/function/uvc_v4l2.c:128:20: note: Value stored to 'video' 
during its initialization is never read
           struct uvc_video *video = &uvc->video;
                             ^~~~~   ~~~~~~~~~~~
>> drivers/usb/gadget/function/uvc_v4l2.c:244:2: warning: Value stored to 'fcc' 
>> is never read [clang-analyzer-deadcode.DeadStores]
           fcc = (u8 *)&fmt->fmt.pix.pixelformat;
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/usb/gadget/function/uvc_v4l2.c:244:2: note: Value stored to 'fcc' is 
never read
           fcc = (u8 *)&fmt->fmt.pix.pixelformat;
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/usb/gadget/function/uvc_v4l2.c:333:3: warning: Value stored to 
>> 'uformat' is never read [clang-analyzer-deadcode.DeadStores]
                   uformat = video->cur_format;
                   ^         ~~~~~~~~~~~~~~~~~
   drivers/usb/gadget/function/uvc_v4l2.c:333:3: note: Value stored to 
'uformat' is never read
                   uformat = video->cur_format;
                   ^         ~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   sound/soc/codecs/tlv320aic3x.c:162:25: warning: The result of the left shift 
is undefined due to shifting by '32', which is greater or equal to the width of 
type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
           unsigned int mask = (1 << fls(max)) - 1;
                                  ^  ~~~~~~~~
   sound/soc/codecs/tlv320aic3x.c:162:28: note: Calling 'fls'
           unsigned int mask = (1 << fls(max)) - 1;
                                     ^~~~~~~~
   include/asm-generic/bitops/fls.h:15:2: note: 'r' initialized to 32
           int r = 32;
           ^~~~~
   include/asm-generic/bitops/fls.h:17:6: note: Assuming 'x' is not equal to 0, 
which participates in a condition later
           if (!x)
               ^~
   include/asm-generic/bitops/fls.h:17:2: note: Taking false branch
           if (!x)
           ^
   include/asm-generic/bitops/fls.h:19:6: note: Assuming the condition is false
           if (!(x & 0xffff0000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:19:2: note: Taking false branch
           if (!(x & 0xffff0000u)) {
           ^
   include/asm-generic/bitops/fls.h:23:6: note: Assuming the condition is false
           if (!(x & 0xff000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:23:2: note: Taking false branch
           if (!(x & 0xff000000u)) {
           ^
   include/asm-generic/bitops/fls.h:27:6: note: Assuming the condition is false
           if (!(x & 0xf0000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:27:2: note: Taking false branch
           if (!(x & 0xf0000000u)) {
           ^
   include/asm-generic/bitops/fls.h:31:6: note: Assuming the condition is false
           if (!(x & 0xc0000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:31:2: note: Taking false branch
           if (!(x & 0xc0000000u)) {
           ^
   include/asm-generic/bitops/fls.h:35:6: note: Assuming the condition is false
           if (!(x & 0x80000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:35:2: note: Taking false branch
           if (!(x & 0x80000000u)) {
           ^
   include/asm-generic/bitops/fls.h:39:2: note: Returning the value 32 (loaded 
from 'r')
           return r;
           ^~~~~~~~
   sound/soc/codecs/tlv320aic3x.c:162:28: note: Returning from 'fls'
           unsigned int mask = (1 << fls(max)) - 1;
                                     ^~~~~~~~
   sound/soc/codecs/tlv320aic3x.c:162:25: note: The result of the left shift is 
undefined due to shifting by '32', which is greater or equal to the width of 
type 'int'
           unsigned int mask = (1 << fls(max)) - 1;
                                  ^  ~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   12 warnings generated.
   drivers/most/configfs.c:173:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(mdev_link->direction, page);
           ^~~~~~
   drivers/most/configfs.c:173:2: note: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(mdev_link->direction, page);
           ^~~~~~
   drivers/most/configfs.c:192:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(mdev_link->datatype, page);
           ^~~~~~
   drivers/most/configfs.c:192:2: note: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(mdev_link->datatype, page);
           ^~~~~~
   drivers/most/configfs.c:446:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(mdev_link->name, name);
           ^~~~~~
   drivers/most/configfs.c:446:2: note: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
           strcpy(mdev_link->name, name);
           ^~~~~~
   drivers/most/configfs.c:535:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(mdev_link->name, name);

vim +/video +128 drivers/usb/gadget/function/uvc_v4l2.c

f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  123  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  124  static struct uvcg_frame *find_closest_frame_by_size(struct 
uvc_device *uvc,
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  125                                            struct uvcg_format 
*uformat,
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  126                                            u16 rw, u16 rh)
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  127  {
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09 @128         struct uvc_video *video = &uvc->video;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  129         struct uvcg_format_ptr *format;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  130         struct uvcg_frame_ptr *frame;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  131         struct uvcg_frame *uframe = NULL;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  132         unsigned int d, maxd;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  133  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  134         /* Find the closest image size. The distance between 
image sizes is
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  135          * the size in pixels of the non-overlapping regions 
between the
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  136          * requested size and the frame-specified size.
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  137          */
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  138         maxd = (unsigned int)-1;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  139  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  140         list_for_each_entry(format, &uvc->header->formats, 
entry) {
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  141                 if (format->fmt->type != uformat->type)
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  142                         continue;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  143  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  144                 list_for_each_entry(frame, 
&format->fmt->frames, entry) {
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  145                         u16 w, h;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  146  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  147                         w = frame->frm->frame.w_width;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  148                         h = frame->frm->frame.w_height;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  149  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  150                         d = min(w, rw) * min(h, rh);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  151                         d = w*h + rw*rh - 2*d;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  152                         if (d < maxd) {
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  153                                 maxd = d;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  154                                 uframe = frame->frm;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  155                         }
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  156  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  157                         if (maxd == 0)
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  158                                 break;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  159                 }
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  160         }
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  161  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  162         if (!uframe)
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  163                 uvcg_dbg(&video->uvc->func, "Unsupported size 
%ux%u\n", rw, rh);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  164  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  165         return uframe;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  166  }
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  167  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  168  /* 
--------------------------------------------------------------------------
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  169   * Requests handling
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  170   */
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  171  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  172  static int
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  173  uvc_send_response(struct uvc_device *uvc, struct 
uvc_request_data *data)
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  174  {
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  175         struct usb_composite_dev *cdev = uvc->func.config->cdev;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  176         struct usb_request *req = uvc->control_req;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  177  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  178         if (data->length < 0)
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  179                 return usb_ep_set_halt(cdev->gadget->ep0);
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  180  
6f6543f53f9ce1 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2012-04-24  181         req->length = min_t(unsigned int, uvc->event_length, 
data->length);
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  182         req->zero = data->length < uvc->event_length;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  183  
a5eaaa1f33e771 drivers/usb/gadget/uvc_v4l2.c          Dan Carpenter     
2013-03-14  184         memcpy(req->buf, data->data, req->length);
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  185  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  186         return usb_ep_queue(cdev->gadget->ep0, req, GFP_KERNEL);
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  187  }
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  188  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  189  /* 
--------------------------------------------------------------------------
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  190   * V4L2 ioctls
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  191   */
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  192  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  193  static int
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  194  uvc_v4l2_querycap(struct file *file, void *fh, struct 
v4l2_capability *cap)
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  195  {
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  196         struct video_device *vdev = video_devdata(file);
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  197         struct uvc_device *uvc = video_get_drvdata(vdev);
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  198         struct usb_composite_dev *cdev = uvc->func.config->cdev;
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  199  
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  200         strlcpy(cap->driver, "g_uvc", sizeof(cap->driver));
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  201         strlcpy(cap->card, cdev->gadget->name, 
sizeof(cap->card));
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  202         strlcpy(cap->bus_info, dev_name(&cdev->gadget->dev),
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  203                 sizeof(cap->bus_info));
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  204         return 0;
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  205  }
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  206  
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  207  static int
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  208  uvc_v4l2_get_format(struct file *file, void *fh, struct 
v4l2_format *fmt)
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  209  {
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  210         struct video_device *vdev = video_devdata(file);
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  211         struct uvc_device *uvc = video_get_drvdata(vdev);
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  212         struct uvc_video *video = &uvc->video;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  213         struct uvc_format_desc *fmtdesc;
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  214  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  215         fmtdesc = to_uvc_format(video->cur_format);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  216  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  217         fmt->fmt.pix.pixelformat = fmtdesc->fcc;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  218         fmt->fmt.pix.width = video->cur_frame->frame.w_width;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  219         fmt->fmt.pix.height = video->cur_frame->frame.w_height;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  220         fmt->fmt.pix.field = V4L2_FIELD_NONE;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  221         fmt->fmt.pix.bytesperline = 
uvc_v4l2_get_bytesperline(video->cur_format,
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  222                                                               
video->cur_frame);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  223         fmt->fmt.pix.sizeimage =
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  224                         
video->cur_frame->frame.dw_max_video_frame_buffer_size;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  225         fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  226         fmt->fmt.pix.priv = 0;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  227  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  228         return 0;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  229  }
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  230  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  231  static int
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  232  uvc_v4l2_try_set_fmt(struct file *file, void *fh, struct 
v4l2_format *fmt)
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  233  {
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  234         struct video_device *vdev = video_devdata(file);
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  235         struct uvc_device *uvc = video_get_drvdata(vdev);
a1d27a4bf5bb41 drivers/usb/gadget/function/uvc_v4l2.c Laurent Pinchart  
2014-09-08  236         struct uvc_video *video = &uvc->video;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  237         struct uvcg_format *uformat;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  238         struct uvcg_frame *uframe;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  239         u8 *fcc;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  240  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  241         if (fmt->type != video->queue.queue.type)
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  242                 return -EINVAL;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  243  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09 @244         fcc = (u8 *)&fmt->fmt.pix.pixelformat;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  245         uvcg_dbg(&uvc->func, "Trying format 0x%08x (%c%c%c%c): 
%ux%u\n",
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  246                 fmt->fmt.pix.pixelformat,
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  247                 fcc[0], fcc[1], fcc[2], fcc[3],
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  248                 fmt->fmt.pix.width, fmt->fmt.pix.height);
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  249  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  250         uformat = find_format_by_pix(uvc, 
fmt->fmt.pix.pixelformat);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  251         if (!uformat)
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  252                 return -EINVAL;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  253  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  254         uframe = find_closest_frame_by_size(uvc, uformat,
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  255                                 fmt->fmt.pix.width, 
fmt->fmt.pix.height);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  256         if (!uframe)
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  257                 return -EINVAL;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  258  
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  259         fmt->fmt.pix.width = uframe->frame.w_width;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  260         fmt->fmt.pix.height = uframe->frame.w_height;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  261         fmt->fmt.pix.field = V4L2_FIELD_NONE;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  262         fmt->fmt.pix.bytesperline = 
uvc_v4l2_get_bytesperline(uformat, uframe);
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  263         fmt->fmt.pix.sizeimage = 
uframe->frame.dw_max_video_frame_buffer_size;
f141049e618ab8 drivers/usb/gadget/function/uvc_v4l2.c Michael Grzeschik 
2021-12-09  264         fmt->fmt.pix.pixelformat = to_uvc_format(uformat)->fcc;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  265         fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  266         fmt->fmt.pix.priv = 0;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  267  
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  268         return 0;
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  269  }
cdda479f15cd13 drivers/usb/gadget/uvc_v4l2.c          Laurent Pinchart  
2010-05-02  270  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to