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

TOMOYO Linux Cross Reference
Linux/include/linux/mfd/tc3589x.h

Version: ~ [ linux-5.6 ] ~ [ linux-5.5.13 ] ~ [ linux-5.4.28 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.113 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.174 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.217 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.217 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.82 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 struct device;
 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         struct irq_domain *domain;
121 
122         int irq_base;
123         int num_gpio;
124         struct tc3589x_platform_data *pdata;
125 };
126 
127 extern int tc3589x_reg_write(struct tc3589x *tc3589x, u8 reg, u8 data);
128 extern int tc3589x_reg_read(struct tc3589x *tc3589x, u8 reg);
129 extern int tc3589x_block_read(struct tc3589x *tc3589x, u8 reg, u8 length,
130                               u8 *values);
131 extern int tc3589x_block_write(struct tc3589x *tc3589x, u8 reg, u8 length,
132                                const u8 *values);
133 extern int tc3589x_set_bits(struct tc3589x *tc3589x, u8 reg, u8 mask, u8 val);
134 
135 /*
136  * Keypad related platform specific constants
137  * These values may be modified for fine tuning
138  */
139 #define TC_KPD_ROWS             0x8
140 #define TC_KPD_COLUMNS          0x8
141 #define TC_KPD_DEBOUNCE_PERIOD  0xA3
142 #define TC_KPD_SETTLE_TIME      0xA3
143 
144 /**
145  * struct tc35893_platform_data - data structure for platform specific data
146  * @keymap_data:        matrix scan code table for keycodes
147  * @krow:               mask for available rows, value is 0xFF
148  * @kcol:               mask for available columns, value is 0xFF
149  * @debounce_period:    platform specific debounce time
150  * @settle_time:        platform specific settle down time
151  * @irqtype:            type of interrupt, falling or rising edge
152  * @enable_wakeup:      specifies if keypad event can wake up system from sleep
153  * @no_autorepeat:      flag for auto repetition
154  */
155 struct tc3589x_keypad_platform_data {
156         const struct matrix_keymap_data *keymap_data;
157         u8                      krow;
158         u8                      kcol;
159         u8                      debounce_period;
160         u8                      settle_time;
161         unsigned long           irqtype;
162         bool                    enable_wakeup;
163         bool                    no_autorepeat;
164 };
165 
166 /**
167  * struct tc3589x_gpio_platform_data - TC3589x GPIO platform data
168  * @gpio_base: first gpio number assigned to TC3589x.  A maximum of
169  *             %TC3589x_NR_GPIOS GPIOs will be allocated.
170  * @setup: callback for board-specific initialization
171  * @remove: callback for board-specific teardown
172  */
173 struct tc3589x_gpio_platform_data {
174         int gpio_base;
175         void (*setup)(struct tc3589x *tc3589x, unsigned gpio_base);
176         void (*remove)(struct tc3589x *tc3589x, unsigned gpio_base);
177 };
178 
179 /**
180  * struct tc3589x_platform_data - TC3589x platform data
181  * @block: bitmask of blocks to enable (use TC3589x_BLOCK_*)
182  * @irq_base: base IRQ number.  %TC3589x_NR_IRQS irqs will be used.
183  * @gpio: GPIO-specific platform data
184  * @keypad: keypad-specific platform data
185  */
186 struct tc3589x_platform_data {
187         unsigned int block;
188         int irq_base;
189         struct tc3589x_gpio_platform_data *gpio;
190         const struct tc3589x_keypad_platform_data *keypad;
191 };
192 
193 #define TC3589x_NR_GPIOS        24
194 #define TC3589x_NR_IRQS         TC3589x_INT_GPIO(TC3589x_NR_GPIOS)
195 
196 #endif
197 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp