root/include/linux/mfd/wm8350/pmic.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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

/* [<][>][^][v][top][bottom][index][help] */