~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/mfd/wm8350/pmic.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*
  3  * pmic.h  --  Power Management Driver for Wolfson WM8350 PMIC
  4  *
  5  * Copyright 2007 Wolfson Microelectronics PLC
  6  */
  7 
  8 #ifndef __LINUX_MFD_WM8350_PMIC_H
  9 #define __LINUX_MFD_WM8350_PMIC_H
 10 
 11 #include <linux/platform_device.h>
 12 #include <linux/leds.h>
 13 #include <linux/regulator/machine.h>
 14 
 15 /*
 16  * Register values.
 17  */
 18 
 19 #define WM8350_CURRENT_SINK_DRIVER_A            0xAC
 20 #define WM8350_CSA_FLASH_CONTROL                0xAD
 21 #define WM8350_CURRENT_SINK_DRIVER_B            0xAE
 22 #define WM8350_CSB_FLASH_CONTROL                0xAF
 23 #define WM8350_DCDC_LDO_REQUESTED               0xB0
 24 #define WM8350_DCDC_ACTIVE_OPTIONS              0xB1
 25 #define WM8350_DCDC_SLEEP_OPTIONS               0xB2
 26 #define WM8350_POWER_CHECK_COMPARATOR           0xB3
 27 #define WM8350_DCDC1_CONTROL                    0xB4
 28 #define WM8350_DCDC1_TIMEOUTS                   0xB5
 29 #define WM8350_DCDC1_LOW_POWER                  0xB6
 30 #define WM8350_DCDC2_CONTROL                    0xB7
 31 #define WM8350_DCDC2_TIMEOUTS                   0xB8
 32 #define WM8350_DCDC3_CONTROL                    0xBA
 33 #define WM8350_DCDC3_TIMEOUTS                   0xBB
 34 #define WM8350_DCDC3_LOW_POWER                  0xBC
 35 #define WM8350_DCDC4_CONTROL                    0xBD
 36 #define WM8350_DCDC4_TIMEOUTS                   0xBE
 37 #define WM8350_DCDC4_LOW_POWER                  0xBF
 38 #define WM8350_DCDC5_CONTROL                    0xC0
 39 #define WM8350_DCDC5_TIMEOUTS                   0xC1
 40 #define WM8350_DCDC6_CONTROL                    0xC3
 41 #define WM8350_DCDC6_TIMEOUTS                   0xC4
 42 #define WM8350_DCDC6_LOW_POWER                  0xC5
 43 #define WM8350_LIMIT_SWITCH_CONTROL             0xC7
 44 #define WM8350_LDO1_CONTROL                     0xC8
 45 #define WM8350_LDO1_TIMEOUTS                    0xC9
 46 #define WM8350_LDO1_LOW_POWER                   0xCA
 47 #define WM8350_LDO2_CONTROL                     0xCB
 48 #define WM8350_LDO2_TIMEOUTS                    0xCC
 49 #define WM8350_LDO2_LOW_POWER                   0xCD
 50 #define WM8350_LDO3_CONTROL                     0xCE
 51 #define WM8350_LDO3_TIMEOUTS                    0xCF
 52 #define WM8350_LDO3_LOW_POWER                   0xD0
 53 #define WM8350_LDO4_CONTROL                     0xD1
 54 #define WM8350_LDO4_TIMEOUTS                    0xD2
 55 #define WM8350_LDO4_LOW_POWER                   0xD3
 56 #define WM8350_VCC_FAULT_MASKS                  0xD7
 57 #define WM8350_MAIN_BANDGAP_CONTROL             0xD8
 58 #define WM8350_OSC_CONTROL                      0xD9
 59 #define WM8350_RTC_TICK_CONTROL                 0xDA
 60 #define WM8350_SECURITY                         0xDB
 61 #define WM8350_RAM_BIST_1                       0xDC
 62 #define WM8350_DCDC_LDO_STATUS                  0xE1
 63 #define WM8350_GPIO_PIN_STATUS                  0xE6
 64 
 65 #define WM8350_DCDC1_FORCE_PWM                  0xF8
 66 #define WM8350_DCDC3_FORCE_PWM                  0xFA
 67 #define WM8350_DCDC4_FORCE_PWM                  0xFB
 68 #define WM8350_DCDC6_FORCE_PWM                  0xFD
 69 
 70 /*
 71  * R172 (0xAC) - Current Sink Driver A
 72  */
 73 #define WM8350_CS1_HIB_MODE                     0x1000
 74 #define WM8350_CS1_HIB_MODE_MASK                0x1000
 75 #define WM8350_CS1_HIB_MODE_SHIFT                   12
 76 #define WM8350_CS1_ISEL_MASK                    0x003F
 77 #define WM8350_CS1_ISEL_SHIFT                        0
 78 
 79 /* Bit values for R172 (0xAC) */
 80 #define WM8350_CS1_HIB_MODE_DISABLE                  0
 81 #define WM8350_CS1_HIB_MODE_LEAVE                    1
 82 
 83 #define WM8350_CS1_ISEL_220M                      0x3F
 84 
 85 /*
 86  * R173 (0xAD) - CSA Flash control
 87  */
 88 #define WM8350_CS1_FLASH_MODE                   0x8000
 89 #define WM8350_CS1_TRIGSRC                      0x4000
 90 #define WM8350_CS1_DRIVE                        0x2000
 91 #define WM8350_CS1_FLASH_DUR_MASK               0x0300
 92 #define WM8350_CS1_OFF_RAMP_MASK                0x0030
 93 #define WM8350_CS1_ON_RAMP_MASK                 0x0003
 94 
 95 /*
 96  * R174 (0xAE) - Current Sink Driver B
 97  */
 98 #define WM8350_CS2_HIB_MODE                     0x1000
 99 #define WM8350_CS2_ISEL_MASK                    0x003F
100 
101 /*
102  * R175 (0xAF) - CSB Flash control
103  */
104 #define WM8350_CS2_FLASH_MODE                   0x8000
105 #define WM8350_CS2_TRIGSRC                      0x4000
106 #define WM8350_CS2_DRIVE                        0x2000
107 #define WM8350_CS2_FLASH_DUR_MASK               0x0300
108 #define WM8350_CS2_OFF_RAMP_MASK                0x0030
109 #define WM8350_CS2_ON_RAMP_MASK                 0x0003
110 
111 /*
112  * R176 (0xB0) - DCDC/LDO requested
113  */
114 #define WM8350_LS_ENA                           0x8000
115 #define WM8350_LDO4_ENA                         0x0800
116 #define WM8350_LDO3_ENA                         0x0400
117 #define WM8350_LDO2_ENA                         0x0200
118 #define WM8350_LDO1_ENA                         0x0100
119 #define WM8350_DC6_ENA                          0x0020
120 #define WM8350_DC5_ENA                          0x0010
121 #define WM8350_DC4_ENA                          0x0008
122 #define WM8350_DC3_ENA                          0x0004
123 #define WM8350_DC2_ENA                          0x0002
124 #define WM8350_DC1_ENA                          0x0001
125 
126 /*
127  * R177 (0xB1) - DCDC Active options
128  */
129 #define WM8350_PUTO_MASK                        0x3000
130 #define WM8350_PWRUP_DELAY_MASK                 0x0300
131 #define WM8350_DC6_ACTIVE                       0x0020
132 #define WM8350_DC4_ACTIVE                       0x0008
133 #define WM8350_DC3_ACTIVE                       0x0004
134 #define WM8350_DC1_ACTIVE                       0x0001
135 
136 /*
137  * R178 (0xB2) - DCDC Sleep options
138  */
139 #define WM8350_DC6_SLEEP                        0x0020
140 #define WM8350_DC4_SLEEP                        0x0008
141 #define WM8350_DC3_SLEEP                        0x0004
142 #define WM8350_DC1_SLEEP                        0x0001
143 
144 /*
145  * R179 (0xB3) - Power-check comparator
146  */
147 #define WM8350_PCCMP_ERRACT                     0x4000
148 #define WM8350_PCCMP_RAIL                       0x0100
149 #define WM8350_PCCMP_OFF_THR_MASK               0x0070
150 #define WM8350_PCCMP_ON_THR_MASK                0x0007
151 
152 /*
153  * R180 (0xB4) - DCDC1 Control
154  */
155 #define WM8350_DC1_OPFLT                        0x0400
156 #define WM8350_DC1_VSEL_MASK                    0x007F
157 #define WM8350_DC1_VSEL_SHIFT                        0
158 
159 /*
160  * R181 (0xB5) - DCDC1 Timeouts
161  */
162 #define WM8350_DC1_ERRACT_MASK                  0xC000
163 #define WM8350_DC1_ERRACT_SHIFT                     14
164 #define WM8350_DC1_ENSLOT_MASK                  0x3C00
165 #define WM8350_DC1_ENSLOT_SHIFT                     10
166 #define WM8350_DC1_SDSLOT_MASK                  0x03C0
167 #define WM8350_DC1_UVTO_MASK                    0x0030
168 #define WM8350_DC1_SDSLOT_SHIFT                      6
169 
170 /* Bit values for R181 (0xB5) */
171 #define WM8350_DC1_ERRACT_NONE                       0
172 #define WM8350_DC1_ERRACT_SHUTDOWN_CONV              1
173 #define WM8350_DC1_ERRACT_SHUTDOWN_SYS               2
174 
175 /*
176  * R182 (0xB6) - DCDC1 Low Power
177  */
178 #define WM8350_DC1_HIB_MODE_MASK                0x7000
179 #define WM8350_DC1_HIB_TRIG_MASK                0x0300
180 #define WM8350_DC1_VIMG_MASK                    0x007F
181 
182 /*
183  * R183 (0xB7) - DCDC2 Control
184  */
185 #define WM8350_DC2_MODE                         0x4000
186 #define WM8350_DC2_MODE_MASK                    0x4000
187 #define WM8350_DC2_MODE_SHIFT                       14
188 #define WM8350_DC2_HIB_MODE                     0x1000
189 #define WM8350_DC2_HIB_MODE_MASK                0x1000
190 #define WM8350_DC2_HIB_MODE_SHIFT                   12
191 #define WM8350_DC2_HIB_TRIG_MASK                0x0300
192 #define WM8350_DC2_HIB_TRIG_SHIFT                    8
193 #define WM8350_DC2_ILIM                         0x0040
194 #define WM8350_DC2_ILIM_MASK                    0x0040
195 #define WM8350_DC2_ILIM_SHIFT                        6
196 #define WM8350_DC2_RMP_MASK                     0x0018
197 #define WM8350_DC2_RMP_SHIFT                         3
198 #define WM8350_DC2_FBSRC_MASK                   0x0003
199 #define WM8350_DC2_FBSRC_SHIFT                       0
200 
201 /* Bit values for R183 (0xB7) */
202 #define WM8350_DC2_MODE_BOOST                        0
203 #define WM8350_DC2_MODE_SWITCH                       1
204 
205 #define WM8350_DC2_HIB_MODE_ACTIVE                   1
206 #define WM8350_DC2_HIB_MODE_DISABLE                  0
207 
208 #define WM8350_DC2_HIB_TRIG_NONE                     0
209 #define WM8350_DC2_HIB_TRIG_LPWR1                    1
210 #define WM8350_DC2_HIB_TRIG_LPWR2                    2
211 #define WM8350_DC2_HIB_TRIG_LPWR3                    3
212 
213 #define WM8350_DC2_ILIM_HIGH                         0
214 #define WM8350_DC2_ILIM_LOW                          1
215 
216 #define WM8350_DC2_RMP_30V                           0
217 #define WM8350_DC2_RMP_20V                           1
218 #define WM8350_DC2_RMP_10V                           2
219 #define WM8350_DC2_RMP_5V                            3
220 
221 #define WM8350_DC2_FBSRC_FB2                         0
222 #define WM8350_DC2_FBSRC_ISINKA                      1
223 #define WM8350_DC2_FBSRC_ISINKB                      2
224 #define WM8350_DC2_FBSRC_USB                         3
225 
226 /*
227  * R184 (0xB8) - DCDC2 Timeouts
228  */
229 #define WM8350_DC2_ERRACT_MASK                  0xC000
230 #define WM8350_DC2_ERRACT_SHIFT                     14
231 #define WM8350_DC2_ENSLOT_MASK                  0x3C00
232 #define WM8350_DC2_ENSLOT_SHIFT                     10
233 #define WM8350_DC2_SDSLOT_MASK                  0x03C0
234 #define WM8350_DC2_UVTO_MASK                    0x0030
235 
236 /* Bit values for R184 (0xB8) */
237 #define WM8350_DC2_ERRACT_NONE                       0
238 #define WM8350_DC2_ERRACT_SHUTDOWN_CONV              1
239 #define WM8350_DC2_ERRACT_SHUTDOWN_SYS               2
240 
241 /*
242  * R186 (0xBA) - DCDC3 Control
243  */
244 #define WM8350_DC3_OPFLT                        0x0400
245 #define WM8350_DC3_VSEL_MASK                    0x007F
246 #define WM8350_DC3_VSEL_SHIFT                        0
247 
248 /*
249  * R187 (0xBB) - DCDC3 Timeouts
250  */
251 #define WM8350_DC3_ERRACT_MASK                  0xC000
252 #define WM8350_DC3_ERRACT_SHIFT                     14
253 #define WM8350_DC3_ENSLOT_MASK                  0x3C00
254 #define WM8350_DC3_ENSLOT_SHIFT                     10
255 #define WM8350_DC3_SDSLOT_MASK                  0x03C0
256 #define WM8350_DC3_UVTO_MASK                    0x0030
257 #define WM8350_DC3_SDSLOT_SHIFT                      6
258 
259 /* Bit values for R187 (0xBB) */
260 #define WM8350_DC3_ERRACT_NONE                       0
261 #define WM8350_DC3_ERRACT_SHUTDOWN_CONV              1
262 #define WM8350_DC3_ERRACT_SHUTDOWN_SYS               2
263 /*
264  * R188 (0xBC) - DCDC3 Low Power
265  */
266 #define WM8350_DC3_HIB_MODE_MASK                0x7000
267 #define WM8350_DC3_HIB_TRIG_MASK                0x0300
268 #define WM8350_DC3_VIMG_MASK                    0x007F
269 
270 /*
271  * R189 (0xBD) - DCDC4 Control
272  */
273 #define WM8350_DC4_OPFLT                        0x0400
274 #define WM8350_DC4_VSEL_MASK                    0x007F
275 #define WM8350_DC4_VSEL_SHIFT                        0
276 
277 /*
278  * R190 (0xBE) - DCDC4 Timeouts
279  */
280 #define WM8350_DC4_ERRACT_MASK                  0xC000
281 #define WM8350_DC4_ERRACT_SHIFT                     14
282 #define WM8350_DC4_ENSLOT_MASK                  0x3C00
283 #define WM8350_DC4_ENSLOT_SHIFT                     10
284 #define WM8350_DC4_SDSLOT_MASK                  0x03C0
285 #define WM8350_DC4_UVTO_MASK                    0x0030
286 #define WM8350_DC4_SDSLOT_SHIFT                      6
287 
288 /* Bit values for R190 (0xBE) */
289 #define WM8350_DC4_ERRACT_NONE                       0
290 #define WM8350_DC4_ERRACT_SHUTDOWN_CONV              1
291 #define WM8350_DC4_ERRACT_SHUTDOWN_SYS               2
292 
293 /*
294  * R191 (0xBF) - DCDC4 Low Power
295  */
296 #define WM8350_DC4_HIB_MODE_MASK                0x7000
297 #define WM8350_DC4_HIB_TRIG_MASK                0x0300
298 #define WM8350_DC4_VIMG_MASK                    0x007F
299 
300 /*
301  * R192 (0xC0) - DCDC5 Control
302  */
303 #define WM8350_DC5_MODE                         0x4000
304 #define WM8350_DC5_MODE_MASK                    0x4000
305 #define WM8350_DC5_MODE_SHIFT                       14
306 #define WM8350_DC5_HIB_MODE                     0x1000
307 #define WM8350_DC5_HIB_MODE_MASK                0x1000
308 #define WM8350_DC5_HIB_MODE_SHIFT                   12
309 #define WM8350_DC5_HIB_TRIG_MASK                0x0300
310 #define WM8350_DC5_HIB_TRIG_SHIFT                    8
311 #define WM8350_DC5_ILIM                         0x0040
312 #define WM8350_DC5_ILIM_MASK                    0x0040
313 #define WM8350_DC5_ILIM_SHIFT                        6
314 #define WM8350_DC5_RMP_MASK                     0x0018
315 #define WM8350_DC5_RMP_SHIFT                         3
316 #define WM8350_DC5_FBSRC_MASK                   0x0003
317 #define WM8350_DC5_FBSRC_SHIFT                       0
318 
319 /* Bit values for R192 (0xC0) */
320 #define WM8350_DC5_MODE_BOOST                        0
321 #define WM8350_DC5_MODE_SWITCH                       1
322 
323 #define WM8350_DC5_HIB_MODE_ACTIVE                   1
324 #define WM8350_DC5_HIB_MODE_DISABLE                  0
325 
326 #define WM8350_DC5_HIB_TRIG_NONE                     0
327 #define WM8350_DC5_HIB_TRIG_LPWR1                    1
328 #define WM8350_DC5_HIB_TRIG_LPWR2                    2
329 #define WM8350_DC5_HIB_TRIG_LPWR3                    3
330 
331 #define WM8350_DC5_ILIM_HIGH                         0
332 #define WM8350_DC5_ILIM_LOW                          1
333 
334 #define WM8350_DC5_RMP_30V                           0
335 #define WM8350_DC5_RMP_20V                           1
336 #define WM8350_DC5_RMP_10V                           2
337 #define WM8350_DC5_RMP_5V                            3
338 
339 #define WM8350_DC5_FBSRC_FB2                         0
340 #define WM8350_DC5_FBSRC_ISINKA                      1
341 #define WM8350_DC5_FBSRC_ISINKB                      2
342 #define WM8350_DC5_FBSRC_USB                         3
343 
344 /*
345  * R193 (0xC1) - DCDC5 Timeouts
346  */
347 #define WM8350_DC5_ERRACT_MASK                  0xC000
348 #define WM8350_DC5_ERRACT_SHIFT                     14
349 #define WM8350_DC5_ENSLOT_MASK                  0x3C00
350 #define WM8350_DC5_ENSLOT_SHIFT                     10
351 #define WM8350_DC5_SDSLOT_MASK                  0x03C0
352 #define WM8350_DC5_UVTO_MASK                    0x0030
353 #define WM8350_DC5_SDSLOT_SHIFT                      6
354 
355 /* Bit values for R193 (0xC1) */
356 #define WM8350_DC5_ERRACT_NONE                       0
357 #define WM8350_DC5_ERRACT_SHUTDOWN_CONV              1
358 #define WM8350_DC5_ERRACT_SHUTDOWN_SYS               2
359 
360 /*
361  * R195 (0xC3) - DCDC6 Control
362  */
363 #define WM8350_DC6_OPFLT                        0x0400
364 #define WM8350_DC6_VSEL_MASK                    0x007F
365 #define WM8350_DC6_VSEL_SHIFT                        0
366 
367 /*
368  * R196 (0xC4) - DCDC6 Timeouts
369  */
370 #define WM8350_DC6_ERRACT_MASK                  0xC000
371 #define WM8350_DC6_ERRACT_SHIFT                     14
372 #define WM8350_DC6_ENSLOT_MASK                  0x3C00
373 #define WM8350_DC6_ENSLOT_SHIFT                     10
374 #define WM8350_DC6_SDSLOT_MASK                  0x03C0
375 #define WM8350_DC6_UVTO_MASK                    0x0030
376 #define WM8350_DC6_SDSLOT_SHIFT                      6
377 
378 /* Bit values for R196 (0xC4) */
379 #define WM8350_DC6_ERRACT_NONE                       0
380 #define WM8350_DC6_ERRACT_SHUTDOWN_CONV              1
381 #define WM8350_DC6_ERRACT_SHUTDOWN_SYS               2
382 
383 /*
384  * R197 (0xC5) - DCDC6 Low Power
385  */
386 #define WM8350_DC6_HIB_MODE_MASK                0x7000
387 #define WM8350_DC6_HIB_TRIG_MASK                0x0300
388 #define WM8350_DC6_VIMG_MASK                    0x007F
389 
390 /*
391  * R199 (0xC7) - Limit Switch Control
392  */
393 #define WM8350_LS_ERRACT_MASK                   0xC000
394 #define WM8350_LS_ERRACT_SHIFT                      14
395 #define WM8350_LS_ENSLOT_MASK                   0x3C00
396 #define WM8350_LS_ENSLOT_SHIFT                      10
397 #define WM8350_LS_SDSLOT_MASK                   0x03C0
398 #define WM8350_LS_SDSLOT_SHIFT                       6
399 #define WM8350_LS_HIB_MODE                      0x0010
400 #define WM8350_LS_HIB_MODE_MASK                 0x0010
401 #define WM8350_LS_HIB_MODE_SHIFT                     4
402 #define WM8350_LS_HIB_PROT                      0x0002
403 #define WM8350_LS_HIB_PROT_MASK                 0x0002
404 #define WM8350_LS_HIB_PROT_SHIFT                     1
405 #define WM8350_LS_PROT                          0x0001
406 #define WM8350_LS_PROT_MASK                     0x0001
407 #define WM8350_LS_PROT_SHIFT                         0
408 
409 /* Bit values for R199 (0xC7) */
410 #define WM8350_LS_ERRACT_NONE                       0
411 #define WM8350_LS_ERRACT_SHUTDOWN_CONV              1
412 #define WM8350_LS_ERRACT_SHUTDOWN_SYS               2
413 
414 /*
415  * R200 (0xC8) - LDO1 Control
416  */
417 #define WM8350_LDO1_SWI                         0x4000
418 #define WM8350_LDO1_OPFLT                       0x0400
419 #define WM8350_LDO1_VSEL_MASK                   0x001F
420 #define WM8350_LDO1_VSEL_SHIFT                       0
421 
422 /*
423  * R201 (0xC9) - LDO1 Timeouts
424  */
425 #define WM8350_LDO1_ERRACT_MASK                 0xC000
426 #define WM8350_LDO1_ERRACT_SHIFT                    14
427 #define WM8350_LDO1_ENSLOT_MASK                 0x3C00
428 #define WM8350_LDO1_ENSLOT_SHIFT                    10
429 #define WM8350_LDO1_SDSLOT_MASK                 0x03C0
430 #define WM8350_LDO1_UVTO_MASK                   0x0030
431 #define WM8350_LDO1_SDSLOT_SHIFT                     6
432 
433 /* Bit values for R201 (0xC9) */
434 #define WM8350_LDO1_ERRACT_NONE                       0
435 #define WM8350_LDO1_ERRACT_SHUTDOWN_CONV              1
436 #define WM8350_LDO1_ERRACT_SHUTDOWN_SYS               2
437 
438 /*
439  * R202 (0xCA) - LDO1 Low Power
440  */
441 #define WM8350_LDO1_HIB_MODE_MASK               0x3000
442 #define WM8350_LDO1_HIB_TRIG_MASK               0x0300
443 #define WM8350_LDO1_VIMG_MASK                   0x001F
444 #define WM8350_LDO1_HIB_MODE_DIS                (0x1 << 12)
445 
446 
447 /*
448  * R203 (0xCB) - LDO2 Control
449  */
450 #define WM8350_LDO2_SWI                         0x4000
451 #define WM8350_LDO2_OPFLT                       0x0400
452 #define WM8350_LDO2_VSEL_MASK                   0x001F
453 #define WM8350_LDO2_VSEL_SHIFT                       0
454 
455 /*
456  * R204 (0xCC) - LDO2 Timeouts
457  */
458 #define WM8350_LDO2_ERRACT_MASK                 0xC000
459 #define WM8350_LDO2_ERRACT_SHIFT                    14
460 #define WM8350_LDO2_ENSLOT_MASK                 0x3C00
461 #define WM8350_LDO2_ENSLOT_SHIFT                    10
462 #define WM8350_LDO2_SDSLOT_MASK                 0x03C0
463 #define WM8350_LDO2_SDSLOT_SHIFT                     6
464 
465 /* Bit values for R204 (0xCC) */
466 #define WM8350_LDO2_ERRACT_NONE                       0
467 #define WM8350_LDO2_ERRACT_SHUTDOWN_CONV              1
468 #define WM8350_LDO2_ERRACT_SHUTDOWN_SYS               2
469 
470 /*
471  * R205 (0xCD) - LDO2 Low Power
472  */
473 #define WM8350_LDO2_HIB_MODE_MASK               0x3000
474 #define WM8350_LDO2_HIB_TRIG_MASK               0x0300
475 #define WM8350_LDO2_VIMG_MASK                   0x001F
476 
477 /*
478  * R206 (0xCE) - LDO3 Control
479  */
480 #define WM8350_LDO3_SWI                         0x4000
481 #define WM8350_LDO3_OPFLT                       0x0400
482 #define WM8350_LDO3_VSEL_MASK                   0x001F
483 #define WM8350_LDO3_VSEL_SHIFT                       0
484 
485 /*
486  * R207 (0xCF) - LDO3 Timeouts
487  */
488 #define WM8350_LDO3_ERRACT_MASK                 0xC000
489 #define WM8350_LDO3_ERRACT_SHIFT                    14
490 #define WM8350_LDO3_ENSLOT_MASK                 0x3C00
491 #define WM8350_LDO3_ENSLOT_SHIFT                    10
492 #define WM8350_LDO3_SDSLOT_MASK                 0x03C0
493 #define WM8350_LDO3_UVTO_MASK                   0x0030
494 #define WM8350_LDO3_SDSLOT_SHIFT                     6
495 
496 /* Bit values for R207 (0xCF) */
497 #define WM8350_LDO3_ERRACT_NONE                       0
498 #define WM8350_LDO3_ERRACT_SHUTDOWN_CONV              1
499 #define WM8350_LDO3_ERRACT_SHUTDOWN_SYS               2
500 
501 /*
502  * R208 (0xD0) - LDO3 Low Power
503  */
504 #define WM8350_LDO3_HIB_MODE_MASK               0x3000
505 #define WM8350_LDO3_HIB_TRIG_MASK               0x0300
506 #define WM8350_LDO3_VIMG_MASK                   0x001F
507 
508 /*
509  * R209 (0xD1) - LDO4 Control
510  */
511 #define WM8350_LDO4_SWI                         0x4000
512 #define WM8350_LDO4_OPFLT                       0x0400
513 #define WM8350_LDO4_VSEL_MASK                   0x001F
514 #define WM8350_LDO4_VSEL_SHIFT                       0
515 
516 /*
517  * R210 (0xD2) - LDO4 Timeouts
518  */
519 #define WM8350_LDO4_ERRACT_MASK                 0xC000
520 #define WM8350_LDO4_ERRACT_SHIFT                    14
521 #define WM8350_LDO4_ENSLOT_MASK                 0x3C00
522 #define WM8350_LDO4_ENSLOT_SHIFT                    10
523 #define WM8350_LDO4_SDSLOT_MASK                 0x03C0
524 #define WM8350_LDO4_UVTO_MASK                   0x0030
525 #define WM8350_LDO4_SDSLOT_SHIFT                     6
526 
527 /* Bit values for R210 (0xD2) */
528 #define WM8350_LDO4_ERRACT_NONE                       0
529 #define WM8350_LDO4_ERRACT_SHUTDOWN_CONV              1
530 #define WM8350_LDO4_ERRACT_SHUTDOWN_SYS               2
531 
532 /*
533  * R211 (0xD3) - LDO4 Low Power
534  */
535 #define WM8350_LDO4_HIB_MODE_MASK               0x3000
536 #define WM8350_LDO4_HIB_TRIG_MASK               0x0300
537 #define WM8350_LDO4_VIMG_MASK                   0x001F
538 
539 /*
540  * R215 (0xD7) - VCC_FAULT Masks
541  */
542 #define WM8350_LS_FAULT                         0x8000
543 #define WM8350_LDO4_FAULT                       0x0800
544 #define WM8350_LDO3_FAULT                       0x0400
545 #define WM8350_LDO2_FAULT                       0x0200
546 #define WM8350_LDO1_FAULT                       0x0100
547 #define WM8350_DC6_FAULT                        0x0020
548 #define WM8350_DC5_FAULT                        0x0010
549 #define WM8350_DC4_FAULT                        0x0008
550 #define WM8350_DC3_FAULT                        0x0004
551 #define WM8350_DC2_FAULT                        0x0002
552 #define WM8350_DC1_FAULT                        0x0001
553 
554 /*
555  * R216 (0xD8) - Main Bandgap Control
556  */
557 #define WM8350_MBG_LOAD_FUSES                   0x8000
558 #define WM8350_MBG_FUSE_WPREP                   0x4000
559 #define WM8350_MBG_FUSE_WRITE                   0x2000
560 #define WM8350_MBG_FUSE_TRIM_MASK               0x1F00
561 #define WM8350_MBG_TRIM_SRC                     0x0020
562 #define WM8350_MBG_USER_TRIM_MASK               0x001F
563 
564 /*
565  * R217 (0xD9) - OSC Control
566  */
567 #define WM8350_OSC_LOAD_FUSES                   0x8000
568 #define WM8350_OSC_FUSE_WPREP                   0x4000
569 #define WM8350_OSC_FUSE_WRITE                   0x2000
570 #define WM8350_OSC_FUSE_TRIM_MASK               0x0F00
571 #define WM8350_OSC_TRIM_SRC                     0x0020
572 #define WM8350_OSC_USER_TRIM_MASK               0x000F
573 
574 /*
575  * R248 (0xF8) - DCDC1 Force PWM
576  */
577 #define WM8350_DCDC1_FORCE_PWM_ENA              0x0010
578 
579 /*
580  * R250 (0xFA) - DCDC3 Force PWM
581  */
582 #define WM8350_DCDC3_FORCE_PWM_ENA              0x0010
583 
584 /*
585  * R251 (0xFB) - DCDC4 Force PWM
586  */
587 #define WM8350_DCDC4_FORCE_PWM_ENA              0x0010
588 
589 /*
590  * R253 (0xFD) - DCDC1 Force PWM
591  */
592 #define WM8350_DCDC6_FORCE_PWM_ENA              0x0010
593 
594 /*
595  * DCDC's
596  */
597 #define WM8350_DCDC_1                           0
598 #define WM8350_DCDC_2                           1
599 #define WM8350_DCDC_3                           2
600 #define WM8350_DCDC_4                           3
601 #define WM8350_DCDC_5                           4
602 #define WM8350_DCDC_6                           5
603 
604 /* DCDC modes */
605 #define WM8350_DCDC_ACTIVE_STANDBY              0
606 #define WM8350_DCDC_ACTIVE_PULSE                1
607 #define WM8350_DCDC_SLEEP_NORMAL                0
608 #define WM8350_DCDC_SLEEP_LOW                   1
609 
610 /* DCDC Low power (Hibernate) mode */
611 #define WM8350_DCDC_HIB_MODE_CUR                (0 << 12)
612 #define WM8350_DCDC_HIB_MODE_IMAGE              (1 << 12)
613 #define WM8350_DCDC_HIB_MODE_STANDBY            (2 << 12)
614 #define WM8350_DCDC_HIB_MODE_LDO                (4 << 12)
615 #define WM8350_DCDC_HIB_MODE_LDO_IM             (5 << 12)
616 #define WM8350_DCDC_HIB_MODE_DIS                (7 << 12)
617 #define WM8350_DCDC_HIB_MODE_MASK               (7 << 12)
618 
619 /* DCDC Low Power (Hibernate) signal */
620 #define WM8350_DCDC_HIB_SIG_REG                 (0 << 8)
621 #define WM8350_DCDC_HIB_SIG_LPWR1               (1 << 8)
622 #define WM8350_DCDC_HIB_SIG_LPWR2               (2 << 8)
623 #define WM8350_DCDC_HIB_SIG_LPWR3               (3 << 8)
624 
625 /* LDO Low power (Hibernate) mode */
626 #define WM8350_LDO_HIB_MODE_IMAGE               (0 << 0)
627 #define WM8350_LDO_HIB_MODE_DIS                 (1 << 0)
628 
629 /* LDO Low Power (Hibernate) signal */
630 #define WM8350_LDO_HIB_SIG_REG                  (0 << 8)
631 #define WM8350_LDO_HIB_SIG_LPWR1                (1 << 8)
632 #define WM8350_LDO_HIB_SIG_LPWR2                (2 << 8)
633 #define WM8350_LDO_HIB_SIG_LPWR3                (3 << 8)
634 
635 /*
636  * LDOs
637  */
638 #define WM8350_LDO_1                            6
639 #define WM8350_LDO_2                            7
640 #define WM8350_LDO_3                            8
641 #define WM8350_LDO_4                            9
642 
643 /*
644  * ISINKs
645  */
646 #define WM8350_ISINK_A                          10
647 #define WM8350_ISINK_B                          11
648 
649 #define WM8350_ISINK_MODE_BOOST                 0
650 #define WM8350_ISINK_MODE_SWITCH                1
651 #define WM8350_ISINK_ILIM_NORMAL                0
652 #define WM8350_ISINK_ILIM_LOW                   1
653 
654 #define WM8350_ISINK_FLASH_DISABLE              0
655 #define WM8350_ISINK_FLASH_ENABLE               1
656 #define WM8350_ISINK_FLASH_TRIG_BIT             0
657 #define WM8350_ISINK_FLASH_TRIG_GPIO            1
658 #define WM8350_ISINK_FLASH_MODE_EN              (1 << 13)
659 #define WM8350_ISINK_FLASH_MODE_DIS             (0 << 13)
660 #define WM8350_ISINK_FLASH_DUR_32MS             (0 << 8)
661 #define WM8350_ISINK_FLASH_DUR_64MS             (1 << 8)
662 #define WM8350_ISINK_FLASH_DUR_96MS             (2 << 8)
663 #define WM8350_ISINK_FLASH_DUR_1024MS           (3 << 8)
664 #define WM8350_ISINK_FLASH_ON_INSTANT           (0 << 0)
665 #define WM8350_ISINK_FLASH_ON_0_25S             (1 << 0)
666 #define WM8350_ISINK_FLASH_ON_0_50S             (2 << 0)
667 #define WM8350_ISINK_FLASH_ON_1_00S             (3 << 0)
668 #define WM8350_ISINK_FLASH_ON_1_95S             (1 << 0)
669 #define WM8350_ISINK_FLASH_ON_3_91S             (2 << 0)
670 #define WM8350_ISINK_FLASH_ON_7_80S             (3 << 0)
671 #define WM8350_ISINK_FLASH_OFF_INSTANT          (0 << 4)
672 #define WM8350_ISINK_FLASH_OFF_0_25S            (1 << 4)
673 #define WM8350_ISINK_FLASH_OFF_0_50S            (2 << 4)
674 #define WM8350_ISINK_FLASH_OFF_1_00S            (3 << 4)
675 #define WM8350_ISINK_FLASH_OFF_1_95S            (1 << 4)
676 #define WM8350_ISINK_FLASH_OFF_3_91S            (2 << 4)
677 #define WM8350_ISINK_FLASH_OFF_7_80S            (3 << 4)
678 
679 /*
680  * Regulator Interrupts.
681  */
682 #define WM8350_IRQ_CS1                          13
683 #define WM8350_IRQ_CS2                          14
684 #define WM8350_IRQ_UV_LDO4                      25
685 #define WM8350_IRQ_UV_LDO3                      26
686 #define WM8350_IRQ_UV_LDO2                      27
687 #define WM8350_IRQ_UV_LDO1                      28
688 #define WM8350_IRQ_UV_DC6                       29
689 #define WM8350_IRQ_UV_DC5                       30
690 #define WM8350_IRQ_UV_DC4                       31
691 #define WM8350_IRQ_UV_DC3                       32
692 #define WM8350_IRQ_UV_DC2                       33
693 #define WM8350_IRQ_UV_DC1                       34
694 #define WM8350_IRQ_OC_LS                        35
695 
696 #define NUM_WM8350_REGULATORS                   12
697 
698 struct wm8350;
699 struct platform_device;
700 struct regulator_init_data;
701 
702 /*
703  * WM8350 LED platform data
704  */
705 struct wm8350_led_platform_data {
706         const char *name;
707         const char *default_trigger;
708         int max_uA;
709 };
710 
711 struct wm8350_led {
712         struct platform_device *pdev;
713         struct work_struct work;
714         spinlock_t value_lock;
715         enum led_brightness value;
716         struct led_classdev cdev;
717         int max_uA_index;
718         int enabled;
719 
720         struct regulator *isink;
721         struct regulator_consumer_supply isink_consumer;
722         struct regulator_init_data isink_init;
723         struct regulator *dcdc;
724         struct regulator_consumer_supply dcdc_consumer;
725         struct regulator_init_data dcdc_init;
726 };
727 
728 struct wm8350_pmic {
729         /* Number of regulators of each type on this device */
730         int max_dcdc;
731         int max_isink;
732 
733         /* ISINK to DCDC mapping */
734         int isink_A_dcdc;
735         int isink_B_dcdc;
736 
737         /* hibernate configs */
738         u16 dcdc1_hib_mode;
739         u16 dcdc3_hib_mode;
740         u16 dcdc4_hib_mode;
741         u16 dcdc6_hib_mode;
742 
743         /* regulator devices */
744         struct platform_device *pdev[NUM_WM8350_REGULATORS];
745 
746         /* LED devices */
747         struct wm8350_led led[2];
748 };
749 
750 int wm8350_register_regulator(struct wm8350 *wm8350, int reg,
751                               struct regulator_init_data *initdata);
752 int wm8350_register_led(struct wm8350 *wm8350, int lednum, int dcdc, int isink,
753                         struct wm8350_led_platform_data *pdata);
754 
755 /*
756  * Additional DCDC control not supported via regulator API
757  */
758 int wm8350_dcdc_set_slot(struct wm8350 *wm8350, int dcdc, u16 start,
759                          u16 stop, u16 fault);
760 int wm8350_dcdc25_set_mode(struct wm8350 *wm8350, int dcdc, u16 mode,
761                            u16 ilim, u16 ramp, u16 feedback);
762 
763 /*
764  * Additional LDO control not supported via regulator API
765  */
766 int wm8350_ldo_set_slot(struct wm8350 *wm8350, int ldo, u16 start, u16 stop);
767 
768 /*
769  * Additional ISINK control not supported via regulator API
770  */
771 int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode,
772                            u16 trigger, u16 duration, u16 on_ramp,
773                            u16 off_ramp, u16 drive);
774 
775 #endif
776 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php