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)

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

参数

struct i2c_client *client

要为其创建 regmap 的 i2c_client

int reg_addr_bits

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

描述

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

返回值

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