diff options
Diffstat (limited to 'include/linux/regmap.h')
| -rw-r--r-- | include/linux/regmap.h | 43 | 
1 files changed, 43 insertions, 0 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 02d84e24b7c2..75981d0b57dc 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -23,6 +23,7 @@ struct irq_domain;  struct spi_device;  struct regmap;  struct regmap_range_cfg; +struct regmap_field;  /* An enum of all the supported cache types */  enum regcache_type { @@ -394,10 +395,15 @@ bool regmap_can_raw_write(struct regmap *map);  int regcache_sync(struct regmap *map);  int regcache_sync_region(struct regmap *map, unsigned int min,  			 unsigned int max); +int regcache_drop_region(struct regmap *map, unsigned int min, +			 unsigned int max);  void regcache_cache_only(struct regmap *map, bool enable);  void regcache_cache_bypass(struct regmap *map, bool enable);  void regcache_mark_dirty(struct regmap *map); +bool regmap_check_range_table(struct regmap *map, unsigned int reg, +			      const struct regmap_access_table *table); +  int regmap_register_patch(struct regmap *map, const struct reg_default *regs,  			  int num_regs); @@ -412,6 +418,36 @@ bool regmap_reg_in_ranges(unsigned int reg,  			  unsigned int nranges);  /** + * Description of an register field + * + * @reg: Offset of the register within the regmap bank + * @lsb: lsb of the register field. + * @reg: msb of the register field. + */ +struct reg_field { +	unsigned int reg; +	unsigned int lsb; +	unsigned int msb; +}; + +#define REG_FIELD(_reg, _lsb, _msb) {		\ +				.reg = _reg,	\ +				.lsb = _lsb,	\ +				.msb = _msb,	\ +				} + +struct regmap_field *regmap_field_alloc(struct regmap *regmap, +		struct reg_field reg_field); +void regmap_field_free(struct regmap_field *field); + +struct regmap_field *devm_regmap_field_alloc(struct device *dev, +		struct regmap *regmap, struct reg_field reg_field); +void devm_regmap_field_free(struct device *dev,	struct regmap_field *field); + +int regmap_field_read(struct regmap_field *field, unsigned int *val); +int regmap_field_write(struct regmap_field *field, unsigned int val); + +/**   * Description of an IRQ for the generic regmap irq_chip.   *   * @reg_offset: Offset of the status/mask register within the bank @@ -562,6 +598,13 @@ static inline int regcache_sync_region(struct regmap *map, unsigned int min,  	return -EINVAL;  } +static inline int regcache_drop_region(struct regmap *map, unsigned int min, +				       unsigned int max) +{ +	WARN_ONCE(1, "regmap API is disabled"); +	return -EINVAL; +} +  static inline void regcache_cache_only(struct regmap *map, bool enable)  {  	WARN_ONCE(1, "regmap API is disabled");  | 
