1 /*\r
2 * Copyright (c) 2015, Texas Instruments Incorporated\r
3 * All rights reserved.\r
4 *\r
5 * Redistribution and use in source and binary forms, with or without\r
6 * modification, are permitted provided that the following conditions\r
7 * are met:\r
8 *\r
9 * * Redistributions of source code must retain the above copyright\r
10 * notice, this list of conditions and the following disclaimer.\r
11 *\r
12 * * Redistributions in binary form must reproduce the above copyright\r
13 * notice, this list of conditions and the following disclaimer in the\r
14 * documentation and/or other materials provided with the distribution.\r
15 *\r
16 * * Neither the name of Texas Instruments Incorporated nor the names of\r
17 * its contributors may be used to endorse or promote products derived\r
18 * from this software without specific prior written permission.\r
19 *\r
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
31 *\r
32 */\r
33 \r
34 /**\r
35 * \file audio_dc_config.c\r
36 *\r
37 * \brief Configures Audio daughter card HW modules\r
38 *\r
39 */\r
40 \r
41 #include "audio_cfg.h"\r
42 \r
43 #include "ti/drv/uart/UART_stdio.h"\r
44 \r
45 /**\r
46 * \brief Initializes ADC module\r
47 *\r
48 * This function initializes and configures the ADC modules\r
49 * on audio daughter card\r
50 *\r
51 * \param devId [IN] ADC Device Id\r
52 * \param config [IN] ADC configuration parameters\r
53 *\r
54 * \return Cmb_EOK on Success or error code\r
55 */\r
56 Cmb_STATUS audioAdcConfig(CmbAdcDevId devId, CmbAdcConfig *config)\r
57 {\r
58 Cmb_STATUS status;\r
59 \r
60 if(config == NULL)\r
61 {\r
62 IFPRINT(cmb_write("Invalid Inputs\n"));\r
63 IFPRINT(UART_printf("Invalid Inputs\n"));\r
64 return (Cmb_EINVALID);\r
65 }\r
66 \r
67 /* Initialize all the HW instances of ADC */\r
68 //status = platformAudioAdcInit(devId);\r
69 status = (Cmb_STATUS)cmb_AudioAdcInit((CmbAdcDevId)devId);\r
70 if(status != Cmb_EOK)\r
71 {\r
72 IFPRINT(cmb_write("audioAdcConfig : platformaudioAdcConfig Failed\n"));\r
73 IFPRINT(UART_printf("audioAdcConfig : platformaudioAdcConfig Failed\n"));\r
74 return (status);\r
75 }\r
76 \r
77 /* Set ADC channel gain */\r
78 //status = platformAudioAdcSetGain(devId, ADC_CH_ALL, config->gain);\r
79 status = (Cmb_STATUS)cmb_AudioAdcSetGain((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH_ALL, config->gain);\r
80 if(status != Cmb_EOK)\r
81 {\r
82 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetGain Failed\n"));\r
83 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcSetGain Failed\n"));\r
84 return (status);\r
85 }\r
86 \r
87 /* Configure Left input mux for ADC1L */\r
88 //status = platformAudioAdcSetLeftInputMux(devId, ADC_CH1_LEFT, config->adc1LMux);\r
89 status = (Cmb_STATUS)cmb_AudioAdcSetLeftInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH1_LEFT, (CmbAdcLeftInputMux)(config->adc1LMux));\r
90 if(status != Cmb_EOK)\r
91 {\r
92 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n"));\r
93 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n"));\r
94 return (status);\r
95 }\r
96 \r
97 /* Configure Left input mux for ADC2L*/\r
98 //status = platformAudioAdcSetLeftInputMux(devId, ADC_CH2_LEFT, config->adc2LMux);\r
99 status = (Cmb_STATUS)cmb_AudioAdcSetLeftInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH2_LEFT, (CmbAdcLeftInputMux)(config->adc2LMux));\r
100 if(status != Cmb_EOK)\r
101 {\r
102 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n"));\r
103 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n"));\r
104 return (status);\r
105 }\r
106 \r
107 /* Configure Right input mux for ADC1R */\r
108 //status = platformAudioAdcSetRightInputMux(devId, ADC_CH1_RIGHT, config->adc1RMux);\r
109 status = (Cmb_STATUS)cmb_AudioAdcSetRightInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH1_RIGHT, (CmbAdcRightInputMux)(config->adc1RMux));\r
110 if(status != Cmb_EOK)\r
111 {\r
112 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n"));\r
113 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n"));\r
114 return (status);\r
115 }\r
116 \r
117 /* Configure Right input mux for ADC2R */\r
118 //status = platformAudioAdcSetRightInputMux(devId, ADC_CH2_RIGHT, config->adc2RMux);\r
119 status = (Cmb_STATUS)cmb_AudioAdcSetRightInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH2_RIGHT, (CmbAdcRightInputMux)(config->adc2RMux));\r
120 if(status != Cmb_EOK)\r
121 {\r
122 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n"));\r
123 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n"));\r
124 return (status);\r
125 }\r
126 \r
127 /* Configure audio data format */\r
128 //status = platformAudioAdcDataConfig(devId, config->wlen, config->format);\r
129 status = (Cmb_STATUS)cmb_AudioAdcDataConfig((CmbAdcDevId)devId, (CmbAdcRxWordLen)(config->wlen), (CmbAdcDataFormat)(config->format));\r
130 if(status != Cmb_EOK)\r
131 {\r
132 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcDataConfig Failed\n"));\r
133 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcDataConfig Failed\n"));\r
134 return (status);\r
135 }\r
136 \r
137 /* Configure all the interrupts */\r
138 //status = platformAudioAdcConfigIntr(devId, ADC_INTR_ALL, config->intEnable);\r
139 status = (Cmb_STATUS)cmb_AudioAdcConfigIntr((CmbAdcDevId)devId, (CmbAdcIntr)CMB_ADC_INTR_ALL, config->intEnable);\r
140 if(status != Cmb_EOK)\r
141 {\r
142 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcConfigIntr Failed\n"));\r
143 IFPRINT(UART_printf("audioAdcConfig : platformAudioAdcConfigIntr Failed\n"));\r
144 return (status);\r
145 }\r
146 \r
147 return (status);\r
148 }\r
149 \r
150 /**\r
151 * \brief Initializes DAC module\r
152 *\r
153 * This function initializes and configures the DAC modules\r
154 * on audio daughter card\r
155 *\r
156 * \param devId [IN] DAC Device Id\r
157 * \param config [IN] DAC configuration parameters\r
158 *\r
159 * \return Cmb_EOK on Success or error code\r
160 */\r
161 #if CMB_AUDIO_DAC\r
162 Cmb_STATUS audioDacConfig(CmbDacDevId devId, CmbDacConfig *config)\r
163 {\r
164 Cmb_STATUS status;\r
165 \r
166 if(config == NULL)\r
167 {\r
168 IFPRINT(cmb_write("Invalid Inputs\n"));\r
169 IFPRINT(UART_printf("Invalid Inputs\n"));\r
170 return (Cmb_EINVALID);\r
171 }\r
172 \r
173 /* Initialize Audio DAC */\r
174 //status = platformAudioDacInit(devId);\r
175 status = (Cmb_STATUS)cmb_AudioDacInit((CmbDacDevId)devId);\r
176 if(status != Cmb_EOK)\r
177 {\r
178 IFPRINT(cmb_write("audioDacConfig : platformaudioDacConfig Failed\n"));\r
179 IFPRINT(UART_printf("audioDacConfig : platformaudioDacConfig Failed\n"));\r
180 return (status);\r
181 }\r
182 \r
183 #if 0\r
184 /* Configure AMUTE control event */\r
185 //status = platformAudioDacAmuteCtrl(devId, config->amuteCtrl, config->amuteEnable);\r
186 status = (Cmb_STATUS)cmb_AudioDacAmuteCtrl((CmbDacDevId)devId, (CmbDacAmuteCtrl)(config->amuteCtrl), config->amuteEnable);\r
187 if(status != Cmb_EOK)\r
188 {\r
189 IFPRINT(cmb_write("audioDacConfig : platformAudioDacAmuteCtrl Failed\n"));\r
190 return (status);\r
191 }\r
192 \r
193 /* Set sampling mode */\r
194 //status = platformAudioDacSetSamplingMode(devId, config->samplingMode);\r
195 status = (Cmb_STATUS)cmb_AudioDacSetSamplingMode((CmbDacDevId)devId, (CmbDacSamplingMode)(config->samplingMode));\r
196 if(status != Cmb_EOK)\r
197 {\r
198 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetSamplingMode Failed\n"));\r
199 return (status);\r
200 }\r
201 \r
202 /* Set data format */\r
203 //status = platformAudioDacSetDataFormat(devId, config->dataFormat);\r
204 status = (Cmb_STATUS)cmb_AudioDacSetDataFormat((CmbDacDevId)devId, (CmbDacDataFormat)(config->dataFormat));\r
205 if(status != Cmb_EOK)\r
206 {\r
207 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetDataFormat Failed\n"));\r
208 return (status);\r
209 }\r
210 \r
211 /* Enable soft mute control */\r
212 //status = platformAudioDacSoftMuteCtrl(devId, DAC_CHAN_ALL, config->softMuteEnable);\r
213 status = (Cmb_STATUS)cmb_AudioDacSoftMuteCtrl((CmbDacDevId)devId, (CmbDacChanId)CMB_DAC_CHAN_ALL, config->softMuteEnable);\r
214 if(status != Cmb_EOK)\r
215 {\r
216 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSoftMuteCtrl Failed\n"));\r
217 return (status);\r
218 }\r
219 \r
220 /* Set attenuation mode */\r
221 //status = platformAudioDacSetAttnMode(devId, config->attnMode);\r
222 status = (Cmb_STATUS)cmb_AudioDacSetAttnMode((CmbDacDevId)devId, (CmbDacAttnMode)(config->attnMode));\r
223 if(status != Cmb_EOK)\r
224 {\r
225 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetAttnMode Failed\n"));\r
226 return (status);\r
227 }\r
228 \r
229 /* Set De-emphasis control */\r
230 //status = platformAudioDacDeempCtrl(devId, config->deempCtrl);\r
231 status = (Cmb_STATUS)cmb_AudioDacDeempCtrl((CmbDacDevId)devId, (CmbDacDeempCtrl)(config->deempCtrl));\r
232 if(status != Cmb_EOK)\r
233 {\r
234 IFPRINT(cmb_write("audioDacConfig : platformAudioDacDeempCtrl Failed\n"));\r
235 return (status);\r
236 }\r
237 \r
238 /* Set DAC volume */\r
239 //status = platformAudioDacSetVolume(devId, DAC_CHAN_ALL, config->volume);\r
240 status = (Cmb_STATUS)cmb_AudioDacSetVolume((CmbDacDevId)devId, (CmbDacChanId)CMB_DAC_CHAN_ALL, config->volume);\r
241 if(status != Cmb_EOK)\r
242 {\r
243 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetVolume Failed\n"));\r
244 return (status);\r
245 }\r
246 #endif\r
247 return (status);\r
248 }\r
249 #endif\r
250 /* Nothing past this point */\r