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
,失败时返回负错误代码。