From: Daniel Mack <zonque@gmail.com>
To: alsa-devel@alsa-project.org
Cc: tiwai@suse.de, clemens@ladisch.de, Daniel Mack <zonque@gmail.com>,
demian@auraliti.com, ray@auraliti.com, andreas@akdesigninc.com
Subject: [PATCH 2/3] ALSA: snd-usb: handle raw data format of UAC2 devices
Date: Sun, 17 Mar 2013 20:07:25 +0800 [thread overview]
Message-ID: <1363522047-7515-3-git-send-email-zonque@gmail.com> (raw)
In-Reply-To: <1363522047-7515-1-git-send-email-zonque@gmail.com>
UAC2 compliant audio devices may announce the capability to transport
raw audio data on their endpoints. Catch this and handle it as
'special' stream on the ALSA side.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Reported-by: Andreas Koch <andreas@akdesigninc.com>
---
include/linux/usb/audio-v2.h | 2 ++
sound/usb/format.c | 11 +++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/include/linux/usb/audio-v2.h b/include/linux/usb/audio-v2.h
index ed13053..c5f2158 100644
--- a/include/linux/usb/audio-v2.h
+++ b/include/linux/usb/audio-v2.h
@@ -170,6 +170,8 @@ struct uac2_as_header_descriptor {
__u8 iChannelNames;
} __attribute__((packed));
+#define UAC2_FORMAT_TYPE_I_RAW_DATA (1 << 31)
+
/* 4.10.1.2 Class-Specific AS Isochronous Audio Data Endpoint Descriptor */
struct uac2_iso_endpoint_descriptor {
diff --git a/sound/usb/format.c b/sound/usb/format.c
index b30d6fb..a695caf 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -47,7 +47,7 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
int protocol)
{
int sample_width, sample_bytes;
- u64 pcm_formats;
+ u64 pcm_formats = 0;
switch (protocol) {
case UAC_VERSION_1:
@@ -63,14 +63,17 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
struct uac_format_type_i_ext_descriptor *fmt = _fmt;
sample_width = fmt->bBitResolution;
sample_bytes = fmt->bSubslotSize;
+
+ if (format & UAC2_FORMAT_TYPE_I_RAW_DATA)
+ pcm_formats |= SNDRV_PCM_FMTBIT_SPECIAL;
+
format <<= 1;
break;
}
}
- pcm_formats = 0;
-
- if (format == 0 || format == (1 << UAC_FORMAT_TYPE_I_UNDEFINED)) {
+ if ((pcm_formats == 0) &&
+ (format == 0 || format == (1 << UAC_FORMAT_TYPE_I_UNDEFINED))) {
/* some devices don't define this correctly... */
snd_printdd(KERN_INFO "%d:%u:%d : format type 0 is detected, processed as PCM\n",
chip->dev->devnum, fp->iface, fp->altsetting);
--
1.7.10.4
next prev parent reply other threads:[~2013-03-17 12:07 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-17 12:07 [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work Daniel Mack
2013-03-17 12:07 ` [PATCH 1/3] ALSA: snd-usb: handle the bmFormats field as unsigned int Daniel Mack
2013-03-17 12:07 ` Daniel Mack [this message]
2013-03-17 12:07 ` [PATCH 3/3] ALSA: snd-usb: add delay quirk for "Playback Design" products Daniel Mack
2013-03-18 9:07 ` [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work Takashi Iwai
2013-03-18 9:15 ` Daniel Mack
2013-03-18 9:30 ` Takashi Iwai
2013-03-18 13:49 ` Daniel Mack
2013-03-19 2:51 ` Gabriel M. Beddingfield
2013-03-19 6:48 ` Takashi Iwai
2013-03-21 21:21 ` Jussi Laako
2013-03-22 8:11 ` Daniel Mack
2013-03-22 19:37 ` Jussi Laako
2013-03-23 11:31 ` Support for DSD streams (was: Re: [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work) Daniel Mack
2013-03-23 19:53 ` Support for DSD streams Jussi Laako
[not found] ` <7.0.0.16.2.20130322082602.0605cbc0@akdesigninc.com>
2013-03-23 11:50 ` Support for DSD streams (was: Re: [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work) Daniel Mack
[not found] ` <7.0.0.16.2.20130323101939.0605d748@akdesigninc.com>
2013-03-23 18:43 ` Support for DSD streams Daniel Mack
[not found] ` <7.0.0.16.2.20130323182911.0605db20@akdesigninc.com>
2013-03-27 9:53 ` Daniel Mack
2013-03-23 20:01 ` [PATCH 0/3] ALSA: snd-usb: Some small fixes to make Playback Design products work Jussi Laako
[not found] ` <7.0.0.16.2.20130323183543.0605ddb0@akdesigninc.com>
2013-03-24 10:50 ` Jussi Laako
2013-03-26 19:34 ` Daniel Mack
2013-03-28 0:10 ` Jussi Laako
2013-03-26 19:58 ` Daniel Mack
[not found] ` <7.0.0.16.2.20130326224120.13b063e0@akdesigninc.com>
2013-03-27 9:45 ` Clemens Ladisch
2013-03-27 9:48 ` Daniel Mack
[not found] ` <7.0.0.16.2.20130327080219.13b06900@akdesigninc.com>
2013-03-27 18:22 ` Daniel Mack
2013-03-27 23:48 ` Jussi Laako
2013-03-28 0:00 ` Jussi Laako
2013-03-27 19:02 ` Daniel Mack
[not found] ` <7.0.0.16.2.20130321181551.0605bc60@akdesigninc.com>
2013-03-22 10:15 ` Jussi Laako
2013-03-22 10:23 ` Takashi Iwai
2013-03-22 11:08 ` Jussi Laako
2013-03-19 2:37 ` Gabriel M. Beddingfield
2013-03-19 6:49 ` Takashi Iwai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363522047-7515-3-git-send-email-zonque@gmail.com \
--to=zonque@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=andreas@akdesigninc.com \
--cc=clemens@ladisch.de \
--cc=demian@auraliti.com \
--cc=ray@auraliti.com \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.