cache_type;// 缓冲方式constvoid*reg_defaults_raw;unsignedintnum_reg_defaults_raw;u8read_flag_mask;u8write_flag_mask;booluse_single_rw;boolcan_multi_write;enumregmap_endianreg_format_endian;enumregmap_endianval_format_endian;conststructregmap_range_cfg*ranges;unsignedintnum_ranges;}; regmap_init_...
.val_bits=14,.max_register=40,.cache_type=REGCACHE_RBTREE,.volatile_reg=false,.readable_reg=false,};// second step: initialize regmap in driver loadingregmap=regmap_init_i2c(i2c_client,&xxx_regmap_config);// third step: register operationsregmap_read(regmap,XXX_REG,&value)...
structregmap *regmap_init_spi(structspi_device *spi,conststructregmap_config *config);structregmap *regmap_init_i2c(structi2c_client *i2c,conststructregmap_config *config);//返回一个regmap结构体指针voidregmap_exit(structregmap *map);//不管是什么物理接口,退出都用regmap_exit 3.2 regmap 设备访问 in...
// drivers/base/regmap/regmap-i2c.cstructregmap *regmap_init_i2c(structi2c_client *i2c,conststructregmap_config *config){// regmap_bus 定位了对应总线的读写函数。conststructregmap_bus*bus=regmap_get_i2c_bus(i2c, config);if(IS_ERR(bus))returnERR_CAST(bus);returnregmap_init(&i2c->dev, bus...
创建regmap配置结构体:接下来,你需要创建一个regmap配置结构体,其中包含了寄存器地址、值和其他相关信息。例如:struct regmap_config my_regmap_config = { .reg_bits = 8, .val_bits = 8, .max_register = 0xFF, .cache_type = REGCACHE_RBTREE, .reg_defaults = my_reg_defaults, .num_reg_defaults ...
map->precious_reg = config->precious_reg; map->writeable_noinc_reg = config->writeable_noinc_reg; map->readable_noinc_reg = config->readable_noinc_reg; map->cache_type = config->cache_type; 1. 2. 3. 4. 5. 6. 7. 8.
#include<linux/regmap.h> static const struct regmap_config my_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), }; 复制代...
*rd_noinc_table;384conststructreg_default*reg_defaults;385unsignedintnum_reg_defaults;386enumregcache_typecache_type;387constvoid*reg_defaults_raw;388unsignedintnum_reg_defaults_raw;389390unsignedlongread_flag_mask;391unsignedlongwrite_flag_mask;392boolzero_flag_mask;393394booluse_single_read;395...
enum regcache_type cache_type; const void *reg_defaults_raw; unsigned int num_reg_defaults_raw; u8 read_flag_mask; u8 write_flag_mask; bool use_single_rw; enum regmap_endian reg_format_endian; enum regmap_endian val_format_endian; ...
regmap机制中引入的缓存层,通过减少IO操作次数来提高硬件操作效率,提供了三种缓存类型:数据(flat)、LZO压缩和红黑树(rbtree),选择缓存类型在regmap初始化时通过配置regmap_config的cache_type参数完成。对于regmap_read操作,如果缓存中有值,则直接从缓存中获取值,若需要从硬件读取,则调用具体协议的...