|
@@ -43,13 +43,12 @@
|
|
|
*/
|
|
|
static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
|
|
|
struct audioformat *fp,
|
|
|
- unsigned int format, void *_fmt,
|
|
|
- int protocol)
|
|
|
+ unsigned int format, void *_fmt)
|
|
|
{
|
|
|
int sample_width, sample_bytes;
|
|
|
u64 pcm_formats = 0;
|
|
|
|
|
|
- switch (protocol) {
|
|
|
+ switch (fp->protocol) {
|
|
|
case UAC_VERSION_1:
|
|
|
default: {
|
|
|
struct uac_format_type_i_discrete_descriptor *fmt = _fmt;
|
|
@@ -360,11 +359,8 @@ err:
|
|
|
*/
|
|
|
static int parse_audio_format_i(struct snd_usb_audio *chip,
|
|
|
struct audioformat *fp, unsigned int format,
|
|
|
- struct uac_format_type_i_continuous_descriptor *fmt,
|
|
|
- struct usb_host_interface *iface)
|
|
|
+ struct uac_format_type_i_continuous_descriptor *fmt)
|
|
|
{
|
|
|
- struct usb_interface_descriptor *altsd = get_iface_desc(iface);
|
|
|
- int protocol = altsd->bInterfaceProtocol;
|
|
|
snd_pcm_format_t pcm_format;
|
|
|
int ret;
|
|
|
|
|
@@ -387,8 +383,7 @@ static int parse_audio_format_i(struct snd_usb_audio *chip,
|
|
|
}
|
|
|
fp->formats = pcm_format_to_bits(pcm_format);
|
|
|
} else {
|
|
|
- fp->formats = parse_audio_format_i_type(chip, fp, format,
|
|
|
- fmt, protocol);
|
|
|
+ fp->formats = parse_audio_format_i_type(chip, fp, format, fmt);
|
|
|
if (!fp->formats)
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -398,11 +393,8 @@ static int parse_audio_format_i(struct snd_usb_audio *chip,
|
|
|
* proprietary class specific descriptor.
|
|
|
* audio class v2 uses class specific EP0 range requests for that.
|
|
|
*/
|
|
|
- switch (protocol) {
|
|
|
+ switch (fp->protocol) {
|
|
|
default:
|
|
|
- snd_printdd(KERN_WARNING "%d:%u:%d : invalid protocol version %d, assuming v1\n",
|
|
|
- chip->dev->devnum, fp->iface, fp->altsetting, protocol);
|
|
|
- /* fall through */
|
|
|
case UAC_VERSION_1:
|
|
|
fp->channels = fmt->bNrChannels;
|
|
|
ret = parse_audio_format_rates_v1(chip, fp, (unsigned char *) fmt, 7);
|
|
@@ -427,12 +419,9 @@ static int parse_audio_format_i(struct snd_usb_audio *chip,
|
|
|
*/
|
|
|
static int parse_audio_format_ii(struct snd_usb_audio *chip,
|
|
|
struct audioformat *fp,
|
|
|
- int format, void *_fmt,
|
|
|
- struct usb_host_interface *iface)
|
|
|
+ int format, void *_fmt)
|
|
|
{
|
|
|
int brate, framesize, ret;
|
|
|
- struct usb_interface_descriptor *altsd = get_iface_desc(iface);
|
|
|
- int protocol = altsd->bInterfaceProtocol;
|
|
|
|
|
|
switch (format) {
|
|
|
case UAC_FORMAT_TYPE_II_AC3:
|
|
@@ -452,11 +441,8 @@ static int parse_audio_format_ii(struct snd_usb_audio *chip,
|
|
|
|
|
|
fp->channels = 1;
|
|
|
|
|
|
- switch (protocol) {
|
|
|
+ switch (fp->protocol) {
|
|
|
default:
|
|
|
- snd_printdd(KERN_WARNING "%d:%u:%d : invalid protocol version %d, assuming v1\n",
|
|
|
- chip->dev->devnum, fp->iface, fp->altsetting, protocol);
|
|
|
- /* fall through */
|
|
|
case UAC_VERSION_1: {
|
|
|
struct uac_format_type_ii_discrete_descriptor *fmt = _fmt;
|
|
|
brate = le16_to_cpu(fmt->wMaxBitRate);
|
|
@@ -483,17 +469,17 @@ static int parse_audio_format_ii(struct snd_usb_audio *chip,
|
|
|
int snd_usb_parse_audio_format(struct snd_usb_audio *chip,
|
|
|
struct audioformat *fp, unsigned int format,
|
|
|
struct uac_format_type_i_continuous_descriptor *fmt,
|
|
|
- int stream, struct usb_host_interface *iface)
|
|
|
+ int stream)
|
|
|
{
|
|
|
int err;
|
|
|
|
|
|
switch (fmt->bFormatType) {
|
|
|
case UAC_FORMAT_TYPE_I:
|
|
|
case UAC_FORMAT_TYPE_III:
|
|
|
- err = parse_audio_format_i(chip, fp, format, fmt, iface);
|
|
|
+ err = parse_audio_format_i(chip, fp, format, fmt);
|
|
|
break;
|
|
|
case UAC_FORMAT_TYPE_II:
|
|
|
- err = parse_audio_format_ii(chip, fp, format, fmt, iface);
|
|
|
+ err = parse_audio_format_ii(chip, fp, format, fmt);
|
|
|
break;
|
|
|
default:
|
|
|
snd_printd(KERN_INFO "%d:%u:%d : format type %d is not supported yet\n",
|