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,失敗時返回負錯誤程式碼。