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