Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright 2012 Creative Product Design
0004  * Marc Reilly <marc@cpdesign.com.au>
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 /* __DRIVERS_MFD_MC13XXX_H */