Linux内核将regmap框架抽象为regmap结构体,这个结构体定义在文件include/linux/regmap.h 中,结构体内容如下(有缩减): 示例代码55.1.2.1regmap结构体49structregmap{50union{51structmutexmutex;52struct{53spinlock_tspinlock;54unsignedlongspinlock_flags;55};56};57regmap_locklock;58regmap_unlockunlock;59void*lock_...
②、regmap 核心层,用于实现 regmap,我们不用关心具体实现。 ③、regmapAPI 抽象层,regmap 向驱动编写人员提供的 API 接口,驱动编写人员使用这些API 接口来操作具体的芯片设备,也是驱动编写人员重点要掌握的。 2、regmap 结构体 Linux 内核将 regmap 框架抽象为 regmap 结构体 , 这个结构体定义在文件 drivers/base/...
*/intregmap_update_bits(structregmap *map,unsignedintreg,unsignedintmask,unsignedintval);//读取写入多个寄存器的值//map:要操作的 regmap。//reg:要读写的第一个寄存器。//val:要读写的寄存器数据缓冲区。//val_count:要读写的寄存器数量intregmap_bulk_read(structregmap *map,unsignedintreg,void*val,size...
在初始化好regmap之后,就可以调用regmap提供的read/write/update等操作了。 intregmap_write(structregmap *map,intreg,intval);//向单个reg写入valintregmap_raw_write(structregmap *map,intreg,void*val,size_tval_len);//向单个reg写入指定长度的数据,数据存放在val中intregmap_bulk_write(structregmap *map,uns...
regmap_bulk_write (structregmap* map , unsigned int reg, const void *val, size_t val_count) 函数参数和返回值含义如下: map:要操作的 regmap。 reg:要写的第一个寄存器。 val:要写的寄存器数据缓冲区。 val_count:要写的寄存器数量。 返回值:0,写成功;其他值,读失败。
intregmap_bulk_write(struct regmap*map,unsigned int reg,constvoid*val,size_t val_count) 函数参数和返回值含义如下: map:要操作的 regmap。 reg:要写的第一个寄存器。 val:要写的寄存器数据缓冲区。 val_count:要写的寄存器数量。 返回值:0,写成功;其他值,读失败。
1. regmap_write(struct regmap *map, int reg, int val); // 向reg写入val 2. regmap_raw_write(struct regmap *map, int reg, void *val, size_t val_len); // 向reg写入指定长度的数据,数据存放在val中 3. regmap_read(struct regmap *map, int reg, int *val); // 读取reg的数据到val中...
result = regmap_bulk_write(dev->regmap, reg + ind, (u8 *)&d, 2); if (result) return -EINVAL; return 0; } /* @description : 设置 ICM20608 的陀螺仪计量程(分辨率) * @param - dev : icm20608 设备 * @param - val : 量程(分辨率值)。
struct regmap *regmap = dev_get_drvdata(dev); unsigned int control; u8 buf[3]; long long val; int ret; ret = regmap_bulk_read(regmap, reg, buf, is_power_reg(reg) ? 3 : 2); if (ret < 0) return ret; if (is_power_reg(reg)) { ...
Linux引入regmap是为了统一管理内核的i2c,spi等总线,将i2c、spi驱动做了一次重构,把I/O读写的重复逻辑在regmap中实现。只需初始化时指定总线类型、寄存器位宽等关键参数,即可通过regmap模型接口来操作器件寄存器。 将i2c、spi、mmio、irq等抽象出统一接口regmap_read,regmap_write,regmap_update_bits等接口,从而提高代码...