Mark Brown | e4b736f | 2009-07-27 14:46:00 +0100 | [diff] [blame] | 1 | /* |
| 2 | * include/linux/mfd/wm831x/gpio.h -- GPIO for WM831x |
| 3 | * |
| 4 | * Copyright 2009 Wolfson Microelectronics PLC. |
| 5 | * |
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> |
| 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify it |
| 9 | * under the terms of the GNU General Public License as published by the |
| 10 | * Free Software Foundation; either version 2 of the License, or (at your |
| 11 | * option) any later version. |
| 12 | * |
| 13 | */ |
| 14 | |
| 15 | #ifndef __MFD_WM831X_GPIO_H__ |
| 16 | #define __MFD_WM831X_GPIO_H__ |
| 17 | |
| 18 | /* |
| 19 | * R16440-16455 (0x4038-0x4047) - GPIOx Control |
| 20 | */ |
| 21 | #define WM831X_GPN_DIR 0x8000 /* GPN_DIR */ |
| 22 | #define WM831X_GPN_DIR_MASK 0x8000 /* GPN_DIR */ |
| 23 | #define WM831X_GPN_DIR_SHIFT 15 /* GPN_DIR */ |
| 24 | #define WM831X_GPN_DIR_WIDTH 1 /* GPN_DIR */ |
| 25 | #define WM831X_GPN_PULL_MASK 0x6000 /* GPN_PULL - [14:13] */ |
| 26 | #define WM831X_GPN_PULL_SHIFT 13 /* GPN_PULL - [14:13] */ |
| 27 | #define WM831X_GPN_PULL_WIDTH 2 /* GPN_PULL - [14:13] */ |
| 28 | #define WM831X_GPN_INT_MODE 0x1000 /* GPN_INT_MODE */ |
| 29 | #define WM831X_GPN_INT_MODE_MASK 0x1000 /* GPN_INT_MODE */ |
| 30 | #define WM831X_GPN_INT_MODE_SHIFT 12 /* GPN_INT_MODE */ |
| 31 | #define WM831X_GPN_INT_MODE_WIDTH 1 /* GPN_INT_MODE */ |
| 32 | #define WM831X_GPN_PWR_DOM 0x0800 /* GPN_PWR_DOM */ |
| 33 | #define WM831X_GPN_PWR_DOM_MASK 0x0800 /* GPN_PWR_DOM */ |
| 34 | #define WM831X_GPN_PWR_DOM_SHIFT 11 /* GPN_PWR_DOM */ |
| 35 | #define WM831X_GPN_PWR_DOM_WIDTH 1 /* GPN_PWR_DOM */ |
| 36 | #define WM831X_GPN_POL 0x0400 /* GPN_POL */ |
| 37 | #define WM831X_GPN_POL_MASK 0x0400 /* GPN_POL */ |
| 38 | #define WM831X_GPN_POL_SHIFT 10 /* GPN_POL */ |
| 39 | #define WM831X_GPN_POL_WIDTH 1 /* GPN_POL */ |
| 40 | #define WM831X_GPN_OD 0x0200 /* GPN_OD */ |
| 41 | #define WM831X_GPN_OD_MASK 0x0200 /* GPN_OD */ |
| 42 | #define WM831X_GPN_OD_SHIFT 9 /* GPN_OD */ |
| 43 | #define WM831X_GPN_OD_WIDTH 1 /* GPN_OD */ |
Mark Brown | f92e8f8 | 2010-02-17 18:45:25 +0000 | [diff] [blame] | 44 | #define WM831X_GPN_ENA 0x0080 /* GPN_ENA */ |
| 45 | #define WM831X_GPN_ENA_MASK 0x0080 /* GPN_ENA */ |
| 46 | #define WM831X_GPN_ENA_SHIFT 7 /* GPN_ENA */ |
| 47 | #define WM831X_GPN_ENA_WIDTH 1 /* GPN_ENA */ |
Mark Brown | e4b736f | 2009-07-27 14:46:00 +0100 | [diff] [blame] | 48 | #define WM831X_GPN_TRI 0x0080 /* GPN_TRI */ |
| 49 | #define WM831X_GPN_TRI_MASK 0x0080 /* GPN_TRI */ |
| 50 | #define WM831X_GPN_TRI_SHIFT 7 /* GPN_TRI */ |
| 51 | #define WM831X_GPN_TRI_WIDTH 1 /* GPN_TRI */ |
| 52 | #define WM831X_GPN_FN_MASK 0x000F /* GPN_FN - [3:0] */ |
| 53 | #define WM831X_GPN_FN_SHIFT 0 /* GPN_FN - [3:0] */ |
| 54 | #define WM831X_GPN_FN_WIDTH 4 /* GPN_FN - [3:0] */ |
| 55 | |
| 56 | #define WM831X_GPIO_PULL_NONE (0 << WM831X_GPN_PULL_SHIFT) |
| 57 | #define WM831X_GPIO_PULL_DOWN (1 << WM831X_GPN_PULL_SHIFT) |
| 58 | #define WM831X_GPIO_PULL_UP (2 << WM831X_GPN_PULL_SHIFT) |
| 59 | #endif |