From: Mark Brown Date: Tue, 8 Nov 2011 14:16:06 +0000 (+0000) Subject: Merge branches 'regmap/irq' and 'regmap/cache' into regmap-next X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=81bf58eb3c16302f19676e73dfe4d1832199c0ef;p=linux-beck.git Merge branches 'regmap/irq' and 'regmap/cache' into regmap-next --- 81bf58eb3c16302f19676e73dfe4d1832199c0ef diff --cc include/linux/regmap.h index 690276a642cf,bd54cecdfdf8,bebda1481f23..1e4ec2b6c2ea --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@@@ -143,5 -143,52 -143,6 +143,53 @@@@ int regmap_update_bits(struct regmap *m int regcache_sync(struct regmap *map); void regcache_cache_only(struct regmap *map, bool enable); void regcache_cache_bypass(struct regmap *map, bool enable); ++ void regcache_mark_dirty(struct regmap *map); + + +/** + + * Description of an IRQ for the generic regmap irq_chip. + + * + + * @reg_offset: Offset of the status/mask register within the bank + + * @mask: Mask used to flag/control the register. + + */ + +struct regmap_irq { + + unsigned int reg_offset; + + unsigned int mask; + +}; + + + +/** + + * Description of a generic regmap irq_chip. This is not intended to + + * handle every possible interrupt controller, but it should handle a + + * substantial proportion of those that are found in the wild. + + * + + * @name: Descriptive name for IRQ controller. + + * + + * @status_base: Base status register address. + + * @mask_base: Base mask register address. + + * @ack_base: Base ack address. If zero then the chip is clear on read. + + * + + * @num_regs: Number of registers in each control bank. + + * @irqs: Descriptors for individual IRQs. Interrupt numbers are + + * assigned based on the index in the array of the interrupt. + + * @num_irqs: Number of descriptors. + + */ + +struct regmap_irq_chip { + + const char *name; + + + + unsigned int status_base; + + unsigned int mask_base; + + unsigned int ack_base; + + + + int num_regs; + + + + const struct regmap_irq *irqs; + + int num_irqs; + +}; + + + +struct regmap_irq_chip_data; + + + +int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags, + + int irq_base, struct regmap_irq_chip *chip, + + struct regmap_irq_chip_data **data); + +void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *data); + #endif