diff options
author | Andrea Borgia <andrea@borgia.bo.it> | 2009-01-07 16:58:50 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-01-07 17:32:04 -0500 |
commit | 3195954da9cdb1cadb2059921c62e69d376c624f (patch) | |
tree | 924caf1621775a1bf7864eb1bd33e6ac22cb0772 | |
parent | 913ae5a24efd27deef4fc154953871b62d0d99cd (diff) |
ALSA: preliminary support for Toshiba SB-0500
The Toshiba Multimedia Center SB-0500 is a rebranded version of the
Creative Technology SB Live! 24-bit External: it shares the same chipset
and only has minor cosmetic differences. Remote controller works with
alsa_usb module, basic audio is there and mixer controls are mostly
untested.
Signed-off-by: Andrea Borgia <andrea@borgia.bo.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/usb/usbmixer.c | 15 | ||||
-rw-r--r-- | sound/usb/usbmixer_maps.c | 5 |
2 files changed, 15 insertions, 5 deletions
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c index 00397c8a765b..bc8bd00047ad 100644 --- a/sound/usb/usbmixer.c +++ b/sound/usb/usbmixer.c | |||
@@ -66,6 +66,7 @@ static const struct rc_config { | |||
66 | { USB_ID(0x041e, 0x3000), 0, 1, 2, 1, 18, 0x0013 }, /* Extigy */ | 66 | { USB_ID(0x041e, 0x3000), 0, 1, 2, 1, 18, 0x0013 }, /* Extigy */ |
67 | { USB_ID(0x041e, 0x3020), 2, 1, 6, 6, 18, 0x0013 }, /* Audigy 2 NX */ | 67 | { USB_ID(0x041e, 0x3020), 2, 1, 6, 6, 18, 0x0013 }, /* Audigy 2 NX */ |
68 | { USB_ID(0x041e, 0x3040), 2, 2, 6, 6, 2, 0x6e91 }, /* Live! 24-bit */ | 68 | { USB_ID(0x041e, 0x3040), 2, 2, 6, 6, 2, 0x6e91 }, /* Live! 24-bit */ |
69 | { USB_ID(0x041e, 0x3048), 2, 2, 6, 6, 2, 0x6e91 }, /* Toshiba SB0500 */ | ||
69 | }; | 70 | }; |
70 | 71 | ||
71 | struct usb_mixer_interface { | 72 | struct usb_mixer_interface { |
@@ -1706,7 +1707,8 @@ static void snd_usb_mixer_memory_change(struct usb_mixer_interface *mixer, | |||
1706 | break; | 1707 | break; |
1707 | /* live24ext: 4 = line-in jack */ | 1708 | /* live24ext: 4 = line-in jack */ |
1708 | case 3: /* hp-out jack (may actuate Mute) */ | 1709 | case 3: /* hp-out jack (may actuate Mute) */ |
1709 | if (mixer->chip->usb_id == USB_ID(0x041e, 0x3040)) | 1710 | if (mixer->chip->usb_id == USB_ID(0x041e, 0x3040) || |
1711 | mixer->chip->usb_id == USB_ID(0x041e, 0x3048)) | ||
1710 | snd_usb_mixer_notify_id(mixer, mixer->rc_cfg->mute_mixer_id); | 1712 | snd_usb_mixer_notify_id(mixer, mixer->rc_cfg->mute_mixer_id); |
1711 | break; | 1713 | break; |
1712 | default: | 1714 | default: |
@@ -1956,8 +1958,9 @@ static int snd_audigy2nx_controls_create(struct usb_mixer_interface *mixer) | |||
1956 | int i, err; | 1958 | int i, err; |
1957 | 1959 | ||
1958 | for (i = 0; i < ARRAY_SIZE(snd_audigy2nx_controls); ++i) { | 1960 | for (i = 0; i < ARRAY_SIZE(snd_audigy2nx_controls); ++i) { |
1959 | if (i > 1 && /* Live24ext has 2 LEDs only */ | 1961 | if (i > 1 && /* Live24ext has 2 LEDs only */ |
1960 | mixer->chip->usb_id == USB_ID(0x041e, 0x3040)) | 1962 | (mixer->chip->usb_id == USB_ID(0x041e, 0x3040) || |
1963 | mixer->chip->usb_id == USB_ID(0x041e, 0x3048))) | ||
1961 | break; | 1964 | break; |
1962 | err = snd_ctl_add(mixer->chip->card, | 1965 | err = snd_ctl_add(mixer->chip->card, |
1963 | snd_ctl_new1(&snd_audigy2nx_controls[i], mixer)); | 1966 | snd_ctl_new1(&snd_audigy2nx_controls[i], mixer)); |
@@ -1994,7 +1997,8 @@ static void snd_audigy2nx_proc_read(struct snd_info_entry *entry, | |||
1994 | snd_iprintf(buffer, "%s jacks\n\n", mixer->chip->card->shortname); | 1997 | snd_iprintf(buffer, "%s jacks\n\n", mixer->chip->card->shortname); |
1995 | if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020)) | 1998 | if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020)) |
1996 | jacks = jacks_audigy2nx; | 1999 | jacks = jacks_audigy2nx; |
1997 | else if (mixer->chip->usb_id == USB_ID(0x041e, 0x3040)) | 2000 | else if (mixer->chip->usb_id == USB_ID(0x041e, 0x3040) || |
2001 | mixer->chip->usb_id == USB_ID(0x041e, 0x3048)) | ||
1998 | jacks = jacks_live24ext; | 2002 | jacks = jacks_live24ext; |
1999 | else | 2003 | else |
2000 | return; | 2004 | return; |
@@ -2044,7 +2048,8 @@ int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif, | |||
2044 | goto _error; | 2048 | goto _error; |
2045 | 2049 | ||
2046 | if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020) || | 2050 | if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020) || |
2047 | mixer->chip->usb_id == USB_ID(0x041e, 0x3040)) { | 2051 | mixer->chip->usb_id == USB_ID(0x041e, 0x3040) || |
2052 | mixer->chip->usb_id == USB_ID(0x041e, 0x3048)) { | ||
2048 | struct snd_info_entry *entry; | 2053 | struct snd_info_entry *entry; |
2049 | 2054 | ||
2050 | if ((err = snd_audigy2nx_controls_create(mixer)) < 0) | 2055 | if ((err = snd_audigy2nx_controls_create(mixer)) < 0) |
diff --git a/sound/usb/usbmixer_maps.c b/sound/usb/usbmixer_maps.c index d755be0ad811..f41214f3ad6b 100644 --- a/sound/usb/usbmixer_maps.c +++ b/sound/usb/usbmixer_maps.c | |||
@@ -285,6 +285,11 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = { | |||
285 | .map = live24ext_map, | 285 | .map = live24ext_map, |
286 | }, | 286 | }, |
287 | { | 287 | { |
288 | .id = USB_ID(0x041e, 0x3048), | ||
289 | .map = audigy2nx_map, | ||
290 | .selector_map = audigy2nx_selectors, | ||
291 | }, | ||
292 | { | ||
288 | /* Hercules DJ Console (Windows Edition) */ | 293 | /* Hercules DJ Console (Windows Edition) */ |
289 | .id = USB_ID(0x06f8, 0xb000), | 294 | .id = USB_ID(0x06f8, 0xb000), |
290 | .ignore_ctl_error = 1, | 295 | .ignore_ctl_error = 1, |