mc13xxx.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. #include <linux/mutex.h>
  9. #include <linux/regmap.h>
  10. #include <linux/mfd/mc13xxx.h>
  11. #define MC13XXX_NUMREGS 0x3f
  12. #define MC13XXX_IRQ_REG_CNT 2
  13. #define MC13XXX_IRQ_PER_REG 24
  14. struct mc13xxx;
  15. struct mc13xxx_variant {
  16. const char *name;
  17. void (*print_revision)(struct mc13xxx *mc13xxx, u32 revision);
  18. };
  19. extern struct mc13xxx_variant
  20. mc13xxx_variant_mc13783,
  21. mc13xxx_variant_mc13892,
  22. mc13xxx_variant_mc34708;
  23. struct mc13xxx {
  24. struct regmap *regmap;
  25. struct device *dev;
  26. const struct mc13xxx_variant *variant;
  27. struct regmap_irq irqs[MC13XXX_IRQ_PER_REG * MC13XXX_IRQ_REG_CNT];
  28. struct regmap_irq_chip irq_chip;
  29. struct regmap_irq_chip_data *irq_data;
  30. struct mutex lock;
  31. int irq;
  32. int flags;
  33. int adcflags;
  34. };
  35. int mc13xxx_common_init(struct device *dev);
  36. int mc13xxx_common_exit(struct device *dev);
  37. #endif /* __DRIVERS_MFD_MC13XXX_H */