mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
hdspmixer: Add RME HDSPe AES and AES32 support.
Code provided by Fredrik Lingvall <fredrik.lingvall@gmail.com> It seems the PCIe (AES) and PCI (AES32) versions behave the same, so we can kill two birds with one stone. Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
cef20c040c
commit
69991756aa
6 changed files with 52 additions and 0 deletions
|
|
@ -52,6 +52,16 @@ static char dest_map_madi_ss[32] = {
|
|||
48, 50, 52, 54, 56, 58, 60, 62
|
||||
};
|
||||
|
||||
static char channel_map_aes[16] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
9, 10, 11, 12, 13, 14, 15
|
||||
};
|
||||
|
||||
|
||||
static char dest_map_aes[8] = {
|
||||
0, 2, 4, 6, 8, 10, 12, 14
|
||||
};
|
||||
|
||||
|
||||
static char dest_map_raydat_ss[18] = {
|
||||
4, 6, 8, 10,
|
||||
|
|
@ -466,6 +476,18 @@ void HDSPMixerCard::adjustSettings() {
|
|||
break;
|
||||
}
|
||||
|
||||
} else if (HDSP_AES == type) {
|
||||
playbacks_offset = 64; /* FL not sure about this one? */
|
||||
|
||||
/* 16 channels for all modes */
|
||||
channels_input = 16;
|
||||
channels_playback = 16;
|
||||
channel_map_input = channel_map_aes;
|
||||
channel_map_playback = channel_map_aes;
|
||||
dest_map = dest_map_aes;
|
||||
meter_map_input = channel_map_aes;
|
||||
meter_map_playback = channel_map_aes;
|
||||
|
||||
} else if (HDSPeRayDAT == type) {
|
||||
playbacks_offset = 64;
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,11 @@ static char *labels_madi_qs[16] = {
|
|||
};
|
||||
|
||||
|
||||
static char *labels_aes[16] = {
|
||||
"AES 1", "AES 2", "AES 3", "AES 4", "AES 5", "AES 6", "AES 7", "AES 8",
|
||||
"AES 9", "AES 10", "AES 11", "AES 12", "AES 13", "AES 14", "AES 15", "AES 16"
|
||||
};
|
||||
|
||||
static char *labels_raydat_ss[36] = {
|
||||
"A1.1", "A1.2", "A1.3", "A1.4", "A1.5", "A1.6", "A1.7", "A1.8",
|
||||
"A2.1", "A2.2", "A2.3", "A2.4", "A2.5", "A2.6", "A2.7", "A2.8",
|
||||
|
|
@ -226,6 +231,8 @@ void HDSPMixerOutput::setLabels()
|
|||
labels_input = labels_playback = labels_madi_qs;
|
||||
break;
|
||||
}
|
||||
} else if (HDSP_AES == type) {
|
||||
labels_input = labels_playback = labels_aes;
|
||||
} else if (HDSPeAIO == type) {
|
||||
switch (sm) {
|
||||
case 0:
|
||||
|
|
|
|||
|
|
@ -45,6 +45,11 @@ static char *destinations_madi_qs[8] = {
|
|||
};
|
||||
|
||||
|
||||
static char *destinations_aes[8] = {
|
||||
"AES 1+2", "AES 3+4", "AES 5+6", "AES 7+8",
|
||||
"AES 9+10", "AES 11+12", "AES 13+14", "AES 15+16",
|
||||
};
|
||||
|
||||
static char *destinations_raydat_ss[18] = {
|
||||
|
||||
"A1 1+2", "A1 3+4", "A1 5+6", "A1 7+8",
|
||||
|
|
@ -291,6 +296,9 @@ void HDSPMixerSelector::setLabels()
|
|||
destinations = destinations_madi_qs;
|
||||
break;
|
||||
}
|
||||
} else if (HDSP_AES == type) {
|
||||
max_dest = 8;
|
||||
destinations = destinations_aes;
|
||||
} else if (HDSPeAIO == type) {
|
||||
switch (sm) {
|
||||
case 0:
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ static void readregisters_cb(void *arg)
|
|||
|
||||
if ((HDSPeMADI == w->cards[w->current_card]->type) ||
|
||||
(HDSPeAIO == w->cards[w->current_card]->type) ||
|
||||
(HDSP_AES == w->cards[w->current_card]->type) ||
|
||||
(HDSPeRayDAT == w->cards[w->current_card]->type)) {
|
||||
if ((err = snd_hwdep_ioctl(hw, SNDRV_HDSPM_IOCTL_GET_PEAK_RMS, (void *)&hdspm_peak_rms)) < 0) {
|
||||
fprintf(stderr, "HwDep ioctl failed. Metering stopped\n");
|
||||
|
|
@ -552,6 +553,15 @@ void HDSPMixerWindow::restoreDefaults(int card)
|
|||
maxdest[2] = 8;
|
||||
num_modes = 3;
|
||||
break;
|
||||
case HDSP_AES: /* these cards support full channel count at all modes */
|
||||
chnls[0] = 16;
|
||||
chnls[1] = 16;
|
||||
chnls[2] = 16;
|
||||
maxdest[0] = 16;
|
||||
maxdest[1] = 16;
|
||||
maxdest[2] = 16;
|
||||
num_modes = 3;
|
||||
break;
|
||||
case HDSPeAIO:
|
||||
chnls[0] = 14;
|
||||
chnls[1] = 10;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#define HDSPeMADI 10
|
||||
#define HDSPeRayDAT 11
|
||||
#define HDSPeAIO 12
|
||||
#define HDSP_AES 13 /* both AES32 and HDSPeAES? */
|
||||
|
||||
#define HDSP_MAX_CHANNELS 64
|
||||
#define HDSP_MAX_DEST 32
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@ int main(int argc, char **argv)
|
|||
printf("RME MADI found!\n");
|
||||
hdsp_cards[cards] = new HDSPMixerCard(HDSPeMADI, card);
|
||||
cards++;
|
||||
} else if (!strncmp(name, "RME AES32", 8)) {
|
||||
printf("RME AES32 or HDSPe AES found!\n");
|
||||
hdsp_cards[cards] = new HDSPMixerCard(HDSP_AES, card);
|
||||
cards++;
|
||||
} else if (!strncmp(name, "RME RayDAT", 10)) {
|
||||
printf("RME RayDAT found!\n");
|
||||
hdsp_cards[cards] = new HDSPMixerCard(HDSPeRayDAT, card);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue