diff options
Diffstat (limited to 'include/linux/regmap.h')
| -rw-r--r-- | include/linux/regmap.h | 28 | 
1 files changed, 25 insertions, 3 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 59c55ea0f0b5..4a6759098769 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -50,6 +50,17 @@ struct reg_default {  	unsigned int def;  }; +/** + * Register/value pairs for sequences of writes + * + * @reg: Register address. + * @def: Register value. + */ +struct reg_sequence { +	unsigned int reg; +	unsigned int def; +}; +  #ifdef CONFIG_REGMAP  enum regmap_endian { @@ -410,10 +421,10 @@ int regmap_raw_write(struct regmap *map, unsigned int reg,  		     const void *val, size_t val_len);  int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,  			size_t val_count); -int regmap_multi_reg_write(struct regmap *map, const struct reg_default *regs, +int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs,  			int num_regs);  int regmap_multi_reg_write_bypassed(struct regmap *map, -				    const struct reg_default *regs, +				    const struct reg_sequence *regs,  				    int num_regs);  int regmap_raw_write_async(struct regmap *map, unsigned int reg,  			   const void *val, size_t val_len); @@ -424,6 +435,8 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,  		     size_t val_count);  int regmap_update_bits(struct regmap *map, unsigned int reg,  		       unsigned int mask, unsigned int val); +int regmap_write_bits(struct regmap *map, unsigned int reg, +		       unsigned int mask, unsigned int val);  int regmap_update_bits_async(struct regmap *map, unsigned int reg,  			     unsigned int mask, unsigned int val);  int regmap_update_bits_check(struct regmap *map, unsigned int reg, @@ -450,7 +463,7 @@ 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 regmap_register_patch(struct regmap *map, const struct reg_sequence *regs,  			  int num_regs);  int regmap_parse_val(struct regmap *map, const void *buf,  				unsigned int *val); @@ -503,6 +516,8 @@ int regmap_field_update_bits(struct regmap_field *field,  int regmap_fields_write(struct regmap_field *field, unsigned int id,  			unsigned int val); +int regmap_fields_force_write(struct regmap_field *field, unsigned int id, +			unsigned int val);  int regmap_fields_read(struct regmap_field *field, unsigned int id,  		       unsigned int *val);  int regmap_fields_update_bits(struct regmap_field *field,  unsigned int id, @@ -645,6 +660,13 @@ static inline int regmap_update_bits(struct regmap *map, unsigned int reg,  	return -EINVAL;  } +static inline int regmap_write_bits(struct regmap *map, unsigned int reg, +				     unsigned int mask, unsigned int val) +{ +	WARN_ONCE(1, "regmap API is disabled"); +	return -EINVAL; +} +  static inline int regmap_update_bits_async(struct regmap *map,  					   unsigned int reg,  					   unsigned int mask, unsigned int val)  |