* [RFC] Cleanup/refactor the usbaudio driver
@ 2010-02-26 14:34 Daniel Mack
2010-02-26 14:34 ` [PATCH 1/3] ALSA: usb: move ua101 driver Daniel Mack
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-02-26 14:34 UTC (permalink / raw)
To: alsa-devel
I've spent some time cleaning up the usbaudio driver. I felt that the
existing implementation was quite difficult to follow because it
contained code for all sorts of things mixed up in one big file.
So I split the driver into pieces and tried to be as less intrusive as
I can, meaning that I didn't touch much real code but rather copied
the functions as they were and factored them out. Of course, non-static
functions were properly prefixed to avoid name space pollution.
I also moved almost all quirks to a seperate file and introduced two
more generic hooks to handle them, so the excecption add less to the
actual code of the driver.
Unfortunately it wasn't easily possible to put that big change into
smaller pieces, and so 3/3 became a huge chunk.
After all, I feel that it is easier to read now, but I don't know
whether you agree. So take this as RFC for now :)
Daniel
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/3] ALSA: usb: move ua101 driver
2010-02-26 14:34 [RFC] Cleanup/refactor the usbaudio driver Daniel Mack
@ 2010-02-26 14:34 ` Daniel Mack
2010-02-26 14:34 ` [PATCH 2/3] ALSA: usb: header file cleanups Daniel Mack
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb: move ua101 driver Clemens Ladisch
0 siblings, 2 replies; 17+ messages in thread
From: Daniel Mack @ 2010-02-26 14:34 UTC (permalink / raw)
To: alsa-devel; +Cc: Takashi Iwai, Clemens Ladisch
As part of the USB audio code cleanup, move the non-standard ua101
driver out of the way.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Clemens Ladisch <clemens@ladisch.de>
Cc: Takashi Iwai <tiwai@suse.de>
---
sound/usb/Makefile | 5 ++---
sound/usb/ua101/Makefile | 2 ++
sound/usb/{ => ua101}/ua101.c | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
create mode 100644 sound/usb/ua101/Makefile
rename sound/usb/{ => ua101}/ua101.c (99%)
diff --git a/sound/usb/Makefile b/sound/usb/Makefile
index 5bf64ae..8bc005b 100644
--- a/sound/usb/Makefile
+++ b/sound/usb/Makefile
@@ -4,12 +4,11 @@
snd-usb-audio-objs := usbaudio.o usbmixer.o
snd-usb-lib-objs := usbmidi.o
-snd-ua101-objs := ua101.o
# Toplevel Module Dependency
obj-$(CONFIG_SND_USB_AUDIO) += snd-usb-audio.o snd-usb-lib.o
-obj-$(CONFIG_SND_USB_UA101) += snd-ua101.o snd-usb-lib.o
+obj-$(CONFIG_SND_USB_UA101) += snd-usb-lib.o
obj-$(CONFIG_SND_USB_USX2Y) += snd-usb-lib.o
obj-$(CONFIG_SND_USB_US122L) += snd-usb-lib.o
-obj-$(CONFIG_SND) += usx2y/ caiaq/
+obj-$(CONFIG_SND) += ua101/ usx2y/ caiaq/
diff --git a/sound/usb/ua101/Makefile b/sound/usb/ua101/Makefile
new file mode 100644
index 0000000..ccefd81
--- /dev/null
+++ b/sound/usb/ua101/Makefile
@@ -0,0 +1,2 @@
+snd-ua101-objs := ua101.o
+obj-$(CONFIG_SND_USB_UA101) += snd-ua101.o
diff --git a/sound/usb/ua101.c b/sound/usb/ua101/ua101.c
similarity index 99%
rename from sound/usb/ua101.c
rename to sound/usb/ua101/ua101.c
index 4f4ccdf..c7dcfe2 100644
--- a/sound/usb/ua101.c
+++ b/sound/usb/ua101/ua101.c
@@ -23,7 +23,7 @@
#include <sound/initval.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
-#include "usbaudio.h"
+#include "../usbaudio.h"
MODULE_DESCRIPTION("Edirol UA-101 driver");
MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
--
1.6.6.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/3] ALSA: usb: header file cleanups
2010-02-26 14:34 ` [PATCH 1/3] ALSA: usb: move ua101 driver Daniel Mack
@ 2010-02-26 14:34 ` Daniel Mack
[not found] ` <1267194883-6854-4-git-send-email-daniel@caiaq.de>
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb: move ua101 driver Clemens Ladisch
1 sibling, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-02-26 14:34 UTC (permalink / raw)
To: alsa-devel; +Cc: Takashi Iwai, Clemens Ladisch
Rename snd-usb-lib to snd-usbmidi-lib as MIDI functions are the only
thing it actually contains. Introduce a new header file to only declare
these functions.
Introduced usbmixer.h for all functions exported by usbmixer.c.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Clemens Ladisch <clemens@ladisch.de>
Cc: Takashi Iwai <tiwai@suse.de>
---
sound/usb/Makefile | 11 +++++----
sound/usb/ua101/ua101.c | 1 +
sound/usb/usbaudio.c | 3 +-
sound/usb/usbaudio.h | 51 --------------------------------------------
sound/usb/usbmidi.c | 1 +
sound/usb/usbmidi.h | 48 +++++++++++++++++++++++++++++++++++++++++
sound/usb/usbmixer.c | 1 +
sound/usb/usbmixer.h | 11 +++++++++
sound/usb/usx2y/us122l.c | 1 +
sound/usb/usx2y/usbusx2y.h | 1 +
10 files changed, 72 insertions(+), 57 deletions(-)
create mode 100644 sound/usb/usbmidi.h
create mode 100644 sound/usb/usbmixer.h
diff --git a/sound/usb/Makefile b/sound/usb/Makefile
index 8bc005b..dc31306 100644
--- a/sound/usb/Makefile
+++ b/sound/usb/Makefile
@@ -3,12 +3,13 @@
#
snd-usb-audio-objs := usbaudio.o usbmixer.o
-snd-usb-lib-objs := usbmidi.o
+snd-usbmidi-lib-objs := usbmidi.o
# Toplevel Module Dependency
-obj-$(CONFIG_SND_USB_AUDIO) += snd-usb-audio.o snd-usb-lib.o
-obj-$(CONFIG_SND_USB_UA101) += snd-usb-lib.o
-obj-$(CONFIG_SND_USB_USX2Y) += snd-usb-lib.o
-obj-$(CONFIG_SND_USB_US122L) += snd-usb-lib.o
+obj-$(CONFIG_SND_USB_AUDIO) += snd-usb-audio.o snd-usbmidi-lib.o
+
+obj-$(CONFIG_SND_USB_UA101) += snd-usbmidi-lib.o
+obj-$(CONFIG_SND_USB_USX2Y) += snd-usbmidi-lib.o
+obj-$(CONFIG_SND_USB_US122L) += snd-usbmidi-lib.o
obj-$(CONFIG_SND) += ua101/ usx2y/ caiaq/
diff --git a/sound/usb/ua101/ua101.c b/sound/usb/ua101/ua101.c
index c7dcfe2..34a55c3 100644
--- a/sound/usb/ua101/ua101.c
+++ b/sound/usb/ua101/ua101.c
@@ -24,6 +24,7 @@
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include "../usbaudio.h"
+#include "../usbmidi.h"
MODULE_DESCRIPTION("Edirol UA-101 driver");
MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index c539f7f..02870d5 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -56,7 +56,8 @@
#include <sound/initval.h>
#include "usbaudio.h"
-
+#include "usbmidi.h"
+#include "usbmixer.h"
MODULE_AUTHOR("Takashi Iwai <tiwai@suse.de>");
MODULE_DESCRIPTION("USB Audio");
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index 6b016d4..4fde472 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -21,9 +21,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* maximum number of endpoints per interface */
-#define MIDI_MAX_ENDPOINTS 2
-
/* handling of USB vendor/product ID pairs as 32-bit numbers */
#define USB_ID(vendor, product) (((vendor) << 16) | (product))
#define USB_ID_VENDOR(id) ((id) >> 16)
@@ -90,39 +87,6 @@ struct snd_usb_audio_quirk {
const void *data;
};
-/* data for QUIRK_MIDI_FIXED_ENDPOINT */
-struct snd_usb_midi_endpoint_info {
- int8_t out_ep; /* ep number, 0 autodetect */
- uint8_t out_interval; /* interval for interrupt endpoints */
- int8_t in_ep;
- uint8_t in_interval;
- uint16_t out_cables; /* bitmask */
- uint16_t in_cables; /* bitmask */
-};
-
-/* for QUIRK_MIDI_YAMAHA, data is NULL */
-
-/* for QUIRK_MIDI_MIDIMAN, data points to a snd_usb_midi_endpoint_info
- * structure (out_cables and in_cables only) */
-
-/* for QUIRK_COMPOSITE, data points to an array of snd_usb_audio_quirk
- * structures, terminated with .ifnum = -1 */
-
-/* for QUIRK_AUDIO_FIXED_ENDPOINT, data points to an audioformat structure */
-
-/* for QUIRK_AUDIO/MIDI_STANDARD_INTERFACE, data is NULL */
-
-/* for QUIRK_AUDIO_EDIROL_UA700_UA25/UA1000, data is NULL */
-
-/* for QUIRK_IGNORE_INTERFACE, data is NULL */
-
-/* for QUIRK_MIDI_NOVATION and _RAW, data is NULL */
-
-/* for QUIRK_MIDI_EMAGIC, data points to a snd_usb_midi_endpoint_info
- * structure (out_cables and in_cables only) */
-
-/* for QUIRK_MIDI_CME, data is NULL */
-
/*
*/
@@ -149,21 +113,6 @@ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe,
__u8 request, __u8 requesttype, __u16 value, __u16 index,
void *data, __u16 size, int timeout);
-int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
- int ignore_error);
-void snd_usb_mixer_disconnect(struct list_head *p);
-
-int snd_usbmidi_create(struct snd_card *card,
- struct usb_interface *iface,
- struct list_head *midi_list,
- const struct snd_usb_audio_quirk *quirk);
-void snd_usbmidi_input_stop(struct list_head* p);
-void snd_usbmidi_input_start(struct list_head* p);
-void snd_usbmidi_disconnect(struct list_head *p);
-
-void snd_emuusb_set_samplerate(struct snd_usb_audio *chip,
- unsigned char samplerate_id);
-
/*
* retrieve usb_interface descriptor from the host interface
* (conditional for compatibility with the older API)
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c
index 2c59afd..5915a04 100644
--- a/sound/usb/usbmidi.c
+++ b/sound/usb/usbmidi.c
@@ -53,6 +53,7 @@
#include <sound/rawmidi.h>
#include <sound/asequencer.h>
#include "usbaudio.h"
+#include "usbmidi.h"
/*
diff --git a/sound/usb/usbmidi.h b/sound/usb/usbmidi.h
new file mode 100644
index 0000000..2089ec9
--- /dev/null
+++ b/sound/usb/usbmidi.h
@@ -0,0 +1,48 @@
+#ifndef __USBMIDI_H
+#define __USBMIDI_H
+
+/* maximum number of endpoints per interface */
+#define MIDI_MAX_ENDPOINTS 2
+
+/* data for QUIRK_MIDI_FIXED_ENDPOINT */
+struct snd_usb_midi_endpoint_info {
+ int8_t out_ep; /* ep number, 0 autodetect */
+ uint8_t out_interval; /* interval for interrupt endpoints */
+ int8_t in_ep;
+ uint8_t in_interval;
+ uint16_t out_cables; /* bitmask */
+ uint16_t in_cables; /* bitmask */
+};
+
+/* for QUIRK_MIDI_YAMAHA, data is NULL */
+
+/* for QUIRK_MIDI_MIDIMAN, data points to a snd_usb_midi_endpoint_info
+ * structure (out_cables and in_cables only) */
+
+/* for QUIRK_COMPOSITE, data points to an array of snd_usb_audio_quirk
+ * structures, terminated with .ifnum = -1 */
+
+/* for QUIRK_AUDIO_FIXED_ENDPOINT, data points to an audioformat structure */
+
+/* for QUIRK_AUDIO/MIDI_STANDARD_INTERFACE, data is NULL */
+
+/* for QUIRK_AUDIO_EDIROL_UA700_UA25/UA1000, data is NULL */
+
+/* for QUIRK_IGNORE_INTERFACE, data is NULL */
+
+/* for QUIRK_MIDI_NOVATION and _RAW, data is NULL */
+
+/* for QUIRK_MIDI_EMAGIC, data points to a snd_usb_midi_endpoint_info
+ * structure (out_cables and in_cables only) */
+
+/* for QUIRK_MIDI_CME, data is NULL */
+
+int snd_usbmidi_create(struct snd_card *card,
+ struct usb_interface *iface,
+ struct list_head *midi_list,
+ const struct snd_usb_audio_quirk *quirk);
+void snd_usbmidi_input_stop(struct list_head* p);
+void snd_usbmidi_input_start(struct list_head* p);
+void snd_usbmidi_disconnect(struct list_head *p);
+
+#endif /* __USBMIDI_H */
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index 8e8f871..43d53a3 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -41,6 +41,7 @@
#include <sound/tlv.h>
#include "usbaudio.h"
+#include "usbmixer.h"
/*
*/
diff --git a/sound/usb/usbmixer.h b/sound/usb/usbmixer.h
new file mode 100644
index 0000000..e199e4b
--- /dev/null
+++ b/sound/usb/usbmixer.h
@@ -0,0 +1,11 @@
+#ifndef __USBMIXER_H
+#define __USBMIXER_H
+
+int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
+ int ignore_error);
+void snd_usb_mixer_disconnect(struct list_head *p);
+
+void snd_emuusb_set_samplerate(struct snd_usb_audio *chip,
+ unsigned char samplerate_id);
+
+#endif /* __USBMIXER_H */
diff --git a/sound/usb/usx2y/us122l.c b/sound/usb/usx2y/us122l.c
index 44deb21..4f6518c 100644
--- a/sound/usb/usx2y/us122l.c
+++ b/sound/usb/usx2y/us122l.c
@@ -25,6 +25,7 @@
#define MODNAME "US122L"
#include "usb_stream.c"
#include "../usbaudio.h"
+#include "../usbmidi.h"
#include "us122l.h"
MODULE_AUTHOR("Karsten Wiese <fzu@wemgehoertderstaat.de>");
diff --git a/sound/usb/usx2y/usbusx2y.h b/sound/usb/usx2y/usbusx2y.h
index 1d174ce..9ab97b4 100644
--- a/sound/usb/usx2y/usbusx2y.h
+++ b/sound/usb/usx2y/usbusx2y.h
@@ -1,6 +1,7 @@
#ifndef USBUSX2Y_H
#define USBUSX2Y_H
#include "../usbaudio.h"
+#include "../usbmidi.h"
#include "usbus428ctldefs.h"
#define NRURBS 2
--
1.6.6.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-02-26 14:34 ` [PATCH 1/3] ALSA: usb: move ua101 driver Daniel Mack
2010-02-26 14:34 ` [PATCH 2/3] ALSA: usb: header file cleanups Daniel Mack
@ 2010-03-01 11:27 ` Clemens Ladisch
2010-03-01 14:01 ` Daniel Mack
1 sibling, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2010-03-01 11:27 UTC (permalink / raw)
To: Daniel Mack; +Cc: Takashi Iwai, alsa-devel
Daniel Mack wrote:
> As part of the USB audio code cleanup, move the non-standard ua101
> driver out of the way.
A directory with a single source file in it isn't quite an improvement.
Please name it "misc" so that other specialized drivers could be put in
there.
Regards,
Clemens
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/3] ALSA: usb-audio: rename substream format field to altset_idx
[not found] ` <1267194883-6854-4-git-send-email-daniel@caiaq.de>
@ 2010-03-01 11:27 ` Clemens Ladisch
2010-03-01 11:27 ` [PATCH 2/3] ALSA: usb-audio: use a format bitmask per alternate setting Clemens Ladisch
2010-03-01 11:27 ` [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices Clemens Ladisch
2 siblings, 0 replies; 17+ messages in thread
From: Clemens Ladisch @ 2010-03-01 11:27 UTC (permalink / raw)
To: Daniel Mack, Takashi Iwai; +Cc: alsa-devel
The snd_usb_substream::format field actually contains the index of the
current alternate setting, so rename it to altset_idx to avoid
confusion.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
--- linux/sound/usb/card.h
+++ linux/sound/usb/card.h
@@ -54,7 +54,7 @@ struct snd_usb_substream {
struct audioformat *cur_audiofmt; /* current audioformat pointer (for hw_params callback) */
unsigned int cur_rate; /* current rate (for hw_params callback) */
unsigned int period_bytes; /* current period bytes (for hw_params callback) */
- unsigned int format; /* USB data format */
+ unsigned int altset_idx; /* USB data format: index of alternate setting */
unsigned int datapipe; /* the data i/o pipe */
unsigned int syncpipe; /* 1 - async out or adaptive in */
unsigned int datainterval; /* log_2 of data packet interval */
--- linux/sound/usb/pcm.c
+++ linux/sound/usb/pcm.c
@@ -202,11 +202,11 @@ static int set_format(struct snd_usb_sub
return -EIO;
}
subs->interface = -1;
- subs->format = 0;
+ subs->altset_idx = 0;
}
/* set interface */
- if (subs->interface != fmt->iface || subs->format != fmt->altset_idx) {
+ if (subs->interface != fmt->iface || subs->altset_idx != fmt->altset_idx) {
if (usb_set_interface(dev, fmt->iface, fmt->altsetting) < 0) {
snd_printk(KERN_ERR "%d:%d:%d: usb_set_interface failed\n",
dev->devnum, fmt->iface, fmt->altsetting);
@@ -214,7 +214,7 @@ static int set_format(struct snd_usb_sub
}
snd_printdd(KERN_INFO "setting usb interface %d:%d\n", fmt->iface, fmt->altsetting);
subs->interface = fmt->iface;
- subs->format = fmt->altset_idx;
+ subs->altset_idx = fmt->altset_idx;
}
/* create a data pipe */
@@ -771,7 +771,7 @@ static int snd_usb_pcm_open(struct snd_p
struct snd_usb_substream *subs = &as->substream[direction];
subs->interface = -1;
- subs->format = 0;
+ subs->altset_idx = 0;
runtime->hw = snd_usb_hardware;
runtime->private_data = subs;
subs->pcm_substream = substream;
--- linux/sound/usb/proc.c
+++ linux/sound/usb/proc.c
@@ -116,7 +116,7 @@ static void proc_dump_substream_status(s
unsigned int i;
snd_iprintf(buffer, " Status: Running\n");
snd_iprintf(buffer, " Interface = %d\n", subs->interface);
- snd_iprintf(buffer, " Altset = %d\n", subs->format);
+ snd_iprintf(buffer, " Altset = %d\n", subs->altset_idx);
snd_iprintf(buffer, " URBs = %d [ ", subs->nurbs);
for (i = 0; i < subs->nurbs; i++)
snd_iprintf(buffer, "%d ", subs->dataurb[i].packets);
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 2/3] ALSA: usb-audio: use a format bitmask per alternate setting
[not found] ` <1267194883-6854-4-git-send-email-daniel@caiaq.de>
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb-audio: rename substream format field to altset_idx Clemens Ladisch
@ 2010-03-01 11:27 ` Clemens Ladisch
2010-03-01 11:27 ` [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices Clemens Ladisch
2 siblings, 0 replies; 17+ messages in thread
From: Clemens Ladisch @ 2010-03-01 11:27 UTC (permalink / raw)
To: Daniel Mack, Takashi Iwai; +Cc: alsa-devel
In preparation for USB audio 2.0 support, change the audioformat
structure so that it uses a bitmask to specify possible formats.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
--- linux/sound/usb/card.h
+++ linux/sound/usb/card.h
@@ -9,7 +9,7 @@
struct audioformat {
struct list_head list;
- snd_pcm_format_t format; /* format type */
+ u64 formats; /* ALSA format bits */
unsigned int channels; /* # channels */
unsigned int fmt_type; /* USB audio format type (1-3) */
unsigned int frame_size; /* samples per frame for non-audio */
--- linux/sound/usb/endpoint.c
+++ linux/sound/usb/endpoint.c
@@ -94,7 +94,7 @@ int snd_usb_add_audio_endpoint(struct sn
if (subs->endpoint == fp->endpoint) {
list_add_tail(&fp->list, &subs->fmt_list);
subs->num_formats++;
- subs->formats |= 1ULL << fp->format;
+ subs->formats |= fp->formats;
return 0;
}
}
@@ -268,7 +268,7 @@ int snd_usb_parse_audio_endpoints(struct
*/
if (fmt[4] == 1 && fmt[5] == 2 && altno == 2 && num == 3 &&
fp && fp->altsetting == 1 && fp->channels == 1 &&
- fp->format == SNDRV_PCM_FORMAT_S16_LE &&
+ fp->formats == SNDRV_PCM_FMTBIT_S16_LE &&
protocol == UAC_VERSION_1 &&
le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize) ==
fp->maxpacksize * 2)
--- linux/sound/usb/format.c
+++ linux/sound/usb/format.c
@@ -319,7 +319,7 @@ static int parse_audio_format_i(struct s
return -1;
}
- fp->format = pcm_format;
+ fp->formats = 1uLL << pcm_format;
/* gather possible sample rates */
/* audio class v1 reports possible sample rates as part of the
@@ -361,16 +361,16 @@ static int parse_audio_format_ii(struct
switch (format) {
case UAC_FORMAT_TYPE_II_AC3:
/* FIXME: there is no AC3 format defined yet */
- // fp->format = SNDRV_PCM_FORMAT_AC3;
- fp->format = SNDRV_PCM_FORMAT_U8; /* temporarily hack to receive byte streams */
+ // fp->formats = SNDRV_PCM_FMTBIT_AC3;
+ fp->formats = SNDRV_PCM_FMTBIT_U8; /* temporary hack to receive byte streams */
break;
case UAC_FORMAT_TYPE_II_MPEG:
- fp->format = SNDRV_PCM_FORMAT_MPEG;
+ fp->formats = SNDRV_PCM_FMTBIT_MPEG;
break;
default:
snd_printd(KERN_INFO "%d:%u:%d : unknown format tag %#x is detected. processed as MPEG.\n",
chip->dev->devnum, fp->iface, fp->altsetting, format);
- fp->format = SNDRV_PCM_FORMAT_MPEG;
+ fp->formats = SNDRV_PCM_FMTBIT_MPEG;
break;
}
--- linux/sound/usb/pcm.c
+++ linux/sound/usb/pcm.c
@@ -58,7 +58,9 @@ static struct audioformat *find_format(s
list_for_each(p, &subs->fmt_list) {
struct audioformat *fp;
fp = list_entry(p, struct audioformat, list);
- if (fp->format != format || fp->channels != channels)
+ if (!(fp->formats & (1uLL << format)))
+ continue;
+ if (fp->channels != channels)
continue;
if (rate < fp->rate_min || rate > fp->rate_max)
continue;
@@ -428,10 +430,15 @@ static int hw_check_valid_format(struct
struct snd_interval *ct = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);
struct snd_mask *fmts = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);
struct snd_interval *pt = hw_param_interval(params, SNDRV_PCM_HW_PARAM_PERIOD_TIME);
+ struct snd_mask check_fmts;
unsigned int ptime;
/* check the format */
- if (!snd_mask_test(fmts, fp->format)) {
+ snd_mask_none(&check_fmts);
+ check_fmts.bits[0] = (u32)fp->formats;
+ check_fmts.bits[1] = (u32)(fp->formats >> 32);
+ snd_mask_intersect(&check_fmts, fmts);
+ if (snd_mask_empty(&check_fmts)) {
hwc_debug(" > check: no supported format %d\n", fp->format);
return 0;
}
@@ -584,7 +591,7 @@ static int hw_rule_format(struct snd_pcm
fp = list_entry(p, struct audioformat, list);
if (!hw_check_valid_format(subs, params, fp))
continue;
- fbits |= (1ULL << fp->format);
+ fbits |= fp->formats;
}
oldbits[0] = fmt->bits[0];
--- linux/sound/usb/proc.c
+++ linux/sound/usb/proc.c
@@ -79,11 +79,16 @@ static void proc_dump_substream_formats(
list_for_each(p, &subs->fmt_list) {
struct audioformat *fp;
+ snd_pcm_format_t fmt;
fp = list_entry(p, struct audioformat, list);
snd_iprintf(buffer, " Interface %d\n", fp->iface);
snd_iprintf(buffer, " Altset %d\n", fp->altsetting);
- snd_iprintf(buffer, " Format: %s\n",
- snd_pcm_format_name(fp->format));
+ snd_iprintf(buffer, " Format:");
+ for (fmt = 0; fmt <= SNDRV_PCM_FORMAT_LAST; ++fmt)
+ if (fp->formats & (1uLL << fmt))
+ snd_iprintf(buffer, " %s",
+ snd_pcm_format_name(fmt));
+ snd_iprintf(buffer, "\n");
snd_iprintf(buffer, " Channels: %d\n", fp->channels);
snd_iprintf(buffer, " Endpoint: %d %s (%s)\n",
fp->endpoint & USB_ENDPOINT_NUMBER_MASK,
--- linux/sound/usb/quirks-table.h
+++ linux/sound/usb/quirks-table.h
@@ -279,7 +279,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 0,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = & (const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S16_LE,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
.channels = 4,
.iface = 0,
.altsetting = 1,
@@ -296,7 +296,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 1,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = & (const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S16_LE,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
.channels = 2,
.iface = 1,
.altsetting = 1,
@@ -580,7 +580,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 0,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = & (const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S24_3LE,
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 2,
.iface = 0,
.altsetting = 1,
@@ -597,7 +597,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 1,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = & (const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S24_3LE,
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 2,
.iface = 1,
.altsetting = 1,
@@ -793,7 +793,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 1,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = & (const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S24_3LE,
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 2,
.iface = 1,
.altsetting = 1,
@@ -810,7 +810,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 2,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = & (const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S24_3LE,
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 2,
.iface = 2,
.altsetting = 1,
--- linux/sound/usb/quirks.c
+++ linux/sound/usb/quirks.c
@@ -174,7 +174,7 @@ static int create_uaxx_quirk(struct snd_
const struct snd_usb_audio_quirk *quirk)
{
static const struct audioformat ua_format = {
- .format = SNDRV_PCM_FORMAT_S24_3LE,
+ .formats = SNDRV_PCM_FMTBIT_S24_3LE,
.channels = 2,
.fmt_type = UAC_FORMAT_TYPE_I,
.altsetting = 1,
--- linux/sound/usb/urb.c
+++ linux/sound/usb/urb.c
@@ -662,7 +662,7 @@ static int prepare_nodata_playback_urb(s
urb->number_of_packets = ctx->packets;
urb->transfer_buffer_length = offs * stride;
memset(urb->transfer_buffer,
- subs->cur_audiofmt->format == SNDRV_PCM_FORMAT_U8 ? 0x80 : 0,
+ runtime->format == SNDRV_PCM_FORMAT_U8 ? 0x80 : 0,
offs * stride);
return 0;
}
@@ -924,7 +924,7 @@ void snd_usb_init_substream(struct snd_u
snd_usb_set_pcm_ops(as->pcm, stream);
list_add_tail(&fp->list, &subs->fmt_list);
- subs->formats |= 1ULL << fp->format;
+ subs->formats |= fp->formats;
subs->endpoint = fp->endpoint;
subs->num_formats++;
subs->fmt_type = fp->fmt_type;
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices
[not found] ` <1267194883-6854-4-git-send-email-daniel@caiaq.de>
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb-audio: rename substream format field to altset_idx Clemens Ladisch
2010-03-01 11:27 ` [PATCH 2/3] ALSA: usb-audio: use a format bitmask per alternate setting Clemens Ladisch
@ 2010-03-01 11:27 ` Clemens Ladisch
2010-03-01 14:26 ` Daniel Mack
2 siblings, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2010-03-01 11:27 UTC (permalink / raw)
To: Daniel Mack, Takashi Iwai; +Cc: alsa-devel
Change the parser to correctly handle v2 descriptors with multiple
format bits set.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
--- linux/sound/usb/format.c
+++ linux/sound/usb/format.c
@@ -37,19 +37,20 @@
* @format: the format tag (wFormatTag)
* @fmt: the format type descriptor
*/
-static int parse_audio_format_i_type(struct snd_usb_audio *chip,
+static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
struct audioformat *fp,
int format, void *_fmt,
int protocol)
{
- int pcm_format, i;
int sample_width, sample_bytes;
+ u64 pcm_formats;
switch (protocol) {
case UAC_VERSION_1: {
struct uac_format_type_i_discrete_descriptor *fmt = _fmt;
sample_width = fmt->bBitResolution;
sample_bytes = fmt->bSubframeSize;
+ format = 1 << format;
break;
}
@@ -57,24 +58,7 @@ static int parse_audio_format_i_type(str
struct uac_format_type_i_ext_descriptor *fmt = _fmt;
sample_width = fmt->bBitResolution;
sample_bytes = fmt->bSubslotSize;
-
- /*
- * FIXME
- * USB audio class v2 devices specify a bitmap of possible
- * audio formats rather than one fix value. For now, we just
- * pick one of them and report that as the only possible
- * value for this setting.
- * The bit allocation map is in fact compatible to the
- * wFormatTag of the v1 AS streaming descriptors, which is why
- * we can simply map the matrix.
- */
-
- for (i = 0; i < 5; i++)
- if (format & (1UL << i)) {
- format = i + 1;
- break;
- }
-
+ format <<= 1;
break;
}
@@ -82,15 +66,15 @@ static int parse_audio_format_i_type(str
return -EINVAL;
}
- /* FIXME: correct endianess and sign? */
- pcm_format = -1;
+ pcm_formats = 0;
- switch (format) {
- case UAC_FORMAT_TYPE_I_UNDEFINED: /* some devices don't define this correctly... */
+ if (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);
- /* fall-through */
- case UAC_FORMAT_TYPE_I_PCM:
+ format = 1 << UAC_FORMAT_TYPE_I_PCM;
+ }
+ if (format & (1 << UAC_FORMAT_TYPE_I_PCM)) {
if (sample_width > sample_bytes * 8) {
snd_printk(KERN_INFO "%d:%u:%d : sample bitwidth %d in over sample bytes %d\n",
chip->dev->devnum, fp->iface, fp->altsetting,
@@ -99,22 +83,22 @@ static int parse_audio_format_i_type(str
/* check the format byte size */
switch (sample_bytes) {
case 1:
- pcm_format = SNDRV_PCM_FORMAT_S8;
+ pcm_formats |= SNDRV_PCM_FMTBIT_S8;
break;
case 2:
if (snd_usb_is_big_endian_format(chip, fp))
- pcm_format = SNDRV_PCM_FORMAT_S16_BE; /* grrr, big endian!! */
+ pcm_formats |= SNDRV_PCM_FMTBIT_S16_BE; /* grrr, big endian!! */
else
- pcm_format = SNDRV_PCM_FORMAT_S16_LE;
+ pcm_formats |= SNDRV_PCM_FMTBIT_S16_LE;
break;
case 3:
if (snd_usb_is_big_endian_format(chip, fp))
- pcm_format = SNDRV_PCM_FORMAT_S24_3BE; /* grrr, big endian!! */
+ pcm_formats |= SNDRV_PCM_FMTBIT_S24_3BE; /* grrr, big endian!! */
else
- pcm_format = SNDRV_PCM_FORMAT_S24_3LE;
+ pcm_formats |= SNDRV_PCM_FMTBIT_S24_3LE;
break;
case 4:
- pcm_format = SNDRV_PCM_FORMAT_S32_LE;
+ pcm_formats |= SNDRV_PCM_FMTBIT_S32_LE;
break;
default:
snd_printk(KERN_INFO "%d:%u:%d : unsupported sample bitwidth %d in %d bytes\n",
@@ -122,30 +106,29 @@ static int parse_audio_format_i_type(str
sample_width, sample_bytes);
break;
}
- break;
- case UAC_FORMAT_TYPE_I_PCM8:
- pcm_format = SNDRV_PCM_FORMAT_U8;
-
+ }
+ if (format & (1 << UAC_FORMAT_TYPE_I_PCM8)) {
/* Dallas DS4201 workaround: it advertises U8 format, but really
supports S8. */
if (chip->usb_id == USB_ID(0x04fa, 0x4201))
- pcm_format = SNDRV_PCM_FORMAT_S8;
- break;
- case UAC_FORMAT_TYPE_I_IEEE_FLOAT:
- pcm_format = SNDRV_PCM_FORMAT_FLOAT_LE;
- break;
- case UAC_FORMAT_TYPE_I_ALAW:
- pcm_format = SNDRV_PCM_FORMAT_A_LAW;
- break;
- case UAC_FORMAT_TYPE_I_MULAW:
- pcm_format = SNDRV_PCM_FORMAT_MU_LAW;
- break;
- default:
- snd_printk(KERN_INFO "%d:%u:%d : unsupported format type %d\n",
+ pcm_formats |= SNDRV_PCM_FMTBIT_S8;
+ else
+ pcm_formats |= SNDRV_PCM_FMTBIT_U8;
+ }
+ if (format & (1 << UAC_FORMAT_TYPE_I_IEEE_FLOAT)) {
+ pcm_formats |= SNDRV_PCM_FMTBIT_FLOAT_LE;
+ }
+ if (format & (1 << UAC_FORMAT_TYPE_I_ALAW)) {
+ pcm_formats |= SNDRV_PCM_FMTBIT_A_LAW;
+ }
+ if (format & (1 << UAC_FORMAT_TYPE_I_MULAW)) {
+ pcm_formats |= SNDRV_PCM_FMTBIT_MU_LAW;
+ }
+ if (format & ~0x3f) {
+ snd_printk(KERN_INFO "%d:%u:%d : unsupported format bits %#x\n",
chip->dev->devnum, fp->iface, fp->altsetting, format);
- break;
}
- return pcm_format;
+ return pcm_formats;
}
@@ -313,14 +296,14 @@ static int parse_audio_format_i(struct s
default:
pcm_format = SNDRV_PCM_FORMAT_S16_LE;
}
+ fp->formats = 1uLL << pcm_format;
} else {
- pcm_format = parse_audio_format_i_type(chip, fp, format, fmt, protocol);
- if (pcm_format < 0)
+ fp->formats = parse_audio_format_i_type(chip, fp, format,
+ fmt, protocol);
+ if (!fp->formats)
return -1;
}
- fp->formats = 1uLL << pcm_format;
-
/* gather possible sample rates */
/* audio class v1 reports possible sample rates as part of the
* proprietary class specific descriptor.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb: move ua101 driver Clemens Ladisch
@ 2010-03-01 14:01 ` Daniel Mack
2010-03-01 14:06 ` Takashi Iwai
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-03-01 14:01 UTC (permalink / raw)
To: Clemens Ladisch; +Cc: Takashi Iwai, alsa-devel
On Mon, Mar 01, 2010 at 12:27:31PM +0100, Clemens Ladisch wrote:
> Daniel Mack wrote:
> > As part of the USB audio code cleanup, move the non-standard ua101
> > driver out of the way.
>
> A directory with a single source file in it isn't quite an improvement.
> Please name it "misc" so that other specialized drivers could be put in
> there.
Ok, will do. However, I wonder which way is best to do that. Given that
you posted patches on top of mine, can I take this as a general
agreement to my changeset? If so, I will just provide a patch on top to
do the ua101 -> misc rename, because otherwise, I would have to rebase
all three patches for that.
Daniel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-01 14:01 ` Daniel Mack
@ 2010-03-01 14:06 ` Takashi Iwai
2010-03-01 14:18 ` Daniel Mack
0 siblings, 1 reply; 17+ messages in thread
From: Takashi Iwai @ 2010-03-01 14:06 UTC (permalink / raw)
To: Daniel Mack; +Cc: alsa-devel, Clemens Ladisch
At Mon, 1 Mar 2010 15:01:29 +0100,
Daniel Mack wrote:
>
> On Mon, Mar 01, 2010 at 12:27:31PM +0100, Clemens Ladisch wrote:
> > Daniel Mack wrote:
> > > As part of the USB audio code cleanup, move the non-standard ua101
> > > driver out of the way.
> >
> > A directory with a single source file in it isn't quite an improvement.
> > Please name it "misc" so that other specialized drivers could be put in
> > there.
>
> Ok, will do. However, I wonder which way is best to do that. Given that
> you posted patches on top of mine, can I take this as a general
> agreement to my changeset? If so, I will just provide a patch on top to
> do the ua101 -> misc rename, because otherwise, I would have to rebase
> all three patches for that.
Well, honestly, I prefer seeing the fixes by Clemens based on the
current code, and merge Daniel's refactoring patches after 2.6.34
merge window.
Refactoring is a good thing but it can easily introduce any careless
bugs (like copy&paste error), and this split action makes really hard
to track the changes. Thus I'd like to keep this well ripened before
reaching to the Linus tree, not only for a few days.
thanks,
Takashi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-01 14:06 ` Takashi Iwai
@ 2010-03-01 14:18 ` Daniel Mack
2010-03-01 14:23 ` Takashi Iwai
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-03-01 14:18 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Clemens Ladisch
On Mon, Mar 01, 2010 at 03:06:57PM +0100, Takashi Iwai wrote:
> At Mon, 1 Mar 2010 15:01:29 +0100,
> Daniel Mack wrote:
> >
> > Ok, will do. However, I wonder which way is best to do that. Given that
> > you posted patches on top of mine, can I take this as a general
> > agreement to my changeset? If so, I will just provide a patch on top to
> > do the ua101 -> misc rename, because otherwise, I would have to rebase
> > all three patches for that.
>
> Well, honestly, I prefer seeing the fixes by Clemens based on the
> current code, and merge Daniel's refactoring patches after 2.6.34
> merge window.
Clemens fixes only make sense for v2 of the USB audio spec, which isn't
fully supported yet. IOW, the code as it will go into 2.6.34 is not able
to support that, with or without my refactoring. So rebasing them
doesn't make sense IMO.
> Refactoring is a good thing but it can easily introduce any careless
> bugs (like copy&paste error), and this split action makes really hard
> to track the changes. Thus I'd like to keep this well ripened before
> reaching to the Linus tree, not only for a few days.
Yes, certainly. I didn't expect that to be taken for .34.
I would be fine with having it in a branch on your side, and getting
it merged to your for-next after any .34 issues are sorted out.
There will be quite some more patches to fully support the most common
features, but they won't be as intrusive and big of course.
Daniel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-01 14:18 ` Daniel Mack
@ 2010-03-01 14:23 ` Takashi Iwai
2010-03-04 15:16 ` Daniel Mack
0 siblings, 1 reply; 17+ messages in thread
From: Takashi Iwai @ 2010-03-01 14:23 UTC (permalink / raw)
To: Daniel Mack; +Cc: alsa-devel, Clemens Ladisch
At Mon, 1 Mar 2010 15:18:48 +0100,
Daniel Mack wrote:
>
> On Mon, Mar 01, 2010 at 03:06:57PM +0100, Takashi Iwai wrote:
> > At Mon, 1 Mar 2010 15:01:29 +0100,
> > Daniel Mack wrote:
> > >
> > > Ok, will do. However, I wonder which way is best to do that. Given that
> > > you posted patches on top of mine, can I take this as a general
> > > agreement to my changeset? If so, I will just provide a patch on top to
> > > do the ua101 -> misc rename, because otherwise, I would have to rebase
> > > all three patches for that.
> >
> > Well, honestly, I prefer seeing the fixes by Clemens based on the
> > current code, and merge Daniel's refactoring patches after 2.6.34
> > merge window.
>
> Clemens fixes only make sense for v2 of the USB audio spec, which isn't
> fully supported yet. IOW, the code as it will go into 2.6.34 is not able
> to support that, with or without my refactoring. So rebasing them
> doesn't make sense IMO.
OK, then we can merge them together later.
> > Refactoring is a good thing but it can easily introduce any careless
> > bugs (like copy&paste error), and this split action makes really hard
> > to track the changes. Thus I'd like to keep this well ripened before
> > reaching to the Linus tree, not only for a few days.
>
> Yes, certainly. I didn't expect that to be taken for .34.
Good that we agree :)
> I would be fine with having it in a branch on your side, and getting
> it merged to your for-next after any .34 issues are sorted out.
>
> There will be quite some more patches to fully support the most common
> features, but they won't be as intrusive and big of course.
Fair enough.
thanks,
Takashi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices
2010-03-01 11:27 ` [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices Clemens Ladisch
@ 2010-03-01 14:26 ` Daniel Mack
2010-03-01 15:26 ` Clemens Ladisch
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-03-01 14:26 UTC (permalink / raw)
To: Clemens Ladisch; +Cc: Takashi Iwai, alsa-devel
On Mon, Mar 01, 2010 at 12:27:54PM +0100, Clemens Ladisch wrote:
> Change the parser to correctly handle v2 descriptors with multiple
> format bits set.
>
> Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
I got compile errors with that one, and needed the patch below to fix
them. Want to squash that into your commit and resend?
Daniel
>From 56ee3facfc825e68ed49c6cefac644d33b82dd71 Mon Sep 17 00:00:00 2001
From: Daniel Mack <daniel@caiaq.de>
Date: Mon, 1 Mar 2010 15:22:54 +0100
Subject: [PATCH] ALSA: usb-audio: fix quirk formats
'struct audioformat' takes a bit field of supported rates now rather
than one fixed value. Adopt that change at two more places.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
---
sound/usb/quirks-table.h | 2 +-
sound/usb/quirks.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index ff2df4e..2107d00 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -2233,7 +2233,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
.ifnum = 1,
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
.data = &(const struct audioformat) {
- .format = SNDRV_PCM_FORMAT_S24_3BE,
+ .formats = SNDRV_PCM_FMTBIT_S24_3BE,
.channels = 2,
.iface = 1,
.altsetting = 1,
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 00e8a97..0119fa0 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -89,7 +89,7 @@ static int create_ua1000_quirk(struct snd_usb_audio *chip,
const struct snd_usb_audio_quirk *quirk)
{
static const struct audioformat ua1000_format = {
- .format = SNDRV_PCM_FORMAT_S32_LE,
+ .formats = SNDRV_PCM_FMTBIT_S32_LE,
.fmt_type = UAC_FORMAT_TYPE_I,
.altsetting = 1,
.altset_idx = 1,
--
1.6.6.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices
2010-03-01 14:26 ` Daniel Mack
@ 2010-03-01 15:26 ` Clemens Ladisch
0 siblings, 0 replies; 17+ messages in thread
From: Clemens Ladisch @ 2010-03-01 15:26 UTC (permalink / raw)
To: Daniel Mack; +Cc: Takashi Iwai, alsa-devel
Daniel Mack wrote:
> On Mon, Mar 01, 2010 at 12:27:54PM +0100, Clemens Ladisch wrote:
> > Change the parser to correctly handle v2 descriptors with multiple
> > format bits set.
>
> I got compile errors with that one, and needed the patch below to fix
> them.
Sorry, my branch already moved the UA-1000 support into the ua101
driver.
> Want to squash that into your commit and resend?
I guess the UA-1000 change will be merged sooner.
Regards,
Clemens
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-01 14:23 ` Takashi Iwai
@ 2010-03-04 15:16 ` Daniel Mack
2010-03-04 15:31 ` Takashi Iwai
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-03-04 15:16 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Clemens Ladisch
On Mon, Mar 01, 2010 at 03:23:37PM +0100, Takashi Iwai wrote:
> At Mon, 1 Mar 2010 15:18:48 +0100,
> Daniel Mack wrote:
> >
> > Clemens fixes only make sense for v2 of the USB audio spec, which isn't
> > fully supported yet. IOW, the code as it will go into 2.6.34 is not able
> > to support that, with or without my refactoring. So rebasing them
> > doesn't make sense IMO.
>
> OK, then we can merge them together later.
Any plan on when to do that? I'm not in a hurry really, but I see the
usbaudio driver moving on, so merging would need some manual backporting
already. I can do that if you want and prepare a new patchset.
Btw - I'm curious how the commits e61e642c and 864c11080 made it to your
tree. Wasn't the alsa-devel list copied for the patch or am I losing
email?
Thanks,
Daniel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-04 15:16 ` Daniel Mack
@ 2010-03-04 15:31 ` Takashi Iwai
2010-03-04 15:38 ` Daniel Mack
0 siblings, 1 reply; 17+ messages in thread
From: Takashi Iwai @ 2010-03-04 15:31 UTC (permalink / raw)
To: Daniel Mack; +Cc: alsa-devel, Clemens Ladisch
At Thu, 4 Mar 2010 16:16:27 +0100,
Daniel Mack wrote:
>
> On Mon, Mar 01, 2010 at 03:23:37PM +0100, Takashi Iwai wrote:
> > At Mon, 1 Mar 2010 15:18:48 +0100,
> > Daniel Mack wrote:
> > >
> > > Clemens fixes only make sense for v2 of the USB audio spec, which isn't
> > > fully supported yet. IOW, the code as it will go into 2.6.34 is not able
> > > to support that, with or without my refactoring. So rebasing them
> > > doesn't make sense IMO.
> >
> > OK, then we can merge them together later.
>
> Any plan on when to do that? I'm not in a hurry really, but I see the
> usbaudio driver moving on, so merging would need some manual backporting
> already. I can do that if you want and prepare a new patchset.
You can prepare patches based on topic/misc branch of sound git tree,
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git topic/misc
or base on the latest Linus tree, which already contains USB audio v2.0
patches.
Then I'll create a separate branch (maybe again topic/usb-v2.0) and
apply your patches, keep separate from linux-next branch.
> Btw - I'm curious how the commits e61e642c and 864c11080 made it to your
> tree. Wasn't the alsa-devel list copied for the patch or am I losing
> email?
The former was a fix by Jaroslav directly done on git, and the latter
came from LKML.
Takashi
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-04 15:31 ` Takashi Iwai
@ 2010-03-04 15:38 ` Daniel Mack
2010-03-04 15:43 ` Takashi Iwai
0 siblings, 1 reply; 17+ messages in thread
From: Daniel Mack @ 2010-03-04 15:38 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel, Clemens Ladisch
On Thu, Mar 04, 2010 at 04:31:19PM +0100, Takashi Iwai wrote:
> Daniel Mack wrote:
> >
> > Any plan on when to do that? I'm not in a hurry really, but I see the
> > usbaudio driver moving on, so merging would need some manual backporting
> > already. I can do that if you want and prepare a new patchset.
>
> You can prepare patches based on topic/misc branch of sound git tree,
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git topic/misc
>
> or base on the latest Linus tree, which already contains USB audio v2.0
> patches.
>
> Then I'll create a separate branch (maybe again topic/usb-v2.0) and
> apply your patches, keep separate from linux-next branch.
Ok, will do. However, I wonder how new patches to the usbaudio driver
will be handled then until the branch is merged?
Thanks,
Daniel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/3] ALSA: usb: move ua101 driver
2010-03-04 15:38 ` Daniel Mack
@ 2010-03-04 15:43 ` Takashi Iwai
0 siblings, 0 replies; 17+ messages in thread
From: Takashi Iwai @ 2010-03-04 15:43 UTC (permalink / raw)
To: Daniel Mack; +Cc: alsa-devel, Clemens Ladisch
At Thu, 4 Mar 2010 16:38:34 +0100,
Daniel Mack wrote:
>
> On Thu, Mar 04, 2010 at 04:31:19PM +0100, Takashi Iwai wrote:
> > Daniel Mack wrote:
> > >
> > > Any plan on when to do that? I'm not in a hurry really, but I see the
> > > usbaudio driver moving on, so merging would need some manual backporting
> > > already. I can do that if you want and prepare a new patchset.
> >
> > You can prepare patches based on topic/misc branch of sound git tree,
> > git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git topic/misc
> >
> > or base on the latest Linus tree, which already contains USB audio v2.0
> > patches.
> >
> > Then I'll create a separate branch (maybe again topic/usb-v2.0) and
> > apply your patches, keep separate from linux-next branch.
>
> Ok, will do. However, I wonder how new patches to the usbaudio driver
> will be handled then until the branch is merged?
They are merged back to topic/usb-v2.0 branch. Conflicts are solved
manually at merges.
Takashi
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2010-03-04 15:43 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-26 14:34 [RFC] Cleanup/refactor the usbaudio driver Daniel Mack
2010-02-26 14:34 ` [PATCH 1/3] ALSA: usb: move ua101 driver Daniel Mack
2010-02-26 14:34 ` [PATCH 2/3] ALSA: usb: header file cleanups Daniel Mack
[not found] ` <1267194883-6854-4-git-send-email-daniel@caiaq.de>
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb-audio: rename substream format field to altset_idx Clemens Ladisch
2010-03-01 11:27 ` [PATCH 2/3] ALSA: usb-audio: use a format bitmask per alternate setting Clemens Ladisch
2010-03-01 11:27 ` [PATCH 3/3] ALSA: usb-audio: support multiple formats with audio class v2 devices Clemens Ladisch
2010-03-01 14:26 ` Daniel Mack
2010-03-01 15:26 ` Clemens Ladisch
2010-03-01 11:27 ` [PATCH 1/3] ALSA: usb: move ua101 driver Clemens Ladisch
2010-03-01 14:01 ` Daniel Mack
2010-03-01 14:06 ` Takashi Iwai
2010-03-01 14:18 ` Daniel Mack
2010-03-01 14:23 ` Takashi Iwai
2010-03-04 15:16 ` Daniel Mack
2010-03-04 15:31 ` Takashi Iwai
2010-03-04 15:38 ` Daniel Mack
2010-03-04 15:43 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).