1 /* 2 msp3400.h - definition for msp3400 inputs and outputs 3 4 Copyright (C) 2006 Hans Verkuil (hverkuil@xs4all.nl) 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 */ 20 21 #ifndef _MSP3400_H_ 22 #define _MSP3400_H_ 23 24 /* msp3400 routing 25 =============== 26 27 The msp3400 has a complicated routing scheme with many possible 28 combinations. The details are all in the datasheets but I will try 29 to give a short description here. 30 31 Inputs 32 ====== 33 34 There are 1) tuner inputs, 2) I2S inputs, 3) SCART inputs. You will have 35 to select which tuner input to use and which SCART input to use. The 36 selected tuner input, the selected SCART input and all I2S inputs go to 37 the DSP (the tuner input first goes through the demodulator). 38 39 The DSP handles things like volume, bass/treble, balance, and some chips 40 have support for surround sound. It has several outputs: MAIN, AUX, I2S 41 and SCART1/2. Each output can select which DSP input to use. So the MAIN 42 output can select the tuner input while at the same time the SCART1 output 43 uses the I2S input. 44 45 Outputs 46 ======= 47 48 Most DSP outputs are also the outputs of the msp3400. However, the SCART 49 outputs of the msp3400 can select which input to use: either the SCART1 or 50 SCART2 output from the DSP, or the msp3400 SCART inputs, thus completely 51 bypassing the DSP. 52 53 Summary 54 ======= 55 56 So to specify a complete routing scheme for the msp3400 you will have to 57 specify in the 'input' arg of the s_routing function: 58 59 1) which tuner input to use 60 2) which SCART input to use 61 3) which DSP input to use for each DSP output 62 63 And in the 'output' arg of the s_routing function you specify: 64 65 1) which SCART input to use for each SCART output 66 67 Depending on how the msp is wired to the other components you can 68 ignore or mute certain inputs or outputs. 69 70 Also, depending on the msp version only a subset of the inputs or 71 outputs may be present. At the end of this header some tables are 72 added containing a list of what is available for each msp version. 73 */ 74 75 /* Inputs to the DSP unit: two independent selections have to be made: 76 1) the tuner (SIF) input 77 2) the SCART input 78 Bits 0-2 are used for the SCART input select, bit 3 is used for the tuner 79 input, bits 4-7 are reserved. 80 */ 81 82 /* SCART input to DSP selection */ 83 #define MSP_IN_SCART1 0 /* Pin SC1_IN */ 84 #define MSP_IN_SCART2 1 /* Pin SC2_IN */ 85 #define MSP_IN_SCART3 2 /* Pin SC3_IN */ 86 #define MSP_IN_SCART4 3 /* Pin SC4_IN */ 87 #define MSP_IN_MONO 6 /* Pin MONO_IN */ 88 #define MSP_IN_MUTE 7 /* Mute DSP input */ 89 #define MSP_SCART_TO_DSP(in) (in) 90 /* Tuner input to demodulator and DSP selection */ 91 #define MSP_IN_TUNER1 0 /* Analog Sound IF input pin ANA_IN1 */ 92 #define MSP_IN_TUNER2 1 /* Analog Sound IF input pin ANA_IN2 */ 93 #define MSP_TUNER_TO_DSP(in) ((in) << 3) 94 95 /* The msp has up to 5 DSP outputs, each output can independently select 96 a DSP input. 97 98 The DSP outputs are: loudspeaker output (aka MAIN), headphones output 99 (aka AUX), SCART1 DA output, SCART2 DA output and an I2S output. 100 There also is a quasi-peak detector output, but that is not used by 101 this driver and is set to the same input as the loudspeaker output. 102 Not all outputs are supported by all msp models. Setting the input 103 of an unsupported output will be ignored by the driver. 104 105 There are up to 16 DSP inputs to choose from, so each output is 106 assigned 4 bits. 107 108 Note: the 44x8G can mix two inputs and feed the result back to the 109 DSP. This is currently not implemented. Also not implemented is the 110 multi-channel capable I2S3 input of the 44x0G. If someone can demonstrate 111 a need for one of those features then additional support can be added. */ 112 #define MSP_DSP_IN_TUNER 0 /* Tuner DSP input */ 113 #define MSP_DSP_IN_SCART 2 /* SCART DSP input */ 114 #define MSP_DSP_IN_I2S1 5 /* I2S1 DSP input */ 115 #define MSP_DSP_IN_I2S2 6 /* I2S2 DSP input */ 116 #define MSP_DSP_IN_I2S3 7 /* I2S3 DSP input */ 117 #define MSP_DSP_IN_MAIN_AVC 11 /* MAIN AVC processed DSP input */ 118 #define MSP_DSP_IN_MAIN 12 /* MAIN DSP input */ 119 #define MSP_DSP_IN_AUX 13 /* AUX DSP input */ 120 #define MSP_DSP_TO_MAIN(in) ((in) << 4) 121 #define MSP_DSP_TO_AUX(in) ((in) << 8) 122 #define MSP_DSP_TO_SCART1(in) ((in) << 12) 123 #define MSP_DSP_TO_SCART2(in) ((in) << 16) 124 #define MSP_DSP_TO_I2S(in) ((in) << 20) 125 126 /* Output SCART select: the SCART outputs can select which input 127 to use. */ 128 #define MSP_SC_IN_SCART1 0 /* SCART1 input, bypassing the DSP */ 129 #define MSP_SC_IN_SCART2 1 /* SCART2 input, bypassing the DSP */ 130 #define MSP_SC_IN_SCART3 2 /* SCART3 input, bypassing the DSP */ 131 #define MSP_SC_IN_SCART4 3 /* SCART4 input, bypassing the DSP */ 132 #define MSP_SC_IN_DSP_SCART1 4 /* DSP SCART1 input */ 133 #define MSP_SC_IN_DSP_SCART2 5 /* DSP SCART2 input */ 134 #define MSP_SC_IN_MONO 6 /* MONO input, bypassing the DSP */ 135 #define MSP_SC_IN_MUTE 7 /* MUTE output */ 136 #define MSP_SC_TO_SCART1(in) (in) 137 #define MSP_SC_TO_SCART2(in) ((in) << 4) 138 139 /* Shortcut macros */ 140 #define MSP_INPUT(sc, t, main_aux_src, sc_i2s_src) \ 141 (MSP_SCART_TO_DSP(sc) | \ 142 MSP_TUNER_TO_DSP(t) | \ 143 MSP_DSP_TO_MAIN(main_aux_src) | \ 144 MSP_DSP_TO_AUX(main_aux_src) | \ 145 MSP_DSP_TO_SCART1(sc_i2s_src) | \ 146 MSP_DSP_TO_SCART2(sc_i2s_src) | \ 147 MSP_DSP_TO_I2S(sc_i2s_src)) 148 #define MSP_INPUT_DEFAULT MSP_INPUT(MSP_IN_SCART1, MSP_IN_TUNER1, \ 149 MSP_DSP_IN_TUNER, MSP_DSP_IN_TUNER) 150 #define MSP_OUTPUT(sc) \ 151 (MSP_SC_TO_SCART1(sc) | \ 152 MSP_SC_TO_SCART2(sc)) 153 /* This equals the RESET position of the msp3400 ACB register */ 154 #define MSP_OUTPUT_DEFAULT (MSP_SC_TO_SCART1(MSP_SC_IN_SCART3) | \ 155 MSP_SC_TO_SCART2(MSP_SC_IN_DSP_SCART1)) 156 157 /* Tuner inputs vs. msp version */ 158 /* Chip TUNER_1 TUNER_2 159 ------------------------- 160 msp34x0b y y 161 msp34x0c y y 162 msp34x0d y y 163 msp34x5d y n 164 msp34x7d y n 165 msp34x0g y y 166 msp34x1g y y 167 msp34x2g y y 168 msp34x5g y n 169 msp34x7g y n 170 msp44x0g y y 171 msp44x8g y y 172 */ 173 174 /* SCART inputs vs. msp version */ 175 /* Chip SC1 SC2 SC3 SC4 176 ------------------------- 177 msp34x0b y y y n 178 msp34x0c y y y n 179 msp34x0d y y y y 180 msp34x5d y y n n 181 msp34x7d y n n n 182 msp34x0g y y y y 183 msp34x1g y y y y 184 msp34x2g y y y y 185 msp34x5g y y n n 186 msp34x7g y n n n 187 msp44x0g y y y y 188 msp44x8g y y y y 189 */ 190 191 /* DSP inputs vs. msp version (tuner and SCART inputs are always available) */ 192 /* Chip I2S1 I2S2 I2S3 MAIN_AVC MAIN AUX 193 ------------------------------------------ 194 msp34x0b y n n n n n 195 msp34x0c y y n n n n 196 msp34x0d y y n n n n 197 msp34x5d y y n n n n 198 msp34x7d n n n n n n 199 msp34x0g y y n n n n 200 msp34x1g y y n n n n 201 msp34x2g y y n y y y 202 msp34x5g y y n n n n 203 msp34x7g n n n n n n 204 msp44x0g y y y y y y 205 msp44x8g y y y n n n 206 */ 207 208 /* DSP outputs vs. msp version */ 209 /* Chip MAIN AUX SCART1 SCART2 I2S 210 ------------------------------------ 211 msp34x0b y y y n y 212 msp34x0c y y y n y 213 msp34x0d y y y y y 214 msp34x5d y n y n y 215 msp34x7d y n y n n 216 msp34x0g y y y y y 217 msp34x1g y y y y y 218 msp34x2g y y y y y 219 msp34x5g y n y n y 220 msp34x7g y n y n n 221 msp44x0g y y y y y 222 msp44x8g y y y y y 223 */ 224 225 #endif /* MSP3400_H */ 226