1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright 2012 Creative Product Design 4 * Marc Reilly <marc@cpdesign.com.au> 5 */ 6 #ifndef __DRIVERS_MFD_MC13XXX_H 7 #define __DRIVERS_MFD_MC13XXX_H 8 9 #include <linux/mutex.h> 10 #include <linux/regmap.h> 11 #include <linux/mfd/mc13xxx.h> 12 13 #define MC13XXX_NUMREGS 0x3f 14 #define MC13XXX_IRQ_REG_CNT 2 15 #define MC13XXX_IRQ_PER_REG 24 16 17 struct mc13xxx; 18 19 struct mc13xxx_variant { 20 const char *name; 21 void (*print_revision)(struct mc13xxx *mc13xxx, u32 revision); 22 }; 23 24 extern struct mc13xxx_variant 25 mc13xxx_variant_mc13783, 26 mc13xxx_variant_mc13892, 27 mc13xxx_variant_mc34708; 28 29 struct mc13xxx { 30 struct regmap *regmap; 31 32 struct device *dev; 33 const struct mc13xxx_variant *variant; 34 35 struct regmap_irq irqs[MC13XXX_IRQ_PER_REG * MC13XXX_IRQ_REG_CNT]; 36 struct regmap_irq_chip irq_chip; 37 struct regmap_irq_chip_data *irq_data; 38 39 struct mutex lock; 40 int irq; 41 int flags; 42 43 int adcflags; 44 }; 45 46 int mc13xxx_common_init(struct device *dev); 47 int mc13xxx_common_exit(struct device *dev); 48 49 #endif /* __DRIVERS_MFD_MC13XXX_H */ 50