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

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * gpio.h  --  GPIO Driver for Wolfson WM8350 PMIC
   4  *
   5  * Copyright 2007 Wolfson Microelectronics PLC
   6  */
   7 
   8 #ifndef __LINUX_MFD_WM8350_GPIO_H_
   9 #define __LINUX_MFD_WM8350_GPIO_H_
  10 
  11 #include <linux/platform_device.h>
  12 
  13 /*
  14  * GPIO Registers.
  15  */
  16 #define WM8350_GPIO_DEBOUNCE                    0x80
  17 #define WM8350_GPIO_PIN_PULL_UP_CONTROL         0x81
  18 #define WM8350_GPIO_PULL_DOWN_CONTROL           0x82
  19 #define WM8350_GPIO_INT_MODE                    0x83
  20 #define WM8350_GPIO_CONTROL                     0x85
  21 #define WM8350_GPIO_CONFIGURATION_I_O           0x86
  22 #define WM8350_GPIO_PIN_POLARITY_TYPE           0x87
  23 #define WM8350_GPIO_FUNCTION_SELECT_1           0x8C
  24 #define WM8350_GPIO_FUNCTION_SELECT_2           0x8D
  25 #define WM8350_GPIO_FUNCTION_SELECT_3           0x8E
  26 #define WM8350_GPIO_FUNCTION_SELECT_4           0x8F
  27 #define WM8350_GPIO_LEVEL                       0xE6
  28 
  29 /*
  30  * GPIO Functions
  31  */
  32 #define WM8350_GPIO0_GPIO_IN                    0x0
  33 #define WM8350_GPIO0_GPIO_OUT                   0x0
  34 #define WM8350_GPIO0_PWR_ON_IN                  0x1
  35 #define WM8350_GPIO0_PWR_ON_OUT                 0x1
  36 #define WM8350_GPIO0_LDO_EN_IN                  0x2
  37 #define WM8350_GPIO0_VRTC_OUT                   0x2
  38 #define WM8350_GPIO0_LPWR1_IN                   0x3
  39 #define WM8350_GPIO0_POR_B_OUT                  0x3
  40 
  41 #define WM8350_GPIO1_GPIO_IN                    0x0
  42 #define WM8350_GPIO1_GPIO_OUT                   0x0
  43 #define WM8350_GPIO1_PWR_ON_IN                  0x1
  44 #define WM8350_GPIO1_DO_CONF_OUT                0x1
  45 #define WM8350_GPIO1_LDO_EN_IN                  0x2
  46 #define WM8350_GPIO1_RESET_OUT                  0x2
  47 #define WM8350_GPIO1_LPWR2_IN                   0x3
  48 #define WM8350_GPIO1_MEMRST_OUT                 0x3
  49 
  50 #define WM8350_GPIO2_GPIO_IN                    0x0
  51 #define WM8350_GPIO2_GPIO_OUT                   0x0
  52 #define WM8350_GPIO2_PWR_ON_IN                  0x1
  53 #define WM8350_GPIO2_PWR_ON_OUT                 0x1
  54 #define WM8350_GPIO2_WAKE_UP_IN                 0x2
  55 #define WM8350_GPIO2_VRTC_OUT                   0x2
  56 #define WM8350_GPIO2_32KHZ_IN                   0x3
  57 #define WM8350_GPIO2_32KHZ_OUT                  0x3
  58 
  59 #define WM8350_GPIO3_GPIO_IN                    0x0
  60 #define WM8350_GPIO3_GPIO_OUT                   0x0
  61 #define WM8350_GPIO3_PWR_ON_IN                  0x1
  62 #define WM8350_GPIO3_P_CLK_OUT                  0x1
  63 #define WM8350_GPIO3_LDO_EN_IN                  0x2
  64 #define WM8350_GPIO3_VRTC_OUT                   0x2
  65 #define WM8350_GPIO3_PWR_OFF_IN                 0x3
  66 #define WM8350_GPIO3_32KHZ_OUT                  0x3
  67 
  68 #define WM8350_GPIO4_GPIO_IN                    0x0
  69 #define WM8350_GPIO4_GPIO_OUT                   0x0
  70 #define WM8350_GPIO4_MR_IN                      0x1
  71 #define WM8350_GPIO4_MEM_RST_OUT                0x1
  72 #define WM8350_GPIO4_FLASH_IN                   0x2
  73 #define WM8350_GPIO4_ADA_OUT                    0x2
  74 #define WM8350_GPIO4_HIBERNATE_IN               0x3
  75 #define WM8350_GPIO4_FLASH_OUT                  0x3
  76 #define WM8350_GPIO4_MICDET_OUT                 0x4
  77 #define WM8350_GPIO4_MICSHT_OUT                 0x5
  78 
  79 #define WM8350_GPIO5_GPIO_IN                    0x0
  80 #define WM8350_GPIO5_GPIO_OUT                   0x0
  81 #define WM8350_GPIO5_LPWR1_IN                   0x1
  82 #define WM8350_GPIO5_P_CLK_OUT                  0x1
  83 #define WM8350_GPIO5_ADCLRCLK_IN                0x2
  84 #define WM8350_GPIO5_ADCLRCLK_OUT               0x2
  85 #define WM8350_GPIO5_HIBERNATE_IN               0x3
  86 #define WM8350_GPIO5_32KHZ_OUT                  0x3
  87 #define WM8350_GPIO5_MICDET_OUT                 0x4
  88 #define WM8350_GPIO5_MICSHT_OUT                 0x5
  89 #define WM8350_GPIO5_ADA_OUT                    0x6
  90 #define WM8350_GPIO5_OPCLK_OUT                  0x7
  91 
  92 #define WM8350_GPIO6_GPIO_IN                    0x0
  93 #define WM8350_GPIO6_GPIO_OUT                   0x0
  94 #define WM8350_GPIO6_LPWR2_IN                   0x1
  95 #define WM8350_GPIO6_MEMRST_OUT                 0x1
  96 #define WM8350_GPIO6_FLASH_IN                   0x2
  97 #define WM8350_GPIO6_ADA_OUT                    0x2
  98 #define WM8350_GPIO6_HIBERNATE_IN               0x3
  99 #define WM8350_GPIO6_RTC_OUT                    0x3
 100 #define WM8350_GPIO6_MICDET_OUT                 0x4
 101 #define WM8350_GPIO6_MICSHT_OUT                 0x5
 102 #define WM8350_GPIO6_ADCLRCLKB_OUT              0x6
 103 #define WM8350_GPIO6_SDOUT_OUT                  0x7
 104 
 105 #define WM8350_GPIO7_GPIO_IN                    0x0
 106 #define WM8350_GPIO7_GPIO_OUT                   0x0
 107 #define WM8350_GPIO7_LPWR3_IN                   0x1
 108 #define WM8350_GPIO7_P_CLK_OUT                  0x1
 109 #define WM8350_GPIO7_MASK_IN                    0x2
 110 #define WM8350_GPIO7_VCC_FAULT_OUT              0x2
 111 #define WM8350_GPIO7_HIBERNATE_IN               0x3
 112 #define WM8350_GPIO7_BATT_FAULT_OUT             0x3
 113 #define WM8350_GPIO7_MICDET_OUT                 0x4
 114 #define WM8350_GPIO7_MICSHT_OUT                 0x5
 115 #define WM8350_GPIO7_ADA_OUT                    0x6
 116 #define WM8350_GPIO7_CSB_IN                     0x7
 117 
 118 #define WM8350_GPIO8_GPIO_IN                    0x0
 119 #define WM8350_GPIO8_GPIO_OUT                   0x0
 120 #define WM8350_GPIO8_MR_IN                      0x1
 121 #define WM8350_GPIO8_VCC_FAULT_OUT              0x1
 122 #define WM8350_GPIO8_ADCBCLK_IN                 0x2
 123 #define WM8350_GPIO8_ADCBCLK_OUT                0x2
 124 #define WM8350_GPIO8_PWR_OFF_IN                 0x3
 125 #define WM8350_GPIO8_BATT_FAULT_OUT             0x3
 126 #define WM8350_GPIO8_ALTSCL_IN                  0xf
 127 
 128 #define WM8350_GPIO9_GPIO_IN                    0x0
 129 #define WM8350_GPIO9_GPIO_OUT                   0x0
 130 #define WM8350_GPIO9_HEARTBEAT_IN               0x1
 131 #define WM8350_GPIO9_VCC_FAULT_OUT              0x1
 132 #define WM8350_GPIO9_MASK_IN                    0x2
 133 #define WM8350_GPIO9_LINE_GT_BATT_OUT           0x2
 134 #define WM8350_GPIO9_PWR_OFF_IN                 0x3
 135 #define WM8350_GPIO9_BATT_FAULT_OUT             0x3
 136 #define WM8350_GPIO9_ALTSDA_OUT                 0xf
 137 
 138 #define WM8350_GPIO10_GPIO_IN                   0x0
 139 #define WM8350_GPIO10_GPIO_OUT                  0x0
 140 #define WM8350_GPIO10_ISINKC_OUT                0x1
 141 #define WM8350_GPIO10_PWR_OFF_IN                0x2
 142 #define WM8350_GPIO10_LINE_GT_BATT_OUT          0x2
 143 #define WM8350_GPIO10_CHD_IND_IN                0x3
 144 
 145 #define WM8350_GPIO11_GPIO_IN                   0x0
 146 #define WM8350_GPIO11_GPIO_OUT                  0x0
 147 #define WM8350_GPIO11_ISINKD_OUT                0x1
 148 #define WM8350_GPIO11_WAKEUP_IN                 0x2
 149 #define WM8350_GPIO11_LINE_GT_BATT_OUT          0x2
 150 #define WM8350_GPIO11_CHD_IND_IN                0x3
 151 
 152 #define WM8350_GPIO12_GPIO_IN                   0x0
 153 #define WM8350_GPIO12_GPIO_OUT                  0x0
 154 #define WM8350_GPIO12_ISINKE_OUT                0x1
 155 #define WM8350_GPIO12_LINE_GT_BATT_OUT          0x2
 156 #define WM8350_GPIO12_LINE_EN_OUT               0x3
 157 #define WM8350_GPIO12_32KHZ_OUT                 0x4
 158 
 159 #define WM8350_GPIO_DIR_IN                      0
 160 #define WM8350_GPIO_DIR_OUT                     1
 161 #define WM8350_GPIO_ACTIVE_LOW                  0
 162 #define WM8350_GPIO_ACTIVE_HIGH                 1
 163 #define WM8350_GPIO_PULL_NONE                   0
 164 #define WM8350_GPIO_PULL_UP                     1
 165 #define WM8350_GPIO_PULL_DOWN                   2
 166 #define WM8350_GPIO_INVERT_OFF                  0
 167 #define WM8350_GPIO_INVERT_ON                   1
 168 #define WM8350_GPIO_DEBOUNCE_OFF                0
 169 #define WM8350_GPIO_DEBOUNCE_ON                 1
 170 
 171 /*
 172  * R30 (0x1E) - GPIO Interrupt Status
 173  */
 174 #define WM8350_GP12_EINT                        0x1000
 175 #define WM8350_GP11_EINT                        0x0800
 176 #define WM8350_GP10_EINT                        0x0400
 177 #define WM8350_GP9_EINT                         0x0200
 178 #define WM8350_GP8_EINT                         0x0100
 179 #define WM8350_GP7_EINT                         0x0080
 180 #define WM8350_GP6_EINT                         0x0040
 181 #define WM8350_GP5_EINT                         0x0020
 182 #define WM8350_GP4_EINT                         0x0010
 183 #define WM8350_GP3_EINT                         0x0008
 184 #define WM8350_GP2_EINT                         0x0004
 185 #define WM8350_GP1_EINT                         0x0002
 186 #define WM8350_GP0_EINT                         0x0001
 187 
 188 
 189 /*
 190  * R128 (0x80) - GPIO Debounce
 191  */
 192 #define WM8350_GP12_DB                          0x1000
 193 #define WM8350_GP11_DB                          0x0800
 194 #define WM8350_GP10_DB                          0x0400
 195 #define WM8350_GP9_DB                           0x0200
 196 #define WM8350_GP8_DB                           0x0100
 197 #define WM8350_GP7_DB                           0x0080
 198 #define WM8350_GP6_DB                           0x0040
 199 #define WM8350_GP5_DB                           0x0020
 200 #define WM8350_GP4_DB                           0x0010
 201 #define WM8350_GP3_DB                           0x0008
 202 #define WM8350_GP2_DB                           0x0004
 203 #define WM8350_GP1_DB                           0x0002
 204 #define WM8350_GP0_DB                           0x0001
 205 
 206 /*
 207  * R129 (0x81) - GPIO Pin pull up Control
 208  */
 209 #define WM8350_GP12_PU                          0x1000
 210 #define WM8350_GP11_PU                          0x0800
 211 #define WM8350_GP10_PU                          0x0400
 212 #define WM8350_GP9_PU                           0x0200
 213 #define WM8350_GP8_PU                           0x0100
 214 #define WM8350_GP7_PU                           0x0080
 215 #define WM8350_GP6_PU                           0x0040
 216 #define WM8350_GP5_PU                           0x0020
 217 #define WM8350_GP4_PU                           0x0010
 218 #define WM8350_GP3_PU                           0x0008
 219 #define WM8350_GP2_PU                           0x0004
 220 #define WM8350_GP1_PU                           0x0002
 221 #define WM8350_GP0_PU                           0x0001
 222 
 223 /*
 224  * R130 (0x82) - GPIO Pull down Control
 225  */
 226 #define WM8350_GP12_PD                          0x1000
 227 #define WM8350_GP11_PD                          0x0800
 228 #define WM8350_GP10_PD                          0x0400
 229 #define WM8350_GP9_PD                           0x0200
 230 #define WM8350_GP8_PD                           0x0100
 231 #define WM8350_GP7_PD                           0x0080
 232 #define WM8350_GP6_PD                           0x0040
 233 #define WM8350_GP5_PD                           0x0020
 234 #define WM8350_GP4_PD                           0x0010
 235 #define WM8350_GP3_PD                           0x0008
 236 #define WM8350_GP2_PD                           0x0004
 237 #define WM8350_GP1_PD                           0x0002
 238 #define WM8350_GP0_PD                           0x0001
 239 
 240 /*
 241  * R131 (0x83) - GPIO Interrupt Mode
 242  */
 243 #define WM8350_GP12_INTMODE                     0x1000
 244 #define WM8350_GP11_INTMODE                     0x0800
 245 #define WM8350_GP10_INTMODE                     0x0400
 246 #define WM8350_GP9_INTMODE                      0x0200
 247 #define WM8350_GP8_INTMODE                      0x0100
 248 #define WM8350_GP7_INTMODE                      0x0080
 249 #define WM8350_GP6_INTMODE                      0x0040
 250 #define WM8350_GP5_INTMODE                      0x0020
 251 #define WM8350_GP4_INTMODE                      0x0010
 252 #define WM8350_GP3_INTMODE                      0x0008
 253 #define WM8350_GP2_INTMODE                      0x0004
 254 #define WM8350_GP1_INTMODE                      0x0002
 255 #define WM8350_GP0_INTMODE                      0x0001
 256 
 257 /*
 258  * R133 (0x85) - GPIO Control
 259  */
 260 #define WM8350_GP_DBTIME_MASK                   0x00C0
 261 
 262 /*
 263  * R134 (0x86) - GPIO Configuration (i/o)
 264  */
 265 #define WM8350_GP12_DIR                         0x1000
 266 #define WM8350_GP11_DIR                         0x0800
 267 #define WM8350_GP10_DIR                         0x0400
 268 #define WM8350_GP9_DIR                          0x0200
 269 #define WM8350_GP8_DIR                          0x0100
 270 #define WM8350_GP7_DIR                          0x0080
 271 #define WM8350_GP6_DIR                          0x0040
 272 #define WM8350_GP5_DIR                          0x0020
 273 #define WM8350_GP4_DIR                          0x0010
 274 #define WM8350_GP3_DIR                          0x0008
 275 #define WM8350_GP2_DIR                          0x0004
 276 #define WM8350_GP1_DIR                          0x0002
 277 #define WM8350_GP0_DIR                          0x0001
 278 
 279 /*
 280  * R135 (0x87) - GPIO Pin Polarity / Type
 281  */
 282 #define WM8350_GP12_CFG                         0x1000
 283 #define WM8350_GP11_CFG                         0x0800
 284 #define WM8350_GP10_CFG                         0x0400
 285 #define WM8350_GP9_CFG                          0x0200
 286 #define WM8350_GP8_CFG                          0x0100
 287 #define WM8350_GP7_CFG                          0x0080
 288 #define WM8350_GP6_CFG                          0x0040
 289 #define WM8350_GP5_CFG                          0x0020
 290 #define WM8350_GP4_CFG                          0x0010
 291 #define WM8350_GP3_CFG                          0x0008
 292 #define WM8350_GP2_CFG                          0x0004
 293 #define WM8350_GP1_CFG                          0x0002
 294 #define WM8350_GP0_CFG                          0x0001
 295 
 296 /*
 297  * R140 (0x8C) - GPIO Function Select 1
 298  */
 299 #define WM8350_GP3_FN_MASK                      0xF000
 300 #define WM8350_GP2_FN_MASK                      0x0F00
 301 #define WM8350_GP1_FN_MASK                      0x00F0
 302 #define WM8350_GP0_FN_MASK                      0x000F
 303 
 304 /*
 305  * R141 (0x8D) - GPIO Function Select 2
 306  */
 307 #define WM8350_GP7_FN_MASK                      0xF000
 308 #define WM8350_GP6_FN_MASK                      0x0F00
 309 #define WM8350_GP5_FN_MASK                      0x00F0
 310 #define WM8350_GP4_FN_MASK                      0x000F
 311 
 312 /*
 313  * R142 (0x8E) - GPIO Function Select 3
 314  */
 315 #define WM8350_GP11_FN_MASK                     0xF000
 316 #define WM8350_GP10_FN_MASK                     0x0F00
 317 #define WM8350_GP9_FN_MASK                      0x00F0
 318 #define WM8350_GP8_FN_MASK                      0x000F
 319 
 320 /*
 321  * R143 (0x8F) - GPIO Function Select 4
 322  */
 323 #define WM8350_GP12_FN_MASK                     0x000F
 324 
 325 /*
 326  * R230 (0xE6) - GPIO Pin Status
 327  */
 328 #define WM8350_GP12_LVL                         0x1000
 329 #define WM8350_GP11_LVL                         0x0800
 330 #define WM8350_GP10_LVL                         0x0400
 331 #define WM8350_GP9_LVL                          0x0200
 332 #define WM8350_GP8_LVL                          0x0100
 333 #define WM8350_GP7_LVL                          0x0080
 334 #define WM8350_GP6_LVL                          0x0040
 335 #define WM8350_GP5_LVL                          0x0020
 336 #define WM8350_GP4_LVL                          0x0010
 337 #define WM8350_GP3_LVL                          0x0008
 338 #define WM8350_GP2_LVL                          0x0004
 339 #define WM8350_GP1_LVL                          0x0002
 340 #define WM8350_GP0_LVL                          0x0001
 341 
 342 struct wm8350;
 343 
 344 int wm8350_gpio_config(struct wm8350 *wm8350, int gpio, int dir, int func,
 345                        int pol, int pull, int invert, int debounce);
 346 
 347 struct wm8350_gpio {
 348         struct platform_device *pdev;
 349 };
 350 
 351 /*
 352  * GPIO Interrupts
 353  */
 354 #define WM8350_IRQ_GPIO(x)                      (50 + x)
 355 
 356 #endif

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