Blame view

include/media/msp3400.h 8.29 KB
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  /*
      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
5325b4272   Hans Verkuil   V4L/DVB (11380): ...
57
     specify in the 'input' arg of the s_routing function:
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
58
59
60
61
  
     1) which tuner input to use
     2) which SCART input to use
     3) which DSP input to use for each DSP output
5325b4272   Hans Verkuil   V4L/DVB (11380): ...
62
     And in the 'output' arg of the s_routing function you specify:
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  
     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 */
07151724a   Hans Verkuil   V4L/DVB (3702): M...
82
83
84
85
  #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 */
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
86
87
88
89
  #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 */
07151724a   Hans Verkuil   V4L/DVB (3702): M...
90
91
  #define MSP_IN_TUNER1 		0  /* Analog Sound IF input pin ANA_IN1 */
  #define MSP_IN_TUNER2 		1  /* Analog Sound IF input pin ANA_IN2 */
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  #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. */
07151724a   Hans Verkuil   V4L/DVB (3702): M...
111
112
113
114
115
116
117
118
  #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 */
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
119
120
121
122
123
124
125
126
  #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. */
07151724a   Hans Verkuil   V4L/DVB (3702): M...
127
128
129
130
131
132
133
134
135
136
  #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)
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
137
138
139
140
141
142
143
144
145
146
  
  /* 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))
07151724a   Hans Verkuil   V4L/DVB (3702): M...
147
148
  #define MSP_INPUT_DEFAULT MSP_INPUT(MSP_IN_SCART1, MSP_IN_TUNER1, \
  				    MSP_DSP_IN_TUNER, MSP_DSP_IN_TUNER)
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
149
  #define MSP_OUTPUT(sc) \
07151724a   Hans Verkuil   V4L/DVB (3702): M...
150
151
  	(MSP_SC_TO_SCART1(sc) | \
  	 MSP_SC_TO_SCART2(sc))
2474ed444   Hans Verkuil   V4L/DVB (3582): I...
152
  /* This equals the RESET position of the msp3400 ACB register */
07151724a   Hans Verkuil   V4L/DVB (3702): M...
153
154
  #define MSP_OUTPUT_DEFAULT (MSP_SC_TO_SCART1(MSP_SC_IN_SCART3) | \
  			    MSP_SC_TO_SCART2(MSP_SC_IN_DSP_SCART1))
49965a80a   Hans Verkuil   V4L/DVB (3581): A...
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
  
  /* 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 */