blob: 273a07ef41f3461218d061543e03bc2ad8494527 [file] [log] [blame]
Martin Fuzzeya99472e2020-01-14 15:56:16 +00001/* 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
Martin Fuzzeyd309f622020-01-14 15:56:17 +0000308/* Regulator modes */
309enum {
310 DA9063_LDOMODE_SLEEP,
311 DA9063_LDOMODE_NORMAL
312};
313
314enum {
315 DA9063_BUCKMODE_SLEEP,
316 DA9063_BUCKMODE_SYNC,
317 DA9063_BUCKMODE_AUTO,
318};
319
Martin Fuzzeya99472e2020-01-14 15:56:16 +0000320#endif