diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-01-03 05:31:54 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-01-03 05:31:58 -0500 |
| commit | cde9efef401563943d5a58eb9b7274bfdc08ca9b (patch) | |
| tree | 858a436055612db6282dc63db0fe3ba41147056a /include/linux | |
| parent | 50401d77ee4904673042dd737eed436067cc23f5 (diff) | |
| parent | 60ebe1568fd15b7ffa101acc645069e27d546ed6 (diff) | |
Merge branch 'ux500-core' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into devel-stable
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mfd/tc35892.h | 136 | ||||
| -rw-r--r-- | include/linux/mfd/tc3589x.h | 195 |
2 files changed, 195 insertions, 136 deletions
diff --git a/include/linux/mfd/tc35892.h b/include/linux/mfd/tc35892.h deleted file mode 100644 index eff3094ca84e..000000000000 --- a/include/linux/mfd/tc35892.h +++ /dev/null | |||
| @@ -1,136 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) ST-Ericsson SA 2010 | ||
| 3 | * | ||
| 4 | * License Terms: GNU General Public License, version 2 | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef __LINUX_MFD_TC35892_H | ||
| 8 | #define __LINUX_MFD_TC35892_H | ||
| 9 | |||
| 10 | #include <linux/device.h> | ||
| 11 | |||
| 12 | #define TC35892_RSTCTRL_IRQRST (1 << 4) | ||
| 13 | #define TC35892_RSTCTRL_TIMRST (1 << 3) | ||
| 14 | #define TC35892_RSTCTRL_ROTRST (1 << 2) | ||
| 15 | #define TC35892_RSTCTRL_KBDRST (1 << 1) | ||
| 16 | #define TC35892_RSTCTRL_GPIRST (1 << 0) | ||
| 17 | |||
| 18 | #define TC35892_IRQST 0x91 | ||
| 19 | |||
| 20 | #define TC35892_MANFCODE_MAGIC 0x03 | ||
| 21 | #define TC35892_MANFCODE 0x80 | ||
| 22 | #define TC35892_VERSION 0x81 | ||
| 23 | #define TC35892_IOCFG 0xA7 | ||
| 24 | |||
| 25 | #define TC35892_CLKMODE 0x88 | ||
| 26 | #define TC35892_CLKCFG 0x89 | ||
| 27 | #define TC35892_CLKEN 0x8A | ||
| 28 | |||
| 29 | #define TC35892_RSTCTRL 0x82 | ||
| 30 | #define TC35892_EXTRSTN 0x83 | ||
| 31 | #define TC35892_RSTINTCLR 0x84 | ||
| 32 | |||
| 33 | #define TC35892_GPIOIS0 0xC9 | ||
| 34 | #define TC35892_GPIOIS1 0xCA | ||
| 35 | #define TC35892_GPIOIS2 0xCB | ||
| 36 | #define TC35892_GPIOIBE0 0xCC | ||
| 37 | #define TC35892_GPIOIBE1 0xCD | ||
| 38 | #define TC35892_GPIOIBE2 0xCE | ||
| 39 | #define TC35892_GPIOIEV0 0xCF | ||
| 40 | #define TC35892_GPIOIEV1 0xD0 | ||
| 41 | #define TC35892_GPIOIEV2 0xD1 | ||
| 42 | #define TC35892_GPIOIE0 0xD2 | ||
| 43 | #define TC35892_GPIOIE1 0xD3 | ||
| 44 | #define TC35892_GPIOIE2 0xD4 | ||
| 45 | #define TC35892_GPIORIS0 0xD6 | ||
| 46 | #define TC35892_GPIORIS1 0xD7 | ||
| 47 | #define TC35892_GPIORIS2 0xD8 | ||
| 48 | #define TC35892_GPIOMIS0 0xD9 | ||
| 49 | #define TC35892_GPIOMIS1 0xDA | ||
| 50 | #define TC35892_GPIOMIS2 0xDB | ||
| 51 | #define TC35892_GPIOIC0 0xDC | ||
| 52 | #define TC35892_GPIOIC1 0xDD | ||
| 53 | #define TC35892_GPIOIC2 0xDE | ||
| 54 | |||
| 55 | #define TC35892_GPIODATA0 0xC0 | ||
| 56 | #define TC35892_GPIOMASK0 0xc1 | ||
| 57 | #define TC35892_GPIODATA1 0xC2 | ||
| 58 | #define TC35892_GPIOMASK1 0xc3 | ||
| 59 | #define TC35892_GPIODATA2 0xC4 | ||
| 60 | #define TC35892_GPIOMASK2 0xC5 | ||
| 61 | |||
| 62 | #define TC35892_GPIODIR0 0xC6 | ||
| 63 | #define TC35892_GPIODIR1 0xC7 | ||
| 64 | #define TC35892_GPIODIR2 0xC8 | ||
| 65 | |||
| 66 | #define TC35892_GPIOSYNC0 0xE6 | ||
| 67 | #define TC35892_GPIOSYNC1 0xE7 | ||
| 68 | #define TC35892_GPIOSYNC2 0xE8 | ||
| 69 | |||
| 70 | #define TC35892_GPIOWAKE0 0xE9 | ||
| 71 | #define TC35892_GPIOWAKE1 0xEA | ||
| 72 | #define TC35892_GPIOWAKE2 0xEB | ||
| 73 | |||
| 74 | #define TC35892_GPIOODM0 0xE0 | ||
| 75 | #define TC35892_GPIOODE0 0xE1 | ||
| 76 | #define TC35892_GPIOODM1 0xE2 | ||
| 77 | #define TC35892_GPIOODE1 0xE3 | ||
| 78 | #define TC35892_GPIOODM2 0xE4 | ||
| 79 | #define TC35892_GPIOODE2 0xE5 | ||
| 80 | |||
| 81 | #define TC35892_INT_GPIIRQ 0 | ||
| 82 | #define TC35892_INT_TI0IRQ 1 | ||
| 83 | #define TC35892_INT_TI1IRQ 2 | ||
| 84 | #define TC35892_INT_TI2IRQ 3 | ||
| 85 | #define TC35892_INT_ROTIRQ 5 | ||
| 86 | #define TC35892_INT_KBDIRQ 6 | ||
| 87 | #define TC35892_INT_PORIRQ 7 | ||
| 88 | |||
| 89 | #define TC35892_NR_INTERNAL_IRQS 8 | ||
| 90 | #define TC35892_INT_GPIO(x) (TC35892_NR_INTERNAL_IRQS + (x)) | ||
| 91 | |||
| 92 | struct tc35892 { | ||
| 93 | struct mutex lock; | ||
| 94 | struct device *dev; | ||
| 95 | struct i2c_client *i2c; | ||
| 96 | |||
| 97 | int irq_base; | ||
| 98 | int num_gpio; | ||
| 99 | struct tc35892_platform_data *pdata; | ||
| 100 | }; | ||
| 101 | |||
| 102 | extern int tc35892_reg_write(struct tc35892 *tc35892, u8 reg, u8 data); | ||
| 103 | extern int tc35892_reg_read(struct tc35892 *tc35892, u8 reg); | ||
| 104 | extern int tc35892_block_read(struct tc35892 *tc35892, u8 reg, u8 length, | ||
| 105 | u8 *values); | ||
| 106 | extern int tc35892_block_write(struct tc35892 *tc35892, u8 reg, u8 length, | ||
| 107 | const u8 *values); | ||
| 108 | extern int tc35892_set_bits(struct tc35892 *tc35892, u8 reg, u8 mask, u8 val); | ||
| 109 | |||
| 110 | /** | ||
| 111 | * struct tc35892_gpio_platform_data - TC35892 GPIO platform data | ||
| 112 | * @gpio_base: first gpio number assigned to TC35892. A maximum of | ||
| 113 | * %TC35892_NR_GPIOS GPIOs will be allocated. | ||
| 114 | * @setup: callback for board-specific initialization | ||
| 115 | * @remove: callback for board-specific teardown | ||
| 116 | */ | ||
| 117 | struct tc35892_gpio_platform_data { | ||
| 118 | int gpio_base; | ||
| 119 | void (*setup)(struct tc35892 *tc35892, unsigned gpio_base); | ||
| 120 | void (*remove)(struct tc35892 *tc35892, unsigned gpio_base); | ||
| 121 | }; | ||
| 122 | |||
| 123 | /** | ||
| 124 | * struct tc35892_platform_data - TC35892 platform data | ||
| 125 | * @irq_base: base IRQ number. %TC35892_NR_IRQS irqs will be used. | ||
| 126 | * @gpio: GPIO-specific platform data | ||
| 127 | */ | ||
| 128 | struct tc35892_platform_data { | ||
| 129 | int irq_base; | ||
| 130 | struct tc35892_gpio_platform_data *gpio; | ||
| 131 | }; | ||
| 132 | |||
| 133 | #define TC35892_NR_GPIOS 24 | ||
| 134 | #define TC35892_NR_IRQS TC35892_INT_GPIO(TC35892_NR_GPIOS) | ||
| 135 | |||
| 136 | #endif | ||
diff --git a/include/linux/mfd/tc3589x.h b/include/linux/mfd/tc3589x.h new file mode 100644 index 000000000000..16c76e124f9c --- /dev/null +++ b/include/linux/mfd/tc3589x.h | |||
| @@ -0,0 +1,195 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) ST-Ericsson SA 2010 | ||
| 3 | * | ||
| 4 | * License Terms: GNU General Public License, version 2 | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef __LINUX_MFD_TC3589x_H | ||
| 8 | #define __LINUX_MFD_TC3589x_H | ||
| 9 | |||
| 10 | #include <linux/device.h> | ||
| 11 | |||
| 12 | enum tx3589x_block { | ||
| 13 | TC3589x_BLOCK_GPIO = 1 << 0, | ||
| 14 | TC3589x_BLOCK_KEYPAD = 1 << 1, | ||
| 15 | }; | ||
| 16 | |||
| 17 | #define TC3589x_RSTCTRL_IRQRST (1 << 4) | ||
| 18 | #define TC3589x_RSTCTRL_TIMRST (1 << 3) | ||
| 19 | #define TC3589x_RSTCTRL_ROTRST (1 << 2) | ||
| 20 | #define TC3589x_RSTCTRL_KBDRST (1 << 1) | ||
| 21 | #define TC3589x_RSTCTRL_GPIRST (1 << 0) | ||
| 22 | |||
| 23 | /* Keyboard Configuration Registers */ | ||
| 24 | #define TC3589x_KBDSETTLE_REG 0x01 | ||
| 25 | #define TC3589x_KBDBOUNCE 0x02 | ||
| 26 | #define TC3589x_KBDSIZE 0x03 | ||
| 27 | #define TC3589x_KBCFG_LSB 0x04 | ||
| 28 | #define TC3589x_KBCFG_MSB 0x05 | ||
| 29 | #define TC3589x_KBDIC 0x08 | ||
| 30 | #define TC3589x_KBDMSK 0x09 | ||
| 31 | #define TC3589x_EVTCODE_FIFO 0x10 | ||
| 32 | #define TC3589x_KBDMFS 0x8F | ||
| 33 | |||
| 34 | #define TC3589x_IRQST 0x91 | ||
| 35 | |||
| 36 | #define TC3589x_MANFCODE_MAGIC 0x03 | ||
| 37 | #define TC3589x_MANFCODE 0x80 | ||
| 38 | #define TC3589x_VERSION 0x81 | ||
| 39 | #define TC3589x_IOCFG 0xA7 | ||
| 40 | |||
| 41 | #define TC3589x_CLKMODE 0x88 | ||
| 42 | #define TC3589x_CLKCFG 0x89 | ||
| 43 | #define TC3589x_CLKEN 0x8A | ||
| 44 | |||
| 45 | #define TC3589x_RSTCTRL 0x82 | ||
| 46 | #define TC3589x_EXTRSTN 0x83 | ||
| 47 | #define TC3589x_RSTINTCLR 0x84 | ||
| 48 | |||
| 49 | /* Pull up/down configuration registers */ | ||
| 50 | #define TC3589x_IOCFG 0xA7 | ||
| 51 | #define TC3589x_IOPULLCFG0_LSB 0xAA | ||
| 52 | #define TC3589x_IOPULLCFG0_MSB 0xAB | ||
| 53 | #define TC3589x_IOPULLCFG1_LSB 0xAC | ||
| 54 | #define TC3589x_IOPULLCFG1_MSB 0xAD | ||
| 55 | #define TC3589x_IOPULLCFG2_LSB 0xAE | ||
| 56 | |||
| 57 | #define TC3589x_GPIOIS0 0xC9 | ||
| 58 | #define TC3589x_GPIOIS1 0xCA | ||
| 59 | #define TC3589x_GPIOIS2 0xCB | ||
| 60 | #define TC3589x_GPIOIBE0 0xCC | ||
| 61 | #define TC3589x_GPIOIBE1 0xCD | ||
| 62 | #define TC3589x_GPIOIBE2 0xCE | ||
| 63 | #define TC3589x_GPIOIEV0 0xCF | ||
| 64 | #define TC3589x_GPIOIEV1 0xD0 | ||
| 65 | #define TC3589x_GPIOIEV2 0xD1 | ||
| 66 | #define TC3589x_GPIOIE0 0xD2 | ||
| 67 | #define TC3589x_GPIOIE1 0xD3 | ||
| 68 | #define TC3589x_GPIOIE2 0xD4 | ||
| 69 | #define TC3589x_GPIORIS0 0xD6 | ||
| 70 | #define TC3589x_GPIORIS1 0xD7 | ||
| 71 | #define TC3589x_GPIORIS2 0xD8 | ||
| 72 | #define TC3589x_GPIOMIS0 0xD9 | ||
| 73 | #define TC3589x_GPIOMIS1 0xDA | ||
| 74 | #define TC3589x_GPIOMIS2 0xDB | ||
| 75 | #define TC3589x_GPIOIC0 0xDC | ||
| 76 | #define TC3589x_GPIOIC1 0xDD | ||
| 77 | #define TC3589x_GPIOIC2 0xDE | ||
| 78 | |||
| 79 | #define TC3589x_GPIODATA0 0xC0 | ||
| 80 | #define TC3589x_GPIOMASK0 0xc1 | ||
| 81 | #define TC3589x_GPIODATA1 0xC2 | ||
| 82 | #define TC3589x_GPIOMASK1 0xc3 | ||
| 83 | #define TC3589x_GPIODATA2 0xC4 | ||
| 84 | #define TC3589x_GPIOMASK2 0xC5 | ||
| 85 | |||
| 86 | #define TC3589x_GPIODIR0 0xC6 | ||
| 87 | #define TC3589x_GPIODIR1 0xC7 | ||
| 88 | #define TC3589x_GPIODIR2 0xC8 | ||
| 89 | |||
| 90 | #define TC3589x_GPIOSYNC0 0xE6 | ||
| 91 | #define TC3589x_GPIOSYNC1 0xE7 | ||
| 92 | #define TC3589x_GPIOSYNC2 0xE8 | ||
| 93 | |||
| 94 | #define TC3589x_GPIOWAKE0 0xE9 | ||
| 95 | #define TC3589x_GPIOWAKE1 0xEA | ||
| 96 | #define TC3589x_GPIOWAKE2 0xEB | ||
| 97 | |||
| 98 | #define TC3589x_GPIOODM0 0xE0 | ||
| 99 | #define TC3589x_GPIOODE0 0xE1 | ||
| 100 | #define TC3589x_GPIOODM1 0xE2 | ||
| 101 | #define TC3589x_GPIOODE1 0xE3 | ||
| 102 | #define TC3589x_GPIOODM2 0xE4 | ||
| 103 | #define TC3589x_GPIOODE2 0xE5 | ||
| 104 | |||
| 105 | #define TC3589x_INT_GPIIRQ 0 | ||
| 106 | #define TC3589x_INT_TI0IRQ 1 | ||
| 107 | #define TC3589x_INT_TI1IRQ 2 | ||
| 108 | #define TC3589x_INT_TI2IRQ 3 | ||
| 109 | #define TC3589x_INT_ROTIRQ 5 | ||
| 110 | #define TC3589x_INT_KBDIRQ 6 | ||
| 111 | #define TC3589x_INT_PORIRQ 7 | ||
| 112 | |||
| 113 | #define TC3589x_NR_INTERNAL_IRQS 8 | ||
| 114 | #define TC3589x_INT_GPIO(x) (TC3589x_NR_INTERNAL_IRQS + (x)) | ||
| 115 | |||
| 116 | struct tc3589x { | ||
| 117 | struct mutex lock; | ||
| 118 | struct device *dev; | ||
| 119 | struct i2c_client *i2c; | ||
| 120 | |||
| 121 | int irq_base; | ||
| 122 | int num_gpio; | ||
| 123 | struct tc3589x_platform_data *pdata; | ||
| 124 | }; | ||
| 125 | |||
| 126 | extern int tc3589x_reg_write(struct tc3589x *tc3589x, u8 reg, u8 data); | ||
| 127 | extern int tc3589x_reg_read(struct tc3589x *tc3589x, u8 reg); | ||
| 128 | extern int tc3589x_block_read(struct tc3589x *tc3589x, u8 reg, u8 length, | ||
| 129 | u8 *values); | ||
| 130 | extern int tc3589x_block_write(struct tc3589x *tc3589x, u8 reg, u8 length, | ||
| 131 | const u8 *values); | ||
| 132 | extern int tc3589x_set_bits(struct tc3589x *tc3589x, u8 reg, u8 mask, u8 val); | ||
| 133 | |||
| 134 | /* | ||
| 135 | * Keypad related platform specific constants | ||
| 136 | * These values may be modified for fine tuning | ||
| 137 | */ | ||
| 138 | #define TC_KPD_ROWS 0x8 | ||
| 139 | #define TC_KPD_COLUMNS 0x8 | ||
| 140 | #define TC_KPD_DEBOUNCE_PERIOD 0xA3 | ||
| 141 | #define TC_KPD_SETTLE_TIME 0xA3 | ||
| 142 | |||
| 143 | /** | ||
| 144 | * struct tc35893_platform_data - data structure for platform specific data | ||
| 145 | * @keymap_data: matrix scan code table for keycodes | ||
| 146 | * @krow: mask for available rows, value is 0xFF | ||
| 147 | * @kcol: mask for available columns, value is 0xFF | ||
| 148 | * @debounce_period: platform specific debounce time | ||
| 149 | * @settle_time: platform specific settle down time | ||
| 150 | * @irqtype: type of interrupt, falling or rising edge | ||
| 151 | * @enable_wakeup: specifies if keypad event can wake up system from sleep | ||
| 152 | * @no_autorepeat: flag for auto repetition | ||
| 153 | */ | ||
| 154 | struct tc3589x_keypad_platform_data { | ||
| 155 | const struct matrix_keymap_data *keymap_data; | ||
| 156 | u8 krow; | ||
| 157 | u8 kcol; | ||
| 158 | u8 debounce_period; | ||
| 159 | u8 settle_time; | ||
| 160 | unsigned long irqtype; | ||
| 161 | bool enable_wakeup; | ||
| 162 | bool no_autorepeat; | ||
| 163 | }; | ||
| 164 | |||
| 165 | /** | ||
| 166 | * struct tc3589x_gpio_platform_data - TC3589x GPIO platform data | ||
| 167 | * @gpio_base: first gpio number assigned to TC3589x. A maximum of | ||
| 168 | * %TC3589x_NR_GPIOS GPIOs will be allocated. | ||
| 169 | * @setup: callback for board-specific initialization | ||
| 170 | * @remove: callback for board-specific teardown | ||
| 171 | */ | ||
| 172 | struct tc3589x_gpio_platform_data { | ||
| 173 | int gpio_base; | ||
| 174 | void (*setup)(struct tc3589x *tc3589x, unsigned gpio_base); | ||
| 175 | void (*remove)(struct tc3589x *tc3589x, unsigned gpio_base); | ||
| 176 | }; | ||
| 177 | |||
| 178 | /** | ||
| 179 | * struct tc3589x_platform_data - TC3589x platform data | ||
| 180 | * @block: bitmask of blocks to enable (use TC3589x_BLOCK_*) | ||
| 181 | * @irq_base: base IRQ number. %TC3589x_NR_IRQS irqs will be used. | ||
| 182 | * @gpio: GPIO-specific platform data | ||
| 183 | * @keypad: keypad-specific platform data | ||
| 184 | */ | ||
| 185 | struct tc3589x_platform_data { | ||
| 186 | unsigned int block; | ||
| 187 | int irq_base; | ||
| 188 | struct tc3589x_gpio_platform_data *gpio; | ||
| 189 | const struct tc3589x_keypad_platform_data *keypad; | ||
| 190 | }; | ||
| 191 | |||
| 192 | #define TC3589x_NR_GPIOS 24 | ||
| 193 | #define TC3589x_NR_IRQS TC3589x_INT_GPIO(TC3589x_NR_GPIOS) | ||
| 194 | |||
| 195 | #endif | ||
