diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-21 07:55:20 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-21 07:55:20 -0400 |
| commit | ae130d22de8f8977cc3015bfafc09ff93744d92a (patch) | |
| tree | 3492fc5b1d5d32a297c8187a03fc414487e76c40 /include/linux | |
| parent | 449e38427fe57a6120fecd1051981c89ee862b3d (diff) | |
| parent | bd20eb541ebbb17a5e047cd20e74b9ccf19a4123 (diff) | |
Merge branch 'regmap-interface' into regmap-next
Diffstat (limited to 'include/linux')
| -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; | |||
| 21 | struct spi_device; | 21 | struct spi_device; |
| 22 | 22 | ||
| 23 | /** | 23 | /** |
| 24 | * Default value for a register. We use an array of structs rather | ||
| 25 | * than a simple array as many modern devices have very sparse | ||
| 26 | * register maps. | ||
| 27 | * | ||
| 28 | * @reg: Register address. | ||
| 29 | * @def: Register default value. | ||
| 30 | */ | ||
| 31 | struct reg_default { | ||
| 32 | unsigned int reg; | ||
| 33 | unsigned int def; | ||
| 34 | }; | ||
| 35 | |||
| 36 | /** | ||
| 24 | * Configuration for the register map of a device. | 37 | * Configuration for the register map of a device. |
| 25 | * | 38 | * |
| 26 | * @reg_bits: Number of bits in a register address, mandatory. | 39 | * @reg_bits: Number of bits in a register address, mandatory. |
| 27 | * @val_bits: Number of bits in a register value, mandatory. | 40 | * @val_bits: Number of bits in a register value, mandatory. |
| 28 | * | 41 | * |
| 29 | * @max_register: Optional, specifies the maximum valid register index. | ||
| 30 | * @writeable_reg: Optional callback returning true if the register | 42 | * @writeable_reg: Optional callback returning true if the register |
| 31 | * can be written to. | 43 | * can be written to. |
| 32 | * @readable_reg: Optional callback returning true if the register | 44 | * @readable_reg: Optional callback returning true if the register |
| @@ -36,16 +48,24 @@ struct spi_device; | |||
| 36 | * @precious_reg: Optional callback returning true if the rgister | 48 | * @precious_reg: Optional callback returning true if the rgister |
| 37 | * should not be read outside of a call from the driver | 49 | * should not be read outside of a call from the driver |
| 38 | * (eg, a clear on read interrupt status register). | 50 | * (eg, a clear on read interrupt status register). |
| 51 | * | ||
| 52 | * @max_register: Optional, specifies the maximum valid register index. | ||
| 53 | * @reg_defaults: Power on reset values for registers (for use with | ||
| 54 | * register cache support). | ||
| 55 | * @num_reg_defaults: Number of elements in reg_defaults. | ||
| 39 | */ | 56 | */ |
| 40 | struct regmap_config { | 57 | struct regmap_config { |
| 41 | int reg_bits; | 58 | int reg_bits; |
| 42 | int val_bits; | 59 | int val_bits; |
| 43 | 60 | ||
| 44 | unsigned int max_register; | ||
| 45 | bool (*writeable_reg)(struct device *dev, unsigned int reg); | 61 | bool (*writeable_reg)(struct device *dev, unsigned int reg); |
| 46 | bool (*readable_reg)(struct device *dev, unsigned int reg); | 62 | bool (*readable_reg)(struct device *dev, unsigned int reg); |
| 47 | bool (*volatile_reg)(struct device *dev, unsigned int reg); | 63 | bool (*volatile_reg)(struct device *dev, unsigned int reg); |
| 48 | bool (*precious_reg)(struct device *dev, unsigned int reg); | 64 | bool (*precious_reg)(struct device *dev, unsigned int reg); |
| 65 | |||
| 66 | unsigned int max_register; | ||
| 67 | struct reg_default *reg_defaults; | ||
| 68 | int num_reg_defaults; | ||
| 49 | }; | 69 | }; |
| 50 | 70 | ||
| 51 | typedef int (*regmap_hw_write)(struct device *dev, const void *data, | 71 | typedef int (*regmap_hw_write)(struct device *dev, const void *data, |
