aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/regmap.h
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-10 22:39:30 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-10 22:39:30 -0500
commitdb760fbecd3d609098ef4121d7988ff2a5db15d1 (patch)
treeff4d9bc553848e796f0b099343d7f640acf4fbcb /include/linux/regmap.h
parent4d348e6e0a35cd1b40196a463f1159ae5d582770 (diff)
parent0d4529c534c1c664f25088eb5f5b4d7ce0ee2510 (diff)
Merge remote-tracking branch 'regmap/topic/lock' into regmap-next
Diffstat (limited to 'include/linux/regmap.h')
-rw-r--r--include/linux/regmap.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 41e9e4e17657..fedf7ba74590 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -54,6 +54,9 @@ enum regmap_endian {
54 REGMAP_ENDIAN_NATIVE, 54 REGMAP_ENDIAN_NATIVE,
55}; 55};
56 56
57typedef void (*regmap_lock)(void *);
58typedef void (*regmap_unlock)(void *);
59
57/** 60/**
58 * Configuration for the register map of a device. 61 * Configuration for the register map of a device.
59 * 62 *
@@ -76,6 +79,12 @@ enum regmap_endian {
76 * @precious_reg: Optional callback returning true if the rgister 79 * @precious_reg: Optional callback returning true if the rgister
77 * should not be read outside of a call from the driver 80 * should not be read outside of a call from the driver
78 * (eg, a clear on read interrupt status register). 81 * (eg, a clear on read interrupt status register).
82 * @lock: Optional lock callback (overrides regmap's default lock
83 * function, based on spinlock or mutex).
84 * @unlock: As above for unlocking.
85 * @lock_arg: this field is passed as the only argument of lock/unlock
86 * functions (ignored in case regular lock/unlock functions
87 * are not overridden).
79 * 88 *
80 * @max_register: Optional, specifies the maximum valid register index. 89 * @max_register: Optional, specifies the maximum valid register index.
81 * @reg_defaults: Power on reset values for registers (for use with 90 * @reg_defaults: Power on reset values for registers (for use with
@@ -117,6 +126,9 @@ struct regmap_config {
117 bool (*readable_reg)(struct device *dev, unsigned int reg); 126 bool (*readable_reg)(struct device *dev, unsigned int reg);
118 bool (*volatile_reg)(struct device *dev, unsigned int reg); 127 bool (*volatile_reg)(struct device *dev, unsigned int reg);
119 bool (*precious_reg)(struct device *dev, unsigned int reg); 128 bool (*precious_reg)(struct device *dev, unsigned int reg);
129 regmap_lock lock;
130 regmap_unlock unlock;
131 void *lock_arg;
120 132
121 unsigned int max_register; 133 unsigned int max_register;
122 const struct reg_default *reg_defaults; 134 const struct reg_default *reg_defaults;
@@ -186,7 +198,9 @@ typedef void (*regmap_hw_free_context)(void *context);
186 * Description of a hardware bus for the register map infrastructure. 198 * Description of a hardware bus for the register map infrastructure.
187 * 199 *
188 * @fast_io: Register IO is fast. Use a spinlock instead of a mutex 200 * @fast_io: Register IO is fast. Use a spinlock instead of a mutex
189 * to perform locking. 201 * to perform locking. This field is ignored if custom lock/unlock
202 * functions are used (see fields lock/unlock of
203 * struct regmap_config).
190 * @write: Write operation. 204 * @write: Write operation.
191 * @gather_write: Write operation with split register/value, return -ENOTSUPP 205 * @gather_write: Write operation with split register/value, return -ENOTSUPP
192 * if not implemented on a given device. 206 * if not implemented on a given device.