[ALSA] usb-audio - add selector unit names override for Audigy 2 NX

USB generic driver
Add a mechanism to specify source names of selector units,
and add such names for the SB Audigy 2 NX.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
Clemens Ladisch
2005-04-22 15:49:52 +02:00
committed by Jaroslav Kysela
parent 08fe15899d
commit 8e062ec710
2 changed files with 69 additions and 6 deletions

View File

@@ -26,10 +26,17 @@ struct usbmix_name_map {
int control;
};
struct usbmix_selector_map {
int id;
int count;
const char **names;
};
struct usbmix_ctl_map {
int vendor;
int product;
const struct usbmix_name_map *map;
const struct usbmix_selector_map *selector_map;
int ignore_ctl_error;
};
@@ -162,6 +169,25 @@ static struct usbmix_name_map audigy2nx_map[] = {
{ 0 } /* terminator */
};
static struct usbmix_selector_map audigy2nx_selectors[] = {
{
.id = 14, /* Capture Source */
.count = 3,
.names = (const char*[]) {"Line", "Digital In", "What-U-Hear"}
},
{
.id = 29, /* Digital Out Source */
.count = 3,
.names = (const char*[]) {"Front", "PCM", "Digital In"}
},
{
.id = 31, /* Headphone Source */
.count = 2,
.names = (const char*[]) {"Front", "Side"}
},
{ 0 } /* terminator */
};
/* LineX FM Transmitter entry - needed to bypass controls bug */
static struct usbmix_name_map linex_map[] = {
/* 1: IT pcm */
@@ -198,11 +224,29 @@ static struct usbmix_name_map justlink_map[] = {
*/
static struct usbmix_ctl_map usbmix_ctl_maps[] = {
{ 0x41e, 0x3000, extigy_map, 1 },
{ 0x41e, 0x3010, mp3plus_map, 0 },
{ 0x41e, 0x3020, audigy2nx_map, 0 },
{ 0x8bb, 0x2702, linex_map, 1 },
{ 0xc45, 0x1158, justlink_map, 0 },
{
.vendor = 0x41e, .product = 0x3000,
.map = extigy_map,
.ignore_ctl_error = 1,
},
{
.vendor = 0x41e, .product = 0x3010,
.map = mp3plus_map,
},
{
.vendor = 0x41e, .product = 0x3020,
.map = audigy2nx_map,
.selector_map = audigy2nx_selectors,
},
{
.vendor = 0x8bb, .product = 0x2702,
.map = linex_map,
.ignore_ctl_error = 1,
},
{
.vendor = 0xc45, .product = 0x1158,
.map = justlink_map,
},
{ 0 } /* terminator */
};