aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-08-21 07:55:20 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-08-21 07:55:20 -0400
commitae130d22de8f8977cc3015bfafc09ff93744d92a (patch)
tree3492fc5b1d5d32a297c8187a03fc414487e76c40 /include/linux
parent449e38427fe57a6120fecd1051981c89ee862b3d (diff)
parentbd20eb541ebbb17a5e047cd20e74b9ccf19a4123 (diff)
Merge branch 'regmap-interface' into regmap-next
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/regmap.h24
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;
21struct spi_device; 21struct 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 */
31struct 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 */
40struct regmap_config { 57struct 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
51typedef int (*regmap_hw_write)(struct device *dev, const void *data, 71typedef int (*regmap_hw_write)(struct device *dev, const void *data,