2.25. 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.