2.24. V4L2 CCI kAPI¶
- 
struct cci_reg_sequence¶
- An individual write from a sequence of CCI writes 
Definition:
struct cci_reg_sequence {
    u32 reg;
    u64 val;
};
Members
- reg
- Register address, use CCI_REG#() macros to encode reg width 
- val
- Register value 
Description
Register/value pairs for sequences of writes.
- 
int cci_read(struct regmap *map, u32 reg, u64 *val, int *err)¶
- Read a value from a single CCI register 
Parameters
- struct regmap *map
- Register map to read from 
- u32 reg
- Register address to read, use CCI_REG#() macros to encode reg width 
- u64 *val
- Pointer to store read value 
- int *err
- Optional pointer to store errors, if a previous error is set then the read will be skipped 
Return
0 on success or a negative error code on failure.
- 
int cci_write(struct regmap *map, u32 reg, u64 val, int *err)¶
- Write a value to a single CCI register 
Parameters
- struct regmap *map
- Register map to write to 
- u32 reg
- Register address to write, use CCI_REG#() macros to encode reg width 
- u64 val
- Value to be written 
- int *err
- Optional pointer to store errors, if a previous error is set then the write will be skipped 
Return
0 on success or a negative error code on failure.
- 
int cci_update_bits(struct regmap *map, u32 reg, u64 mask, u64 val, int *err)¶
- Perform a read/modify/write cycle on a single CCI register 
Parameters
- struct regmap *map
- Register map to update 
- u32 reg
- Register address to update, use CCI_REG#() macros to encode reg width 
- u64 mask
- Bitmask to change 
- u64 val
- New value for bitmask 
- int *err
- Optional pointer to store errors, if a previous error is set then the update will be skipped 
Description
Note this uses read-modify-write to update the bits, atomicity with regards to other cci_*() register access functions is NOT guaranteed.
Return
0 on success or a negative error code on failure.
- 
int cci_multi_reg_write(struct regmap *map, const struct cci_reg_sequence *regs, unsigned int num_regs, int *err)¶
- Write multiple registers to the device 
Parameters
- struct regmap *map
- Register map to write to 
- const struct cci_reg_sequence *regs
- Array of structures containing register-address, -value pairs to be written, register-addresses use CCI_REG#() macros to encode reg width 
- unsigned int num_regs
- Number of registers to write 
- int *err
- Optional pointer to store errors, if a previous error is set then the write will be skipped 
Description
Write multiple registers to the device where the set of register, value pairs are supplied in any order, possibly not all in a single range.
Use of the CCI_REG#() macros to encode reg width is mandatory.
For raw lists of register-address, -value pairs with only 8 bit wide writes regmap_multi_reg_write() can be used instead.
Return
0 on success or a negative error code on failure.
- 
struct regmap *devm_cci_regmap_init_i2c(struct i2c_client *client, int reg_addr_bits)¶
- Create regmap to use with cci_*() register access functions 
Parameters
- struct i2c_client *client
- i2c_client to create the regmap for 
- int reg_addr_bits
- register address width to use (8 or 16) 
Description
Note the memory for the created regmap is devm() managed, tied to the client.
Return
0 on success or a negative error code on failure.