4239f5ecc2acee81dfd57ed162395ceccdcdf412
[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 /**\r
44  *  \brief    Initializes ADC module\r
45  *\r
46  *  This function initializes and configures the ADC modules\r
47  *  on audio daughter card\r
48  *\r
49  *  \param     devId  [IN]  ADC Device Id\r
50  *  \param     config [IN]  ADC configuration parameters\r
51  *\r
52  *  \return    Cmb_EOK on Success or error code\r
53  */\r
54 Cmb_STATUS audioAdcConfig(CmbAdcDevId  devId, CmbAdcConfig *config)\r
55 {\r
56         Cmb_STATUS status;\r
57 \r
58         if(config == NULL)\r
59         {\r
60                 IFPRINT(cmb_write("Invalid Inputs\n"));\r
61                 return (Cmb_EINVALID);\r
62         }\r
63 \r
64         /* Initialize all the HW instances of ADC */\r
65         //status = platformAudioAdcInit(devId);\r
66         status = (Cmb_STATUS)cmb_AudioAdcInit((CmbAdcDevId)devId);\r
67         if(status != Cmb_EOK)\r
68         {\r
69                 IFPRINT(cmb_write("audioAdcConfig : platformaudioAdcConfig Failed\n"));\r
70                 return (status);\r
71         }\r
72 \r
73         /* Set ADC channel gain */\r
74         //status = platformAudioAdcSetGain(devId, ADC_CH_ALL, config->gain);\r
75     status = (Cmb_STATUS)cmb_AudioAdcSetGain((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH_ALL, config->gain);\r
76         if(status != Cmb_EOK)\r
77         {\r
78                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetGain Failed\n"));\r
79                 return (status);\r
80         }\r
81 \r
82         /* Configure Left input mux for ADC1L */\r
83         //status = platformAudioAdcSetLeftInputMux(devId, ADC_CH1_LEFT, config->adc1LMux);\r
84     status = (Cmb_STATUS)cmb_AudioAdcSetLeftInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH1_LEFT, (CmbAdcLeftInputMux)(config->adc1LMux));\r
85         if(status != Cmb_EOK)\r
86         {\r
87                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n"));\r
88                 return (status);\r
89         }\r
90 \r
91         /* Configure Left input mux for ADC2L*/\r
92         //status = platformAudioAdcSetLeftInputMux(devId, ADC_CH2_LEFT, config->adc2LMux);\r
93         status = (Cmb_STATUS)cmb_AudioAdcSetLeftInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH2_LEFT, (CmbAdcLeftInputMux)(config->adc2LMux));\r
94         if(status != Cmb_EOK)\r
95         {\r
96                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetLeftInputMux Failed\n"));\r
97                 return (status);\r
98         }\r
99 \r
100         /* Configure Right input mux for ADC1R */\r
101         //status = platformAudioAdcSetRightInputMux(devId, ADC_CH1_RIGHT, config->adc1RMux);\r
102     status = (Cmb_STATUS)cmb_AudioAdcSetRightInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH1_RIGHT, (CmbAdcRightInputMux)(config->adc1RMux));\r
103         if(status != Cmb_EOK)\r
104         {\r
105                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n"));\r
106                 return (status);\r
107         }\r
108 \r
109         /* Configure Right input mux for ADC2R */\r
110         //status = platformAudioAdcSetRightInputMux(devId, ADC_CH2_RIGHT, config->adc2RMux);\r
111     status = (Cmb_STATUS)cmb_AudioAdcSetRightInputMux((CmbAdcDevId)devId, (CmbAdcChanId)CMB_ADC_CH2_RIGHT, (CmbAdcRightInputMux)(config->adc2RMux));\r
112         if(status != Cmb_EOK)\r
113         {\r
114                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcSetRightInputMux Failed\n"));\r
115                 return (status);\r
116         }\r
117 \r
118         /* Configure audio data format */\r
119     //status = platformAudioAdcDataConfig(devId, config->wlen, config->format);\r
120         status = (Cmb_STATUS)cmb_AudioAdcDataConfig((CmbAdcDevId)devId, (CmbAdcRxWordLen)(config->wlen), (CmbAdcDataFormat)(config->format));\r
121         if(status != Cmb_EOK)\r
122         {\r
123                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcDataConfig Failed\n"));\r
124                 return (status);\r
125         }\r
126 \r
127         /* Configure all the interrupts */\r
128         //status = platformAudioAdcConfigIntr(devId, ADC_INTR_ALL, config->intEnable);\r
129     status = (Cmb_STATUS)cmb_AudioAdcConfigIntr((CmbAdcDevId)devId, (CmbAdcIntr)CMB_ADC_INTR_ALL, config->intEnable);\r
130         if(status != Cmb_EOK)\r
131         {\r
132                 IFPRINT(cmb_write("audioAdcConfig : platformAudioAdcConfigIntr Failed\n"));\r
133                 return (status);\r
134         }\r
135 \r
136         return (status);\r
137 }\r
138 \r
139 /**\r
140  *  \brief    Initializes DAC module\r
141  *\r
142  *  This function initializes and configures the DAC modules\r
143  *  on audio daughter card\r
144  *\r
145  *  \param     devId  [IN]  DAC Device Id\r
146  *  \param     config [IN]  DAC configuration parameters\r
147  *\r
148  *  \return    Cmb_EOK on Success or error code\r
149  */\r
150 #if CMB_AUDIO_DAC\r
151 Cmb_STATUS audioDacConfig(CmbDacDevId devId, CmbDacConfig *config)\r
152 {\r
153         Cmb_STATUS status;\r
154 \r
155         if(config == NULL)\r
156         {\r
157                 IFPRINT(cmb_write("Invalid Inputs\n"));\r
158                 return (Cmb_EINVALID);\r
159         }\r
160 \r
161         /* Initialize Audio DAC */\r
162         //status = platformAudioDacInit(devId);\r
163     status = (Cmb_STATUS)cmb_AudioDacInit((CmbDacDevId)devId);\r
164         if(status != Cmb_EOK)\r
165         {\r
166                 IFPRINT(cmb_write("audioDacConfig : platformaudioDacConfig Failed\n"));\r
167                 return (status);\r
168         }\r
169 \r
170 #if 0\r
171         /* Configure AMUTE control event */\r
172         //status = platformAudioDacAmuteCtrl(devId, config->amuteCtrl, config->amuteEnable);\r
173     status = (Cmb_STATUS)cmb_AudioDacAmuteCtrl((CmbDacDevId)devId, (CmbDacAmuteCtrl)(config->amuteCtrl), config->amuteEnable);\r
174         if(status != Cmb_EOK)\r
175         {\r
176                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacAmuteCtrl Failed\n"));\r
177                 return (status);\r
178         }\r
179 \r
180         /* Set sampling mode */\r
181         //status = platformAudioDacSetSamplingMode(devId, config->samplingMode);\r
182     status = (Cmb_STATUS)cmb_AudioDacSetSamplingMode((CmbDacDevId)devId, (CmbDacSamplingMode)(config->samplingMode));\r
183         if(status != Cmb_EOK)\r
184         {\r
185                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetSamplingMode Failed\n"));\r
186                 return (status);\r
187         }\r
188 \r
189         /* Set data format */\r
190         //status = platformAudioDacSetDataFormat(devId, config->dataFormat);\r
191     status = (Cmb_STATUS)cmb_AudioDacSetDataFormat((CmbDacDevId)devId, (CmbDacDataFormat)(config->dataFormat));\r
192         if(status != Cmb_EOK)\r
193         {\r
194                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetDataFormat Failed\n"));\r
195                 return (status);\r
196         }\r
197 \r
198         /* Enable soft mute control */\r
199         //status = platformAudioDacSoftMuteCtrl(devId, DAC_CHAN_ALL, config->softMuteEnable);\r
200     status = (Cmb_STATUS)cmb_AudioDacSoftMuteCtrl((CmbDacDevId)devId, (CmbDacChanId)CMB_DAC_CHAN_ALL, config->softMuteEnable);\r
201         if(status != Cmb_EOK)\r
202         {\r
203                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSoftMuteCtrl Failed\n"));\r
204                 return (status);\r
205         }\r
206 \r
207         /* Set attenuation mode */\r
208         //status = platformAudioDacSetAttnMode(devId, config->attnMode);\r
209     status = (Cmb_STATUS)cmb_AudioDacSetAttnMode((CmbDacDevId)devId, (CmbDacAttnMode)(config->attnMode));\r
210         if(status != Cmb_EOK)\r
211         {\r
212                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetAttnMode Failed\n"));\r
213                 return (status);\r
214         }\r
215 \r
216         /* Set De-emphasis control */\r
217         //status = platformAudioDacDeempCtrl(devId, config->deempCtrl);\r
218     status = (Cmb_STATUS)cmb_AudioDacDeempCtrl((CmbDacDevId)devId, (CmbDacDeempCtrl)(config->deempCtrl));\r
219         if(status != Cmb_EOK)\r
220         {\r
221                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacDeempCtrl Failed\n"));\r
222                 return (status);\r
223         }\r
224 \r
225         /* Set DAC volume */\r
226         //status = platformAudioDacSetVolume(devId, DAC_CHAN_ALL, config->volume);\r
227     status = (Cmb_STATUS)cmb_AudioDacSetVolume((CmbDacDevId)devId, (CmbDacChanId)CMB_DAC_CHAN_ALL, config->volume);\r
228         if(status != Cmb_EOK)\r
229         {\r
230                 IFPRINT(cmb_write("audioDacConfig : platformAudioDacSetVolume Failed\n"));\r
231                 return (status);\r
232         }\r
233 #endif\r
234         return (status);\r
235 }\r
236 #endif\r
237 /* Nothing past this point */\r