diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-21 15:55:20 +0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-21 15:55:20 +0400 |
commit | ae130d22de8f8977cc3015bfafc09ff93744d92a (patch) | |
tree | 3492fc5b1d5d32a297c8187a03fc414487e76c40 /include/linux/regmap.h | |
parent | 449e38427fe57a6120fecd1051981c89ee862b3d (diff) | |
parent | bd20eb541ebbb17a5e047cd20e74b9ccf19a4123 (diff) | |
download | linux-ae130d22de8f8977cc3015bfafc09ff93744d92a.tar.xz |
Merge branch 'regmap-interface' into regmap-next
Diffstat (limited to 'include/linux/regmap.h')
-rw-r--r-- | include/linux/regmap.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 20a8fbf19d44..449e2642da95 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -21,12 +21,24 @@ struct i2c_client; struct spi_device; /** + * Default value for a register. We use an array of structs rather + * than a simple array as many modern devices have very sparse + * register maps. + * + * @reg: Register address. + * @def: Register default value. + */ +struct reg_default { + unsigned int reg; + unsigned int def; +}; + +/** * Configuration for the register map of a device. * * @reg_bits: Number of bits in a register address, mandatory. * @val_bits: Number of bits in a register value, mandatory. * - * @max_register: Optional, specifies the maximum valid register index. * @writeable_reg: Optional callback returning true if the register * can be written to. * @readable_reg: Optional callback returning true if the register @@ -36,16 +48,24 @@ struct spi_device; * @precious_reg: Optional callback returning true if the rgister * should not be read outside of a call from the driver * (eg, a clear on read interrupt status register). + * + * @max_register: Optional, specifies the maximum valid register index. + * @reg_defaults: Power on reset values for registers (for use with + * register cache support). + * @num_reg_defaults: Number of elements in reg_defaults. */ struct regmap_config { int reg_bits; int val_bits; - unsigned int max_register; bool (*writeable_reg)(struct device *dev, unsigned int reg); bool (*readable_reg)(struct device *dev, unsigned int reg); bool (*volatile_reg)(struct device *dev, unsigned int reg); bool (*precious_reg)(struct device *dev, unsigned int reg); + + unsigned int max_register; + struct reg_default *reg_defaults; + int num_reg_defaults; }; typedef int (*regmap_hw_write)(struct device *dev, const void *data, |