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 17struct mc13xxx; 18 19struct mc13xxx_variant { 20 const char *name; 21 void (*print_revision)(struct mc13xxx *mc13xxx, u32 revision); 22}; 23 24extern struct mc13xxx_variant 25 mc13xxx_variant_mc13783, 26 mc13xxx_variant_mc13892, 27 mc13xxx_variant_mc34708; 28 29struct 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 46int mc13xxx_common_init(struct device *dev); 47int mc13xxx_common_exit(struct device *dev); 48 49#endif /* __DRIVERS_MFD_MC13XXX_H */ 50