1 /* 2 * Definitions for DA9063 MFD driver 3 * 4 * Copyright 2012 Dialog Semiconductor Ltd. 5 * 6 * Author: Michal Hajduk, Dialog Semiconductor 7 * Author: Krystian Garbaciak, Dialog Semiconductor 8 * 9 * This program is free software; you can redistribute it and/or modify it 10 * under the terms of the GNU General Public License as published by the 11 * Free Software Foundation; either version 2 of the License, or (at your 12 * option) any later version. 13 * 14 */ 15 16 #ifndef __MFD_DA9063_CORE_H__ 17 #define __MFD_DA9063_CORE_H__ 18 19 #include <linux/interrupt.h> 20 #include <linux/mfd/da9063/registers.h> 21 22 /* DA9063 modules */ 23 #define DA9063_DRVNAME_CORE "da9063-core" 24 #define DA9063_DRVNAME_REGULATORS "da9063-regulators" 25 #define DA9063_DRVNAME_LEDS "da9063-leds" 26 #define DA9063_DRVNAME_WATCHDOG "da9063-watchdog" 27 #define DA9063_DRVNAME_HWMON "da9063-hwmon" 28 #define DA9063_DRVNAME_ONKEY "da9063-onkey" 29 #define DA9063_DRVNAME_RTC "da9063-rtc" 30 #define DA9063_DRVNAME_VIBRATION "da9063-vibration" 31 32 #define PMIC_CHIP_ID_DA9063 0x61 33 34 enum da9063_type { 35 PMIC_TYPE_DA9063 = 0, 36 PMIC_TYPE_DA9063L, 37 }; 38 39 enum da9063_variant_codes { 40 PMIC_DA9063_AD = 0x3, 41 PMIC_DA9063_BB = 0x5, 42 PMIC_DA9063_CA = 0x6, 43 }; 44 45 /* Interrupts */ 46 enum da9063_irqs { 47 DA9063_IRQ_ONKEY = 0, 48 DA9063_IRQ_ALARM, 49 DA9063_IRQ_TICK, 50 DA9063_IRQ_ADC_RDY, 51 DA9063_IRQ_SEQ_RDY, 52 DA9063_IRQ_WAKE, 53 DA9063_IRQ_TEMP, 54 DA9063_IRQ_COMP_1V2, 55 DA9063_IRQ_LDO_LIM, 56 DA9063_IRQ_REG_UVOV, 57 DA9063_IRQ_DVC_RDY, 58 DA9063_IRQ_VDD_MON, 59 DA9063_IRQ_WARN, 60 DA9063_IRQ_GPI0, 61 DA9063_IRQ_GPI1, 62 DA9063_IRQ_GPI2, 63 DA9063_IRQ_GPI3, 64 DA9063_IRQ_GPI4, 65 DA9063_IRQ_GPI5, 66 DA9063_IRQ_GPI6, 67 DA9063_IRQ_GPI7, 68 DA9063_IRQ_GPI8, 69 DA9063_IRQ_GPI9, 70 DA9063_IRQ_GPI10, 71 DA9063_IRQ_GPI11, 72 DA9063_IRQ_GPI12, 73 DA9063_IRQ_GPI13, 74 DA9063_IRQ_GPI14, 75 DA9063_IRQ_GPI15, 76 }; 77 78 struct da9063 { 79 /* Device */ 80 struct device *dev; 81 enum da9063_type type; 82 unsigned char variant_code; 83 unsigned int flags; 84 85 /* Control interface */ 86 struct regmap *regmap; 87 88 /* Interrupts */ 89 int chip_irq; 90 unsigned int irq_base; 91 struct regmap_irq_chip_data *regmap_irq; 92 }; 93 94 int da9063_device_init(struct da9063 *da9063, unsigned int irq); 95 int da9063_irq_init(struct da9063 *da9063); 96 97 #endif /* __MFD_DA9063_CORE_H__ */ 98