diff options
author | Daniel Mack <daniel@caiaq.de> | 2009-06-02 12:36:39 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-06-02 12:55:59 +0200 |
commit | bafeee5b1f8d32cbf791c322b40a6fa91d8ccf7a (patch) | |
tree | 27bc6bb25d0f7313a4a367a5f784f512bbad16ef /sound/usb/caiaq | |
parent | 17db0486d73a7bc62996569cea63464daacb22a4 (diff) | |
download | op-kernel-dev-bafeee5b1f8d32cbf791c322b40a6fa91d8ccf7a.zip op-kernel-dev-bafeee5b1f8d32cbf791c322b40a6fa91d8ccf7a.tar.gz |
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: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/caiaq')
-rw-r--r-- | sound/usb/caiaq/device.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/sound/usb/caiaq/device.c b/sound/usb/caiaq/device.c index 15052e4..43bd0db 100644 --- a/sound/usb/caiaq/device.c +++ b/sound/usb/caiaq/device.c @@ -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) { - char usbpath[32]; + char *c, usbpath[32]; struct usb_device *usb_dev = dev->chip.dev; struct snd_card *card = dev->chip.card; - int err; + int err, len; if (usb_set_interface(usb_dev, 0, 1) != 0) { log("can't set alt interface.\n"); @@ -427,6 +427,23 @@ static int __devinit init_card(struct snd_usb_caiaqdev *dev) strlcpy(card->driver, MODNAME, sizeof(card->driver)); 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)); snprintf(card->longname, sizeof(card->longname), "%s %s (%s)", |