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.