Commit bafeee5b authored by Daniel Mack's avatar Daniel Mack Committed by Takashi Iwai

ALSA: snd_usb_caiaq: give better shortname

If not passed as module option, provide an own card ID with the newly
introduced snd_set_card_id() call.

This will prevent ALSA from calling choose_default_name() which only
takes the last part of a name containing whitespaces. This for example
caused 'Audio 4 DJ' to be shortened to 'DJ', which was not very
descriptive.

The implementation now takes the short name and removes all whitespaces
from it which is much nicer.
Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 17db0486
...@@ -382,10 +382,10 @@ static int create_card(struct usb_device* usb_dev, struct snd_card **cardp) ...@@ -382,10 +382,10 @@ static int create_card(struct usb_device* usb_dev, struct snd_card **cardp)
static int __devinit init_card(struct snd_usb_caiaqdev *dev) static int __devinit init_card(struct snd_usb_caiaqdev *dev)
{ {
char usbpath[32]; char *c, usbpath[32];
struct usb_device *usb_dev = dev->chip.dev; struct usb_device *usb_dev = dev->chip.dev;
struct snd_card *card = dev->chip.card; struct snd_card *card = dev->chip.card;
int err; int err, len;
if (usb_set_interface(usb_dev, 0, 1) != 0) { if (usb_set_interface(usb_dev, 0, 1) != 0) {
log("can't set alt interface.\n"); log("can't set alt interface.\n");
...@@ -427,6 +427,23 @@ static int __devinit init_card(struct snd_usb_caiaqdev *dev) ...@@ -427,6 +427,23 @@ static int __devinit init_card(struct snd_usb_caiaqdev *dev)
strlcpy(card->driver, MODNAME, sizeof(card->driver)); strlcpy(card->driver, MODNAME, sizeof(card->driver));
strlcpy(card->shortname, dev->product_name, sizeof(card->shortname)); strlcpy(card->shortname, dev->product_name, sizeof(card->shortname));
/* if the id was not passed as module option, fill it with a shortened
* version of the product string which does not contain any
* whitespaces */
if (*card->id == '\0') {
char id[sizeof(card->id)];
memset(id, 0, sizeof(id));
for (c = card->shortname, len = 0;
*c && len < sizeof(card->id); c++)
if (*c != ' ')
id[len++] = *c;
snd_card_set_id(card, id);
}
usb_make_path(usb_dev, usbpath, sizeof(usbpath)); usb_make_path(usb_dev, usbpath, sizeof(usbpath));
snprintf(card->longname, sizeof(card->longname), snprintf(card->longname, sizeof(card->longname),
"%s %s (%s)", "%s %s (%s)",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment