NVIDIA DRIVE OS Linux SDK API Reference

6.0.3 Release
devblk_cdi_i2c.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2022, NVIDIA CORPORATION. All rights reserved. All
3  * information contained herein is proprietary and confidential to NVIDIA
4  * Corporation. Any use, reproduction, or disclosure without the written
5  * permission of NVIDIA Corporation is prohibited.
6  */
7 #ifndef DEVBLK_CDI_I2C_H
8 #define DEVBLK_CDI_I2C_H
9 
10 #include "devblk_cdi.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
36 #define I2C_ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
37 
39 typedef struct {
44  uint16_t address;
45 
50  uint16_t data;
51 
56  uint32_t delayUsec;
58 
60 typedef struct {
71  uint32_t numRegs;
73 
75 typedef struct {
86  uint32_t numRegs;
88 
92 typedef void* DevBlkCDII2CPgmr;
93 
115  DevBlkCDIDevice *handle,
116  const uint8_t addrLength,
117  const uint8_t dataLength
118 );
119 
133 void
135  DevBlkCDII2CPgmr i2cProgrammer
136 );
137 
160  DevBlkCDII2CPgmr i2cProgrammer,
161  const uint16_t address,
162  const uint8_t data
163 );
164 
187  DevBlkCDII2CPgmr i2cProgrammer,
188  const uint16_t address,
189  const uint16_t data
190 );
191 
215  DevBlkCDII2CPgmr i2cProgrammer,
216  const uint16_t address,
217  uint8_t *data
218 );
219 
243  DevBlkCDII2CPgmr i2cProgrammer,
244  const uint16_t address,
245  uint16_t *data
246 );
247 
279  DevBlkCDII2CPgmr i2cProgrammer,
280  const DevBlkCDII2CRegList *regList
281 );
282 
314  DevBlkCDII2CPgmr i2cProgrammer,
315  const DevBlkCDII2CRegListWritable *regList
316 );
317 
344  DevBlkCDII2CPgmr i2cProgrammer,
345  const uint16_t address,
346  const uint16_t dataLength,
347  uint8_t *dataBuff
348 );
349 
350 #if !NV_IS_SAFETY
351 
370  DevBlkCDII2CPgmr i2cProgrammer,
371  const DevBlkCDII2CRegList *regList
372 );
373 
389  DevBlkCDII2CPgmr i2cProgrammer,
390  NvMediaBool enable
391 );
392 #endif /* #if !NV_IS_SAFETY */
393 
396 #ifdef __cplusplus
397 } /* extern "C" */
398 #endif
399 
400 #endif /* DEVBLK_CDI_I2C_H */
DevBlkCDII2CReg::data
uint16_t data
The value of an I2C register; Valid range: [0, UINT16_MAX].
Definition: devblk_cdi_i2c.h:50
DevBlkCDII2CReg::address
uint16_t address
The address of an I2C register; Valid range: [0, UINT16_MAX].
Definition: devblk_cdi_i2c.h:44
DevBlkCDII2CRegListWritable
Defines the I2C register table to read from the device.
Definition: devblk_cdi_i2c.h:75
DevBlkCDII2CRegList::regs
const DevBlkCDII2CReg * regs
An array of DevBlkCDII2CReg structures, of length numRegs.
Definition: devblk_cdi_i2c.h:67
DevBlkCDII2CPgmrDumpArray
NvMediaStatus DevBlkCDII2CPgmrDumpArray(DevBlkCDII2CPgmr i2cProgrammer, const DevBlkCDII2CRegList *regList)
Dumps the values for all registers in the register table.
DevBlkCDII2CPgmrReadArray
NvMediaStatus DevBlkCDII2CPgmrReadArray(DevBlkCDII2CPgmr i2cProgrammer, const DevBlkCDII2CRegListWritable *regList)
Performs read operation for a register table.
DevBlkCDII2CRegList::numRegs
uint32_t numRegs
The number of registers in the regs array; Valid range: [0, UINT32_MAX].
Definition: devblk_cdi_i2c.h:71
DevBlkCDII2CPgmrReadUint16
NvMediaStatus DevBlkCDII2CPgmrReadUint16(DevBlkCDII2CPgmr i2cProgrammer, const uint16_t address, uint16_t *data)
Reads 16-bit data from an I2C register.
DevBlkCDII2CReg::delayUsec
uint32_t delayUsec
The number of microseconds to delay between this read/write operation and the next one; Valid range: ...
Definition: devblk_cdi_i2c.h:56
DevBlkCDII2CPgmrWriteArray
NvMediaStatus DevBlkCDII2CPgmrWriteArray(DevBlkCDII2CPgmr i2cProgrammer, const DevBlkCDII2CRegList *regList)
Performs write operation for a register table.
DevBlkCDII2CPgmr
void * DevBlkCDII2CPgmr
An opaque handle for an I2C programmer object.
Definition: devblk_cdi_i2c.h:92
devblk_cdi.h
NVIDIA Device Block Interface: Camera Device Interface (CDI)
DevBlkCDII2CRegListWritable::regs
DevBlkCDII2CReg * regs
An array of DevBlkCDII2CReg structures, of length numRegs.
Definition: devblk_cdi_i2c.h:82
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: tvmr/include/nvmedia_core.h:180
DevBlkCDII2CPgmrReadUint8
NvMediaStatus DevBlkCDII2CPgmrReadUint8(DevBlkCDII2CPgmr i2cProgrammer, const uint16_t address, uint8_t *data)
Reads 8-bit data from an I2C register.
DevBlkCDII2CPgmrCreate
DevBlkCDII2CPgmr DevBlkCDII2CPgmrCreate(DevBlkCDIDevice *handle, const uint8_t addrLength, const uint8_t dataLength)
Creates an I2C Programmer to read/write I2C registers of a device.
DevBlkCDII2CPgmrWriteUint8
NvMediaStatus DevBlkCDII2CPgmrWriteUint8(DevBlkCDII2CPgmr i2cProgrammer, const uint16_t address, const uint8_t data)
Writes 8-bit data to an I2C register.
DevBlkCDII2CPgmrWriteUint16
NvMediaStatus DevBlkCDII2CPgmrWriteUint16(DevBlkCDII2CPgmr i2cProgrammer, const uint16_t address, const uint16_t data)
Writes 16-bit data to an I2C register.
DevBlkCDII2CPgmrReadBlock
NvMediaStatus DevBlkCDII2CPgmrReadBlock(DevBlkCDII2CPgmr i2cProgrammer, const uint16_t address, const uint16_t dataLength, uint8_t *dataBuff)
Reads a block of data from I2C device.
DevBlkCDII2CPgmrDebugLogControl
NvMediaStatus DevBlkCDII2CPgmrDebugLogControl(DevBlkCDII2CPgmr i2cProgrammer, NvMediaBool enable)
Enables debug logs for I2C Programmer.
DevBlkCDIDevice
Holds the handle for an DevBlkCDIDevice object.
Definition: devblk_cdi.h:119
NvMediaBool
uint32_t NvMediaBool
A boolean value, holding NVMEDIA_TRUE or NVMEDIA_FALSE.
Definition: tvmr/include/nvmedia_core.h:80
DevBlkCDII2CPgmrDestroy
void DevBlkCDII2CPgmrDestroy(DevBlkCDII2CPgmr i2cProgrammer)
Destroys an I2C Programmer.
DevBlkCDII2CRegList
Defines the I2C register table to write to the device.
Definition: devblk_cdi_i2c.h:60
DevBlkCDII2CReg
Defines the I2C address/data pair and an optional delay.
Definition: devblk_cdi_i2c.h:39
DevBlkCDII2CRegListWritable::numRegs
uint32_t numRegs
The number of registers in the regs array; Valid range: [0, UINT32_MAX].
Definition: devblk_cdi_i2c.h:86