| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | /*
 | 
					
						
							|  |  |  |     msp3400.h - definition for msp3400 inputs and outputs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Copyright (C) 2006 Hans Verkuil (hverkuil@xs4all.nl) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |     it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |     the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |     (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |     GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |     along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _MSP3400_H_
 | 
					
						
							|  |  |  | #define _MSP3400_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* msp3400 routing
 | 
					
						
							|  |  |  |    =============== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The msp3400 has a complicated routing scheme with many possible | 
					
						
							|  |  |  |    combinations. The details are all in the datasheets but I will try | 
					
						
							|  |  |  |    to give a short description here. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Inputs | 
					
						
							|  |  |  |    ====== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    There are 1) tuner inputs, 2) I2S inputs, 3) SCART inputs. You will have | 
					
						
							|  |  |  |    to select which tuner input to use and which SCART input to use. The | 
					
						
							|  |  |  |    selected tuner input, the selected SCART input and all I2S inputs go to | 
					
						
							|  |  |  |    the DSP (the tuner input first goes through the demodulator). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The DSP handles things like volume, bass/treble, balance, and some chips | 
					
						
							|  |  |  |    have support for surround sound. It has several outputs: MAIN, AUX, I2S | 
					
						
							|  |  |  |    and SCART1/2. Each output can select which DSP input to use. So the MAIN | 
					
						
							|  |  |  |    output can select the tuner input while at the same time the SCART1 output | 
					
						
							|  |  |  |    uses the I2S input. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Outputs | 
					
						
							|  |  |  |    ======= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Most DSP outputs are also the outputs of the msp3400. However, the SCART | 
					
						
							|  |  |  |    outputs of the msp3400 can select which input to use: either the SCART1 or | 
					
						
							|  |  |  |    SCART2 output from the DSP, or the msp3400 SCART inputs, thus completely | 
					
						
							|  |  |  |    bypassing the DSP. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Summary | 
					
						
							|  |  |  |    ======= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    So to specify a complete routing scheme for the msp3400 you will have to | 
					
						
							| 
									
										
										
										
											2009-04-02 11:26:22 -03:00
										 |  |  |    specify in the 'input' arg of the s_routing function: | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  |    1) which tuner input to use | 
					
						
							|  |  |  |    2) which SCART input to use | 
					
						
							|  |  |  |    3) which DSP input to use for each DSP output | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-02 11:26:22 -03:00
										 |  |  |    And in the 'output' arg of the s_routing function you specify: | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  |    1) which SCART input to use for each SCART output | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Depending on how the msp is wired to the other components you can | 
					
						
							|  |  |  |    ignore or mute certain inputs or outputs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Also, depending on the msp version only a subset of the inputs or | 
					
						
							|  |  |  |    outputs may be present. At the end of this header some tables are | 
					
						
							|  |  |  |    added containing a list of what is available for each msp version. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Inputs to the DSP unit: two independent selections have to be made:
 | 
					
						
							|  |  |  |    1) the tuner (SIF) input | 
					
						
							|  |  |  |    2) the SCART input | 
					
						
							|  |  |  |    Bits 0-2 are used for the SCART input select, bit 3 is used for the tuner | 
					
						
							|  |  |  |    input, bits 4-7 are reserved. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* SCART input to DSP selection */ | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | #define MSP_IN_SCART1  		0  /* Pin SC1_IN */
 | 
					
						
							|  |  |  | #define MSP_IN_SCART2  		1  /* Pin SC2_IN */
 | 
					
						
							|  |  |  | #define MSP_IN_SCART3  		2  /* Pin SC3_IN */
 | 
					
						
							|  |  |  | #define MSP_IN_SCART4  		3  /* Pin SC4_IN */
 | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | #define MSP_IN_MONO     	6  /* Pin MONO_IN */
 | 
					
						
							|  |  |  | #define MSP_IN_MUTE     	7  /* Mute DSP input */
 | 
					
						
							|  |  |  | #define MSP_SCART_TO_DSP(in) 	(in)
 | 
					
						
							|  |  |  | /* Tuner input to demodulator and DSP selection */ | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | #define MSP_IN_TUNER1 		0  /* Analog Sound IF input pin ANA_IN1 */
 | 
					
						
							|  |  |  | #define MSP_IN_TUNER2 		1  /* Analog Sound IF input pin ANA_IN2 */
 | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | #define MSP_TUNER_TO_DSP(in) 	((in) << 3)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* The msp has up to 5 DSP outputs, each output can independently select
 | 
					
						
							|  |  |  |    a DSP input. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The DSP outputs are: loudspeaker output (aka MAIN), headphones output | 
					
						
							|  |  |  |    (aka AUX), SCART1 DA output, SCART2 DA output and an I2S output. | 
					
						
							|  |  |  |    There also is a quasi-peak detector output, but that is not used by | 
					
						
							|  |  |  |    this driver and is set to the same input as the loudspeaker output. | 
					
						
							|  |  |  |    Not all outputs are supported by all msp models. Setting the input | 
					
						
							|  |  |  |    of an unsupported output will be ignored by the driver. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    There are up to 16 DSP inputs to choose from, so each output is | 
					
						
							|  |  |  |    assigned 4 bits. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Note: the 44x8G can mix two inputs and feed the result back to the | 
					
						
							|  |  |  |    DSP. This is currently not implemented. Also not implemented is the | 
					
						
							|  |  |  |    multi-channel capable I2S3 input of the 44x0G. If someone can demonstrate | 
					
						
							|  |  |  |    a need for one of those features then additional support can be added. */ | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | #define MSP_DSP_IN_TUNER 	0  /* Tuner DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_SCART 	2  /* SCART DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_I2S1 	5  /* I2S1 DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_I2S2 	6  /* I2S2 DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_I2S3    	7  /* I2S3 DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_MAIN_AVC 	11 /* MAIN AVC processed DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_MAIN 	12 /* MAIN DSP input */
 | 
					
						
							|  |  |  | #define MSP_DSP_IN_AUX 		13 /* AUX DSP input */
 | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | #define MSP_DSP_TO_MAIN(in)   	((in) << 4)
 | 
					
						
							|  |  |  | #define MSP_DSP_TO_AUX(in)    	((in) << 8)
 | 
					
						
							|  |  |  | #define MSP_DSP_TO_SCART1(in) 	((in) << 12)
 | 
					
						
							|  |  |  | #define MSP_DSP_TO_SCART2(in) 	((in) << 16)
 | 
					
						
							|  |  |  | #define MSP_DSP_TO_I2S(in)    	((in) << 20)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Output SCART select: the SCART outputs can select which input
 | 
					
						
							|  |  |  |    to use. */ | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | #define MSP_SC_IN_SCART1 	0  /* SCART1 input, bypassing the DSP */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_SCART2 	1  /* SCART2 input, bypassing the DSP */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_SCART3 	2  /* SCART3 input, bypassing the DSP */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_SCART4 	3  /* SCART4 input, bypassing the DSP */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_DSP_SCART1 	4  /* DSP SCART1 input */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_DSP_SCART2 	5  /* DSP SCART2 input */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_MONO 		6  /* MONO input, bypassing the DSP */
 | 
					
						
							|  |  |  | #define MSP_SC_IN_MUTE 		7  /* MUTE output */
 | 
					
						
							|  |  |  | #define MSP_SC_TO_SCART1(in)	(in)
 | 
					
						
							|  |  |  | #define MSP_SC_TO_SCART2(in)	((in) << 4)
 | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Shortcut macros */ | 
					
						
							|  |  |  | #define MSP_INPUT(sc, t, main_aux_src, sc_i2s_src) \
 | 
					
						
							|  |  |  | 	(MSP_SCART_TO_DSP(sc) | \ | 
					
						
							|  |  |  | 	 MSP_TUNER_TO_DSP(t) | \ | 
					
						
							|  |  |  | 	 MSP_DSP_TO_MAIN(main_aux_src) | \ | 
					
						
							|  |  |  | 	 MSP_DSP_TO_AUX(main_aux_src) | \ | 
					
						
							|  |  |  | 	 MSP_DSP_TO_SCART1(sc_i2s_src) | \ | 
					
						
							|  |  |  | 	 MSP_DSP_TO_SCART2(sc_i2s_src) | \ | 
					
						
							|  |  |  | 	 MSP_DSP_TO_I2S(sc_i2s_src)) | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | #define MSP_INPUT_DEFAULT MSP_INPUT(MSP_IN_SCART1, MSP_IN_TUNER1, \
 | 
					
						
							|  |  |  | 				    MSP_DSP_IN_TUNER, MSP_DSP_IN_TUNER) | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | #define MSP_OUTPUT(sc) \
 | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | 	(MSP_SC_TO_SCART1(sc) | \ | 
					
						
							|  |  |  | 	 MSP_SC_TO_SCART2(sc)) | 
					
						
							| 
									
										
										
										
											2006-03-19 12:35:57 -03:00
										 |  |  | /* This equals the RESET position of the msp3400 ACB register */ | 
					
						
							| 
									
										
										
										
											2006-04-01 18:03:23 -03:00
										 |  |  | #define MSP_OUTPUT_DEFAULT (MSP_SC_TO_SCART1(MSP_SC_IN_SCART3) | \
 | 
					
						
							|  |  |  | 			    MSP_SC_TO_SCART2(MSP_SC_IN_DSP_SCART1)) | 
					
						
							| 
									
										
										
										
											2006-03-19 08:45:38 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Tuner inputs vs. msp version */ | 
					
						
							|  |  |  | /* Chip      TUNER_1   TUNER_2
 | 
					
						
							|  |  |  |    ------------------------- | 
					
						
							|  |  |  |    msp34x0b  y         y | 
					
						
							|  |  |  |    msp34x0c  y         y | 
					
						
							|  |  |  |    msp34x0d  y         y | 
					
						
							|  |  |  |    msp34x5d  y         n | 
					
						
							|  |  |  |    msp34x7d  y         n | 
					
						
							|  |  |  |    msp34x0g  y         y | 
					
						
							|  |  |  |    msp34x1g  y         y | 
					
						
							|  |  |  |    msp34x2g  y         y | 
					
						
							|  |  |  |    msp34x5g  y         n | 
					
						
							|  |  |  |    msp34x7g  y         n | 
					
						
							|  |  |  |    msp44x0g  y         y | 
					
						
							|  |  |  |    msp44x8g  y         y | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* SCART inputs vs. msp version */ | 
					
						
							|  |  |  | /* Chip      SC1 SC2 SC3 SC4
 | 
					
						
							|  |  |  |    ------------------------- | 
					
						
							|  |  |  |    msp34x0b  y   y   y   n | 
					
						
							|  |  |  |    msp34x0c  y   y   y   n | 
					
						
							|  |  |  |    msp34x0d  y   y   y   y | 
					
						
							|  |  |  |    msp34x5d  y   y   n   n | 
					
						
							|  |  |  |    msp34x7d  y   n   n   n | 
					
						
							|  |  |  |    msp34x0g  y   y   y   y | 
					
						
							|  |  |  |    msp34x1g  y   y   y   y | 
					
						
							|  |  |  |    msp34x2g  y   y   y   y | 
					
						
							|  |  |  |    msp34x5g  y   y   n   n | 
					
						
							|  |  |  |    msp34x7g  y   n   n   n | 
					
						
							|  |  |  |    msp44x0g  y   y   y   y | 
					
						
							|  |  |  |    msp44x8g  y   y   y   y | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* DSP inputs vs. msp version (tuner and SCART inputs are always available) */ | 
					
						
							|  |  |  | /* Chip      I2S1 I2S2 I2S3 MAIN_AVC MAIN AUX
 | 
					
						
							|  |  |  |    ------------------------------------------ | 
					
						
							|  |  |  |    msp34x0b  y    n    n    n        n    n | 
					
						
							|  |  |  |    msp34x0c  y    y    n    n        n    n | 
					
						
							|  |  |  |    msp34x0d  y    y    n    n        n    n | 
					
						
							|  |  |  |    msp34x5d  y    y    n    n        n    n | 
					
						
							|  |  |  |    msp34x7d  n    n    n    n        n    n | 
					
						
							|  |  |  |    msp34x0g  y    y    n    n        n    n | 
					
						
							|  |  |  |    msp34x1g  y    y    n    n        n    n | 
					
						
							|  |  |  |    msp34x2g  y    y    n    y        y    y | 
					
						
							|  |  |  |    msp34x5g  y    y    n    n        n    n | 
					
						
							|  |  |  |    msp34x7g  n    n    n    n        n    n | 
					
						
							|  |  |  |    msp44x0g  y    y    y    y        y    y | 
					
						
							|  |  |  |    msp44x8g  y    y    y    n        n    n | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* DSP outputs vs. msp version */ | 
					
						
							|  |  |  | /* Chip      MAIN AUX SCART1 SCART2 I2S
 | 
					
						
							|  |  |  |    ------------------------------------ | 
					
						
							|  |  |  |    msp34x0b  y    y   y      n      y | 
					
						
							|  |  |  |    msp34x0c  y    y   y      n      y | 
					
						
							|  |  |  |    msp34x0d  y    y   y      y      y | 
					
						
							|  |  |  |    msp34x5d  y    n   y      n      y | 
					
						
							|  |  |  |    msp34x7d  y    n   y      n      n | 
					
						
							|  |  |  |    msp34x0g  y    y   y      y      y | 
					
						
							|  |  |  |    msp34x1g  y    y   y      y      y | 
					
						
							|  |  |  |    msp34x2g  y    y   y      y      y | 
					
						
							|  |  |  |    msp34x5g  y    n   y      n      y | 
					
						
							|  |  |  |    msp34x7g  y    n   y      n      n | 
					
						
							|  |  |  |    msp44x0g  y    y   y      y      y | 
					
						
							|  |  |  |    msp44x8g  y    y   y      y      y | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* MSP3400_H */
 | 
					
						
							|  |  |  | 
 |