audio-preprocessing-fw: add UART_printf, change the CCS project file using relative...
[processor-sdk/audio-preprocessing.git] / realtime_demo_bios / k2g / src / audio_cfg.c
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