}else{regmap_update_bits(arizona->regmap, fll->base +1, ARIZONA_FLL1_ENA,0);regmap_update_bits(arizona->regmap, fll->base +0x11, ARIZONA_FLL1_SYNC_ENA,0);if(ena) pm_runtime_put_autosuspend(arizona->dev);return0; }regmap_update_bits(arizona->regmap, fll->base +5, ARIZONA_FLL1_...
// 1.构建regmap_config结构staticconststructregmap_configmlx90632_regmap={// 寄存器地址位宽.reg_bits=16,// 寄存器值的位宽,必须填写.val_bits=16,// 可选,判断寄存器是否可写,可读,是否可缓冲等回调.volatile_table=&mlx90632_volatile_regs_tbl,.rd_table=&mlx90632_readable_regs_tbl,.wr_table=&mlx9...
在regmap_read 和 regmap_write 的基础上还衍生出了其他一些 regmap 的 API 函数,首先是regmap_update_bits 函数。
5. regmap_bulk_read(struct regmap *map, int reg, void *val, size_t val_count); // 读取从reg开始之后val_count个寄存器的数据到val中 6. regmap_update_bits(struct regmap *map, int reg, int mask, int val); // 更新reg寄存器中mask指定的位 7. regcache_cache_bypass(arizona->regmap, tru...
将i2c、spi、mmio、irq等抽象出统一接口regmap_read,regmap_write,regmap_update_bits等接口,从而提高代码的可重用性;regmap是在Linux内核为减少慢速I/O驱动上的重复逻辑,提供的一种通用接口来操作底层硬件寄存器的模型框架。 此外,如果在regmap中使用cache,会减少底层低速I/O的操作次数,提高访问效率,但是会降低操作的...
regmap_hw_reg_write reg_write;--写值到单个寄存器。regmap_hw_reg_update_bits reg_update_bits; regmap_hw_read read;--读一定大小数据到buffer。regmap_hw_reg_read reg_read;--从单个寄存器读取值。regmap_hw_free_context free_context; regmap_hw_async_alloc async_alloc; ...
}/* Activate parallel (NOR flash) mode */ret = regmap_update_bits(rmap, GLOBAL_MISC_CTRL, FLASH_PADS_MASK, SFLASH_PADS_DISABLE | NAND_PADS_DISABLE);if(ret) { dev_err(dev,"unable to set up physmap pads\n");return-ENODEV;
intregmap_update_bits(struct regmap*map,unsigned int reg,unsigned int mask,unsigned int val, 函数参数和返回值含义如下: map:要操作的 regmap。 reg:要操作的寄存器。 mask:掩码,需要更新的位必须在掩码中设置为 1。 val:需要更新的位值。 返回值:0,写成功;其他值,写失败。
int regmap_update_bits(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val); 读写寄存器的操作已经抽象到regmap子系统里了,完整的API位于include/linux/regmap.h。 有了regmap后,i2c/spi drvier、i2c/spi device、i2c/spi subsystem之间的关系如下: ...
例如,你可以使用 regmap_read()、regmap_write()、regmap_update_bits() 等函数来读取、写入和修改寄存器。 int reg_value; // 读取寄存器值 ret = regmap_read(my_dev->regmap, MY_DEVICE_REG_ADDR, ®_value); if (ret) return ret; // 修改寄存器值 ret = regmap_update_bits(my_dev->regmap,...