Hi Jorge,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on sound/for-next]
[also build test WARNING on v4.17-rc1 next-20180420]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Jorge-Sanjuan/ALSA-usb-UAC3-new-features/20180423-015726
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> sound/usb/stream.c:597:26: sparse: restricted __le32 degrades to integer

vim +597 sound/usb/stream.c

   544  
   545  static int parse_uac_endpoint_attributes(struct snd_usb_audio *chip,
   546                                           struct usb_host_interface 
*alts,
   547                                           int protocol, int iface_no)
   548  {
   549          /* parsed with a v1 header here. that's ok as we only look at 
the
   550           * header first which is the same for both versions */
   551          struct uac_iso_endpoint_descriptor *csep;
   552          struct usb_interface_descriptor *altsd = get_iface_desc(alts);
   553          int attributes = 0;
   554  
   555          csep = snd_usb_find_desc(alts->endpoint[0].extra, 
alts->endpoint[0].extralen, NULL, USB_DT_CS_ENDPOINT);
   556  
   557          /* Creamware Noah has this descriptor after the 2nd endpoint */
   558          if (!csep && altsd->bNumEndpoints >= 2)
   559                  csep = snd_usb_find_desc(alts->endpoint[1].extra, 
alts->endpoint[1].extralen, NULL, USB_DT_CS_ENDPOINT);
   560  
   561          /*
   562           * If we can't locate the USB_DT_CS_ENDPOINT descriptor in the 
extra
   563           * bytes after the first endpoint, go search the entire 
interface.
   564           * Some devices have it directly *before* the standard endpoint.
   565           */
   566          if (!csep)
   567                  csep = snd_usb_find_desc(alts->extra, alts->extralen, 
NULL, USB_DT_CS_ENDPOINT);
   568  
   569          if (!csep || csep->bLength < 7 ||
   570              csep->bDescriptorSubtype != UAC_EP_GENERAL) {
   571                  usb_audio_warn(chip,
   572                                 "%u:%d : no or invalid class specific 
endpoint descriptor\n",
   573                                 iface_no, altsd->bAlternateSetting);
   574                  return 0;
   575          }
   576  
   577          switch (protocol) {
   578          case UAC_VERSION_1:
   579                  attributes = csep->bmAttributes;
   580                  break;
   581          case UAC_VERSION_2: {
   582                  struct uac2_iso_endpoint_descriptor *csep2 =
   583                          (struct uac2_iso_endpoint_descriptor *) csep;
   584  
   585                  attributes = csep->bmAttributes & 
UAC_EP_CS_ATTR_FILL_MAX;
   586  
   587                  /* emulate the endpoint attributes of a v1 device */
   588                  if (csep2->bmControls & UAC2_CONTROL_PITCH)
   589                          attributes |= UAC_EP_CS_ATTR_PITCH_CONTROL;
   590                  break;
   591          }
   592          case UAC_VERSION_3: {
   593                  struct uac3_iso_endpoint_descriptor *csep3 =
   594                          (struct uac3_iso_endpoint_descriptor *) csep;
   595  
   596                  /* emulate the endpoint attributes of a v1 device */
 > 597                  if (csep3->bmControls & UAC2_CONTROL_PITCH)
   598                          attributes |= UAC_EP_CS_ATTR_PITCH_CONTROL;
   599                  break;
   600          }
   601          }
   602  
   603          return attributes;
   604  }
   605  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Reply via email to