成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
    • 一、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)推薦

沙坪坝区| 湛江市| 吉安市| 方城县| 元氏县| 鄄城县| 柳州市| 澜沧| 启东市| 资兴市| 莱芜市| 加查县| 甘肃省| 南开区| 行唐县| 邵阳县| 措美县| 沁阳市| 武隆县| 黄梅县| 阜新市| 漳州市| 广宁县| 汉寿县| 崇阳县| 岢岚县| 新蔡县| 奉贤区| 巴东县| 蛟河市| 桦甸市| 道孚县| 右玉县| 伊川县| 堆龙德庆县| 东阿县| 沙田区| 永春县| 且末县| 沿河| 桂平市|