aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-12-12 00:10:02 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-12-12 00:10:02 -0500
commitce37954e93e9e85333577dcc22db5a4d0f4c9d5e (patch)
tree133571eae537a4f1c304c5396668c7ec6a8e2bb7 /include
parentdc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50 (diff)
parent209a600623cf13a8168b2f6b83643db7825abb9a (diff)
Merge branch 'topic/irq' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap into mfd/da9052
Diffstat (limited to 'include')
-rw-r--r--include/linux/regmap.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 690276a642cf..e7e8953e8c2a 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -144,4 +144,52 @@ int regcache_sync(struct regmap *map);
144void regcache_cache_only(struct regmap *map, bool enable); 144void regcache_cache_only(struct regmap *map, bool enable);
145void regcache_cache_bypass(struct regmap *map, bool enable); 145void regcache_cache_bypass(struct regmap *map, bool enable);
146 146
147/**
148 * Description of an IRQ for the generic regmap irq_chip.
149 *
150 * @reg_offset: Offset of the status/mask register within the bank
151 * @mask: Mask used to flag/control the register.
152 */
153struct regmap_irq {
154 unsigned int reg_offset;
155 unsigned int mask;
156};
157
158/**
159 * Description of a generic regmap irq_chip. This is not intended to
160 * handle every possible interrupt controller, but it should handle a
161 * substantial proportion of those that are found in the wild.
162 *
163 * @name: Descriptive name for IRQ controller.
164 *
165 * @status_base: Base status register address.
166 * @mask_base: Base mask register address.
167 * @ack_base: Base ack address. If zero then the chip is clear on read.
168 *
169 * @num_regs: Number of registers in each control bank.
170 * @irqs: Descriptors for individual IRQs. Interrupt numbers are
171 * assigned based on the index in the array of the interrupt.
172 * @num_irqs: Number of descriptors.
173 */
174struct regmap_irq_chip {
175 const char *name;
176
177 unsigned int status_base;
178 unsigned int mask_base;
179 unsigned int ack_base;
180
181 int num_regs;
182
183 const struct regmap_irq *irqs;
184 int num_irqs;
185};
186
187struct regmap_irq_chip_data;
188
189int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags,
190 int irq_base, struct regmap_irq_chip *chip,
191 struct regmap_irq_chip_data **data);
192void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *data);
193int regmap_irq_chip_get_base(struct regmap_irq_chip_data *data);
194
147#endif 195#endif