Commit | Line | Data |
---|---|---|
8e685483 KG |
1 | /* |
2 | * Definitions for DA9063 MFD driver | |
3 | * | |
4 | * Copyright 2012 Dialog Semiconductor Ltd. | |
5 | * | |
6 | * Author: Michal Hajduk <michal.hajduk@diasemi.com> | |
7 | * Krystian Garbaciak <krystian.garbaciak@diasemi.com> | |
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 | enum da9063_models { | |
33 | PMIC_DA9063 = 0x61, | |
34 | }; | |
35 | ||
c1d12c78 | 36 | enum da9063_variant_codes { |
9cb42e2a OST |
37 | PMIC_DA9063_AD = 0x3, |
38 | PMIC_DA9063_BB = 0x5, | |
71e03de4 | 39 | PMIC_DA9063_CA = 0x6, |
c1d12c78 OST |
40 | }; |
41 | ||
a0e08b86 KG |
42 | /* Interrupts */ |
43 | enum da9063_irqs { | |
44 | DA9063_IRQ_ONKEY = 0, | |
45 | DA9063_IRQ_ALARM, | |
46 | DA9063_IRQ_TICK, | |
47 | DA9063_IRQ_ADC_RDY, | |
48 | DA9063_IRQ_SEQ_RDY, | |
49 | DA9063_IRQ_WAKE, | |
50 | DA9063_IRQ_TEMP, | |
51 | DA9063_IRQ_COMP_1V2, | |
52 | DA9063_IRQ_LDO_LIM, | |
53 | DA9063_IRQ_REG_UVOV, | |
03b42710 | 54 | DA9063_IRQ_DVC_RDY, |
a0e08b86 KG |
55 | DA9063_IRQ_VDD_MON, |
56 | DA9063_IRQ_WARN, | |
57 | DA9063_IRQ_GPI0, | |
58 | DA9063_IRQ_GPI1, | |
59 | DA9063_IRQ_GPI2, | |
60 | DA9063_IRQ_GPI3, | |
61 | DA9063_IRQ_GPI4, | |
62 | DA9063_IRQ_GPI5, | |
63 | DA9063_IRQ_GPI6, | |
64 | DA9063_IRQ_GPI7, | |
65 | DA9063_IRQ_GPI8, | |
66 | DA9063_IRQ_GPI9, | |
67 | DA9063_IRQ_GPI10, | |
68 | DA9063_IRQ_GPI11, | |
69 | DA9063_IRQ_GPI12, | |
70 | DA9063_IRQ_GPI13, | |
71 | DA9063_IRQ_GPI14, | |
72 | DA9063_IRQ_GPI15, | |
73 | }; | |
74 | ||
75 | #define DA9063_IRQ_BASE_OFFSET 0 | |
76 | #define DA9063_NUM_IRQ (DA9063_IRQ_GPI15 + 1 - DA9063_IRQ_BASE_OFFSET) | |
77 | ||
8e685483 KG |
78 | struct da9063 { |
79 | /* Device */ | |
80 | struct device *dev; | |
81 | unsigned short model; | |
c1d12c78 | 82 | unsigned char variant_code; |
8e685483 KG |
83 | unsigned int flags; |
84 | ||
85 | /* Control interface */ | |
86 | struct regmap *regmap; | |
87 | ||
88 | /* Interrupts */ | |
89 | int chip_irq; | |
90 | unsigned int irq_base; | |
a0e08b86 | 91 | struct regmap_irq_chip_data *regmap_irq; |
8e685483 KG |
92 | }; |
93 | ||
94 | int da9063_device_init(struct da9063 *da9063, unsigned int irq); | |
a0e08b86 | 95 | int da9063_irq_init(struct da9063 *da9063); |
8e685483 KG |
96 | |
97 | void da9063_device_exit(struct da9063 *da9063); | |
a0e08b86 | 98 | void da9063_irq_exit(struct da9063 *da9063); |
8e685483 KG |
99 | |
100 | #endif /* __MFD_DA9063_CORE_H__ */ |