2.24. V4L2 CCI kAPI

struct cci_reg_sequence

来自 CCI 写入序列的单个写入

定义:

struct cci_reg_sequence {
    u32 reg;
    u64 val;
};

成员

reg

寄存器地址,使用 CCI_REG#() 宏来编码寄存器宽度

val

寄存器值

描述

用于写入序列的寄存器/值对。

int cci_read(struct regmap *map, u32 reg, u64 *val, int *err)

从单个 CCI 寄存器读取值

参数

struct regmap *map

要读取的寄存器映射

u32 reg

要读取的寄存器地址,使用 CCI_REG#() 宏来编码寄存器宽度

u64 *val

指向存储读取值的指针

int *err

可选的指向存储错误的指针,如果设置了之前的错误,则会跳过读取

返回

成功时返回 0,失败时返回负错误代码。

int cci_write(struct regmap *map, u32 reg, u64 val, int *err)

将值写入单个 CCI 寄存器

参数

struct regmap *map

要写入的寄存器映射

u32 reg

要写入的寄存器地址,使用 CCI_REG#() 宏来编码寄存器宽度

u64 val

要写入的值

int *err

可选的指向存储错误的指针,如果设置了之前的错误,则会跳过写入

返回

成功时返回 0,失败时返回负错误代码。

int cci_update_bits(struct regmap *map, u32 reg, u64 mask, u64 val, int *err)

对单个 CCI 寄存器执行读取/修改/写入循环

参数

struct regmap *map

要更新的寄存器映射

u32 reg

要更新的寄存器地址,使用 CCI_REG#() 宏来编码寄存器宽度

u64 mask

要更改的位掩码

u64 val

位掩码的新值

int *err

可选的指向存储错误的指针,如果设置了之前的错误,则会跳过更新

描述

请注意,这使用读取-修改-写入来更新位,不能保证与其他 cci_*() 寄存器访问函数之间的原子性。

返回

成功时返回 0,失败时返回负错误代码。

int cci_multi_reg_write(struct regmap *map, const struct cci_reg_sequence *regs, unsigned int num_regs, int *err)

将多个寄存器写入设备

参数

struct regmap *map

要写入的寄存器映射

const struct cci_reg_sequence *regs

包含要写入的寄存器地址-值对的结构数组,寄存器地址使用 CCI_REG#() 宏来编码寄存器宽度

unsigned int num_regs

要写入的寄存器数量

int *err

可选的指向存储错误的指针,如果设置了之前的错误,则会跳过写入

描述

将多个寄存器写入设备,其中寄存器值对的集合以任何顺序提供,可能并非全部在单个范围内。

必须使用 CCI_REG#() 宏来编码寄存器宽度。

对于只有 8 位宽写入的寄存器地址-值对的原始列表,可以使用 regmap_multi_reg_write()。

返回

成功时返回 0,失败时返回负错误代码。

struct regmap *devm_cci_regmap_init_i2c(struct i2c_client *client, int reg_addr_bits)

创建与 cci_*() 寄存器访问函数一起使用的 regmap

参数

struct i2c_client *client

要为其创建 regmap 的 i2c_client

int reg_addr_bits

要使用的寄存器地址宽度(8 或 16)

描述

请注意,创建的 regmap 的内存由 devm() 管理,并与客户端绑定。

返回

成功时返回 0,失败时返回负错误代码。