创建regmap配置结构体:接下来,你需要创建一个regmap配置结构体,其中包含了寄存器地址、值和其他相关信息。例如: structregmap_configmy_regmap_config={.reg_bits=8,.val_bits=8,.max_register=0xFF,.cache_type=REGCACHE_RBTREE,.reg_defaults=my_reg_defaults,.num_reg_defaults=ARRAY_SIZE(my_reg_defaults)...
regmap_unlock unlock;void*lock_arg;//读操作int(*reg_read)(void*context,unsignedintreg,unsignedint*val);//写操作int(*reg_write)(void*context,unsignedintreg,unsignedintval);boolfast_io;//快速 I/O,使用 spinlock 替代 mutex 来提升锁性能。unsignedintmax_register;//有效的最大寄存器地址conststructreg...
8. bool (*precious_reg)(struct device *dev, unsigned int reg); // 要求寄存器数值维持在一个数值范围才正确,maintain一个数值准确表 9. int max_register; // max_register: 最大寄存器地址 10. const struct reg_default *reg_defaults; 11. int num_reg_defaults; 12. enum regcache_type cache_t...
const struct regmap_config *config) 读写I2C: int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val);//读取reg中的值,保存在val中 int regmap_raw_read(struct regmap *map, unsigned int reg, void *val, size_t val_len); //从reg中读取val_len长度的数据,保存在val中 int...
const struct regmap_config *config) 读写I2C: int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val);//读取reg中的值,保存在val中 int regmap_raw_read(struct regmap *map, unsigned int reg, void *val, size_t val_len); //从reg中读取val_len长度的数据,保存在val中 ...
你所需要做的就是:1)配置好struct regmap_config,包括reg_bits(寄存器地址宽度)、val_bits(寄存器值宽度)、num_reg_defaults(寄存器数⽬)等等信息;2)注册接⼝时,根据接⼝类型使⽤不同的函数,I2C⽤regmap_init_i2c(),SPI⽤regmap_init_spi()。除了使⽤⽅便以外,还可以在线调试,只要你...
你所需要做的就是:1)配置好struct regmap_config,包括reg_bits(寄存器地址宽度)、val_bits(寄存器值宽度)、num_reg_defaults(寄存器数目)等等信息;2)注册接口时,根据接口类型使用不同的函数,I2C用regmap_init_i2c(),SPI用regmap_init_spi()。除了使用方便以外,还可以在线调试,只要你将debugfs挂载上去,就可以在线...
#include<linux/regmap.h>staticconststructregmap_configmy_device_regmap_config={.reg_bits =32, .val_bits =32, .max_register =0xFF, .cache_type = REGCACHE_NONE, .reg_defaults = my_device_reg_defaults, .num_reg_defaults = ARRAY_SIZE(my_device_reg_defaults), ...
*/ struct regmap_config { const char *name; int reg_bits; int reg_stride; int reg_shift; unsigned int reg_base; int pad_bits; int val_bits; bool (*writeable_reg)(struct device *dev, unsigned int reg); bool (*readable_reg)(struct device *dev, unsigned int reg); bool (*volatile...
BUG: sleeping function called from invalid context at include/linux/sched/mm.h:306 in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 167, name: kunit_try_catch preempt_count: 1, expected: 0 1 lock held by kunit_try_catch/167: #0: 838e9c10 (regmap_kunit:86:(config)->...