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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox