mirror of
				https://github.com/alsa-project/alsa-tools.git
				synced 2025-10-29 05:40:25 -04:00 
			
		
		
		
	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:
		
							parent
							
								
									772fbde91c
								
							
						
					
					
						commit
						f3c2688f9d
					
				
					 6 changed files with 96 additions and 74 deletions
				
			
		|  | @ -348,9 +348,9 @@ void HDSPMixerCard::adjustSettings() { | |||
| 
 | ||||
|         switch (speed_mode) { | ||||
|         case 0: // SS
 | ||||
|             channels_input = 14; | ||||
|             channels_playback = 16; | ||||
|             channels_output = 16; /* SS 2xAnalog+2xAES+2xSPDIF+4xADAT+2xHeadphones */ | ||||
|             channels_input = 18; | ||||
|             channels_playback = 20; | ||||
|             channels_output = 20; /* SS 2xAnalog+2xAES+2xSPDIF+8xADAT+2xHeadphones+4xAEB */ | ||||
|             channel_map_input = channel_map_aio_in_ss; | ||||
|             channel_map_playback = channel_map_aio_out_ss; | ||||
|             dest_map = dest_map_aio_ss; | ||||
|  | @ -358,9 +358,9 @@ void HDSPMixerCard::adjustSettings() { | |||
|             meter_map_playback = channel_map_aio_out_ss; | ||||
|             break; | ||||
|         case 1: // DS
 | ||||
|             channels_input = 10; | ||||
|             channels_playback = 12; | ||||
|             channels_output = 12; /* DS 2xAnalog+2xAES+2xSPDIF+4xADAT(SMUX)+2xHeadphones */ | ||||
|             channels_input = 14; | ||||
|             channels_playback = 16; | ||||
|             channels_output = 16; /* DS 2xAnalog+2xAES+2xSPDIF+4xADAT(SMUX)+2xHeadphones+4xAEB */ | ||||
|             channel_map_input = channel_map_aio_in_ds; | ||||
|             channel_map_playback = channel_map_aio_out_ds; | ||||
|             dest_map = dest_map_aio_ds; | ||||
|  | @ -368,9 +368,9 @@ void HDSPMixerCard::adjustSettings() { | |||
|             meter_map_playback = channel_map_aio_out_ds; | ||||
|             break; | ||||
|         case 2: // QS
 | ||||
|             channels_input = 8; | ||||
|             channels_playback = 10; | ||||
|             channels_output = 10; /* QS 2xAnalog+2xAES+2xSPDIF+2xADAT(SMUX)+2xHeadphones */ | ||||
|             channels_input = 12; | ||||
|             channels_playback = 14; | ||||
|             channels_output = 14; /* QS 2xAnalog+2xAES+2xSPDIF+2xADAT(SMUX)+2xHeadphones+4xAEB */ | ||||
|             channel_map_input = channel_map_aio_in_qs; | ||||
|             channel_map_playback = channel_map_aio_out_qs; | ||||
|             dest_map = dest_map_aio_qs; | ||||
|  |  | |||
|  | @ -87,51 +87,57 @@ static char const *labels_rpm_input[5] = { | |||
|   "Mic" | ||||
| }; | ||||
| 
 | ||||
| static char const *labels_aio_ss_input[14] = { | ||||
|   "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] = { | ||||
| 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", | ||||
|   "PH.L", "PH.R" | ||||
|   "AEB 1", "AEB 2", "AEB 3," "AEB 4" | ||||
| }; | ||||
| 
 | ||||
| static char const *labels_aio_ds_input[10] = { | ||||
|   "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] = { | ||||
| 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", | ||||
|   "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",   | ||||
|   "SP.L", "SP.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", | ||||
|   "SP.L", "SP.R", | ||||
|   "AES.L",  "AES.R", | ||||
|   "A 1", "A 2", | ||||
|   "PH.L", "PH.R", | ||||
|   "AEB 1", "AEB 2", "AEB 3", "AEB 4" | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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", | ||||
|   "AES", | ||||
|   "SPDIF", | ||||
|   "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",  | ||||
|   "AES", | ||||
|   "SPDIF", | ||||
|   "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", | ||||
|   "AES", | ||||
|   "SPDIF", | ||||
|   "A 1+2", | ||||
|   "Phones" | ||||
|   "Phones", | ||||
|   "AEB 1+2", | ||||
|   "AEB 3+4" | ||||
| }; | ||||
| 
 | ||||
| static char const *destinations_mf_ss[10] = { | ||||
|  | @ -318,15 +324,15 @@ void HDSPMixerSelector::setLabels() | |||
|     } else if (HDSPeAIO == type) { | ||||
| 	switch (sm) { | ||||
| 	case 0: | ||||
| 	  max_dest = 8; | ||||
| 	  max_dest = 10; | ||||
| 	  destinations = destinations_aio_ss; | ||||
| 	  break; | ||||
| 	case 1: | ||||
| 	  max_dest = 6; | ||||
| 	  max_dest = 8; | ||||
| 	  destinations = destinations_aio_ds; | ||||
| 	  break; | ||||
| 	case 2: | ||||
| 	  max_dest = 5; | ||||
| 	  max_dest = 7; | ||||
| 	  destinations = destinations_aio_qs; | ||||
| 	  break; | ||||
| 	} | ||||
|  |  | |||
|  | @ -753,12 +753,12 @@ void HDSPMixerWindow::restoreDefaults(int card) | |||
|       num_modes = 3; | ||||
|       break; | ||||
|      case HDSPeAIO: | ||||
|       chnls[0] = 14; | ||||
|       chnls[1] = 10; | ||||
|       chnls[2] = 8; | ||||
|       maxdest[0] = 8; | ||||
|       maxdest[1] = 6; | ||||
|       maxdest[2] = 5; | ||||
|       chnls[0] = 18; | ||||
|       chnls[1] = 14; | ||||
|       chnls[2] = 12; | ||||
|       maxdest[0] = 10; | ||||
|       maxdest[1] = 8; | ||||
|       maxdest[2] = 7; | ||||
|       num_modes = 3; | ||||
|       break; | ||||
|     case HDSPeRayDAT: | ||||
|  |  | |||
|  | @ -247,38 +247,44 @@ char channel_map_raydat_qs[HDSPM_MAX_CHANNELS] = { | |||
| 
 | ||||
| // HDSPe AIO
 | ||||
| 
 | ||||
| char dest_map_aio_ss[8] = { | ||||
| char dest_map_aio_ss[10] = { | ||||
|    0, // Analogue
 | ||||
|    8, // AES
 | ||||
|   10, // SPDIF
 | ||||
|   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
 | ||||
|    8, // AES
 | ||||
|   10, // SPDIF
 | ||||
|   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
 | ||||
|    8, // AES
 | ||||
|   10, // SPDIF
 | ||||
|   12, // ADAT
 | ||||
|    6  // Phone
 | ||||
|    6, // Phone
 | ||||
|    2, // AEB 1+2
 | ||||
|    4  // AEB 3+4
 | ||||
| }; | ||||
| 
 | ||||
| char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = { | ||||
| 	0, 1,			/* line in */ | ||||
| 	8, 9,			/* AES in, */ | ||||
| 	10, 11,			/* SPDIF in */ | ||||
| 	8, 9,			/* aes in, */ | ||||
| 	10, 11,			/* spdif in */ | ||||
| 	12, 13, 14, 15, 16, 17, 18, 19,	/* ADAT in */ | ||||
| 	-1, -1, | ||||
| 	-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, | ||||
|  | @ -288,11 +294,12 @@ char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = { | |||
| 
 | ||||
| char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = { | ||||
| 	0, 1,			/* line out */ | ||||
| 	8, 9,			/* AES out */ | ||||
| 	10, 11,			/* SPDIF out */ | ||||
| 	8, 9,			/* aes out */ | ||||
| 	10, 11,			/* spdif out */ | ||||
| 	12, 13, 14, 15, 16, 17, 18, 19,	/* ADAT 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, | ||||
|  | @ -302,10 +309,11 @@ char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = { | |||
| 
 | ||||
| char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = { | ||||
| 	0, 1,			/* line in */ | ||||
| 	8, 9,			/* AES in */ | ||||
| 	10, 11,			/* SPDIF in */ | ||||
| 	12, 14, 16, 18,		/* ADAT in */ | ||||
| 	-1, -1, -1, -1, -1, -1, | ||||
| 	8, 9,			/* aes in */ | ||||
| 	10, 11,			/* spdif in */ | ||||
| 	12, 14, 16, 18,		/* adat in */ | ||||
| 	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, | ||||
|  | @ -316,11 +324,11 @@ char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = { | |||
| 
 | ||||
| char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = { | ||||
| 	0, 1,			/* line out */ | ||||
| 	8, 9,			/* AES out */ | ||||
| 	10, 11,			/* SPDIF out */ | ||||
| 	12, 14, 16, 18,		/* ADAT out */ | ||||
| 	8, 9,			/* aes out */ | ||||
| 	10, 11,			/* spdif out */ | ||||
| 	12, 14, 16, 18,		/* adat 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, | ||||
|  | @ -331,10 +339,11 @@ char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = { | |||
| 
 | ||||
| char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = { | ||||
| 	0, 1,			/* line in */ | ||||
| 	8, 9,			/* AES in */ | ||||
| 	10, 11,			/* SPDIF in */ | ||||
| 	12, 16,			/* ADAT in */ | ||||
| 	-1, -1, -1, -1, -1, -1, -1, -1, | ||||
| 	8, 9,			/* aes in */ | ||||
| 	10, 11,			/* spdif in */ | ||||
| 	12, 16,			/* adat in */ | ||||
| 	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, | ||||
|  | @ -345,11 +354,12 @@ char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = { | |||
| 
 | ||||
| char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = { | ||||
| 	0, 1,			/* line out */ | ||||
| 	8, 9,			/* AES out */ | ||||
| 	10, 11,			/* SPDIF out */ | ||||
| 	12, 16,			/* ADAT out */ | ||||
| 	8, 9,			/* aes out */ | ||||
| 	10, 11,			/* spdif out */ | ||||
| 	12, 16,			/* adat 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, | ||||
|  |  | |||
|  | @ -112,12 +112,12 @@ extern char channel_map_raydat_qs[HDSPM_MAX_CHANNELS]; | |||
| 
 | ||||
| // 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]; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Adrian Knoth
						Adrian Knoth