0001
0002
0003
0004
0005
0006 #ifndef __DRIVERS_MFD_MC13XXX_H
0007 #define __DRIVERS_MFD_MC13XXX_H
0008
0009 #include <linux/mutex.h>
0010 #include <linux/regmap.h>
0011 #include <linux/mfd/mc13xxx.h>
0012
0013 #define MC13XXX_NUMREGS 0x3f
0014 #define MC13XXX_IRQ_REG_CNT 2
0015 #define MC13XXX_IRQ_PER_REG 24
0016
0017 struct mc13xxx;
0018
0019 struct mc13xxx_variant {
0020 const char *name;
0021 void (*print_revision)(struct mc13xxx *mc13xxx, u32 revision);
0022 };
0023
0024 extern struct mc13xxx_variant
0025 mc13xxx_variant_mc13783,
0026 mc13xxx_variant_mc13892,
0027 mc13xxx_variant_mc34708;
0028
0029 struct mc13xxx {
0030 struct regmap *regmap;
0031
0032 struct device *dev;
0033 const struct mc13xxx_variant *variant;
0034
0035 struct regmap_irq irqs[MC13XXX_IRQ_PER_REG * MC13XXX_IRQ_REG_CNT];
0036 struct regmap_irq_chip irq_chip;
0037 struct regmap_irq_chip_data *irq_data;
0038
0039 struct mutex lock;
0040 int irq;
0041 int flags;
0042
0043 int adcflags;
0044 };
0045
0046 int mc13xxx_common_init(struct device *dev);
0047 void mc13xxx_common_exit(struct device *dev);
0048
0049 #endif