1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  *  Copyright (C) 2018 Flowbird
4  *  Martin Fuzzey  <martin.fuzzey@flowbird.group>
5  */
6 
7 #ifndef __DA9063_PMIC_H_
8 #define __DA9063_PMIC_H_
9 
10 /* Register definitions below taken from the kernel */
11 
12 /* Page selection I2C or SPI always in the beginning of any page. */
13 /* Page 0 : I2C access 0x000 - 0x0FF	SPI access 0x000 - 0x07F */
14 /* Page 1 :				SPI access 0x080 - 0x0FF */
15 /* Page 2 : I2C access 0x100 - 0x1FF	SPI access 0x100 - 0x17F */
16 /* Page 3 :				SPI access 0x180 - 0x1FF */
17 #define	DA9063_REG_PAGE_CON		0x00
18 
19 /* System Control and Event Registers */
20 #define	DA9063_REG_STATUS_A		0x01
21 #define	DA9063_REG_STATUS_B		0x02
22 #define	DA9063_REG_STATUS_C		0x03
23 #define	DA9063_REG_STATUS_D		0x04
24 #define	DA9063_REG_FAULT_LOG		0x05
25 #define	DA9063_REG_EVENT_A		0x06
26 #define	DA9063_REG_EVENT_B		0x07
27 #define	DA9063_REG_EVENT_C		0x08
28 #define	DA9063_REG_EVENT_D		0x09
29 #define	DA9063_REG_IRQ_MASK_A		0x0A
30 #define	DA9063_REG_IRQ_MASK_B		0x0B
31 #define	DA9063_REG_IRQ_MASK_C		0x0C
32 #define	DA9063_REG_IRQ_MASK_D		0x0D
33 #define	DA9063_REG_CONTROL_A		0x0E
34 #define	DA9063_REG_CONTROL_B		0x0F
35 #define	DA9063_REG_CONTROL_C		0x10
36 #define	DA9063_REG_CONTROL_D		0x11
37 #define	DA9063_REG_CONTROL_E		0x12
38 #define	DA9063_REG_CONTROL_F		0x13
39 #define	DA9063_REG_PD_DIS		0x14
40 
41 /* GPIO Control Registers */
42 #define	DA9063_REG_GPIO_0_1		0x15
43 #define	DA9063_REG_GPIO_2_3		0x16
44 #define	DA9063_REG_GPIO_4_5		0x17
45 #define	DA9063_REG_GPIO_6_7		0x18
46 #define	DA9063_REG_GPIO_8_9		0x19
47 #define	DA9063_REG_GPIO_10_11		0x1A
48 #define	DA9063_REG_GPIO_12_13		0x1B
49 #define	DA9063_REG_GPIO_14_15		0x1C
50 #define	DA9063_REG_GPIO_MODE0_7		0x1D
51 #define	DA9063_REG_GPIO_MODE8_15	0x1E
52 #define	DA9063_REG_SWITCH_CONT		0x1F
53 
54 /* Regulator Control Registers */
55 #define	DA9063_REG_BCORE2_CONT		0x20
56 #define	DA9063_REG_BCORE1_CONT		0x21
57 #define	DA9063_REG_BPRO_CONT		0x22
58 #define	DA9063_REG_BMEM_CONT		0x23
59 #define	DA9063_REG_BIO_CONT		0x24
60 #define	DA9063_REG_BPERI_CONT		0x25
61 #define	DA9063_REG_LDO1_CONT		0x26
62 #define	DA9063_REG_LDO2_CONT		0x27
63 #define	DA9063_REG_LDO3_CONT		0x28
64 #define	DA9063_REG_LDO4_CONT		0x29
65 #define	DA9063_REG_LDO5_CONT		0x2A
66 #define	DA9063_REG_LDO6_CONT		0x2B
67 #define	DA9063_REG_LDO7_CONT		0x2C
68 #define	DA9063_REG_LDO8_CONT		0x2D
69 #define	DA9063_REG_LDO9_CONT		0x2E
70 #define	DA9063_REG_LDO10_CONT		0x2F
71 #define	DA9063_REG_LDO11_CONT		0x30
72 #define	DA9063_REG_SUPPLIES		0x31
73 #define	DA9063_REG_DVC_1		0x32
74 #define	DA9063_REG_DVC_2		0x33
75 
76 /* GP-ADC Control Registers */
77 #define	DA9063_REG_ADC_MAN		0x34
78 #define	DA9063_REG_ADC_CONT		0x35
79 #define	DA9063_REG_VSYS_MON		0x36
80 #define	DA9063_REG_ADC_RES_L		0x37
81 #define	DA9063_REG_ADC_RES_H		0x38
82 #define	DA9063_REG_VSYS_RES		0x39
83 #define	DA9063_REG_ADCIN1_RES		0x3A
84 #define	DA9063_REG_ADCIN2_RES		0x3B
85 #define	DA9063_REG_ADCIN3_RES		0x3C
86 #define	DA9063_REG_MON_A8_RES		0x3D
87 #define	DA9063_REG_MON_A9_RES		0x3E
88 #define	DA9063_REG_MON_A10_RES		0x3F
89 
90 /* RTC Calendar and Alarm Registers */
91 #define	DA9063_REG_COUNT_S		0x40
92 #define	DA9063_REG_COUNT_MI		0x41
93 #define	DA9063_REG_COUNT_H		0x42
94 #define	DA9063_REG_COUNT_D		0x43
95 #define	DA9063_REG_COUNT_MO		0x44
96 #define	DA9063_REG_COUNT_Y		0x45
97 
98 #define	DA9063_AD_REG_ALARM_MI		0x46
99 #define	DA9063_AD_REG_ALARM_H		0x47
100 #define	DA9063_AD_REG_ALARM_D		0x48
101 #define	DA9063_AD_REG_ALARM_MO		0x49
102 #define	DA9063_AD_REG_ALARM_Y		0x4A
103 #define	DA9063_AD_REG_SECOND_A		0x4B
104 #define	DA9063_AD_REG_SECOND_B		0x4C
105 #define	DA9063_AD_REG_SECOND_C		0x4D
106 #define	DA9063_AD_REG_SECOND_D		0x4E
107 
108 #define	DA9063_BB_REG_ALARM_S		0x46
109 #define	DA9063_BB_REG_ALARM_MI		0x47
110 #define	DA9063_BB_REG_ALARM_H		0x48
111 #define	DA9063_BB_REG_ALARM_D		0x49
112 #define	DA9063_BB_REG_ALARM_MO		0x4A
113 #define	DA9063_BB_REG_ALARM_Y		0x4B
114 #define	DA9063_BB_REG_SECOND_A		0x4C
115 #define	DA9063_BB_REG_SECOND_B		0x4D
116 #define	DA9063_BB_REG_SECOND_C		0x4E
117 #define	DA9063_BB_REG_SECOND_D		0x4F
118 
119 #define DA9063_REG_HOLE_1 {0x50, 0x7F}
120 
121 /* Sequencer Control Registers */
122 #define	DA9063_REG_SEQ			0x81
123 #define	DA9063_REG_SEQ_TIMER		0x82
124 #define	DA9063_REG_ID_2_1		0x83
125 #define	DA9063_REG_ID_4_3		0x84
126 #define	DA9063_REG_ID_6_5		0x85
127 #define	DA9063_REG_ID_8_7		0x86
128 #define	DA9063_REG_ID_10_9		0x87
129 #define	DA9063_REG_ID_12_11		0x88
130 #define	DA9063_REG_ID_14_13		0x89
131 #define	DA9063_REG_ID_16_15		0x8A
132 #define	DA9063_REG_ID_18_17		0x8B
133 #define	DA9063_REG_ID_20_19		0x8C
134 #define	DA9063_REG_ID_22_21		0x8D
135 #define	DA9063_REG_ID_24_23		0x8E
136 #define	DA9063_REG_ID_26_25		0x8F
137 #define	DA9063_REG_ID_28_27		0x90
138 #define	DA9063_REG_ID_30_29		0x91
139 #define	DA9063_REG_ID_32_31		0x92
140 #define	DA9063_REG_SEQ_A		0x95
141 #define	DA9063_REG_SEQ_B		0x96
142 #define	DA9063_REG_WAIT			0x97
143 #define	DA9063_REG_EN_32K		0x98
144 #define	DA9063_REG_RESET		0x99
145 
146 /* Regulator Setting Registers */
147 #define	DA9063_REG_BUCK_ILIM_A		0x9A
148 #define	DA9063_REG_BUCK_ILIM_B		0x9B
149 #define	DA9063_REG_BUCK_ILIM_C		0x9C
150 #define	DA9063_REG_BCORE2_CFG		0x9D
151 #define	DA9063_REG_BCORE1_CFG		0x9E
152 #define	DA9063_REG_BPRO_CFG		0x9F
153 #define	DA9063_REG_BIO_CFG		0xA0
154 #define	DA9063_REG_BMEM_CFG		0xA1
155 #define	DA9063_REG_BPERI_CFG		0xA2
156 #define	DA9063_REG_VBCORE2_A		0xA3
157 #define	DA9063_REG_VBCORE1_A		0xA4
158 #define	DA9063_REG_VBPRO_A		0xA5
159 #define	DA9063_REG_VBMEM_A		0xA6
160 #define	DA9063_REG_VBIO_A		0xA7
161 #define	DA9063_REG_VBPERI_A		0xA8
162 #define	DA9063_REG_VLDO1_A		0xA9
163 #define	DA9063_REG_VLDO2_A		0xAA
164 #define	DA9063_REG_VLDO3_A		0xAB
165 #define	DA9063_REG_VLDO4_A		0xAC
166 #define	DA9063_REG_VLDO5_A		0xAD
167 #define	DA9063_REG_VLDO6_A		0xAE
168 #define	DA9063_REG_VLDO7_A		0xAF
169 #define	DA9063_REG_VLDO8_A		0xB0
170 #define	DA9063_REG_VLDO9_A		0xB1
171 #define	DA9063_REG_VLDO10_A		0xB2
172 #define	DA9063_REG_VLDO11_A		0xB3
173 #define	DA9063_REG_VBCORE2_B		0xB4
174 #define	DA9063_REG_VBCORE1_B		0xB5
175 #define	DA9063_REG_VBPRO_B		0xB6
176 #define	DA9063_REG_VBMEM_B		0xB7
177 #define	DA9063_REG_VBIO_B		0xB8
178 #define	DA9063_REG_VBPERI_B		0xB9
179 #define	DA9063_REG_VLDO1_B		0xBA
180 #define	DA9063_REG_VLDO2_B		0xBB
181 #define	DA9063_REG_VLDO3_B		0xBC
182 #define	DA9063_REG_VLDO4_B		0xBD
183 #define	DA9063_REG_VLDO5_B		0xBE
184 #define	DA9063_REG_VLDO6_B		0xBF
185 #define	DA9063_REG_VLDO7_B		0xC0
186 #define	DA9063_REG_VLDO8_B		0xC1
187 #define	DA9063_REG_VLDO9_B		0xC2
188 #define	DA9063_REG_VLDO10_B		0xC3
189 #define	DA9063_REG_VLDO11_B		0xC4
190 
191 /* Backup Battery Charger Control Register */
192 #define	DA9063_REG_BBAT_CONT		0xC5
193 
194 /* GPIO PWM (LED) */
195 #define	DA9063_REG_GPO11_LED		0xC6
196 #define	DA9063_REG_GPO14_LED		0xC7
197 #define	DA9063_REG_GPO15_LED		0xC8
198 
199 /* GP-ADC Threshold Registers */
200 #define	DA9063_REG_ADC_CFG		0xC9
201 #define	DA9063_REG_AUTO1_HIGH		0xCA
202 #define	DA9063_REG_AUTO1_LOW		0xCB
203 #define	DA9063_REG_AUTO2_HIGH		0xCC
204 #define	DA9063_REG_AUTO2_LOW		0xCD
205 #define	DA9063_REG_AUTO3_HIGH		0xCE
206 #define	DA9063_REG_AUTO3_LOW		0xCF
207 
208 #define DA9063_REG_HOLE_2 {0xD0, 0xFF}
209 
210 /* DA9063 Configuration registers */
211 /* OTP */
212 #define	DA9063_REG_OTP_COUNT		0x101
213 #define	DA9063_REG_OTP_ADDR		0x102
214 #define	DA9063_REG_OTP_DATA		0x103
215 
216 /* Customer Trim and Configuration */
217 #define	DA9063_REG_T_OFFSET		0x104
218 #define	DA9063_REG_INTERFACE		0x105
219 #define	DA9063_REG_CONFIG_A		0x106
220 #define	DA9063_REG_CONFIG_B		0x107
221 #define	DA9063_REG_CONFIG_C		0x108
222 #define	DA9063_REG_CONFIG_D		0x109
223 #define	DA9063_REG_CONFIG_E		0x10A
224 #define	DA9063_REG_CONFIG_F		0x10B
225 #define	DA9063_REG_CONFIG_G		0x10C
226 #define	DA9063_REG_CONFIG_H		0x10D
227 #define	DA9063_REG_CONFIG_I		0x10E
228 #define	DA9063_REG_CONFIG_J		0x10F
229 #define	DA9063_REG_CONFIG_K		0x110
230 #define	DA9063_REG_CONFIG_L		0x111
231 
232 #define	DA9063_AD_REG_MON_REG_1		0x112
233 #define	DA9063_AD_REG_MON_REG_2		0x113
234 #define	DA9063_AD_REG_MON_REG_3		0x114
235 #define	DA9063_AD_REG_MON_REG_4		0x115
236 #define	DA9063_AD_REG_MON_REG_5		0x116
237 #define	DA9063_AD_REG_MON_REG_6		0x117
238 #define	DA9063_AD_REG_TRIM_CLDR		0x118
239 
240 #define	DA9063_AD_REG_GP_ID_0		0x119
241 #define	DA9063_AD_REG_GP_ID_1		0x11A
242 #define	DA9063_AD_REG_GP_ID_2		0x11B
243 #define	DA9063_AD_REG_GP_ID_3		0x11C
244 #define	DA9063_AD_REG_GP_ID_4		0x11D
245 #define	DA9063_AD_REG_GP_ID_5		0x11E
246 #define	DA9063_AD_REG_GP_ID_6		0x11F
247 #define	DA9063_AD_REG_GP_ID_7		0x120
248 #define	DA9063_AD_REG_GP_ID_8		0x121
249 #define	DA9063_AD_REG_GP_ID_9		0x122
250 #define	DA9063_AD_REG_GP_ID_10		0x123
251 #define	DA9063_AD_REG_GP_ID_11		0x124
252 #define	DA9063_AD_REG_GP_ID_12		0x125
253 #define	DA9063_AD_REG_GP_ID_13		0x126
254 #define	DA9063_AD_REG_GP_ID_14		0x127
255 #define	DA9063_AD_REG_GP_ID_15		0x128
256 #define	DA9063_AD_REG_GP_ID_16		0x129
257 #define	DA9063_AD_REG_GP_ID_17		0x12A
258 #define	DA9063_AD_REG_GP_ID_18		0x12B
259 #define	DA9063_AD_REG_GP_ID_19		0x12C
260 
261 #define	DA9063_BB_REG_CONFIG_M		0x112
262 #define	DA9063_BB_REG_CONFIG_N		0x113
263 
264 #define	DA9063_BB_REG_MON_REG_1		0x114
265 #define	DA9063_BB_REG_MON_REG_2		0x115
266 #define	DA9063_BB_REG_MON_REG_3		0x116
267 #define	DA9063_BB_REG_MON_REG_4		0x117
268 #define	DA9063_BB_REG_MON_REG_5		0x11E
269 #define	DA9063_BB_REG_MON_REG_6		0x11F
270 #define	DA9063_BB_REG_TRIM_CLDR		0x120
271 /* General Purpose Registers */
272 #define	DA9063_BB_REG_GP_ID_0		0x121
273 #define	DA9063_BB_REG_GP_ID_1		0x122
274 #define	DA9063_BB_REG_GP_ID_2		0x123
275 #define	DA9063_BB_REG_GP_ID_3		0x124
276 #define	DA9063_BB_REG_GP_ID_4		0x125
277 #define	DA9063_BB_REG_GP_ID_5		0x126
278 #define	DA9063_BB_REG_GP_ID_6		0x127
279 #define	DA9063_BB_REG_GP_ID_7		0x128
280 #define	DA9063_BB_REG_GP_ID_8		0x129
281 #define	DA9063_BB_REG_GP_ID_9		0x12A
282 #define	DA9063_BB_REG_GP_ID_10		0x12B
283 #define	DA9063_BB_REG_GP_ID_11		0x12C
284 #define	DA9063_BB_REG_GP_ID_12		0x12D
285 #define	DA9063_BB_REG_GP_ID_13		0x12E
286 #define	DA9063_BB_REG_GP_ID_14		0x12F
287 #define	DA9063_BB_REG_GP_ID_15		0x130
288 #define	DA9063_BB_REG_GP_ID_16		0x131
289 #define	DA9063_BB_REG_GP_ID_17		0x132
290 #define	DA9063_BB_REG_GP_ID_18		0x133
291 #define	DA9063_BB_REG_GP_ID_19		0x134
292 
293 /* 0x135 - 0x13f are readable, but not documented */
294 #define DA9063_REG_HOLE_3 {0x140, 0x17F}
295 
296 /* Chip ID and variant */
297 #define	DA9063_REG_CHIP_ID		0x181
298 #define	DA9063_REG_CHIP_VARIANT		0x182
299 #define DA9063_REG_CUSTOMER_ID		0x183
300 #define DA9063_REG_CONFIG_ID		0x184
301 
302 #define DA9063_NUM_OF_REGS		(DA9063_REG_CONFIG_ID + 1)
303 
304 /* Drivers name */
305 #define DA9063_LDO_DRIVER	"da9063_ldo"
306 #define DA9063_BUCK_DRIVER	"da9063_buck"
307 
308 /* Regulator modes */
309 enum {
310 	DA9063_LDOMODE_SLEEP,
311 	DA9063_LDOMODE_NORMAL
312 };
313 
314 enum {
315 	DA9063_BUCKMODE_SLEEP,
316 	DA9063_BUCKMODE_SYNC,
317 	DA9063_BUCKMODE_AUTO,
318 };
319 
320 #endif
321