• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/include/linux/mfd/
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
92struct 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
102extern int tc35892_reg_write(struct tc35892 *tc35892, u8 reg, u8 data);
103extern int tc35892_reg_read(struct tc35892 *tc35892, u8 reg);
104extern int tc35892_block_read(struct tc35892 *tc35892, u8 reg, u8 length,
105			      u8 *values);
106extern int tc35892_block_write(struct tc35892 *tc35892, u8 reg, u8 length,
107			       const u8 *values);
108extern 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 */
115struct tc35892_gpio_platform_data {
116	int gpio_base;
117};
118
119/**
120 * struct tc35892_platform_data - TC35892 platform data
121 * @irq_base: base IRQ number.  %TC35892_NR_IRQS irqs will be used.
122 * @gpio: GPIO-specific platform data
123 */
124struct tc35892_platform_data {
125	int irq_base;
126	struct tc35892_gpio_platform_data *gpio;
127};
128
129#define TC35892_NR_GPIOS	24
130#define TC35892_NR_IRQS		TC35892_INT_GPIO(TC35892_NR_GPIOS)
131
132#endif
133