国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 一、regmap_config用來配置regmap對象
    • 二、regmap初始化
    • 三、使用regmap
    • 四、釋放regmap
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-Regmap使用

4小時前
217
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

一、regmap_config用來配置regmap對象

常見的結(jié)構(gòu)體成員如下:

int reg_bits;// 寄存器地址的位數(shù)

int val_bits;// 存儲寄存器的位數(shù)

unsigned int max_register; // 最大寄存器地址,防止訪問越界

int (*reg_read)(void *context, unsigned int reg, unsigned int *val);//讀寄存器

int (*reg_write)(void *context, unsigned int reg, unsigned int val);//寫寄存器

u8 read_flag_mask;// 讀寄存器掩碼

u8 write_flag_mask;// 寫寄存器掩碼

二、regmap初始化

Regmap支持多種硬件接口的初始化API,最常用的為I2CSPI,初始化函數(shù)原型如下:

regmap_init_i2c(struct i2c_client *i2c, struct regmap_config *config);

regmap_init_spi(struct spi_device *spi, strcut regmap_config *config);

regmap_init_spi()"函數(shù)接受一個指向SPI設(shè)備的指針(spi)和Regmap配置參數(shù)(config)。它首先分配內(nèi)存以存儲Regmap對象,然后設(shè)置Regmap的相關(guān)字段和操作函數(shù),以便與SPI總線進(jìn)行通信。最后,函數(shù)返回指向初始化的Regmap對象的指針

三、使用regmap

配置和注冊regmap實例后,就可以調(diào)用regmap提供的read/write/update等操作了。常用的操作函數(shù)原型如下:

//向單個reg寫入val

int regmap_write(struct regmap *map, int reg, int val);

//向單個reg寫入指定長度的數(shù)據(jù),數(shù)據(jù)存放在val中

int regmap_raw_write(struct regmap *map, int reg, void *val, size_t val_len);

// 寫多個reg

int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,size_t val_count);

// 直接寫入reg,不經(jīng)過regmap cache

int regmap_multi_reg_write_bypassed(struct regmap *map, const struct reg_sequence *regs,int num_regs);

//寫多個reg,并立即刷新cache寫入

int regmap_raw_write_async(struct regmap *map, unsigned int reg,const void *val, size_t val_len);

// 讀取單個reg的數(shù)據(jù)到val中/

int regmap_read(struct regmap *map, int reg, int *val);

// 讀取單個reg中指定長度的數(shù)據(jù)

int regmap_raw_read(struct regmap *map, int reg, void *val, size_t val_len);

// 讀取從reg開始之后val_count個寄存器的數(shù)據(jù)到val中

int regmap_bulk_read(struct regmap *map, int reg, void *val, size_t val_count);

// 更新reg寄存器中mask指定的位

int regmap_update_bits(struct regmap *map, int reg, int mask, int val);

//寫入寄存器值指定bit *

int regmap_write_bits(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val);

// 設(shè)置讀寫寄存器不通過cache模式而是bypass模式,讀寫立即生效,一般在audio等確保時序性驅(qū)動中用到

void regcache_cache_bypass(arizona->regmap, true);

四、釋放regmap

在驅(qū)動注銷時釋放已注冊的regmap。

void regmap_exit(struct regmap *map);

相關(guān)推薦

尼勒克县| 荥阳市| 德州市| 韩城市| 福鼎市| 秦皇岛市| 苏尼特左旗| 安西县| 余姚市| 清流县| 丹寨县| 邓州市| 加查县| 纳雍县| 林周县| 婺源县| 溧水县| 博湖县| 榆林市| 建瓯市| 沽源县| 温泉县| 宣恩县| 抚州市| 仪征市| 保亭| 安远县| 蛟河市| 都匀市| 大竹县| 山阴县| 宜黄县| 宁都县| 原阳县| 九江县| 康保县| 谢通门县| 习水县| 镇安县| 阳城县| 开远市|