.attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
                                        .endpoint = 0x02,
                                        .ep_attr = 0x01,
-                                       .maxpacksize = 0x130,
                                        .rates = SNDRV_PCM_RATE_44100 |
                                                 SNDRV_PCM_RATE_48000,
                                        .rate_min = 44100,
                                        .attributes = 0x00,
                                        .endpoint = 0x03,
                                        .ep_attr = USB_ENDPOINT_SYNC_ASYNC,
-                                       .maxpacksize = 0x128,
                                        .rates = SNDRV_PCM_RATE_48000,
                                        .rate_min = 48000,
                                        .rate_max = 48000,
                                        .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
                                        .endpoint = 0x85,
                                        .ep_attr = USB_ENDPOINT_SYNC_SYNC,
-                                       .maxpacksize = 0x128,
                                        .rates = SNDRV_PCM_RATE_48000,
                                        .rate_min = 48000,
                                        .rate_max = 48000,
 
                return -EINVAL;
        }
        alts = &iface->altsetting[fp->altset_idx];
-       fp->datainterval = snd_usb_parse_datainterval(chip, alts);
-       fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
+       if (fp->datainterval == 0)
+               fp->datainterval = snd_usb_parse_datainterval(chip, alts);
+       if (fp->maxpacksize == 0)
+               fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
        usb_set_interface(chip->dev, fp->iface, 0);
        snd_usb_init_pitch(chip, fp->iface, alts, fp);
        snd_usb_init_sample_rate(chip, fp->iface, alts, fp, fp->rate_max);