1 /******************************************************************************\r
2 * Copyright (c) 2019 Texas Instruments Incorporated - http://www.ti.com\r
3 *\r
4 * Redistribution and use in source and binary forms, with or without\r
5 * modification, are permitted provided that the following conditions\r
6 * are met:\r
7 *\r
8 * Redistributions of source code must retain the above copyright\r
9 * notice, this list of conditions and the following disclaimer.\r
10 *\r
11 * Redistributions in binary form must reproduce the above copyright\r
12 * notice, this list of conditions and the following disclaimer in the\r
13 * documentation and/or other materials provided with the\r
14 * 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\r
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
31 *\r
32 *****************************************************************************/\r
33 \r
34 /**\r
35 * \file ds90ub926.h\r
36 *\r
37 * \brief This file includes the structures, enums and register offsets\r
38 * for configuring the ds90ub926 deserailizer.\r
39 *\r
40 */\r
41 \r
42 /**\r
43 *\r
44 * \ingroup BOARD_LIB_DEVICES_FPD \r
45 *\r
46 * \defgroup BOARD_LIB_DEVICES_FPD_DS90UB926 DS90UB926 FPD-Link Library\r
47 *\r
48 * Provides the interfaces for configuring DS90UB926 FPD-Link device.\r
49 *\r
50 * @{\r
51 *\r
52 */\r
53 /* @} */\r
54 \r
55 #ifndef _DS90UB926_H_\r
56 #define _DS90UB926_H_\r
57 \r
58 #include <ti/board/src/devices/common/common.h>\r
59 \r
60 #ifdef __cplusplus\r
61 extern "C" {\r
62 #endif\r
63 \r
64 /**\r
65 *\r
66 * \ingroup BOARD_LIB_DEVICES_FPD_DS90UB926\r
67 *\r
68 * \defgroup BOARD_LIB_DEVICES_FPD_DS90UB926_TYPES Data Types\r
69 *\r
70 * Data types used by DS90UB926 FPD-Link device library.\r
71 *\r
72 * @{\r
73 *\r
74 */\r
75 \r
76 /** ub926 deserializer i2c instance number */\r
77 #define BOARD_FPD_UB926_I2C_INSTANCE (0x03U)\r
78 \r
79 /** ub926 deserializer i2c slave address */\r
80 #define BOARD_FPD_UB926_I2C_SLV_ADDR (0x2CU)\r
81 \r
82 \r
83 /** I2C device Id register address */\r
84 #define BOARD_FPD_UB926_I2C_DEVICE_ID_REG_ADDR (0x00U)\r
85 /** Deserializer reset register address */\r
86 #define BOARD_FPD_UB926_RESET_REG_ADDR (0x01U)\r
87 /** Configuration register address */\r
88 #define BOARD_FPD_UB926_CONFIGURATION1_REG_ADDR (0x03U)\r
89 \r
90 /** Freeze device Id register address */\r
91 #define BOARD_FPD_UB926_DES_FREEZE_DEVID_REG_ADDR (0x01)\r
92 /** I2C control1 register address */\r
93 #define BOARD_FPD_UB926_I2C_CONTROL1_REG_ADDR (0x05U)\r
94 \r
95 /** Remote device Id register address */\r
96 #define BOARD_FPD_UB926_REMOTE_DEVICE_ID_REG_ADDR (0x07U)\r
97 \r
98 /** Slave ID0 register address */\r
99 #define BOARD_FPD_UB926_SLAVE_ID0_REG_ADDR (0x08U)\r
100 \r
101 /** Slave alias0 register address */\r
102 #define BOARD_FPD_UB926_SLAVE_ALIAS0_REG_ADDR (0x10U)\r
103 \r
104 /** General status register address */\r
105 #define BOARD_FPD_UB926_GENERAL_STATUS_REG_ADDR (0x1CU)\r
106 /** Data path control register address */\r
107 #define BOARD_FPD_UB926_DATA_PATH_CONTROL_REG_ADDR (0X22U)\r
108 /** SCL high time register address */\r
109 #define BOARD_FPD_UB926_SCL_HIGH_TIME_REG_ADDR (0x26U)\r
110 /** SCL low time register address */\r
111 #define BOARD_FPD_UB926_SCL_LOW_TIME_REG_ADDR (0x27U)\r
112 \r
113 /** Remote serializer slave device id register address */\r
114 #define BOARD_FPD_UB926_RMT_SER_SLAVE_DEVICE_ID_REG_ADDR (0x18U)\r
115 /** Remote serializer alias slave device id register address */\r
116 #define BOARD_FPD_UB926_RMT_SER_ALIAS_SLAVE_DEVICE_ID_REG_ADDR (0x2AU)\r
117 \r
118 /** Digital reset1 field shift count */\r
119 #define BOARD_FPD_UB926_DIGITAL_RESET1_SHIFT_CNT (1U)\r
120 /** Deserializer back channel enable field shift count */\r
121 #define BOARD_FPD_UB926_BC_ENABLE_SHIFT_CNT (2U)\r
122 /** Remote auto-power down field shift count */\r
123 #define BOARD_FPD_UB926_REMOTE_AUTO_PWR_DWN_SHIFT_CNT (7U)\r
124 \r
125 /** I2C device ID register address */\r
126 #define BOARD_FPD_UB926_ID_SETTING_SHIFT_CNT (0U)\r
127 /** I2C device ID register address */\r
128 #define BOARD_FPD_UB926_DEVICE_ID_SHIFT_CNT (1U)\r
129 \r
130 /** I2C device ID register address */\r
131 #define BOARD_FPD_UB926_I2C_PASS_THROUGH_SHIFT_CNT (3U)\r
132 /** I2C device ID register address */\r
133 #define BOARD_FPD_UB926_I2C_PASS_THROUGH_ALL_SHIFT_CNT (7U)\r
134 \r
135 /** I2C device ID register address */\r
136 #define BOARD_FPD_UB926_OVERRIDE_FC_CONFIG_SHIFT_CNT (7U)\r
137 /** I2C device ID register address */\r
138 #define BOARD_FPD_UB926_PASS_RGB_SHIFT_CNT (6U)\r
139 /** I2C device ID register address */\r
140 #define BOARD_FPD_UB926_RGB_18BIT_MODE_SHIFT_CNT (2U)\r
141 /** I2C device ID register address */\r
142 #define BOARD_FPD_UB926_I2S_CHANNEL_B_OVERRIDE_SHIFT_CNT (3U)\r
143 /** I2C device ID register address */\r
144 #define BOARD_FPD_UB926_I2S_GEN_SHIFT_CNT (4U)\r
145 /** I2C device ID register address */\r
146 #define BOARD_FPD_UB926_I2S_TRANSPOER_SEL_SHIFT_CNT (1U)\r
147 /** I2C device ID register address */\r
148 #define BOARD_FPD_UB926_I2S_CHANNEL_B_ENABLE_SHIFT_CNT (0U)\r
149 /** I2C device ID register address */\r
150 #define BOARD_FPD_UB926_I2S_PLL_LOCK_STATUS_SHIFT_CNT (3U)\r
151 \r
152 /* Bit mask's used for different deserializer register configurations */\r
153 /** I2C device ID register address */\r
154 #define BOARD_FPD_UB926_DIGITAL_RESET1_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_DIGITAL_RESET1_SHIFT_CNT)\r
155 /** I2C device ID register address */\r
156 #define BOARD_FPD_UB926_REMOTE_AUTO_PWR_DWN_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_REMOTE_AUTO_PWR_DWN_SHIFT_CNT)\r
157 /** I2C device ID register address */\r
158 #define BOARD_FPD_UB926_BC_ENABLE_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_BC_ENABLE_SHIFT_CNT)\r
159 \r
160 /** I2C device ID register address */\r
161 #define BOARD_FPD_UB926_ID_SETTING_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_ID_SETTING_SHIFT_CNT)\r
162 /** I2C device ID register address */\r
163 #define BOARD_FPD_UB926_DEVICE_ID_BIT_MASK (uint8_t)(0x07F << BOARD_FPD_UB926_DEVICE_ID_SHIFT_CNT)\r
164 \r
165 /** I2C device ID register address */\r
166 #define BOARD_FPD_UB926_I2C_PASS_THROUGH_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2C_PASS_THROUGH_SHIFT_CNT)\r
167 \r
168 /** I2C device ID register address */\r
169 #define BOARD_FPD_UB926_I2C_PASS_THROUGH_ALL_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2C_PASS_THROUGH_ALL_SHIFT_CNT)\r
170 \r
171 /** I2C device ID register address */\r
172 #define BOARD_FPD_UB926_OVERRIDE_FC_CONFIG_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_OVERRIDE_FC_CONFIG_SHIFT_CNT)\r
173 /** I2C device ID register address */\r
174 #define BOARD_FPD_UB926_PASS_RGB_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_PASS_RGB_SHIFT_CNT)\r
175 /** I2C device ID register address */\r
176 #define BOARD_FPD_UB926_I2S_GEN_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2S_GEN_SHIFT_CNT)\r
177 /** I2C device ID register address */\r
178 #define BOARD_FPD_UB926_RGB_18BIT_MODE_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_RGB_18BIT_MODE_SHIFT_CNT)\r
179 /** I2C device ID register address */\r
180 #define BOARD_FPD_UB926_I2S_TRANSPOER_SEL_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2S_TRANSPOER_SEL_SHIFT_CNT)\r
181 /** I2C device ID register address */\r
182 #define BOARD_FPD_UB926_I2S_CHANNEL_B_ENABLE_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2S_CHANNEL_B_ENABLE_SHIFT_CNT)\r
183 /** I2C device ID register address */\r
184 #define BOARD_FPD_UB926_I2S_CHANNEL_B_OVERRIDE_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2S_CHANNEL_B_OVERRIDE_SHIFT_CNT)\r
185 /** I2C device ID register address */\r
186 #define BOARD_FPD_UB926_I2S_PLL_LOCK_STATUS_BIT_MASK (uint8_t)(0x01 << BOARD_FPD_UB926_I2S_PLL_LOCK_STATUS_SHIFT_CNT)\r
187 \r
188 /* @} */\r
189 \r
190 /**\r
191 *\r
192 * \ingroup BOARD_LIB_DEVICES_FPD_DS90UB926\r
193 *\r
194 * \defgroup BOARD_LIB_DEVICES_FPD_DS90UB926_APIS Application Interfaces\r
195 *\r
196 * Application Interfaces provided by DS90UB926 FPD-Link device library.\r
197 *\r
198 * @{\r
199 *\r
200 */\r
201 \r
202 /**\r
203 * \brief I2S channel-B enable mode control\r
204 *\r
205 * This function is used for configuring the deserializer\r
206 * I2S Channel-B mode\r
207 *\r
208 * \param handle [IN] Low level driver handle\r
209 * \param fpdModParams [IN] FPD module params\r
210 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
211 *\r
212 * \return BOARD_SOK in case of success or appropriate error code.\r
213 *\r
214 */\r
215 Board_STATUS Board_fpdUb926SetI2SChBEnableModeCtrl(void *handle,\r
216 Board_FpdModuleObj *fpdModParams,\r
217 uint8_t cfgMode);\r
218 \r
219 /**\r
220 * \brief I2S channel-B override mode control\r
221 *\r
222 * This function is used for configuring the deserializer\r
223 * I2S Channel-B override mode\r
224 *\r
225 * \param handle [IN] Low level driver handle\r
226 * \param fpdModParams [IN] FPD module params\r
227 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
228 *\r
229 * \return BOARD_SOK in case of success or appropriate error code.\r
230 *\r
231 */\r
232 Board_STATUS Board_fpdUb926SetI2SChBOverrideModeCtrl(void *handle,\r
233 Board_FpdModuleObj *fpdModParams,\r
234 uint8_t cfgMode);\r
235 \r
236 /**\r
237 * \brief I2S Transport select mode control\r
238 *\r
239 * This function is used for configuring the deserializer I2S transport\r
240 * select mode\r
241 *\r
242 * \param handle [IN] Low level driver handle\r
243 * \param fpdModParams [IN] FPD module params\r
244 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
245 *\r
246 * \return BOARD_SOK in case of success or appropriate error code.\r
247 *\r
248 */\r
249 Board_STATUS Board_fpdUb926SetI2STransportSelModeCtrl(void *handle,\r
250 Board_FpdModuleObj *fpdModParams,\r
251 uint8_t cfgMode);\r
252 \r
253 /**\r
254 * \brief I2S generation mode control\r
255 *\r
256 * This function is used for configuring the deserializer I2S generation mode\r
257 *\r
258 * \param handle [IN] Low level driver handle\r
259 * \param fpdModParams [IN] FPD module params\r
260 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
261 *\r
262 * \return BOARD_SOK in case of success or appropriate error code.\r
263 *\r
264 */\r
265 Board_STATUS Board_fpdUb926SetI2SGenModeCtrl(void *handle,\r
266 Board_FpdModuleObj *fpdModParams,\r
267 uint8_t cfgMode);\r
268 \r
269 /**\r
270 * \brief Pass RGB mode control\r
271 *\r
272 * This function is used for configuring the deserializer RGB pass mode\r
273 *\r
274 * \param handle [IN] Low level driver handle\r
275 * \param fpdModParams [IN] FPD module params\r
276 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
277 *\r
278 * \return BOARD_SOK in case of success or appropriate error code.\r
279 *\r
280 */\r
281 Board_STATUS Board_fpdUb926SetPassRGBModeCtrl(void *handle,\r
282 Board_FpdModuleObj *fpdModParams,\r
283 uint8_t cfgMode);\r
284 \r
285 /**\r
286 * \brief Override forward channel configuation mode control\r
287 *\r
288 * This function is used for configuring the deserializer override\r
289 * forward channel mode\r
290 *\r
291 * \param handle [IN] Low level driver handle\r
292 * \param fpdModParams [IN] FPD module params\r
293 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
294 *\r
295 * \return BOARD_SOK in case of success or appropriate error code.\r
296 *\r
297 */\r
298 Board_STATUS Board_fpdUb926SetOverrideFCConfigModeCtrl(void *handle,\r
299 Board_FpdModuleObj *fpdModParams,\r
300 uint8_t cfgMode);\r
301 \r
302 /**\r
303 * \brief RGB 18-bit mode control\r
304 *\r
305 * This function is used for configuring the deserializer RGB\r
306 * 18-bit mode\r
307 *\r
308 * \param handle [IN] Low level driver handle\r
309 * \param fpdModParams [IN] FPD module params\r
310 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
311 *\r
312 * \return BOARD_SOK in case of success or appropriate error code.\r
313 *\r
314 */\r
315 Board_STATUS Board_fpdUb926SetRGB18bitModeCtrl(void *handle,\r
316 Board_FpdModuleObj *fpdModParams,\r
317 uint8_t cfgMode);\r
318 \r
319 /**\r
320 * \brief Get PLL lock status\r
321 *\r
322 * This function is used for reading the deserializer PLL\r
323 * lock status\r
324 *\r
325 * \param handle [IN] Low level driver handle\r
326 * \param fpdModParams [IN] FPD module params\r
327 * \param pllLockStatus [IN/OUT] Buffer to hold PLL lock status\r
328 *\r
329 * \return BOARD_SOK in case of success or appropriate error code.\r
330 *\r
331 */\r
332 Board_STATUS Board_fpdUb926GetPLLLockStatus(void *handle,\r
333 Board_FpdModuleObj *fpdModParams,\r
334 bool *pllLockStatus);\r
335 \r
336 \r
337 /**\r
338 * \brief Remote serializer slave device id config\r
339 *\r
340 * This function is used for configuring the remote serializer slave device ID\r
341 *\r
342 * \param handle [IN] Low level driver handle\r
343 * \param fpdModParams [IN] FPD module params\r
344 * @param fpdRmtParams [IN] structure holding the fpd params\r
345 *\r
346 * \return BOARD_SOK in case of success or appropriate error code.\r
347 *\r
348 */\r
349 Board_STATUS Board_fpdUb926RmtSerSlvDevAliasIdCfg(void *handle,\r
350 Board_FpdModuleObj *fpdModParams,\r
351 Board_FpdRmtDevObj *fpdRmtParams);\r
352 \r
353 /**\r
354 * \brief I2C pass through all mode control\r
355 *\r
356 * This function is used for configuring the deserializer\r
357 * I2C pass through all mode\r
358 *\r
359 * \param handle [IN] Low level driver handle\r
360 * \param fpdModParams [IN] FPD module params\r
361 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
362 *\r
363 * \return BOARD_SOK in case of success or appropriate error code.\r
364 *\r
365 */\r
366 Board_STATUS Board_fpdUb926SetI2CPassThrAllModeCtrl(void *handle,\r
367 Board_FpdModuleObj *fpdModParams,\r
368 uint8_t cfgMode);\r
369 \r
370 /**\r
371 * \brief I2C pass through mode control\r
372 *\r
373 * This function is used for configuring the deserializer\r
374 * I2C pass through mode\r
375 *\r
376 * \param handle [IN] Low level driver handle\r
377 * \param fpdModParams [IN] FPD module params\r
378 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
379 *\r
380 * \return BOARD_SOK in case of success or appropriate error code.\r
381 *\r
382 */\r
383 Board_STATUS Board_fpdUb926SetI2CPassThrModeCtrl(void *handle,\r
384 Board_FpdModuleObj *fpdModParams,\r
385 uint8_t cfgMode);\r
386 \r
387 /**\r
388 * \brief I2C bus frequency set\r
389 *\r
390 * This function is used for setting the deserializer I2C bus frequency\r
391 *\r
392 * \param handle [IN] Low level driver handle\r
393 * \param fpdModParams [IN] FPD module params\r
394 * \param cfgBitRate [IN] Indicates I2C serial clock frequency\r
395 * config modes\r
396 * BOARD_FPD_KBPS_100 - 100 KBPS\r
397 * BOARD_FPD_KBPS_400 - 400 KBPS\r
398 *\r
399 * \return BOARD_SOK in case of success or appropriate error code.\r
400 *\r
401 */\r
402 Board_STATUS Board_fpdUb926SetI2CBusFreq(void *handle,\r
403 Board_FpdModuleObj *fpdModParams,\r
404 uint8_t cfgBitRate);\r
405 \r
406 /**\r
407 * \brief Deserializer back channel mode control\r
408 *\r
409 * This function is used for configuring the deserializer back channel mode\r
410 *\r
411 * \param handle [IN] Low level driver handle\r
412 * \param fpdModParams [IN] FPD module params\r
413 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
414 *\r
415 * \return BOARD_SOK in case of success or appropriate error code.\r
416 *\r
417 */\r
418 Board_STATUS Board_fpdUb926SetBackChModeCtrl(void *handle,\r
419 Board_FpdModuleObj *fpdModParams,\r
420 uint8_t cfgMode);\r
421 \r
422 /**\r
423 * \brief Deserializer digital reset1 mode control\r
424 *\r
425 * This function is used for configuring the deserializer digital reset1 mode\r
426 *\r
427 * \param handle [IN] Low level driver handle\r
428 * \param fpdModParams [IN] FPD module params\r
429 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
430 *\r
431 * \return BOARD_SOK in case of success or appropriate error code.\r
432 *\r
433 */\r
434 Board_STATUS Board_fpdUb926SetDigitalRst1ModeCtrl(void *handle,\r
435 Board_FpdModuleObj *fpdModParams,\r
436 uint8_t cfgMode);\r
437 \r
438 /**\r
439 * \brief Remote auto-power down mode control\r
440 *\r
441 * This function is used for configuring the deserializer auto power down mode\r
442 *\r
443 * \param handle [IN] Low level driver handle\r
444 * \param fpdModParams [IN] FPD module params\r
445 * \param cfgMode [IN] Config mode - Indicates Enable or Disable\r
446 *\r
447 * \return BOARD_SOK in case of success or appropriate error code.\r
448 *\r
449 */\r
450 Board_STATUS Board_fpdUb926SetRmtAutoPwrDwnModeCtrl(void *handle,\r
451 Board_FpdModuleObj *fpdModParams,\r
452 uint8_t cfgMode);\r
453 \r
454 /**\r
455 * \brief Get ub926 i2c address.\r
456 *\r
457 * This function is used to get the I2C address and\r
458 * channel details of UB926 module.\r
459 *\r
460 * \param domain [IN] I2C instance domain\r
461 * \param chNum [IN] buffer to hold i2c channel number\r
462 * \param i2cAddr [IN] buffer to hold i2c address\r
463 *\r
464 * \return BOARD_SOK in case of success or appropriate error code.\r
465 */\r
466 void Board_fpdUb926GetI2CAddr(uint8_t *domain,\r
467 uint8_t *chNum,\r
468 uint8_t *i2cAddr);\r
469 \r
470 \r
471 #ifdef __cplusplus\r
472 }\r
473 #endif /* __cplusplus */\r
474 \r
475 #endif /* _DS90UB926_H_ */\r
476 \r
477 /* @} */\r