hdspmixer: Add support for RME AIO AEB boards

AIO allows to connect Analogue Extension Boards (4in/4out).

Provide those channels in hdspmixer, too.

The channel maps were copied from the driver, hence the changed casing
in the comments.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Adrian Knoth 2014-01-04 21:38:23 +01:00 committed by Takashi Iwai
parent 772fbde91c
commit f3c2688f9d
6 changed files with 96 additions and 74 deletions

View file

@ -348,9 +348,9 @@ void HDSPMixerCard::adjustSettings() {
switch (speed_mode) { switch (speed_mode) {
case 0: // SS case 0: // SS
channels_input = 14; channels_input = 18;
channels_playback = 16; channels_playback = 20;
channels_output = 16; /* SS 2xAnalog+2xAES+2xSPDIF+4xADAT+2xHeadphones */ channels_output = 20; /* SS 2xAnalog+2xAES+2xSPDIF+8xADAT+2xHeadphones+4xAEB */
channel_map_input = channel_map_aio_in_ss; channel_map_input = channel_map_aio_in_ss;
channel_map_playback = channel_map_aio_out_ss; channel_map_playback = channel_map_aio_out_ss;
dest_map = dest_map_aio_ss; dest_map = dest_map_aio_ss;
@ -358,9 +358,9 @@ void HDSPMixerCard::adjustSettings() {
meter_map_playback = channel_map_aio_out_ss; meter_map_playback = channel_map_aio_out_ss;
break; break;
case 1: // DS case 1: // DS
channels_input = 10; channels_input = 14;
channels_playback = 12; channels_playback = 16;
channels_output = 12; /* DS 2xAnalog+2xAES+2xSPDIF+4xADAT(SMUX)+2xHeadphones */ channels_output = 16; /* DS 2xAnalog+2xAES+2xSPDIF+4xADAT(SMUX)+2xHeadphones+4xAEB */
channel_map_input = channel_map_aio_in_ds; channel_map_input = channel_map_aio_in_ds;
channel_map_playback = channel_map_aio_out_ds; channel_map_playback = channel_map_aio_out_ds;
dest_map = dest_map_aio_ds; dest_map = dest_map_aio_ds;
@ -368,9 +368,9 @@ void HDSPMixerCard::adjustSettings() {
meter_map_playback = channel_map_aio_out_ds; meter_map_playback = channel_map_aio_out_ds;
break; break;
case 2: // QS case 2: // QS
channels_input = 8; channels_input = 12;
channels_playback = 10; channels_playback = 14;
channels_output = 10; /* QS 2xAnalog+2xAES+2xSPDIF+2xADAT(SMUX)+2xHeadphones */ channels_output = 14; /* QS 2xAnalog+2xAES+2xSPDIF+2xADAT(SMUX)+2xHeadphones+4xAEB */
channel_map_input = channel_map_aio_in_qs; channel_map_input = channel_map_aio_in_qs;
channel_map_playback = channel_map_aio_out_qs; channel_map_playback = channel_map_aio_out_qs;
dest_map = dest_map_aio_qs; dest_map = dest_map_aio_qs;

View file

@ -87,51 +87,57 @@ static char const *labels_rpm_input[5] = {
"Mic" "Mic"
}; };
static char const *labels_aio_ss_input[14] = { static char const *labels_aio_ss_input[18] = {
"AN 1", "AN 2",
"SP.L", "SP.R",
"AES.L", "AES.R",
"A 1", "A 2", "A 3", "A 4",
"A 5", "A 6", "A 7", "A 8"
};
static char const *labels_aio_ss_playback[16] = {
"AN 1", "AN 2", "AN 1", "AN 2",
"SP.L", "SP.R", "SP.L", "SP.R",
"AES.L", "AES.R", "AES.L", "AES.R",
"A 1", "A 2", "A 3", "A 4", "A 1", "A 2", "A 3", "A 4",
"A 5", "A 6", "A 7", "A 8", "A 5", "A 6", "A 7", "A 8",
"PH.L", "PH.R" "AEB 1", "AEB 2", "AEB 3," "AEB 4"
}; };
static char const *labels_aio_ds_input[10] = { static char const *labels_aio_ss_playback[20] = {
"AN 1", "AN 2",
"SP.L", "SP.R",
"AES.L", "AES.R",
"A 1", "A 2", "A 3", "A 4"
};
static char const *labels_aio_ds_playback[12] = {
"AN 1", "AN 2", "AN 1", "AN 2",
"SP.L", "SP.R", "SP.L", "SP.R",
"AES.L", "AES.R", "AES.L", "AES.R",
"A 1", "A 2", "A 3", "A 4", "A 1", "A 2", "A 3", "A 4",
"PH.L", "PH.R" "A 5", "A 6", "A 7", "A 8",
}; "PH.L", "PH.R",
"AEB 1", "AEB 2", "AEB 3", "AEB 4"
};
static char const *labels_aio_qs_input[8] = { static char const *labels_aio_ds_input[14] = {
"AN 1", "AN 2", "AN 1", "AN 2",
"SP.L", "SP.R", "SP.L", "SP.R",
"AES.L", "AES.R", "AES.L", "AES.R",
"A 1", "A 2" "A 1", "A 2", "A 3", "A 4",
"AEB 1", "AEB 2", "AEB 3", "AEB 4"
}; };
static char const *labels_aio_qs_playback[10] = { static char const *labels_aio_ds_playback[16] = {
"AN 1", "AN 2",
"SP.L", "SP.R",
"AES.L", "AES.R",
"A 1", "A 2", "A 3", "A 4",
"PH.L", "PH.R",
"AEB 1", "AEB 2", "AEB 3", "AEB 4"
};
static char const *labels_aio_qs_input[12] = {
"AN 1", "AN 2",
"SP.L", "SP.R",
"AES.L", "AES.R",
"A 1", "A 2",
"AEB 1", "AEB 2", "AEB 3", "AEB 4"
};
static char const *labels_aio_qs_playback[14] = {
"AN 1", "AN 2", "AN 1", "AN 2",
"SP.L", "SP.R", "SP.L", "SP.R",
"AES.L", "AES.R", "AES.L", "AES.R",
"A 1", "A 2", "A 1", "A 2",
"PH.L", "PH.R", "PH.L", "PH.R",
"AEB 1", "AEB 2", "AEB 3", "AEB 4"
}; };

View file

@ -81,28 +81,34 @@ static char const *destinations_raydat_qs[6] = {
}; };
static char const *destinations_aio_ss[8] = { static char const *destinations_aio_ss[10] = {
"AN 1+2", "AN 1+2",
"AES", "AES",
"SPDIF", "SPDIF",
"A 1+2", "A 3+4", "A 5+6", "A 7+8", "A 1+2", "A 3+4", "A 5+6", "A 7+8",
"Phones" "Phones",
"AEB 1+2",
"AEB 3+4"
}; };
static char const *destinations_aio_ds[6] = { static char const *destinations_aio_ds[8] = {
"AN 1+2", "AN 1+2",
"AES", "AES",
"SPDIF", "SPDIF",
"A 1+2", "A 3+4", "A 1+2", "A 3+4",
"Phones" "Phones",
"AEB 1+2",
"AEB 3+4"
}; };
static char const *destinations_aio_qs[5] = { static char const *destinations_aio_qs[7] = {
"AN 1+2", "AN 1+2",
"AES", "AES",
"SPDIF", "SPDIF",
"A 1+2", "A 1+2",
"Phones" "Phones",
"AEB 1+2",
"AEB 3+4"
}; };
static char const *destinations_mf_ss[10] = { static char const *destinations_mf_ss[10] = {
@ -318,15 +324,15 @@ void HDSPMixerSelector::setLabels()
} else if (HDSPeAIO == type) { } else if (HDSPeAIO == type) {
switch (sm) { switch (sm) {
case 0: case 0:
max_dest = 8; max_dest = 10;
destinations = destinations_aio_ss; destinations = destinations_aio_ss;
break; break;
case 1: case 1:
max_dest = 6; max_dest = 8;
destinations = destinations_aio_ds; destinations = destinations_aio_ds;
break; break;
case 2: case 2:
max_dest = 5; max_dest = 7;
destinations = destinations_aio_qs; destinations = destinations_aio_qs;
break; break;
} }

View file

@ -753,12 +753,12 @@ void HDSPMixerWindow::restoreDefaults(int card)
num_modes = 3; num_modes = 3;
break; break;
case HDSPeAIO: case HDSPeAIO:
chnls[0] = 14; chnls[0] = 18;
chnls[1] = 10; chnls[1] = 14;
chnls[2] = 8; chnls[2] = 12;
maxdest[0] = 8; maxdest[0] = 10;
maxdest[1] = 6; maxdest[1] = 8;
maxdest[2] = 5; maxdest[2] = 7;
num_modes = 3; num_modes = 3;
break; break;
case HDSPeRayDAT: case HDSPeRayDAT:

View file

@ -247,38 +247,44 @@ char channel_map_raydat_qs[HDSPM_MAX_CHANNELS] = {
// HDSPe AIO // HDSPe AIO
char dest_map_aio_ss[8] = { char dest_map_aio_ss[10] = {
0, // Analogue 0, // Analogue
8, // AES 8, // AES
10, // SPDIF 10, // SPDIF
12, 14, 16, 18, // ADAT 12, 14, 16, 18, // ADAT
6 // Phones 6, // Phones
2, // AEB 1+2
4 // AEB 3+4
}; };
char dest_map_aio_ds[6] = { char dest_map_aio_ds[8] = {
0, // Analogue 0, // Analogue
8, // AES 8, // AES
10, // SPDIF 10, // SPDIF
12, 16, // ADAT 12, 16, // ADAT
6 // Phones 6, // Phones
2, // AEB 1+2
4 // AEB 3+4
}; };
char dest_map_aio_qs[5] = { char dest_map_aio_qs[7] = {
0, // Analogue 0, // Analogue
8, // AES 8, // AES
10, // SPDIF 10, // SPDIF
12, // ADAT 12, // ADAT
6 // Phone 6, // Phone
2, // AEB 1+2
4 // AEB 3+4
}; };
char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = { char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = {
0, 1, /* line in */ 0, 1, /* line in */
8, 9, /* AES in, */ 8, 9, /* aes in, */
10, 11, /* SPDIF in */ 10, 11, /* spdif in */
12, 13, 14, 15, 16, 17, 18, 19, /* ADAT in */ 12, 13, 14, 15, 16, 17, 18, 19, /* ADAT in */
-1, -1, 2, 3, 4, 5, /* AEB */
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -288,11 +294,12 @@ char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = {
char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = { char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = {
0, 1, /* line out */ 0, 1, /* line out */
8, 9, /* AES out */ 8, 9, /* aes out */
10, 11, /* SPDIF out */ 10, 11, /* spdif out */
12, 13, 14, 15, 16, 17, 18, 19, /* ADAT out */ 12, 13, 14, 15, 16, 17, 18, 19, /* ADAT out */
6, 7, /* phone out */ 6, 7, /* phone out */
-1, -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, /* AEB */
-1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -302,10 +309,11 @@ char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = {
char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = { char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = {
0, 1, /* line in */ 0, 1, /* line in */
8, 9, /* AES in */ 8, 9, /* aes in */
10, 11, /* SPDIF in */ 10, 11, /* spdif in */
12, 14, 16, 18, /* ADAT in */ 12, 14, 16, 18, /* adat in */
-1, -1, -1, -1, -1, -1, 2, 3, 4, 5, /* AEB */
-1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -316,11 +324,11 @@ char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = {
char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = { char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = {
0, 1, /* line out */ 0, 1, /* line out */
8, 9, /* AES out */ 8, 9, /* aes out */
10, 11, /* SPDIF out */ 10, 11, /* spdif out */
12, 14, 16, 18, /* ADAT out */ 12, 14, 16, 18, /* adat out */
6, 7, /* phone out */ 6, 7, /* phone out */
-1, -1, -1, -1, 2, 3, 4, 5, /* AEB */
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -331,10 +339,11 @@ char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = {
char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = { char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = {
0, 1, /* line in */ 0, 1, /* line in */
8, 9, /* AES in */ 8, 9, /* aes in */
10, 11, /* SPDIF in */ 10, 11, /* spdif in */
12, 16, /* ADAT in */ 12, 16, /* adat in */
-1, -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, /* AEB */
-1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -345,11 +354,12 @@ char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = {
char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = { char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = {
0, 1, /* line out */ 0, 1, /* line out */
8, 9, /* AES out */ 8, 9, /* aes out */
10, 11, /* SPDIF out */ 10, 11, /* spdif out */
12, 16, /* ADAT out */ 12, 16, /* adat out */
6, 7, /* phone out */ 6, 7, /* phone out */
-1, -1, -1, -1, -1, -1, 2, 3, 4, 5, /* AEB */
-1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

View file

@ -112,12 +112,12 @@ extern char channel_map_raydat_qs[HDSPM_MAX_CHANNELS];
// HDSPe AIO // HDSPe AIO
extern char dest_map_aio_ss[8]; extern char dest_map_aio_ss[10];
extern char dest_map_aio_ds[6]; extern char dest_map_aio_ds[8];
extern char dest_map_aio_qs[5]; extern char dest_map_aio_qs[7];
extern char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS]; extern char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS];