PDK API Guide for J721E
pcm3168A.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright (c) 2019 Texas Instruments Incorporated - http://www.ti.com
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  *****************************************************************************/
33 
53 /* @} */
54 
55 #ifndef _PCM3168A_H_
56 #define _PCM3168A_H_
57 
58 #include <stdint.h>
59 #include <stdio.h>
60 #include <string.h>
61 #include <stdbool.h>
62 #include <ti/drv/uart/UART_stdio.h>
63 #include <ti/drv/i2c/I2C.h>
64 #include <ti/drv/i2c/soc/I2C_soc.h>
65 #include <ti/board/board.h>
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
84 #define BOARD_PCM3168_MODECTRL_REG_ADDR (0x40U)
85 
87 #define BOARD_PCM3168_DAC_PWR_MST_FMT_REG_ADDR (0x41U)
88 
90 #define BOARD_PCM3168_DAC_OP_FLT_REG_ADDR (0x42U)
91 
93 #define BOARD_PCM3168_DAC_INV_REG_ADDR (0x43U)
94 
96 #define BOARD_PCM3168_DAC_MUTE_REG_ADDR (0x44U)
97 
99 #define BOARD_PCM3168_DAC_ZERO_REG_ADDR (0x45U)
100 
102 #define BOARD_PCM3168_DAC_ATT_DEMP_ZF_REG_ADDR (0x46U)
103 
105 #define BOARD_PCM3168_DAC_VOL_MASTER_REG_ADDR (0x47U)
106 
108 #define BOARD_PCM3168_DAC_VOL_CHAN_START_REG_ADDR (0x48U)
109 
111 #define BOARD_PCM3168_ADC_SMODE_REG_ADDR (0x50U)
112 
114 #define BOARD_PCM3168_ADC_MST_FMT_REG_ADDR (0x51U)
115 
117 #define BOARD_PCM3168_ADC_PWR_HPFB_REG_ADDR (0x52U)
118 
120 #define BOARD_PCM3168_ADC_SEAD_REG_ADDR (0x53U)
121 
123 #define BOARD_PCM3168_ADC_INV_REG_ADDR (0x54U)
124 
126 #define BOARD_PCM3168_ADC_MUTE_REG_ADDR (0x55U)
127 
129 #define BOARD_PCM3168_ADC_OV_REG_ADDR (0x56U)
130 
132 #define BOARD_PCM3168_ADC_ATT_OVF_REG_ADDR (0x57U)
133 
135 #define BOARD_PCM3168_ADC_VOL_MASTER_REG_ADDR (0x58U)
136 
138 #define BOARD_PCM3168_ADC_VOL_CHAN_START_REG_ADDR (0x59U)
139 
141 #define BOARD_I2C_NUM_OF_BYTES_1 (0x1U)
142 
144 #define BOARD_PCM3168_MRST_SHIFT_CNT (0x07U)
145 #define BOARD_PCM3168_SRST_SHIFT_CNT (0x06U)
146 #define BOARD_PCM3168_SRDA_SHIFT_CNT (0x0U)
147 
148 #define BOARD_PCM3168_MRST_BIT_MASK (0x01 << BOARD_PCM3168_MRST_SHIFT_CNT)
149 #define BOARD_PCM3168_SRST_BIT_MASK (0x01 << BOARD_PCM3168_SRST_SHIFT_CNT)
150 #define BOARD_PCM3168_SRDA_BIT_MASK (0x03 << BOARD_PCM3168_SRDA_SHIFT_CNT)
151 
153 #define BOARD_PCM3168_PSMDA_SHIFT_CNT (0x07U)
154 #define BOARD_PCM3168_MSDA_SHIFT_CNT (0x04U)
155 #define BOARD_PCM3168_FMTDA_SHIFT_CNT (0x0U)
156 
157 #define BOARD_PCM3168_PSMDA_BIT_MASK (0x01 << BOARD_PCM3168_PSMDA_SHIFT_CNT)
158 #define BOARD_PCM3168_MSDA_BIT_MASK (0x07 << BOARD_PCM3168_MSDA_SHIFT_CNT)
159 #define BOARD_PCM3168_FMTDA_BIT_MASK (0x0F << BOARD_PCM3168_FMTDA_SHIFT_CNT)
160 
162 #define BOARD_PCM3168_OPED_SHIFT_CNT (0x04U)
163 #define BOARD_PCM3168_OPED_BIT_MASK (0x0F << BOARD_PCM3168_PSMDA_SHIFT_CNT)
164 
166 #define BOARD_PCM3168_SRAD_SHIFT_CNT (0x0U)
167 
168 #define BOARD_PCM3168_SRAD_BIT_MASK (0x03 << BOARD_PCM3168_SRAD_SHIFT_CNT)
169 
171 #define BOARD_PCM3168_MSAD_SHIFT_CNT (0x04U)
172 #define BOARD_PCM3168_FMTAD_SHIFT_CNT (0x0U)
173 
174 #define BOARD_PCM3168_MSAD_BIT_MASK (0x07 << BOARD_PCM3168_MSAD_SHIFT_CNT)
175 #define BOARD_PCM3168_FMTAD_BIT_MASK (0x07 << BOARD_PCM3168_FMTAD_SHIFT_CNT)
176 
178 #define BOARD_PCM3168_PSVAD_SHIFT_CNT (0x04U)
179 
180 #define BOARD_PCM3168_PSVAD_BIT_MASK (0x07 << BOARD_PCM3168_PSVAD_SHIFT_CNT)
181 
183 #define BOARD_PCM3168_CHANNEL_0 (0x0U)
184 
185 #define BOARD_PCM3168_CHANNEL_1 (0x1U)
186 
187 #define BOARD_PCM3168_CHANNEL_2 (0x2U)
188 
189 #define BOARD_PCM3168_CHANNEL_3 (0x3U)
190 
191 #define BOARD_PCM3168_CHANNEL_4 (0x4U)
192 
193 #define BOARD_PCM3168_CHANNEL_5 (0x5U)
194 
195 #define BOARD_PCM3168_CHANNEL_6 (0x6U)
196 
197 #define BOARD_PCM3168_CHANNEL_7 (0x7U)
198 
199 #define BOARD_PCM3168_CHANNEL_8 (0x8U)
200 
205 #define BOARD_PCM3168_CFG_DAC (0U)
206 
207 #define BOARD_PCM3168_CFG_ADC (1U)
208 
209 #define BOARD_PCM3168_CFG_ALL (2U)
210 
215 #define BOARD_PCM3168_MODE_PWROFF (0)
216 
217 #define BOARD_PCM3168_MODE_NORMAL (1U)
218 
223 #define BOARD_PCM3168_SAMPLE_AUTO (0)
224 
225 #define BOARD_PCM3168_SINGLE_RATE (1U)
226 
227 #define BOARD_PCM3168_DUAL_RATE (2U)
228 
229 #define BOARD_PCM3168_QUAD_RATE (3U)
230 
235 #define BOARD_PCM3168_POWERSAVE_ENABLE (0)
236 
237 #define BOARD_PCM3168_POWERSAVE_DISABLE (1U)
238 
243 #define BOARD_PCM3168_NORMAL_MODE (0U)
244 
245 #define BOARD_PCM3168_POWERSAVE_MODE (1U)
246 
251 #define BOARD_PCM3168_SLAVE_MODE (0)
252 
253 #define BOARD_PCM3168_MASTER_MODE_768FS (1U)
254 
255 #define BOARD_PCM3168_MASTER_MODE_512FS (2U)
256 
257 #define BOARD_PCM3168_MASTER MODE_384FS (3U)
258 
259 #define BOARD_PCM3168_MASTER_MODE_256FS (4U)
260 
261 #define BOARD_PCM3168_MASTER_MODE_192FS (5U)
262 
263 #define BOARD_PCM3168_MASTER_MODE_128FS (6U)
264 
269 #define BOARD_PCM3168_24B_I2S_FMT (0)
270 
271 #define BOARD_PCM3168_24B_LJ_FMT (1U)
272 
273 #define BOARD_PCM3168_24B_RJ_FMT (2U)
274 
275 #define BOARD_PCM3168_16B_RJ_FMT (3U)
276 
277 #define BOARD_PCM3168_24B_I2S_DSP_FMT (4U)
278 
279 #define BOARD_PCM3168_24B_LJ_DSP_FMT (5U)
280 
281 #define BOARD_PCM3168_24B_I2S_TDM_FMT (6U)
282 
283 #define BOARD_PCM3168_24B_LJ_TDM_FMT (7U)
284 
285 #define BOARD_PCM3168_24B_HS_I2S_TDM_FMT (8U)
286 
287 #define BOARD_PCM3168_24B_HS_LJ_TDM_FMT (9U)
288 
293 #define BOARD_PCM3168_DAC_NORMAL_OPERATION (0)
294 
295 #define BOARD_PCM3168_DAC_OPERATION_DISABLE (1U)
296 
301 #define BOARD_PCM3168_MUTE_DISABLE (0)
302 
303 #define BOARD_PCM3168_MUTE_ENABLE (1U)
304 
305 /* @} */
306 
330 Board_STATUS Board_pcm3168Config(void *handle, uint8_t slaveAddr);
331 
342 Board_STATUS Board_pcm3168RegRead(void *handle,
343  uint8_t slaveAddr,
344  uint8_t regAddr,
345  uint8_t *regData);
346 
358 Board_STATUS Board_pcm3168RegWrite(void *handle,
359  uint8_t slaveAddr,
360  uint8_t regAddr,
361  uint8_t *regData);
362 
378 Board_STATUS Board_pcm3168ModeCtrl(void *handle,
379  uint8_t slaveAddr,
380  uint8_t modeCtrl);
381 
397 Board_STATUS Board_pcm3168Reset(void *handle,
398  uint8_t slaveAddr,
399  uint8_t modeCtrl);
400 
420 Board_STATUS Board_pcm3168SamplingModeSel(void *handle,
421  uint8_t slaveAddr,
422  uint8_t samplingMode,
423  uint8_t cfgMode);
424 
441 Board_STATUS Board_pcm3168DACPwrSaveModeSel(void *handle,
442  uint8_t slaveAddr,
443  uint8_t pwrSaveMode);
444 
460 Board_STATUS Board_pcm3168ADCPwrSaveModeSel(void *handle,
461  uint8_t slaveAddr,
462  uint8_t pwrSaveMode);
463 
487 Board_STATUS Board_pcm3168MasterSlaveModeSel(void *handle,
488  uint8_t slaveAddr,
489  uint8_t mscfgMode,
490  uint8_t cfgMode);
491 
516 Board_STATUS Board_pcm3168AudioFmtSel(void *handle,
517  uint8_t slaveAddr,
518  uint8_t fmt,
519  uint8_t cfgMode);
520 
542 Board_STATUS Board_pcm3168DACOperationalCtrl(void *handle,
543  uint8_t slaveAddr,
544  uint8_t opMode);
545 
564 Board_STATUS Board_pcm3168SoftMuteCtrl(void *handle,
565  uint8_t slaveAddr,
566  uint8_t chanNum,
567  uint8_t muteCtrl,
568  uint8_t cfgMode);
569 
586 Board_STATUS Board_pcm3168AttnLevelSet(void *handle,
587  uint8_t slaveAddr,
588  uint8_t chanNum,
589  uint8_t attLevel,
590  uint8_t cfgMode);
591 
592 #ifdef __cplusplus
593 }
594 #endif /* __cplusplus */
595 
596 #endif /* _PCM3168_H_ */
597 
598 /* @} */
This header file contains function prototypes which interface interactively with the user through the...
Board_STATUS Board_pcm3168Reset(void *handle, uint8_t slaveAddr, uint8_t modeCtrl)
This function is used to control the system reset 0 - Restarts the system by resyncronizing the syste...
Board_STATUS Board_pcm3168ADCPwrSaveModeSel(void *handle, uint8_t slaveAddr, uint8_t pwrSaveMode)
This function is used to control the power save mode of ADC operation 0 - normal operation 1 - power-...
Board_STATUS Board_pcm3168RegRead(void *handle, uint8_t slaveAddr, uint8_t regAddr, uint8_t *regData)
This function is used to read the Codec register value.
I2C driver interface.
Board_STATUS Board_pcm3168DACPwrSaveModeSel(void *handle, uint8_t slaveAddr, uint8_t pwrSaveMode)
This function is used to control the power save mode of DAC/ADC operation 0 - Power-save enable mode ...
Board_STATUS Board_pcm3168SamplingModeSel(void *handle, uint8_t slaveAddr, uint8_t samplingMode, uint8_t cfgMode)
This function is used to control the sampling mode of DAC/ADC 00 - Auto 01 - Single rate 10 - Dual ra...
Board_STATUS Board_pcm3168ModeCtrl(void *handle, uint8_t slaveAddr, uint8_t modeCtrl)
This function is used to set the mode control register reset to the default value 0 - Writes default ...
Board_STATUS Board_pcm3168SoftMuteCtrl(void *handle, uint8_t slaveAddr, uint8_t chanNum, uint8_t muteCtrl, uint8_t cfgMode)
This function is used to enable or disable the Soft Mute function for the corresponding DAC/ADC outpu...
Board_STATUS Board_pcm3168AttnLevelSet(void *handle, uint8_t slaveAddr, uint8_t chanNum, uint8_t attLevel, uint8_t cfgMode)
This function is used to set the attenuation level for each channel independently.
Board_STATUS Board_pcm3168DACOperationalCtrl(void *handle, uint8_t slaveAddr, uint8_t opMode)
This function is used to control the DAC operation mode.
Board_STATUS Board_pcm3168AudioFmtSel(void *handle, uint8_t slaveAddr, uint8_t fmt, uint8_t cfgMode)
This function is used to control the audio interface format. 000 - 24-bit I2S format 001 - 24-bit lef...
The macro definitions and function prototypes which are common across different board devices.
Board_STATUS Board_pcm3168MasterSlaveModeSel(void *handle, uint8_t slaveAddr, uint8_t mscfgMode, uint8_t cfgMode)
This function is used to control the audio interface mode.
The Board Library is a thin utility layer on top of CSL and other board utilities....
Board_STATUS Board_pcm3168Config(void *handle, uint8_t slaveAddr)
This function is used to configure the PCM3168A codec.
Board_STATUS Board_pcm3168RegWrite(void *handle, uint8_t slaveAddr, uint8_t regAddr, uint8_t *regData)
This function is used to write the register data to the PCM Codec.