diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook')
18 files changed, 7155 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch new file mode 100644 index 00000000..8988fd82 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0001-ARM-OMAP-add-spi-platform-devices.patch | |||
@@ -0,0 +1,62 @@ | |||
1 | From 0031d3fb2d067f4c46e434f5f5c6c14cef2a83a3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tim Yamin <plasm@roo.me.uk> | ||
3 | Date: Sat, 11 Apr 2009 13:05:21 -0700 | ||
4 | Subject: [PATCH 01/17] ARM: OMAP: add spi platform devices | ||
5 | |||
6 | --- | ||
7 | arch/arm/mach-omap2/devices.c | 32 ++++++++++++++++++++++++++++++++ | ||
8 | 1 files changed, 32 insertions(+), 0 deletions(-) | ||
9 | |||
10 | diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c | ||
11 | index 18ad931..ae67ada 100644 | ||
12 | --- a/arch/arm/mach-omap2/devices.c | ||
13 | +++ b/arch/arm/mach-omap2/devices.c | ||
14 | @@ -15,6 +15,7 @@ | ||
15 | #include <linux/platform_device.h> | ||
16 | #include <linux/io.h> | ||
17 | #include <linux/clk.h> | ||
18 | +#include <linux/spi/spi_gpio.h> | ||
19 | |||
20 | #include <mach/hardware.h> | ||
21 | #include <asm/mach-types.h> | ||
22 | @@ -373,6 +374,37 @@ static struct platform_device omap2_mcspi4 = { | ||
23 | .platform_data = &omap2_mcspi4_config, | ||
24 | }, | ||
25 | }; | ||
26 | + | ||
27 | +static struct spi_gpio_platform_data spi3_gpio_platform_data = { | ||
28 | + .miso = 132, | ||
29 | + .mosi = 131, | ||
30 | + .sck = 130, | ||
31 | + .num_chipselect = 1, | ||
32 | +}; | ||
33 | + | ||
34 | +static struct platform_device spi3_gpio = { | ||
35 | + .name = "spi_gpio", | ||
36 | + .id = 3, | ||
37 | + .dev = { | ||
38 | + .platform_data = &spi3_gpio_platform_data, | ||
39 | + }, | ||
40 | +}; | ||
41 | + | ||
42 | +static struct spi_gpio_platform_data spi4_gpio_platform_data = { | ||
43 | + .miso = 159, | ||
44 | + .mosi = 158, | ||
45 | + .sck = 156, | ||
46 | + .num_chipselect = 1, | ||
47 | +}; | ||
48 | + | ||
49 | +static struct platform_device spi4_gpio = { | ||
50 | + .name = "spi_gpio", | ||
51 | + .id = 4, | ||
52 | + .dev = { | ||
53 | + .platform_data = &spi4_gpio_platform_data, | ||
54 | + }, | ||
55 | +}; | ||
56 | + | ||
57 | #endif | ||
58 | |||
59 | #ifdef CONFIG_ARCH_OMAP4 | ||
60 | -- | ||
61 | 1.6.6.1 | ||
62 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch new file mode 100644 index 00000000..f9c7702e --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0002-MMA7455L-accelerometer-driver.patch | |||
@@ -0,0 +1,683 @@ | |||
1 | From 0c804b06c04a14da575d592c89408537c21fb26b Mon Sep 17 00:00:00 2001 | ||
2 | From: Tim Yamin <plasm@roo.me.uk> | ||
3 | Date: Tue, 23 Mar 2010 09:52:10 +0100 | ||
4 | Subject: [PATCH 02/17] MMA7455L accelerometer driver | ||
5 | |||
6 | --- | ||
7 | drivers/input/misc/Kconfig | 9 + | ||
8 | drivers/input/misc/Makefile | 1 + | ||
9 | drivers/input/misc/mma7455l.c | 615 +++++++++++++++++++++++++++++++++++++++++ | ||
10 | include/linux/mma7455l.h | 11 + | ||
11 | 4 files changed, 636 insertions(+), 0 deletions(-) | ||
12 | create mode 100644 drivers/input/misc/mma7455l.c | ||
13 | create mode 100644 include/linux/mma7455l.h | ||
14 | |||
15 | diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig | ||
16 | index 16ec523..d35ae19 100644 | ||
17 | --- a/drivers/input/misc/Kconfig | ||
18 | +++ b/drivers/input/misc/Kconfig | ||
19 | @@ -319,4 +319,13 @@ config INPUT_PCAP | ||
20 | To compile this driver as a module, choose M here: the | ||
21 | module will be called pcap_keys. | ||
22 | |||
23 | +config INPUT_MMA7455L | ||
24 | + tristate "Freescale MMA7455L 3-axis accelerometer" | ||
25 | + depends on SPI_MASTER | ||
26 | + help | ||
27 | + SPI driver for the Freescale MMA7455L 3-axis accelerometer. | ||
28 | + | ||
29 | + The userspace interface is a 3-axis (X/Y/Z) relative movement | ||
30 | + Linux input device, reporting REL_[XYZ] events. | ||
31 | + | ||
32 | endif | ||
33 | diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile | ||
34 | index a8b8485..75b8baa 100644 | ||
35 | --- a/drivers/input/misc/Makefile | ||
36 | +++ b/drivers/input/misc/Makefile | ||
37 | @@ -30,4 +30,5 @@ obj-$(CONFIG_INPUT_WINBOND_CIR) += winbond-cir.o | ||
38 | obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o | ||
39 | obj-$(CONFIG_INPUT_WM831X_ON) += wm831x-on.o | ||
40 | obj-$(CONFIG_INPUT_YEALINK) += yealink.o | ||
41 | +obj-$(CONFIG_INPUT_MMA7455L) += mma7455l.o | ||
42 | |||
43 | diff --git a/drivers/input/misc/mma7455l.c b/drivers/input/misc/mma7455l.c | ||
44 | new file mode 100644 | ||
45 | index 0000000..b907cc6 | ||
46 | --- /dev/null | ||
47 | +++ b/drivers/input/misc/mma7455l.c | ||
48 | @@ -0,0 +1,615 @@ | ||
49 | +/* Linux kernel driver for the Freescale MMA7455L 3-axis accelerometer | ||
50 | + * | ||
51 | + * Copyright (C) 2009 by Always Innovating, Inc. | ||
52 | + * Author: Gregoire Gentil <gregoire@gentil.com> | ||
53 | + * Author: Tim Yamin <plasm@roo.me.uk> | ||
54 | + * All rights reserved. | ||
55 | + * | ||
56 | + * This program is free software; you can redistribute it and/or | ||
57 | + * modify it under the terms of the GNU General Public License as | ||
58 | + * published by the Free Software Foundation; either version 2 of | ||
59 | + * the License, or (at your option) any later version. | ||
60 | + * | ||
61 | + * This program is distributed in the hope that it will be useful, | ||
62 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
63 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
64 | + * GNU General Public License for more details. | ||
65 | + * | ||
66 | + * You should have received a copy of the GNU General Public License | ||
67 | + * along with this program; if not, write to the Free Software | ||
68 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
69 | + * MA 02111-1307 USA | ||
70 | + * | ||
71 | + */ | ||
72 | + | ||
73 | +/* | ||
74 | + * What this driver doesn't yet support: | ||
75 | + * | ||
76 | + * - I2C | ||
77 | + * - INT2 handling | ||
78 | + * - Pulse detection (and the sysctls to control it) | ||
79 | + * - 10-bit measurement | ||
80 | + */ | ||
81 | + | ||
82 | +#include <linux/kernel.h> | ||
83 | +#include <linux/types.h> | ||
84 | +#include <linux/module.h> | ||
85 | +#include <linux/device.h> | ||
86 | +#include <linux/platform_device.h> | ||
87 | +#include <linux/delay.h> | ||
88 | +#include <linux/input.h> | ||
89 | +#include <linux/irq.h> | ||
90 | +#include <linux/interrupt.h> | ||
91 | +#include <linux/sysfs.h> | ||
92 | +#include <linux/gpio.h> | ||
93 | + | ||
94 | +#include <linux/mma7455l.h> | ||
95 | +#include <linux/spi/spi.h> | ||
96 | + | ||
97 | +#define MMA7455L_WHOAMI_MAGIC 0x55 | ||
98 | + | ||
99 | +enum mma7455l_reg { | ||
100 | + MMA7455L_REG_XOUTL = 0x00, | ||
101 | + MMA7455L_REG_XOUTH = 0x01, | ||
102 | + MMA7455L_REG_YOUTL = 0x02, | ||
103 | + MMA7455L_REG_YOUTH = 0x03, | ||
104 | + MMA7455L_REG_ZOUTL = 0x04, | ||
105 | + MMA7455L_REG_ZOUTH = 0x05, | ||
106 | + MMA7455L_REG_XOUT8 = 0x06, | ||
107 | + MMA7455L_REG_YOUT8 = 0x07, | ||
108 | + MMA7455L_REG_ZOUT8 = 0x08, | ||
109 | + MMA7455L_REG_STATUS = 0x09, | ||
110 | + MMA7455L_REG_DETSRC = 0x0a, | ||
111 | + MMA7455L_REG_TOUT = 0x0b, | ||
112 | + MMA7455L_REG_RESERVED1 = 0x0c, | ||
113 | + MMA7455L_REG_I2CAD = 0x0d, | ||
114 | + MMA7455L_REG_USRINF = 0x0e, | ||
115 | + MMA7455L_REG_WHOAMI = 0x0f, | ||
116 | + MMA7455L_REG_XOFFL = 0x10, | ||
117 | + MMA7455L_REG_XOFFH = 0x11, | ||
118 | + MMA7455L_REG_YOFFL = 0x12, | ||
119 | + MMA7455L_REG_YOFFH = 0x13, | ||
120 | + MMA7455L_REG_ZOFFL = 0x14, | ||
121 | + MMA7455L_REG_ZOFFH = 0x15, | ||
122 | + MMA7455L_REG_MCTL = 0x16, | ||
123 | + MMA7455L_REG_INTRST = 0x17, | ||
124 | + MMA7455L_REG_CTL1 = 0x18, | ||
125 | + MMA7455L_REG_CTL2 = 0x19, | ||
126 | + MMA7455L_REG_LDTH = 0x1a, | ||
127 | + MMA7455L_REG_PDTH = 0x1b, | ||
128 | + MMA7455L_REG_PW = 0x1c, | ||
129 | + MMA7455L_REG_LT = 0x1d, | ||
130 | + MMA7455L_REG_TW = 0x1e, | ||
131 | + MMA7455L_REG_RESERVED2 = 0x1f, | ||
132 | +}; | ||
133 | + | ||
134 | +enum mma7455l_reg_status { | ||
135 | + MMA7455L_STATUS_XDA = 0x08, | ||
136 | + MMA7455L_STATUS_YDA = 0x10, | ||
137 | + MMA7455L_STATUS_ZDA = 0x20, | ||
138 | +}; | ||
139 | + | ||
140 | +enum mma7455l_mode { | ||
141 | + MMA7455L_MODE_STANDBY = 0, | ||
142 | + MMA7455L_MODE_MEASUREMENT = 1, | ||
143 | + MMA7455L_MODE_LEVELDETECTION = 0x42, /* Set DRPD to on */ | ||
144 | + MMA7455L_MODE_PULSEDETECTION = 0x43, /* Set DRPD to on */ | ||
145 | + MMA7455L_MODE_MASK = 0x43, | ||
146 | +}; | ||
147 | + | ||
148 | +enum mma7455l_gselect { | ||
149 | + MMA7455L_GSELECT_8 = 0x0, | ||
150 | + MMA7455L_GSELECT_2 = 0x4, | ||
151 | + MMA7455L_GSELECT_4 = 0x8, | ||
152 | + MMA7455L_GSELECT_MASK = 0xC, | ||
153 | +}; | ||
154 | + | ||
155 | +/* FIXME */ | ||
156 | +#define MMA7455L_F_FS 0x0020 /* ADC full scale */ | ||
157 | + | ||
158 | +struct mma7455l_info { | ||
159 | + struct spi_device *spi_dev; | ||
160 | + struct input_dev *input_dev; | ||
161 | + struct mutex lock; | ||
162 | + struct delayed_work work; | ||
163 | + | ||
164 | + u8 mode; | ||
165 | + u8 gSelect; | ||
166 | + | ||
167 | + u8 flags; | ||
168 | + u8 working; | ||
169 | +}; | ||
170 | + | ||
171 | +/* lowlevel register access functions */ | ||
172 | + | ||
173 | +#define WRITE_BIT (1 << 7) | ||
174 | +#define ADDR_SHIFT 1 | ||
175 | + | ||
176 | +static inline u_int8_t __reg_read(struct mma7455l_info *mma, u_int8_t reg) | ||
177 | +{ | ||
178 | + int rc; | ||
179 | + u_int8_t cmd; | ||
180 | + | ||
181 | + cmd = ((reg & 0x3f) << ADDR_SHIFT); | ||
182 | + rc = spi_w8r8(mma->spi_dev, cmd); | ||
183 | + | ||
184 | + return rc; | ||
185 | +} | ||
186 | + | ||
187 | +static u_int8_t reg_read(struct mma7455l_info *mma, u_int8_t reg) | ||
188 | +{ | ||
189 | + u_int8_t ret; | ||
190 | + | ||
191 | + mutex_lock(&mma->lock); | ||
192 | + ret = __reg_read(mma, reg); | ||
193 | + mutex_unlock(&mma->lock); | ||
194 | + | ||
195 | + return ret; | ||
196 | +} | ||
197 | + | ||
198 | +static s16 __reg_read_10(struct mma7455l_info *mma, u8 reg1, u8 reg2) | ||
199 | +{ | ||
200 | + u8 v1, v2; | ||
201 | + | ||
202 | + v1 = __reg_read(mma, reg1); | ||
203 | + v2 = __reg_read(mma, reg2); | ||
204 | + | ||
205 | + return (v2 & 0x4) << 13 | (v2 & 0x3) << 8 | v1; | ||
206 | +} | ||
207 | + | ||
208 | +static inline int __reg_write(struct mma7455l_info *mma, u_int8_t reg, u_int8_t val) | ||
209 | +{ | ||
210 | + u_int8_t buf[2]; | ||
211 | + | ||
212 | + buf[0] = ((reg & 0x3f) << ADDR_SHIFT) | WRITE_BIT; | ||
213 | + buf[1] = val; | ||
214 | + | ||
215 | + return spi_write(mma->spi_dev, buf, sizeof(buf)); | ||
216 | +} | ||
217 | + | ||
218 | +static int reg_write(struct mma7455l_info *mma, u_int8_t reg, u_int8_t val) | ||
219 | +{ | ||
220 | + int ret; | ||
221 | + | ||
222 | + mutex_lock(&mma->lock); | ||
223 | + ret = __reg_write(mma, reg, val); | ||
224 | + mutex_unlock(&mma->lock); | ||
225 | + | ||
226 | + return ret; | ||
227 | +} | ||
228 | + | ||
229 | +static s16 __reg_write_10(struct mma7455l_info *mma, u8 reg1, u8 reg2, s16 value) | ||
230 | +{ | ||
231 | + int ret; | ||
232 | + u8 v1, v2; | ||
233 | + | ||
234 | + v1 = value & 0xFF; | ||
235 | + if(value < 0) | ||
236 | + v2 = ((value >> 8) & 0x3) | 0x4; | ||
237 | + else | ||
238 | + v2 = 0; | ||
239 | + | ||
240 | + ret = __reg_write(mma, reg1, v1); | ||
241 | + ret = __reg_write(mma, reg2, v2); | ||
242 | + return ret; | ||
243 | +} | ||
244 | + | ||
245 | +static void mma7455l_work(struct work_struct *work) | ||
246 | +{ | ||
247 | + struct mma7455l_info *mma = | ||
248 | + container_of(work, struct mma7455l_info, work.work); | ||
249 | + | ||
250 | + s8 val; | ||
251 | + mma->working = 1; | ||
252 | + | ||
253 | + /* FIXME: 10 bit accuracy? */ | ||
254 | + if (!(mma->flags & MMA7455L_STATUS_XDA)) { | ||
255 | + val = reg_read(mma, MMA7455L_REG_XOUT8); | ||
256 | + input_report_abs(mma->input_dev, ABS_X, val); | ||
257 | + } | ||
258 | + if (!(mma->flags & MMA7455L_STATUS_YDA)) { | ||
259 | + val = reg_read(mma, MMA7455L_REG_YOUT8); | ||
260 | + input_report_abs(mma->input_dev, ABS_Y, val); | ||
261 | + } | ||
262 | + if (!(mma->flags & MMA7455L_STATUS_ZDA)) { | ||
263 | + val = reg_read(mma, MMA7455L_REG_ZOUT8); | ||
264 | + input_report_abs(mma->input_dev, ABS_Z, val); | ||
265 | + } | ||
266 | + | ||
267 | + mma->working = 0; | ||
268 | + input_sync(mma->input_dev); | ||
269 | + put_device(&mma->spi_dev->dev); | ||
270 | + | ||
271 | + /* Enable IRQ and clear out interrupt */ | ||
272 | + reg_write(mma, MMA7455L_REG_INTRST, 0x3); | ||
273 | + reg_write(mma, MMA7455L_REG_INTRST, 0x0); | ||
274 | + enable_irq(mma->spi_dev->irq); | ||
275 | +} | ||
276 | + | ||
277 | +static void mma7455l_schedule_work(struct mma7455l_info *mma) | ||
278 | +{ | ||
279 | + int status; | ||
280 | + | ||
281 | + get_device(&mma->spi_dev->dev); | ||
282 | + status = schedule_delayed_work(&mma->work, HZ / 10); | ||
283 | +} | ||
284 | + | ||
285 | +static irqreturn_t mma7455l_interrupt(int irq, void *_mma) | ||
286 | +{ | ||
287 | + struct mma7455l_info *mma = _mma; | ||
288 | + | ||
289 | + /* Disable any further interrupts until we have processed | ||
290 | + * the current one */ | ||
291 | + disable_irq_nosync(mma->spi_dev->irq); | ||
292 | + | ||
293 | + mma7455l_schedule_work(mma); | ||
294 | + return IRQ_HANDLED; | ||
295 | +} | ||
296 | + | ||
297 | +/* sysfs */ | ||
298 | + | ||
299 | +static void get_mode(struct mma7455l_info *mma, u8 *mode, u8 *gSelect) | ||
300 | +{ | ||
301 | + u8 tmp = reg_read(mma, MMA7455L_REG_MCTL); | ||
302 | + | ||
303 | + *mode = tmp & MMA7455L_MODE_MASK; | ||
304 | + *gSelect = tmp & MMA7455L_GSELECT_MASK; | ||
305 | +} | ||
306 | + | ||
307 | +static void set_mode(struct mma7455l_info *mma, u8 mode, u8 gSelect) | ||
308 | +{ | ||
309 | + reg_write(mma, MMA7455L_REG_MCTL, mode | gSelect); | ||
310 | +} | ||
311 | + | ||
312 | +static void update_mode(struct mma7455l_info *mma, u8 mode, u8 gSelect) | ||
313 | +{ | ||
314 | + mma->mode = mode; | ||
315 | + mma->gSelect = gSelect; | ||
316 | + | ||
317 | + reg_write(mma, MMA7455L_REG_MCTL, mma->mode | mma->gSelect); | ||
318 | +} | ||
319 | + | ||
320 | +static ssize_t show_measure(struct device *dev, struct device_attribute *attr, char *buf) | ||
321 | +{ | ||
322 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
323 | + s8 x, y, z; | ||
324 | + u8 old_Mode, old_gSelect; | ||
325 | + | ||
326 | + get_mode(mma, &old_Mode, &old_gSelect); | ||
327 | + set_mode(mma, MMA7455L_MODE_MEASUREMENT, MMA7455L_GSELECT_2); | ||
328 | + | ||
329 | + while (reg_read(mma, MMA7455L_REG_STATUS) == 0) { | ||
330 | + msleep(10); | ||
331 | + } | ||
332 | + | ||
333 | + x = reg_read(mma, MMA7455L_REG_XOUT8); | ||
334 | + y = reg_read(mma, MMA7455L_REG_YOUT8); | ||
335 | + z = reg_read(mma, MMA7455L_REG_ZOUT8); | ||
336 | + | ||
337 | + set_mode(mma, old_Mode, old_gSelect); | ||
338 | + return sprintf(buf, "%d %d %d\n", x, y, z); | ||
339 | +} | ||
340 | + | ||
341 | +static ssize_t show_mode(struct device *dev, struct device_attribute *attr, char *buf) | ||
342 | +{ | ||
343 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
344 | + | ||
345 | + switch(mma->mode) | ||
346 | + { | ||
347 | + case MMA7455L_MODE_STANDBY: | ||
348 | + return sprintf(buf, "Standby\n"); | ||
349 | + break; | ||
350 | + case MMA7455L_MODE_MEASUREMENT: | ||
351 | + return sprintf(buf, "Measurement\n"); | ||
352 | + break; | ||
353 | + case MMA7455L_MODE_LEVELDETECTION: | ||
354 | + return sprintf(buf, "Level Detection\n"); | ||
355 | + break; | ||
356 | + case MMA7455L_MODE_PULSEDETECTION: | ||
357 | + return sprintf(buf, "Pulse Detection\n"); | ||
358 | + break; | ||
359 | + } | ||
360 | + | ||
361 | + return sprintf(buf, "Unknown mode!\n"); | ||
362 | +} | ||
363 | + | ||
364 | +static ssize_t show_gSelect(struct device *dev, struct device_attribute *attr, char *buf) | ||
365 | +{ | ||
366 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
367 | + | ||
368 | + switch(mma->gSelect) | ||
369 | + { | ||
370 | + case MMA7455L_GSELECT_8: | ||
371 | + return sprintf(buf, "8\n"); | ||
372 | + break; | ||
373 | + case MMA7455L_GSELECT_4: | ||
374 | + return sprintf(buf, "4\n"); | ||
375 | + break; | ||
376 | + case MMA7455L_GSELECT_2: | ||
377 | + return sprintf(buf, "2\n"); | ||
378 | + break; | ||
379 | + } | ||
380 | + | ||
381 | + return sprintf(buf, "Unknown gSelect!\n"); | ||
382 | +} | ||
383 | + | ||
384 | +static ssize_t show_level_threshold(struct device *dev, struct device_attribute *attr, char *buf) | ||
385 | +{ | ||
386 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
387 | + return sprintf(buf, "%u\n", reg_read(mma, MMA7455L_REG_LDTH)); | ||
388 | +} | ||
389 | + | ||
390 | +static ssize_t show_calibration(struct device *dev, struct device_attribute *attr, char *buf) | ||
391 | +{ | ||
392 | + s16 x, y, z; | ||
393 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
394 | + | ||
395 | + mutex_lock(&mma->lock); | ||
396 | + x = __reg_read_10(mma, MMA7455L_REG_XOFFL, MMA7455L_REG_XOFFH); | ||
397 | + y = __reg_read_10(mma, MMA7455L_REG_YOFFL, MMA7455L_REG_YOFFH); | ||
398 | + z = __reg_read_10(mma, MMA7455L_REG_ZOFFL, MMA7455L_REG_ZOFFH); | ||
399 | + mutex_unlock(&mma->lock); | ||
400 | + | ||
401 | + return sprintf(buf, "%d %d %d\n", x, y, z); | ||
402 | +} | ||
403 | + | ||
404 | +static ssize_t write_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
405 | +{ | ||
406 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
407 | + | ||
408 | + if (!strncmp(buf, "Standby", count)) | ||
409 | + update_mode(mma, MMA7455L_MODE_STANDBY, mma->gSelect); | ||
410 | + else if (!strncmp(buf, "Measurement", count)) | ||
411 | + update_mode(mma, MMA7455L_MODE_MEASUREMENT, mma->gSelect); | ||
412 | + else if (!strncmp(buf, "Level Detection", count)) | ||
413 | + update_mode(mma, MMA7455L_MODE_LEVELDETECTION, mma->gSelect); | ||
414 | + else if (!strncmp(buf, "Pulse Detection", count)) | ||
415 | + update_mode(mma, MMA7455L_MODE_PULSEDETECTION, mma->gSelect); | ||
416 | + | ||
417 | + return count; | ||
418 | +} | ||
419 | + | ||
420 | +static ssize_t write_gSelect(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
421 | +{ | ||
422 | + unsigned long v; | ||
423 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
424 | + | ||
425 | + if(strict_strtoul(buf, 10, &v) == 0) | ||
426 | + { | ||
427 | + switch(v) | ||
428 | + { | ||
429 | + case 8: | ||
430 | + update_mode(mma, mma->mode, MMA7455L_GSELECT_8); | ||
431 | + break; | ||
432 | + case 4: | ||
433 | + update_mode(mma, mma->mode, MMA7455L_GSELECT_4); | ||
434 | + break; | ||
435 | + case 2: | ||
436 | + update_mode(mma, mma->mode, MMA7455L_GSELECT_2); | ||
437 | + break; | ||
438 | + default: | ||
439 | + return -EINVAL; | ||
440 | + break; | ||
441 | + } | ||
442 | + return count; | ||
443 | + } | ||
444 | + | ||
445 | + return -EINVAL; | ||
446 | +} | ||
447 | + | ||
448 | +static ssize_t write_level_threshold(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
449 | +{ | ||
450 | + unsigned long v; | ||
451 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
452 | + | ||
453 | + if(strict_strtoul(buf, 10, &v) == 0) | ||
454 | + { | ||
455 | + if(v <= 0xFF) { | ||
456 | + reg_write(mma, MMA7455L_REG_LDTH, v); | ||
457 | + return count; | ||
458 | + } else | ||
459 | + return -EINVAL; | ||
460 | + } | ||
461 | + | ||
462 | + return -EINVAL; | ||
463 | +} | ||
464 | + | ||
465 | +static ssize_t write_calibration(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
466 | +{ | ||
467 | + int x, y, z; | ||
468 | + struct mma7455l_info *mma = dev_get_drvdata(dev); | ||
469 | + | ||
470 | + if (sscanf(buf, "%d %d %d", &x, &y, &z) == 3) | ||
471 | + { | ||
472 | + mutex_lock(&mma->lock); | ||
473 | + __reg_write_10(mma, MMA7455L_REG_XOFFL, MMA7455L_REG_XOFFH, x); | ||
474 | + __reg_write_10(mma, MMA7455L_REG_YOFFL, MMA7455L_REG_YOFFH, y); | ||
475 | + __reg_write_10(mma, MMA7455L_REG_ZOFFL, MMA7455L_REG_ZOFFH, z); | ||
476 | + mutex_unlock(&mma->lock); | ||
477 | + | ||
478 | + return count; | ||
479 | + } | ||
480 | + | ||
481 | + return -EINVAL; | ||
482 | +} | ||
483 | + | ||
484 | +static DEVICE_ATTR(measure, S_IRUGO, show_measure, NULL); | ||
485 | +static DEVICE_ATTR(mode, S_IRUGO | S_IWUGO, show_mode, write_mode); | ||
486 | +static DEVICE_ATTR(gSelect, S_IRUGO | S_IWUGO, show_gSelect, write_gSelect); | ||
487 | +static DEVICE_ATTR(level_threshold, S_IRUGO | S_IWUGO, show_level_threshold, write_level_threshold); | ||
488 | +static DEVICE_ATTR(calibration, S_IRUGO | S_IWUGO, show_calibration, write_calibration); | ||
489 | + | ||
490 | +static struct attribute *mma7455l_sysfs_entries[] = { | ||
491 | + &dev_attr_measure.attr, | ||
492 | + &dev_attr_mode.attr, | ||
493 | + &dev_attr_gSelect.attr, | ||
494 | + &dev_attr_level_threshold.attr, | ||
495 | + &dev_attr_calibration.attr, | ||
496 | + NULL | ||
497 | +}; | ||
498 | + | ||
499 | +static struct attribute_group mma7455l_attr_group = { | ||
500 | + .attrs = mma7455l_sysfs_entries, | ||
501 | +}; | ||
502 | + | ||
503 | +/* input device handling and driver core interaction */ | ||
504 | +static int mma7455l_input_open(struct input_dev *inp) | ||
505 | +{ | ||
506 | + struct mma7455l_info *mma = input_get_drvdata(inp); | ||
507 | + if(mma->mode == MMA7455L_MODE_STANDBY) | ||
508 | + update_mode(mma, MMA7455L_MODE_MEASUREMENT, mma->gSelect); | ||
509 | + | ||
510 | + return 0; | ||
511 | +} | ||
512 | + | ||
513 | +static void mma7455l_input_close(struct input_dev *inp) | ||
514 | +{ | ||
515 | + struct mma7455l_info *mma = input_get_drvdata(inp); | ||
516 | + update_mode(mma, MMA7455L_MODE_STANDBY, MMA7455L_GSELECT_2); | ||
517 | +} | ||
518 | + | ||
519 | +static int __devinit mma7455l_probe(struct spi_device *spi) | ||
520 | +{ | ||
521 | + int rc; | ||
522 | + struct mma7455l_info *mma; | ||
523 | + struct mma7455l_platform_data *pdata = spi->dev.platform_data; | ||
524 | + u_int8_t wai; | ||
525 | + | ||
526 | + mma = kzalloc(sizeof(*mma), GFP_KERNEL); | ||
527 | + if (!mma) | ||
528 | + return -ENOMEM; | ||
529 | + | ||
530 | + mutex_init(&mma->lock); | ||
531 | + INIT_DELAYED_WORK(&mma->work, mma7455l_work); | ||
532 | + mma->spi_dev = spi; | ||
533 | + mma->flags = mma->working = 0; | ||
534 | + | ||
535 | + spi_set_drvdata(spi, mma); | ||
536 | + | ||
537 | + rc = spi_setup(spi); | ||
538 | + if (rc < 0) { | ||
539 | + printk(KERN_ERR "mma7455l error durign spi_setup of mma7455l driver\n"); | ||
540 | + dev_set_drvdata(&spi->dev, NULL); | ||
541 | + kfree(mma); | ||
542 | + return rc; | ||
543 | + } | ||
544 | + | ||
545 | + wai = reg_read(mma, MMA7455L_REG_WHOAMI); | ||
546 | + if (wai != MMA7455L_WHOAMI_MAGIC) { | ||
547 | + printk(KERN_ERR "mma7455l unknown whoami signature 0x%02x\n", wai); | ||
548 | + dev_set_drvdata(&spi->dev, NULL); | ||
549 | + kfree(mma); | ||
550 | + return -ENODEV; | ||
551 | + } | ||
552 | + | ||
553 | + rc = request_irq(mma->spi_dev->irq, mma7455l_interrupt, IRQF_TRIGGER_HIGH, | ||
554 | + "mma7455l", mma); | ||
555 | + if (rc < 0) { | ||
556 | + dev_err(&spi->dev, "mma7455l error requesting IRQ %d\n", | ||
557 | + mma->spi_dev->irq); | ||
558 | + /* FIXME */ | ||
559 | + return rc; | ||
560 | + } | ||
561 | + | ||
562 | + rc = sysfs_create_group(&spi->dev.kobj, &mma7455l_attr_group); | ||
563 | + if (rc) { | ||
564 | + dev_err(&spi->dev, "error creating sysfs group\n"); | ||
565 | + return rc; | ||
566 | + } | ||
567 | + | ||
568 | + /* initialize input layer details */ | ||
569 | + mma->input_dev = input_allocate_device(); | ||
570 | + if (!mma->input_dev) { | ||
571 | + dev_err(&spi->dev, "mma7455l Unable to allocate input device\n"); | ||
572 | + /* FIXME */ | ||
573 | + } | ||
574 | + | ||
575 | + set_bit(EV_ABS, mma->input_dev->evbit); | ||
576 | + set_bit(ABS_X, mma->input_dev->absbit); | ||
577 | + set_bit(ABS_Y, mma->input_dev->absbit); | ||
578 | + set_bit(ABS_Z, mma->input_dev->absbit); | ||
579 | + | ||
580 | + input_set_drvdata(mma->input_dev, mma); | ||
581 | + mma->input_dev->name = "MMA7455L"; | ||
582 | + mma->input_dev->open = mma7455l_input_open; | ||
583 | + mma->input_dev->close = mma7455l_input_close; | ||
584 | + | ||
585 | + rc = input_register_device(mma->input_dev); | ||
586 | + if(!rc) | ||
587 | + { | ||
588 | + update_mode(mma, MMA7455L_MODE_STANDBY, MMA7455L_GSELECT_2); | ||
589 | + | ||
590 | + mutex_lock(&mma->lock); | ||
591 | + __reg_write_10(mma, MMA7455L_REG_XOFFL, MMA7455L_REG_XOFFH, pdata->calibration_x); | ||
592 | + __reg_write_10(mma, MMA7455L_REG_YOFFL, MMA7455L_REG_YOFFH, pdata->calibration_y); | ||
593 | + __reg_write_10(mma, MMA7455L_REG_ZOFFL, MMA7455L_REG_ZOFFH, pdata->calibration_z); | ||
594 | + mutex_unlock(&mma->lock); | ||
595 | + | ||
596 | + return 0; | ||
597 | + } | ||
598 | + | ||
599 | + input_free_device(mma->input_dev); | ||
600 | + return rc; | ||
601 | +} | ||
602 | + | ||
603 | +static int __devexit mma7455l_remove(struct spi_device *spi) | ||
604 | +{ | ||
605 | + struct mma7455l_info *mma = dev_get_drvdata(&spi->dev); | ||
606 | + | ||
607 | + sysfs_remove_group(&spi->dev.kobj, &mma7455l_attr_group); | ||
608 | + input_unregister_device(mma->input_dev); | ||
609 | + dev_set_drvdata(&spi->dev, NULL); | ||
610 | + kfree(mma); | ||
611 | + | ||
612 | + return 0; | ||
613 | +} | ||
614 | + | ||
615 | +#ifdef CONFIG_PM | ||
616 | +static int mma7455l_suspend(struct spi_device *spi, pm_message_t message) | ||
617 | +{ | ||
618 | + struct mma7455l_info *mma = dev_get_drvdata(&spi->dev); | ||
619 | + get_mode(mma, &mma->mode, &mma->gSelect); | ||
620 | + set_mode(mma, MMA7455L_MODE_STANDBY, MMA7455L_GSELECT_2); | ||
621 | + | ||
622 | + return 0; | ||
623 | +} | ||
624 | + | ||
625 | +static int mma7455l_resume(struct spi_device *spi) | ||
626 | +{ | ||
627 | + struct mma7455l_info *mma = dev_get_drvdata(&spi->dev); | ||
628 | + update_mode(mma, mma->mode, mma->gSelect); | ||
629 | + | ||
630 | + return 0; | ||
631 | +} | ||
632 | +#else | ||
633 | +#define mma7455l_suspend NULL | ||
634 | +#define mma7455l_resume NULL | ||
635 | +#endif | ||
636 | + | ||
637 | +static struct spi_driver mma7455l_driver = { | ||
638 | + .driver = { | ||
639 | + .name = "mma7455l", | ||
640 | + .owner = THIS_MODULE, | ||
641 | + }, | ||
642 | + | ||
643 | + .probe = mma7455l_probe, | ||
644 | + .remove = __devexit_p(mma7455l_remove), | ||
645 | + .suspend = mma7455l_suspend, | ||
646 | + .resume = mma7455l_resume, | ||
647 | +}; | ||
648 | + | ||
649 | +static int __init mma7455l_init(void) | ||
650 | +{ | ||
651 | + return spi_register_driver(&mma7455l_driver); | ||
652 | +} | ||
653 | + | ||
654 | +static void __exit mma7455l_exit(void) | ||
655 | +{ | ||
656 | + spi_unregister_driver(&mma7455l_driver); | ||
657 | +} | ||
658 | + | ||
659 | +MODULE_AUTHOR("Gregoire Gentil <gregoire@gentil.com>"); | ||
660 | +MODULE_LICENSE("GPL"); | ||
661 | + | ||
662 | +module_init(mma7455l_init); | ||
663 | +module_exit(mma7455l_exit); | ||
664 | diff --git a/include/linux/mma7455l.h b/include/linux/mma7455l.h | ||
665 | new file mode 100644 | ||
666 | index 0000000..12ab50a | ||
667 | --- /dev/null | ||
668 | +++ b/include/linux/mma7455l.h | ||
669 | @@ -0,0 +1,11 @@ | ||
670 | +#ifndef _LINUX_MMA7455L_H | ||
671 | +#define _LINUX_MMA7455L_H | ||
672 | + | ||
673 | +struct mma7455l_platform_data { | ||
674 | + /* Calibration offsets */ | ||
675 | + s16 calibration_x; | ||
676 | + s16 calibration_y; | ||
677 | + s16 calibration_z; | ||
678 | +}; | ||
679 | + | ||
680 | +#endif /* _LINUX_MMA7455L_H */ | ||
681 | -- | ||
682 | 1.6.6.1 | ||
683 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch new file mode 100644 index 00000000..f8b307ee --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0003-bq27x00_battery-remove-error-message-output.patch | |||
@@ -0,0 +1,53 @@ | |||
1 | From 6837800d92947d25e263bf041ebe7db4e804af68 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 11:41:17 +0100 | ||
4 | Subject: [PATCH 03/17] bq27x00_battery: remove error message output | ||
5 | |||
6 | --- | ||
7 | drivers/power/bq27x00_battery.c | 5 ----- | ||
8 | 1 files changed, 0 insertions(+), 5 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c | ||
11 | index 62bb981..6935bb6 100644 | ||
12 | --- a/drivers/power/bq27x00_battery.c | ||
13 | +++ b/drivers/power/bq27x00_battery.c | ||
14 | @@ -93,7 +93,6 @@ static int bq27x00_battery_temperature(struct bq27x00_device_info *di) | ||
15 | |||
16 | ret = bq27x00_read(BQ27x00_REG_TEMP, &temp, 0, di); | ||
17 | if (ret) { | ||
18 | - dev_err(di->dev, "error reading temperature\n"); | ||
19 | return ret; | ||
20 | } | ||
21 | |||
22 | @@ -111,7 +110,6 @@ static int bq27x00_battery_voltage(struct bq27x00_device_info *di) | ||
23 | |||
24 | ret = bq27x00_read(BQ27x00_REG_VOLT, &volt, 0, di); | ||
25 | if (ret) { | ||
26 | - dev_err(di->dev, "error reading voltage\n"); | ||
27 | return ret; | ||
28 | } | ||
29 | |||
30 | @@ -131,12 +129,10 @@ static int bq27x00_battery_current(struct bq27x00_device_info *di) | ||
31 | |||
32 | ret = bq27x00_read(BQ27x00_REG_AI, &curr, 0, di); | ||
33 | if (ret) { | ||
34 | - dev_err(di->dev, "error reading current\n"); | ||
35 | return 0; | ||
36 | } | ||
37 | ret = bq27x00_read(BQ27x00_REG_FLAGS, &flags, 0, di); | ||
38 | if (ret < 0) { | ||
39 | - dev_err(di->dev, "error reading flags\n"); | ||
40 | return 0; | ||
41 | } | ||
42 | if ((flags & (1 << 7)) != 0) { | ||
43 | @@ -157,7 +153,6 @@ static int bq27x00_battery_rsoc(struct bq27x00_device_info *di) | ||
44 | |||
45 | ret = bq27x00_read(BQ27x00_REG_RSOC, &rsoc, 1, di); | ||
46 | if (ret) { | ||
47 | - dev_err(di->dev, "error reading relative State-of-Charge\n"); | ||
48 | return ret; | ||
49 | } | ||
50 | |||
51 | -- | ||
52 | 1.6.6.1 | ||
53 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch new file mode 100644 index 00000000..759525f2 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0004-bq27x00_battery-add-charged-gpio.patch | |||
@@ -0,0 +1,65 @@ | |||
1 | From 829d500667448b7ea9465615261a988adc3aa645 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 11:42:45 +0100 | ||
4 | Subject: [PATCH 04/17] bq27x00_battery: add charged gpio | ||
5 | |||
6 | --- | ||
7 | drivers/power/bq27x00_battery.c | 21 +++++++++++++++++++++ | ||
8 | 1 files changed, 21 insertions(+), 0 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c | ||
11 | index 6935bb6..4b80f59 100644 | ||
12 | --- a/drivers/power/bq27x00_battery.c | ||
13 | +++ b/drivers/power/bq27x00_battery.c | ||
14 | @@ -28,6 +28,7 @@ | ||
15 | |||
16 | #define DRIVER_VERSION "1.0.0" | ||
17 | |||
18 | +#define BQ27x00_REG_MODE 0x00 | ||
19 | #define BQ27x00_REG_TEMP 0x06 | ||
20 | #define BQ27x00_REG_VOLT 0x08 | ||
21 | #define BQ27x00_REG_RSOC 0x0B /* Relative State-of-Charge */ | ||
22 | @@ -65,6 +66,7 @@ static enum power_supply_property bq27x00_battery_props[] = { | ||
23 | POWER_SUPPLY_PROP_CURRENT_NOW, | ||
24 | POWER_SUPPLY_PROP_CAPACITY, | ||
25 | POWER_SUPPLY_PROP_TEMP, | ||
26 | + POWER_SUPPLY_PROP_ONLINE, | ||
27 | }; | ||
28 | |||
29 | /* | ||
30 | @@ -83,6 +85,22 @@ static int bq27x00_read(u8 reg, int *rt_value, int b_single, | ||
31 | } | ||
32 | |||
33 | /* | ||
34 | + * Return the GPIO status (0 or 1) | ||
35 | + * Or < 0 if something fails. | ||
36 | + */ | ||
37 | +static int bq27x00_gpio(struct bq27x00_device_info *di) | ||
38 | +{ | ||
39 | + int ret; | ||
40 | + int gpio = 0; | ||
41 | + | ||
42 | + ret = bq27x00_read(BQ27x00_REG_MODE, &gpio, 0, di); | ||
43 | + if (ret) | ||
44 | + return ret; | ||
45 | + | ||
46 | + return (gpio & 0x40) >> 6; | ||
47 | +} | ||
48 | + | ||
49 | +/* | ||
50 | * Return the battery temperature in Celsius degrees | ||
51 | * Or < 0 if something fails. | ||
52 | */ | ||
53 | @@ -184,6 +202,9 @@ static int bq27x00_battery_get_property(struct power_supply *psy, | ||
54 | case POWER_SUPPLY_PROP_TEMP: | ||
55 | val->intval = bq27x00_battery_temperature(di); | ||
56 | break; | ||
57 | + case POWER_SUPPLY_PROP_ONLINE: | ||
58 | + val->intval = bq27x00_gpio(di); | ||
59 | + break; | ||
60 | default: | ||
61 | return -EINVAL; | ||
62 | } | ||
63 | -- | ||
64 | 1.6.6.1 | ||
65 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch new file mode 100644 index 00000000..f15e0a2e --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0005-adf7846-add-more-debugging.patch | |||
@@ -0,0 +1,99 @@ | |||
1 | From e00ae0c0fa35b4b67bbc905581c2c7bde0e29901 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 13:50:38 +0100 | ||
4 | Subject: [PATCH 05/17] adf7846: add more debugging | ||
5 | |||
6 | --- | ||
7 | drivers/input/touchscreen/ads7846.c | 73 +++++++++++++++++++++++++++++++++++ | ||
8 | 1 files changed, 73 insertions(+), 0 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c | ||
11 | index 45287ab..ebdeeeb 100644 | ||
12 | --- a/drivers/input/touchscreen/ads7846.c | ||
13 | +++ b/drivers/input/touchscreen/ads7846.c | ||
14 | @@ -495,9 +495,82 @@ static ssize_t ads7846_disable_store(struct device *dev, | ||
15 | |||
16 | static DEVICE_ATTR(disable, 0664, ads7846_disable_show, ads7846_disable_store); | ||
17 | |||
18 | +static ssize_t show_debounce_max(struct device *dev, struct device_attribute *attr, char *buf) { | ||
19 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
20 | + return sprintf(buf, "%u\n", ts->debounce_max); | ||
21 | +} | ||
22 | + | ||
23 | +static ssize_t show_debounce_tol(struct device *dev, struct device_attribute *attr, char *buf) { | ||
24 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
25 | + return sprintf(buf, "%u\n", ts->debounce_tol); | ||
26 | +} | ||
27 | + | ||
28 | +static ssize_t show_debounce_rep(struct device *dev, struct device_attribute *attr, char *buf) { | ||
29 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
30 | + return sprintf(buf, "%u\n", ts->debounce_rep); | ||
31 | +} | ||
32 | + | ||
33 | +static ssize_t show_x_plate_ohms(struct device *dev, struct device_attribute *attr, char *buf) { | ||
34 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
35 | + return sprintf(buf, "%u\n", ts->x_plate_ohms); | ||
36 | +} | ||
37 | + | ||
38 | +static ssize_t write_debounce_max(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { | ||
39 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
40 | + unsigned long i; | ||
41 | + | ||
42 | + if (strict_strtoul(buf, 10, &i)) | ||
43 | + return -EINVAL; | ||
44 | + | ||
45 | + ts->debounce_max = i; | ||
46 | + return count; | ||
47 | +} | ||
48 | + | ||
49 | +static ssize_t write_debounce_tol(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { | ||
50 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
51 | + unsigned long i; | ||
52 | + | ||
53 | + if (strict_strtoul(buf, 10, &i)) | ||
54 | + return -EINVAL; | ||
55 | + | ||
56 | + ts->debounce_tol = i; | ||
57 | + return count; | ||
58 | +} | ||
59 | + | ||
60 | +static ssize_t write_debounce_rep(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { | ||
61 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
62 | + unsigned long i; | ||
63 | + | ||
64 | + if (strict_strtoul(buf, 10, &i)) | ||
65 | + return -EINVAL; | ||
66 | + | ||
67 | + ts->debounce_rep = i; | ||
68 | + return count; | ||
69 | +} | ||
70 | + | ||
71 | +static ssize_t write_x_plate_ohms(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { | ||
72 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
73 | + unsigned long i; | ||
74 | + | ||
75 | + if (strict_strtoul(buf, 10, &i)) | ||
76 | + return -EINVAL; | ||
77 | + | ||
78 | + ts->x_plate_ohms = i; | ||
79 | + return count; | ||
80 | +} | ||
81 | + | ||
82 | +static DEVICE_ATTR(debounce_max, S_IRUGO | S_IWUGO, show_debounce_max, write_debounce_max); | ||
83 | +static DEVICE_ATTR(debounce_tol, S_IRUGO | S_IWUGO, show_debounce_tol, write_debounce_tol); | ||
84 | +static DEVICE_ATTR(debounce_rep, S_IRUGO | S_IWUGO, show_debounce_rep, write_debounce_rep); | ||
85 | +static DEVICE_ATTR(x_plate_ohms, S_IRUGO | S_IWUGO, show_x_plate_ohms, write_x_plate_ohms); | ||
86 | + | ||
87 | static struct attribute *ads784x_attributes[] = { | ||
88 | &dev_attr_pen_down.attr, | ||
89 | &dev_attr_disable.attr, | ||
90 | + &dev_attr_debounce_max.attr, | ||
91 | + &dev_attr_debounce_tol.attr, | ||
92 | + &dev_attr_debounce_rep.attr, | ||
93 | + &dev_attr_x_plate_ohms.attr, | ||
94 | NULL, | ||
95 | }; | ||
96 | |||
97 | -- | ||
98 | 1.6.6.1 | ||
99 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch new file mode 100644 index 00000000..63a4ebbf --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0006-ads7846-read-max-mix-x-y-from-pdata.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 5f227b8aa6083437e2907ca621159228a4a24d9a Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 13:50:45 +0100 | ||
4 | Subject: [PATCH 06/17] ads7846: read max/mix x/y from pdata | ||
5 | |||
6 | --- | ||
7 | drivers/input/touchscreen/ads7846.c | 5 +++-- | ||
8 | 1 files changed, 3 insertions(+), 2 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c | ||
11 | index ebdeeeb..56b0ffd 100644 | ||
12 | --- a/drivers/input/touchscreen/ads7846.c | ||
13 | +++ b/drivers/input/touchscreen/ads7846.c | ||
14 | @@ -604,6 +604,7 @@ static void ads7846_rx(void *ads) | ||
15 | { | ||
16 | struct ads7846 *ts = ads; | ||
17 | struct ads7846_packet *packet = ts->packet; | ||
18 | + struct ads7846_platform_data *pdata = ts->spi->dev.platform_data; | ||
19 | unsigned Rt; | ||
20 | u16 x, y, z1, z2; | ||
21 | |||
22 | @@ -674,8 +675,8 @@ static void ads7846_rx(void *ads) | ||
23 | if (ts->swap_xy) | ||
24 | swap(x, y); | ||
25 | |||
26 | - input_report_abs(input, ABS_X, x); | ||
27 | - input_report_abs(input, ABS_Y, y); | ||
28 | + input_report_abs(input, ABS_X, pdata->x_max - x + pdata->x_min); | ||
29 | + input_report_abs(input, ABS_Y, pdata->y_max - y + pdata->y_min); | ||
30 | input_report_abs(input, ABS_PRESSURE, ts->pressure_max - Rt); | ||
31 | |||
32 | input_sync(input); | ||
33 | -- | ||
34 | 1.6.6.1 | ||
35 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch new file mode 100644 index 00000000..a69c7836 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0007-ads7846-add-settling-delay-to-pdata.patch | |||
@@ -0,0 +1,59 @@ | |||
1 | From 7330c695afad64eef62c525cb8e54913265a3b39 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 13:50:52 +0100 | ||
4 | Subject: [PATCH 07/17] ads7846: add settling delay to pdata | ||
5 | |||
6 | --- | ||
7 | drivers/input/touchscreen/ads7846.c | 22 ++++++++++++++++++++++ | ||
8 | 1 files changed, 22 insertions(+), 0 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c | ||
11 | index 56b0ffd..1d9f97c 100644 | ||
12 | --- a/drivers/input/touchscreen/ads7846.c | ||
13 | +++ b/drivers/input/touchscreen/ads7846.c | ||
14 | @@ -515,6 +515,26 @@ static ssize_t show_x_plate_ohms(struct device *dev, struct device_attribute *at | ||
15 | return sprintf(buf, "%u\n", ts->x_plate_ohms); | ||
16 | } | ||
17 | |||
18 | +static ssize_t show_settle_delay_usecs(struct device *dev, struct device_attribute *attr, char *buf) { | ||
19 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
20 | + struct ads7846_platform_data *pdata = ts->spi->dev.platform_data; | ||
21 | + | ||
22 | + return sprintf(buf, "%u\n", pdata->settle_delay_usecs); | ||
23 | +} | ||
24 | + | ||
25 | +static ssize_t write_settle_delay_usecs(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { | ||
26 | + struct ads7846 *ts = dev_get_drvdata(dev); | ||
27 | + struct ads7846_platform_data *pdata = ts->spi->dev.platform_data; | ||
28 | + | ||
29 | + unsigned long i; | ||
30 | + | ||
31 | + if (strict_strtoul(buf, 10, &i)) | ||
32 | + return -EINVAL; | ||
33 | + | ||
34 | + pdata->settle_delay_usecs = i; | ||
35 | + return count; | ||
36 | +} | ||
37 | + | ||
38 | static ssize_t write_debounce_max(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { | ||
39 | struct ads7846 *ts = dev_get_drvdata(dev); | ||
40 | unsigned long i; | ||
41 | @@ -563,6 +583,7 @@ static DEVICE_ATTR(debounce_max, S_IRUGO | S_IWUGO, show_debounce_max, write_deb | ||
42 | static DEVICE_ATTR(debounce_tol, S_IRUGO | S_IWUGO, show_debounce_tol, write_debounce_tol); | ||
43 | static DEVICE_ATTR(debounce_rep, S_IRUGO | S_IWUGO, show_debounce_rep, write_debounce_rep); | ||
44 | static DEVICE_ATTR(x_plate_ohms, S_IRUGO | S_IWUGO, show_x_plate_ohms, write_x_plate_ohms); | ||
45 | +static DEVICE_ATTR(settle_delay_usecs, S_IRUGO | S_IWUGO, show_settle_delay_usecs, write_settle_delay_usecs); | ||
46 | |||
47 | static struct attribute *ads784x_attributes[] = { | ||
48 | &dev_attr_pen_down.attr, | ||
49 | @@ -571,6 +592,7 @@ static struct attribute *ads784x_attributes[] = { | ||
50 | &dev_attr_debounce_tol.attr, | ||
51 | &dev_attr_debounce_rep.attr, | ||
52 | &dev_attr_x_plate_ohms.attr, | ||
53 | + &dev_attr_settle_delay_usecs.attr, | ||
54 | NULL, | ||
55 | }; | ||
56 | |||
57 | -- | ||
58 | 1.6.6.1 | ||
59 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch new file mode 100644 index 00000000..5d6ff3fb --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0008-DSS2-OMAPFB-Translate-X-Y-coordinates-for-the-video-.patch | |||
@@ -0,0 +1,99 @@ | |||
1 | From 07396a332c4f3d6ed4ff498cb08d0338c98dc612 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tim Yamin <plasm@roo.me.uk> | ||
3 | Date: Mon, 20 Apr 2009 20:29:11 -0700 | ||
4 | Subject: [PATCH 08/17] DSS2: OMAPFB: Translate X/Y coordinates for the video planes when rotating. | ||
5 | |||
6 | When rotating the video planes, translate the X/Y coordinates such that | ||
7 | a [0,0] from userspace always maps to the correct upper left corner of | ||
8 | the display. This patch assumes that you rotate plane 0 before rotating | ||
9 | plane 1. Patch also corrects the scaling parameters so that the video is | ||
10 | displayed in the correct orientation (vertically, instead of horizontally) | ||
11 | when rotating by 90 / 270 degrees. | ||
12 | |||
13 | Signed-off-by: Tim Yamin <plasm@roo.me.uk> | ||
14 | --- | ||
15 | drivers/video/omap2/dss/dispc.c | 16 ++++++++++++---- | ||
16 | drivers/video/omap2/dss/manager.c | 2 +- | ||
17 | drivers/video/omap2/dss/overlay.c | 19 ++++++++++++++----- | ||
18 | 3 files changed, 27 insertions(+), 10 deletions(-) | ||
19 | |||
20 | diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c | ||
21 | index c6d5fc5..1b38c49 100644 | ||
22 | --- a/drivers/video/omap2/dss/dispc.c | ||
23 | +++ b/drivers/video/omap2/dss/dispc.c | ||
24 | @@ -1685,10 +1685,18 @@ static int _dispc_setup_plane(enum omap_plane plane, | ||
25 | _dispc_set_pic_size(plane, width, height); | ||
26 | |||
27 | if (plane != OMAP_DSS_GFX) { | ||
28 | - _dispc_set_scaling(plane, width, height, | ||
29 | - out_width, out_height, | ||
30 | - ilace, five_taps, fieldmode); | ||
31 | - _dispc_set_vid_size(plane, out_width, out_height); | ||
32 | + if (rotation == 1 || rotation == 3) { | ||
33 | + _dispc_set_scaling(plane, width, height, | ||
34 | + out_height, out_width, | ||
35 | + ilace, five_taps, fieldmode); | ||
36 | + _dispc_set_vid_size(plane, out_height, out_width); | ||
37 | + } else { | ||
38 | + _dispc_set_scaling(plane, width, height, | ||
39 | + out_width, out_height, | ||
40 | + ilace, five_taps, fieldmode); | ||
41 | + _dispc_set_vid_size(plane, out_width, out_height); | ||
42 | + } | ||
43 | + | ||
44 | _dispc_set_vid_color_conv(plane, cconv); | ||
45 | } | ||
46 | |||
47 | diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c | ||
48 | index 27d9c46..7c62dea 100644 | ||
49 | --- a/drivers/video/omap2/dss/manager.c | ||
50 | +++ b/drivers/video/omap2/dss/manager.c | ||
51 | @@ -702,7 +702,7 @@ static int configure_overlay(enum omap_plane plane) | ||
52 | u16 outw, outh; | ||
53 | u16 x, y, w, h; | ||
54 | u32 paddr; | ||
55 | - int r; | ||
56 | + int r, pos_x = 0, pos_y = 0; | ||
57 | |||
58 | DSSDBGF("%d", plane); | ||
59 | |||
60 | diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c | ||
61 | index b7f9a73..0bc0592 100644 | ||
62 | --- a/drivers/video/omap2/dss/overlay.c | ||
63 | +++ b/drivers/video/omap2/dss/overlay.c | ||
64 | @@ -374,6 +374,20 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev) | ||
65 | outh = info->out_height; | ||
66 | } | ||
67 | |||
68 | + if ((ovl->supported_modes & info->color_mode) == 0) { | ||
69 | + DSSERR("overlay doesn't support mode %d\n", info->color_mode); | ||
70 | + return -EINVAL; | ||
71 | + } | ||
72 | + | ||
73 | + if (ovl->id != OMAP_DSS_GFX && (info->rotation == 1 || | ||
74 | + info->rotation == 3)) { | ||
75 | + if(outw > dh || outh > dw) | ||
76 | + return -EINVAL; | ||
77 | + | ||
78 | + /* If coordinates are invalid, they will be clipped later... */ | ||
79 | + return 0; | ||
80 | + } | ||
81 | + | ||
82 | if (dw < info->pos_x + outw) { | ||
83 | DSSDBG("check_overlay failed 1: %d < %d + %d\n", | ||
84 | dw, info->pos_x, outw); | ||
85 | @@ -386,11 +400,6 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev) | ||
86 | return -EINVAL; | ||
87 | } | ||
88 | |||
89 | - if ((ovl->supported_modes & info->color_mode) == 0) { | ||
90 | - DSSERR("overlay doesn't support mode %d\n", info->color_mode); | ||
91 | - return -EINVAL; | ||
92 | - } | ||
93 | - | ||
94 | return 0; | ||
95 | } | ||
96 | |||
97 | -- | ||
98 | 1.6.6.1 | ||
99 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch new file mode 100644 index 00000000..51305984 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0009-DSS2-Fix-scaling-checks-when-rotation-is-90-or-270-d.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From fc2e9ddb93cb026ed10900d794dd1db11191dc24 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tim Yamin <plasm@roo.me.uk> | ||
3 | Date: Fri, 12 Mar 2010 13:57:38 +0100 | ||
4 | Subject: [PATCH 09/17] DSS2: Fix scaling checks when rotation is 90 or 270 degrees. | ||
5 | |||
6 | --- | ||
7 | drivers/video/omap2/dss/dispc.c | 25 +++++++++++++++++++------ | ||
8 | 1 files changed, 19 insertions(+), 6 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c | ||
11 | index 1b38c49..d648c08 100644 | ||
12 | --- a/drivers/video/omap2/dss/dispc.c | ||
13 | +++ b/drivers/video/omap2/dss/dispc.c | ||
14 | @@ -1563,16 +1563,29 @@ static int _dispc_setup_plane(enum omap_plane plane, | ||
15 | } | ||
16 | } else { | ||
17 | /* video plane */ | ||
18 | - | ||
19 | + u8 error = 0; | ||
20 | unsigned long fclk = 0; | ||
21 | |||
22 | - if (out_width < width / maxdownscale || | ||
23 | - out_width > width * 8) | ||
24 | - return -EINVAL; | ||
25 | + if(rotation == 1 || rotation == 3) | ||
26 | + { | ||
27 | + if (out_width < height / maxdownscale || out_width > height * 8) | ||
28 | + error = 1; | ||
29 | + | ||
30 | + if (out_height < width / maxdownscale || out_height > width * 8) | ||
31 | + error = 1; | ||
32 | + } else { | ||
33 | + if (out_width < width / maxdownscale || out_width > width * 8) | ||
34 | + error = 1; | ||
35 | |||
36 | - if (out_height < height / maxdownscale || | ||
37 | - out_height > height * 8) | ||
38 | + if (out_height < height / maxdownscale || out_height > height * 8) | ||
39 | + error = 1; | ||
40 | + } | ||
41 | + | ||
42 | + if(error != 0) | ||
43 | + { | ||
44 | + printk("DSS: Unable to down/up scale video plane\n"); | ||
45 | return -EINVAL; | ||
46 | + } | ||
47 | |||
48 | switch (color_mode) { | ||
49 | case OMAP_DSS_COLOR_RGBX32: | ||
50 | -- | ||
51 | 1.6.6.1 | ||
52 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch new file mode 100644 index 00000000..aa3b359c --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0010-add-touchbook-hid-driver.patch | |||
@@ -0,0 +1,339 @@ | |||
1 | From 0f651f19bf9cfecbb76d6f0b251e3d8395f306b8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 14:39:07 +0100 | ||
4 | Subject: [PATCH 10/17] add touchbook hid driver | ||
5 | |||
6 | --- | ||
7 | drivers/hid/Kconfig | 7 ++ | ||
8 | drivers/hid/Makefile | 1 + | ||
9 | drivers/hid/hid-ai.c | 260 ++++++++++++++++++++++++++++++++++++++++++++++++ | ||
10 | drivers/hid/hid-core.c | 1 + | ||
11 | drivers/hid/hid-ids.h | 3 + | ||
12 | 5 files changed, 272 insertions(+), 0 deletions(-) | ||
13 | create mode 100644 drivers/hid/hid-ai.c | ||
14 | |||
15 | diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig | ||
16 | index 24d90ea..3760565 100644 | ||
17 | --- a/drivers/hid/Kconfig | ||
18 | +++ b/drivers/hid/Kconfig | ||
19 | @@ -62,6 +62,13 @@ config HID_A4TECH | ||
20 | ---help--- | ||
21 | Support for A4 tech X5 and WOP-35 / Trust 450L mice. | ||
22 | |||
23 | +config HID_AI | ||
24 | + tristate "Always Innovating" if EMBEDDED | ||
25 | + depends on USB_HID | ||
26 | + default !EMBEDDED | ||
27 | + ---help--- | ||
28 | + Support for Always Innovating Touch Book. | ||
29 | + | ||
30 | config HID_APPLE | ||
31 | tristate "Apple" if EMBEDDED | ||
32 | depends on (USB_HID || BT_HIDP) | ||
33 | diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile | ||
34 | index 0de2dff..1787952 100644 | ||
35 | --- a/drivers/hid/Makefile | ||
36 | +++ b/drivers/hid/Makefile | ||
37 | @@ -20,6 +20,7 @@ ifdef CONFIG_LOGIRUMBLEPAD2_FF | ||
38 | endif | ||
39 | |||
40 | obj-$(CONFIG_HID_A4TECH) += hid-a4tech.o | ||
41 | +obj-$(CONFIG_HID_AI) += hid-ai.o | ||
42 | obj-$(CONFIG_HID_APPLE) += hid-apple.o | ||
43 | obj-$(CONFIG_HID_BELKIN) += hid-belkin.o | ||
44 | obj-$(CONFIG_HID_CHERRY) += hid-cherry.o | ||
45 | diff --git a/drivers/hid/hid-ai.c b/drivers/hid/hid-ai.c | ||
46 | new file mode 100644 | ||
47 | index 0000000..83aecaf | ||
48 | --- /dev/null | ||
49 | +++ b/drivers/hid/hid-ai.c | ||
50 | @@ -0,0 +1,260 @@ | ||
51 | +/* | ||
52 | + * USB HID quirks support for the Always Innovating Touch Book | ||
53 | + * Code borrowed from hid-apple.c | ||
54 | + * | ||
55 | + * Copyright (c) 2009 Tim Yamin <plasm@roo.me.uk> | ||
56 | + */ | ||
57 | + | ||
58 | +/* | ||
59 | + * This program is free software; you can redistribute it and/or modify it | ||
60 | + * under the terms of the GNU General Public License as published by the Free | ||
61 | + * Software Foundation; either version 2 of the License, or (at your option) | ||
62 | + * any later version. | ||
63 | + */ | ||
64 | + | ||
65 | +#include <linux/device.h> | ||
66 | +#include <linux/hid.h> | ||
67 | +#include <linux/module.h> | ||
68 | +#include <linux/usb.h> | ||
69 | + | ||
70 | +#include "hid-ids.h" | ||
71 | + | ||
72 | +struct ai_sc { | ||
73 | + unsigned long quirks; | ||
74 | + unsigned int fn_on; | ||
75 | + DECLARE_BITMAP(pressed_fn, KEY_CNT); | ||
76 | +}; | ||
77 | + | ||
78 | +struct ai_key_translation { | ||
79 | + u16 from; | ||
80 | + u16 to; | ||
81 | + u8 flags; | ||
82 | +}; | ||
83 | + | ||
84 | +static struct ai_key_translation ai_fn_keys[] = { | ||
85 | + { KEY_F6, KEY_BRIGHTNESSDOWN }, | ||
86 | + { KEY_F7, KEY_BRIGHTNESSUP }, | ||
87 | + | ||
88 | + { KEY_F8, KEY_MUTE }, | ||
89 | + { KEY_F9, KEY_VOLUMEDOWN }, | ||
90 | + { KEY_F10, KEY_VOLUMEUP }, | ||
91 | + | ||
92 | + { KEY_UP, KEY_PAGEUP }, | ||
93 | + { KEY_DOWN, KEY_PAGEDOWN }, | ||
94 | + { } | ||
95 | +}; | ||
96 | + | ||
97 | +extern unsigned int ai_revision; | ||
98 | +int swap_key = 0; | ||
99 | + | ||
100 | +static struct ai_key_translation *ai_find_translation( | ||
101 | + struct ai_key_translation *table, u16 from) | ||
102 | +{ | ||
103 | + struct ai_key_translation *trans; | ||
104 | + | ||
105 | + /* Look for the translation */ | ||
106 | + for (trans = table; trans->from; trans++) | ||
107 | + if (trans->from == from) | ||
108 | + return trans; | ||
109 | + | ||
110 | + return NULL; | ||
111 | +} | ||
112 | + | ||
113 | +static int ai_event(struct hid_device *hid, struct hid_field *field, | ||
114 | + struct hid_usage *usage, __s32 value) | ||
115 | +{ | ||
116 | + int do_translate; | ||
117 | + | ||
118 | + struct input_dev *input = field->hidinput->input; | ||
119 | + struct ai_sc *asc = hid_get_drvdata(hid); | ||
120 | + struct ai_key_translation *trans; | ||
121 | + | ||
122 | + if (swap_key && usage->code == KEY_RIGHTSHIFT) { | ||
123 | + input_event(input, usage->type, KEY_END, value); | ||
124 | + return 1; | ||
125 | + } | ||
126 | + | ||
127 | + if (swap_key && usage->code == KEY_END) { | ||
128 | + input_event(input, usage->type, KEY_RIGHTSHIFT, value); | ||
129 | + return 1; | ||
130 | + } | ||
131 | + | ||
132 | + if (usage->code == KEY_POWER) { | ||
133 | + asc->fn_on = !!value; | ||
134 | + input_event(input, usage->type, usage->code, value); | ||
135 | + return 1; | ||
136 | + } | ||
137 | + | ||
138 | + trans = ai_find_translation(ai_fn_keys, usage->code); | ||
139 | + if (trans) { | ||
140 | + if (test_bit(usage->code, asc->pressed_fn)) | ||
141 | + do_translate = 1; | ||
142 | + else | ||
143 | + do_translate = asc->fn_on; | ||
144 | + | ||
145 | + if (do_translate) { | ||
146 | + if (value) | ||
147 | + set_bit(usage->code, asc->pressed_fn); | ||
148 | + else | ||
149 | + clear_bit(usage->code, asc->pressed_fn); | ||
150 | + | ||
151 | + input_event(input, usage->type, trans->to, | ||
152 | + value); | ||
153 | + | ||
154 | + return 1; | ||
155 | + } | ||
156 | + } | ||
157 | + | ||
158 | + return 0; | ||
159 | +} | ||
160 | + | ||
161 | +static int ai_input_mapping(struct hid_device *hdev, struct hid_input *hi, | ||
162 | + struct hid_field *field, struct hid_usage *usage, | ||
163 | + unsigned long **bit, int *max) | ||
164 | +{ | ||
165 | + struct ai_key_translation *trans; | ||
166 | + | ||
167 | + /* Enable all other keys */ | ||
168 | + for (trans = ai_fn_keys; trans->from; trans++) | ||
169 | + set_bit(trans->to, hi->input->keybit); | ||
170 | + | ||
171 | + return 0; | ||
172 | +} | ||
173 | + | ||
174 | +static ssize_t show_swap_key(struct device *dev, | ||
175 | + struct device_attribute *attr, char *buf) | ||
176 | +{ | ||
177 | + return snprintf(buf, PAGE_SIZE, "%d\n", swap_key); | ||
178 | +} | ||
179 | + | ||
180 | +static ssize_t store_swap_key(struct device *dev, | ||
181 | + struct device_attribute *attr, | ||
182 | + const char *buf, size_t count) | ||
183 | +{ | ||
184 | + swap_key = simple_strtoul(buf, NULL, 0); | ||
185 | + | ||
186 | + if (swap_key != 0 && swap_key != 1) { | ||
187 | + swap_key = 0; | ||
188 | + return -EINVAL; | ||
189 | + } | ||
190 | + | ||
191 | + return count; | ||
192 | +} | ||
193 | + | ||
194 | +static struct device_attribute ai_hid_attrs[] = { | ||
195 | + __ATTR(swap_key, S_IRUGO | S_IWUGO, show_swap_key, store_swap_key), | ||
196 | +}; | ||
197 | + | ||
198 | +int ai_create_sysfs(struct hid_device *hdev) | ||
199 | +{ | ||
200 | + int i; | ||
201 | + int r; | ||
202 | + | ||
203 | + for (i = 0; i < ARRAY_SIZE(ai_hid_attrs); i++) { | ||
204 | + r = device_create_file(&hdev->dev, | ||
205 | + &ai_hid_attrs[i]); | ||
206 | + | ||
207 | + if (r) { | ||
208 | + dev_err(&hdev->dev, "failed to create sysfs file\n"); | ||
209 | + return r; | ||
210 | + } | ||
211 | + } | ||
212 | + | ||
213 | + return 0; | ||
214 | +} | ||
215 | + | ||
216 | +void ai_remove_sysfs(struct hid_device *hdev) | ||
217 | +{ | ||
218 | + int i; | ||
219 | + | ||
220 | + for (i = 0; i < ARRAY_SIZE(ai_hid_attrs); i++) | ||
221 | + device_remove_file(&hdev->dev, | ||
222 | + &ai_hid_attrs[i]); | ||
223 | +} | ||
224 | + | ||
225 | +static int ai_probe(struct hid_device *hdev, | ||
226 | + const struct hid_device_id *id) | ||
227 | +{ | ||
228 | + unsigned long quirks = id->driver_data; | ||
229 | + struct ai_sc *asc; | ||
230 | + unsigned int connect_mask = HID_CONNECT_DEFAULT; | ||
231 | + int ret; | ||
232 | + | ||
233 | + asc = kzalloc(sizeof(*asc), GFP_KERNEL); | ||
234 | + if (asc == NULL) { | ||
235 | + dev_err(&hdev->dev, "can't alloc ai descriptor\n"); | ||
236 | + return -ENOMEM; | ||
237 | + } | ||
238 | + | ||
239 | + asc->quirks = quirks; | ||
240 | + hid_set_drvdata(hdev, asc); | ||
241 | + | ||
242 | + ret = hid_parse(hdev); | ||
243 | + if (ret) { | ||
244 | + dev_err(&hdev->dev, "parse failed\n"); | ||
245 | + goto err_free; | ||
246 | + } | ||
247 | + | ||
248 | + ret = ai_create_sysfs(hdev); | ||
249 | + if (ret) { | ||
250 | + dev_err(&hdev->dev, "failed to create sysfs entries\n"); | ||
251 | + goto err_free; | ||
252 | + } | ||
253 | + | ||
254 | + swap_key = (ai_revision >= 4) ? 1 : 0; | ||
255 | + | ||
256 | + ret = hid_hw_start(hdev, connect_mask); | ||
257 | + if (ret) { | ||
258 | + dev_err(&hdev->dev, "hw start failed\n"); | ||
259 | + goto err_free; | ||
260 | + } | ||
261 | + | ||
262 | + return 0; | ||
263 | +err_free: | ||
264 | + kfree(asc); | ||
265 | + return ret; | ||
266 | +} | ||
267 | + | ||
268 | +static void ai_remove(struct hid_device *hdev) | ||
269 | +{ | ||
270 | + hid_hw_stop(hdev); | ||
271 | + kfree(hid_get_drvdata(hdev)); | ||
272 | + ai_remove_sysfs(hdev); | ||
273 | +} | ||
274 | + | ||
275 | +static const struct hid_device_id ai_devices[] = { | ||
276 | + { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, | ||
277 | + { } | ||
278 | +}; | ||
279 | + | ||
280 | +MODULE_DEVICE_TABLE(hid, ai_devices); | ||
281 | + | ||
282 | +static struct hid_driver ai_driver = { | ||
283 | + .name = "ai", | ||
284 | + .id_table = ai_devices, | ||
285 | + .probe = ai_probe, | ||
286 | + .remove = ai_remove, | ||
287 | + .event = ai_event, | ||
288 | + .input_mapping = ai_input_mapping, | ||
289 | +}; | ||
290 | + | ||
291 | +static int ai_init(void) | ||
292 | +{ | ||
293 | + int ret; | ||
294 | + | ||
295 | + ret = hid_register_driver(&ai_driver); | ||
296 | + if (ret) | ||
297 | + printk(KERN_ERR "can't register ai driver\n"); | ||
298 | + | ||
299 | + return ret; | ||
300 | +} | ||
301 | + | ||
302 | +static void ai_exit(void) | ||
303 | +{ | ||
304 | + hid_unregister_driver(&ai_driver); | ||
305 | +} | ||
306 | + | ||
307 | +module_init(ai_init); | ||
308 | +module_exit(ai_exit); | ||
309 | +MODULE_LICENSE("GPL"); | ||
310 | +HID_COMPAT_LOAD_DRIVER(ai); | ||
311 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | ||
312 | index 80792d3..f6b5960 100644 | ||
313 | --- a/drivers/hid/hid-core.c | ||
314 | +++ b/drivers/hid/hid-core.c | ||
315 | @@ -1250,6 +1250,7 @@ EXPORT_SYMBOL_GPL(hid_disconnect); | ||
316 | static const struct hid_device_id hid_blacklist[] = { | ||
317 | { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, | ||
318 | { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, | ||
319 | + { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, | ||
320 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) }, | ||
321 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) }, | ||
322 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) }, | ||
323 | diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h | ||
324 | index 3839340..5a0127d 100644 | ||
325 | --- a/drivers/hid/hid-ids.h | ||
326 | +++ b/drivers/hid/hid-ids.h | ||
327 | @@ -54,6 +54,9 @@ | ||
328 | #define USB_VENDOR_ID_ALPS 0x0433 | ||
329 | #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 | ||
330 | |||
331 | +#define USB_VENDOR_ID_AI 0xa110 | ||
332 | +#define USB_DEVICE_ID_AI_TOUCH_BOOK 0x0002 | ||
333 | + | ||
334 | #define USB_VENDOR_ID_APPLE 0x05ac | ||
335 | #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 | ||
336 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e | ||
337 | -- | ||
338 | 1.6.6.1 | ||
339 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch new file mode 100644 index 00000000..c6d36787 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0011-Make-backlight-controls-accessible-to-users.patch | |||
@@ -0,0 +1,25 @@ | |||
1 | From b46a494e0c02450e412db221d75446671b6ef511 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregroire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 14:41:05 +0100 | ||
4 | Subject: [PATCH 11/17] Make backlight controls accessible to users | ||
5 | |||
6 | --- | ||
7 | drivers/video/backlight/backlight.c | 2 +- | ||
8 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c | ||
11 | index 6615ac7..7898707 100644 | ||
12 | --- a/drivers/video/backlight/backlight.c | ||
13 | +++ b/drivers/video/backlight/backlight.c | ||
14 | @@ -228,7 +228,7 @@ static void bl_device_release(struct device *dev) | ||
15 | |||
16 | static struct device_attribute bl_device_attributes[] = { | ||
17 | __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), | ||
18 | - __ATTR(brightness, 0644, backlight_show_brightness, | ||
19 | + __ATTR(brightness, 0666, backlight_show_brightness, | ||
20 | backlight_store_brightness), | ||
21 | __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, | ||
22 | NULL), | ||
23 | -- | ||
24 | 1.6.6.1 | ||
25 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch new file mode 100644 index 00000000..24fb9132 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0012-ads7846-don-t-error-out-when-there-s-no-pendown-gpio.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From 4c3ef06a333cf1f873a9a8de05af90959a5d1e68 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 15:04:58 +0100 | ||
4 | Subject: [PATCH 12/17] ads7846: don't error out when there's no pendown gpio | ||
5 | |||
6 | --- | ||
7 | drivers/input/touchscreen/ads7846.c | 7 ------- | ||
8 | 1 files changed, 0 insertions(+), 7 deletions(-) | ||
9 | |||
10 | diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c | ||
11 | index 1d9f97c..c72c3ae 100644 | ||
12 | --- a/drivers/input/touchscreen/ads7846.c | ||
13 | +++ b/drivers/input/touchscreen/ads7846.c | ||
14 | @@ -952,13 +952,6 @@ static int __devinit setup_pendown(struct spi_device *spi, struct ads7846 *ts) | ||
15 | return 0; | ||
16 | } | ||
17 | |||
18 | - err = gpio_request(pdata->gpio_pendown, "ads7846_pendown"); | ||
19 | - if (err) { | ||
20 | - dev_err(&spi->dev, "failed to request pendown GPIO%d\n", | ||
21 | - pdata->gpio_pendown); | ||
22 | - return err; | ||
23 | - } | ||
24 | - | ||
25 | ts->gpio_pendown = pdata->gpio_pendown; | ||
26 | return 0; | ||
27 | } | ||
28 | -- | ||
29 | 1.6.6.1 | ||
30 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch new file mode 100644 index 00000000..2da7354e --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0013-ASoC-add-driver-for-omap3-touchbook.patch | |||
@@ -0,0 +1,350 @@ | |||
1 | From 96ce6261efe4c194d9188e0f352803bcd92f1c59 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Wed, 31 Mar 2010 11:14:04 +0200 | ||
4 | Subject: [PATCH 13/17] ASoC: add driver for omap3-touchbook | ||
5 | |||
6 | --- | ||
7 | sound/soc/omap/Kconfig | 8 + | ||
8 | sound/soc/omap/Makefile | 2 + | ||
9 | sound/soc/omap/omap3touchbook.c | 291 +++++++++++++++++++++++++++++++++++++++ | ||
10 | 3 files changed, 301 insertions(+), 0 deletions(-) | ||
11 | create mode 100644 sound/soc/omap/omap3touchbook.c | ||
12 | |||
13 | diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig | ||
14 | index 61952aa..a7c06ab 100644 | ||
15 | --- a/sound/soc/omap/Kconfig | ||
16 | +++ b/sound/soc/omap/Kconfig | ||
17 | @@ -101,6 +101,14 @@ config SND_OMAP_SOC_OMAP3_BEAGLE | ||
18 | help | ||
19 | Say Y if you want to add support for SoC audio on the Beagleboard. | ||
20 | |||
21 | +config SND_OMAP_SOC_OMAP3_TOUCHBOOK | ||
22 | + tristate "SoC Audio support for OMAP3 Touch Book" | ||
23 | + depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK | ||
24 | + select SND_OMAP_SOC_MCBSP | ||
25 | + select SND_SOC_TWL4030 | ||
26 | + help | ||
27 | + Say Y if you want to add support for SoC audio on the Touch Book. | ||
28 | + | ||
29 | config SND_OMAP_SOC_ZOOM2 | ||
30 | tristate "SoC Audio support for Zoom2" | ||
31 | depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP_ZOOM2 | ||
32 | diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile | ||
33 | index 19283e5..e3f172f 100644 | ||
34 | --- a/sound/soc/omap/Makefile | ||
35 | +++ b/sound/soc/omap/Makefile | ||
36 | @@ -16,6 +16,7 @@ snd-soc-am3517evm-objs := am3517evm.o | ||
37 | snd-soc-sdp3430-objs := sdp3430.o | ||
38 | snd-soc-omap3pandora-objs := omap3pandora.o | ||
39 | snd-soc-omap3beagle-objs := omap3beagle.o | ||
40 | +snd-soc-omap3touchbook-objs := omap3touchbook.o | ||
41 | snd-soc-zoom2-objs := zoom2.o | ||
42 | snd-soc-igep0020-objs := igep0020.o | ||
43 | |||
44 | @@ -29,5 +30,6 @@ obj-$(CONFIG_SND_OMAP_SOC_AM3517EVM) += snd-soc-am3517evm.o | ||
45 | obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o | ||
46 | obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o | ||
47 | obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o | ||
48 | +obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3touchbook.o | ||
49 | obj-$(CONFIG_SND_OMAP_SOC_ZOOM2) += snd-soc-zoom2.o | ||
50 | obj-$(CONFIG_SND_OMAP_SOC_IGEP0020) += snd-soc-igep0020.o | ||
51 | diff --git a/sound/soc/omap/omap3touchbook.c b/sound/soc/omap/omap3touchbook.c | ||
52 | new file mode 100644 | ||
53 | index 0000000..c5e6eaa | ||
54 | --- /dev/null | ||
55 | +++ b/sound/soc/omap/omap3touchbook.c | ||
56 | @@ -0,0 +1,291 @@ | ||
57 | +/* | ||
58 | + * omap3touchbook.c -- SoC audio for Touch Book | ||
59 | + * | ||
60 | + * Copyright (C) 2009-2010 Always Innovating | ||
61 | + * | ||
62 | + * Author: Gregoire Gentil <gregoire@gentil.com> | ||
63 | + * | ||
64 | + * Based on: | ||
65 | + * Author: Steve Sakoman <steve@sakoman.com> | ||
66 | + * Author: Misael Lopez Cruz <x0052729@ti.com> | ||
67 | + * | ||
68 | + * This program is free software; you can redistribute it and/or | ||
69 | + * modify it under the terms of the GNU General Public License | ||
70 | + * version 2 as published by the Free Software Foundation. | ||
71 | + * | ||
72 | + * This program is distributed in the hope that it will be useful, but | ||
73 | + * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
74 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
75 | + * General Public License for more details. | ||
76 | + * | ||
77 | + * You should have received a copy of the GNU General Public License | ||
78 | + * along with this program; if not, write to the Free Software | ||
79 | + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
80 | + * 02110-1301 USA | ||
81 | + * | ||
82 | + */ | ||
83 | + | ||
84 | +#include <linux/clk.h> | ||
85 | +#include <linux/platform_device.h> | ||
86 | +#include <linux/i2c/twl.h> | ||
87 | +#include <sound/core.h> | ||
88 | +#include <sound/pcm.h> | ||
89 | +#include <sound/soc.h> | ||
90 | +#include <sound/soc-dapm.h> | ||
91 | +#include <sound/jack.h> | ||
92 | + | ||
93 | +#include <asm/mach-types.h> | ||
94 | +#include <mach/hardware.h> | ||
95 | +#include <mach/gpio.h> | ||
96 | +#include <plat/mcbsp.h> | ||
97 | + | ||
98 | +#include "omap-mcbsp.h" | ||
99 | +#include "omap-pcm.h" | ||
100 | +#include "../codecs/twl4030.h" | ||
101 | + | ||
102 | +static struct snd_soc_card snd_soc_omap3touchbook; | ||
103 | + | ||
104 | +static int omap3touchbook_hw_params(struct snd_pcm_substream *substream, | ||
105 | + struct snd_pcm_hw_params *params) | ||
106 | +{ | ||
107 | + struct snd_soc_pcm_runtime *rtd = substream->private_data; | ||
108 | + struct snd_soc_dai *codec_dai = rtd->dai->codec_dai; | ||
109 | + struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | ||
110 | + unsigned int fmt; | ||
111 | + int ret; | ||
112 | + | ||
113 | + switch (params_channels(params)) { | ||
114 | + case 2: /* Stereo I2S mode */ | ||
115 | + fmt = SND_SOC_DAIFMT_I2S | | ||
116 | + SND_SOC_DAIFMT_NB_NF | | ||
117 | + SND_SOC_DAIFMT_CBM_CFM; | ||
118 | + break; | ||
119 | + case 4: /* Four channel TDM mode */ | ||
120 | + fmt = SND_SOC_DAIFMT_DSP_A | | ||
121 | + SND_SOC_DAIFMT_IB_NF | | ||
122 | + SND_SOC_DAIFMT_CBM_CFM; | ||
123 | + break; | ||
124 | + default: | ||
125 | + return -EINVAL; | ||
126 | + } | ||
127 | + | ||
128 | + /* Set codec DAI configuration */ | ||
129 | + ret = snd_soc_dai_set_fmt(codec_dai, fmt); | ||
130 | + if (ret < 0) { | ||
131 | + printk(KERN_ERR "can't set codec DAI configuration\n"); | ||
132 | + return ret; | ||
133 | + } | ||
134 | + | ||
135 | + /* Set cpu DAI configuration */ | ||
136 | + ret = snd_soc_dai_set_fmt(cpu_dai, fmt); | ||
137 | + if (ret < 0) { | ||
138 | + printk(KERN_ERR "can't set cpu DAI configuration\n"); | ||
139 | + return ret; | ||
140 | + } | ||
141 | + | ||
142 | + /* Set the codec system clock for DAC and ADC */ | ||
143 | + ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000, | ||
144 | + SND_SOC_CLOCK_IN); | ||
145 | + if (ret < 0) { | ||
146 | + printk(KERN_ERR "can't set codec system clock\n"); | ||
147 | + return ret; | ||
148 | + } | ||
149 | + | ||
150 | + return 0; | ||
151 | +} | ||
152 | + | ||
153 | +static struct snd_soc_ops omap3touchbook_ops = { | ||
154 | + .hw_params = omap3touchbook_hw_params, | ||
155 | +}; | ||
156 | + | ||
157 | +/* Headset jack */ | ||
158 | +static struct snd_soc_jack hs_jack; | ||
159 | + | ||
160 | +/* Headset jack detection DAPM pins */ | ||
161 | +static struct snd_soc_jack_pin hs_jack_pins[] = { | ||
162 | + { | ||
163 | + .pin = "Headset Stereo", | ||
164 | + .mask = SND_JACK_HEADPHONE, | ||
165 | + }, | ||
166 | + { | ||
167 | + .pin = "Headset Mic", | ||
168 | + .mask = SND_JACK_HEADPHONE, | ||
169 | + }, | ||
170 | + { | ||
171 | + .pin = "External Speakers", | ||
172 | + .mask = SND_JACK_HEADPHONE, | ||
173 | + .invert = 1, | ||
174 | + }, | ||
175 | +}; | ||
176 | + | ||
177 | +/* Headset jack detection gpios */ | ||
178 | +static struct snd_soc_jack_gpio hs_jack_gpios[] = { | ||
179 | + { | ||
180 | + .gpio = 56, | ||
181 | + .name = "hsdet-gpio", | ||
182 | + .report = SND_JACK_HEADSET, | ||
183 | + .debounce_time = 200, | ||
184 | + }, | ||
185 | +}; | ||
186 | + | ||
187 | +/* omap3touchbook machine DAPM */ | ||
188 | +static const struct snd_soc_dapm_widget omap3touchbook_twl4030_dapm_widgets[] = { | ||
189 | + SND_SOC_DAPM_SPK("External Speakers", NULL), | ||
190 | + SND_SOC_DAPM_HP("Headset Stereo", NULL), | ||
191 | + SND_SOC_DAPM_MIC("Headset Mic", NULL), | ||
192 | + SND_SOC_DAPM_LINE("Line In", NULL), | ||
193 | +}; | ||
194 | + | ||
195 | +static const struct snd_soc_dapm_route audio_map[] = { | ||
196 | + /* External Speakers: HFL, HFR */ | ||
197 | + {"External Speakers", NULL, "HFL"}, | ||
198 | + {"External Speakers", NULL, "HFR"}, | ||
199 | + | ||
200 | + /* Headset Stereo: HSOL, HSOR */ | ||
201 | + {"Headset Stereo", NULL, "HSOL"}, | ||
202 | + {"Headset Stereo", NULL, "HSOR"}, | ||
203 | + | ||
204 | + /* Micro: HSMIC */ | ||
205 | + {"HSMIC", NULL, "Headset Mic Bias"}, | ||
206 | + {"Headset Mic Bias", NULL, "Headset Mic"}, | ||
207 | + | ||
208 | + /* Line In: AUXL, AUXR */ | ||
209 | + {"AUXL", NULL, "Line In"}, | ||
210 | + {"AUXR", NULL, "Line In"}, | ||
211 | +}; | ||
212 | + | ||
213 | +static int omap3touchbook_twl4030_init(struct snd_soc_codec *codec) | ||
214 | +{ | ||
215 | + int ret; | ||
216 | + | ||
217 | + /* Add omap3touchbook specific widgets */ | ||
218 | + ret = snd_soc_dapm_new_controls(codec, omap3touchbook_twl4030_dapm_widgets, | ||
219 | + ARRAY_SIZE(omap3touchbook_twl4030_dapm_widgets)); | ||
220 | + if (ret) | ||
221 | + return ret; | ||
222 | + | ||
223 | + /* Set up omap3touchbook specific audio path audio_map */ | ||
224 | + snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map)); | ||
225 | + | ||
226 | + /* omap3touchbook connected pins */ | ||
227 | + snd_soc_dapm_enable_pin(codec, "External Speakers"); | ||
228 | + snd_soc_dapm_enable_pin(codec, "Headset Stereo"); | ||
229 | + snd_soc_dapm_enable_pin(codec, "Headset Mic"); | ||
230 | + snd_soc_dapm_enable_pin(codec, "Line In"); | ||
231 | + | ||
232 | + /* omap3touchbook not connected pins */ | ||
233 | + snd_soc_dapm_nc_pin(codec, "CARKITMIC"); | ||
234 | + snd_soc_dapm_nc_pin(codec, "MAINMIC"); | ||
235 | + snd_soc_dapm_nc_pin(codec, "SUBMIC"); | ||
236 | + snd_soc_dapm_nc_pin(codec, "DIGIMIC0"); | ||
237 | + snd_soc_dapm_nc_pin(codec, "DIGIMIC1"); | ||
238 | + snd_soc_dapm_nc_pin(codec, "OUTL"); | ||
239 | + snd_soc_dapm_nc_pin(codec, "OUTR"); | ||
240 | + snd_soc_dapm_nc_pin(codec, "EARPIECE"); | ||
241 | + snd_soc_dapm_nc_pin(codec, "PREDRIVEL"); | ||
242 | + snd_soc_dapm_nc_pin(codec, "PREDRIVER"); | ||
243 | + snd_soc_dapm_nc_pin(codec, "CARKITL"); | ||
244 | + snd_soc_dapm_nc_pin(codec, "CARKITR"); | ||
245 | + snd_soc_dapm_nc_pin(codec, "VIBRA"); | ||
246 | + | ||
247 | + ret = snd_soc_dapm_sync(codec); | ||
248 | + if (ret) | ||
249 | + return ret; | ||
250 | + | ||
251 | + /* Headset jack detection */ | ||
252 | + ret = snd_soc_jack_new(&snd_soc_omap3touchbook, "Headset Jack", | ||
253 | + SND_JACK_HEADSET, &hs_jack); | ||
254 | + if (ret) | ||
255 | + return ret; | ||
256 | + | ||
257 | + ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins), | ||
258 | + hs_jack_pins); | ||
259 | + if (ret) | ||
260 | + return ret; | ||
261 | + | ||
262 | + ret = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), | ||
263 | + hs_jack_gpios); | ||
264 | + | ||
265 | + return ret; | ||
266 | +} | ||
267 | + | ||
268 | +/* Digital audio interface glue - connects codec <--> CPU */ | ||
269 | +static struct snd_soc_dai_link omap3touchbook_dai = { | ||
270 | + .name = "TWL4030 I2S", | ||
271 | + .stream_name = "TWL4030 Audio", | ||
272 | + .cpu_dai = &omap_mcbsp_dai[0], | ||
273 | + .codec_dai = &twl4030_dai[TWL4030_DAI_HIFI], | ||
274 | + .init = omap3touchbook_twl4030_init, | ||
275 | + .ops = &omap3touchbook_ops, | ||
276 | +}; | ||
277 | + | ||
278 | +/* Audio machine driver */ | ||
279 | +static struct snd_soc_card snd_soc_omap3touchbook = { | ||
280 | + .name = "omap3touchbook", | ||
281 | + .platform = &omap_soc_platform, | ||
282 | + .dai_link = &omap3touchbook_dai, | ||
283 | + .num_links = 1, | ||
284 | +}; | ||
285 | + | ||
286 | +/* twl4030 setup */ | ||
287 | +static struct twl4030_setup_data twl4030_setup = { | ||
288 | + .ramp_delay_value = 3, | ||
289 | + .sysclk = 26000, | ||
290 | + .hs_extmute = 1, | ||
291 | +}; | ||
292 | + | ||
293 | +/* Audio subsystem */ | ||
294 | +static struct snd_soc_device omap3touchbook_snd_devdata = { | ||
295 | + .card = &snd_soc_omap3touchbook, | ||
296 | + .codec_dev = &soc_codec_dev_twl4030, | ||
297 | + .codec_data = &twl4030_setup, | ||
298 | +}; | ||
299 | + | ||
300 | +static struct platform_device *omap3touchbook_snd_device; | ||
301 | + | ||
302 | +static int __init omap3touchbook_soc_init(void) | ||
303 | +{ | ||
304 | + int ret; | ||
305 | + u8 pin_mux; | ||
306 | + | ||
307 | + if (!machine_is_touchbook()) { | ||
308 | + pr_debug("Not Touch Book!\n"); | ||
309 | + //return -ENODEV; | ||
310 | + } | ||
311 | + printk(KERN_INFO "Touch Book SoC init\n"); | ||
312 | + | ||
313 | + omap3touchbook_snd_device = platform_device_alloc("soc-audio", -1); | ||
314 | + if (!omap3touchbook_snd_device) { | ||
315 | + printk(KERN_ERR "Platform device allocation failed\n"); | ||
316 | + return -ENOMEM; | ||
317 | + } | ||
318 | + | ||
319 | + platform_set_drvdata(omap3touchbook_snd_device, &omap3touchbook_snd_devdata); | ||
320 | + omap3touchbook_snd_devdata.dev = &omap3touchbook_snd_device->dev; | ||
321 | + *(unsigned int *)omap3touchbook_dai.cpu_dai->private_data = 1; /* McBSP2 */ | ||
322 | + | ||
323 | + ret = platform_device_add(omap3touchbook_snd_device); | ||
324 | + if (ret) | ||
325 | + goto err1; | ||
326 | + | ||
327 | + return 0; | ||
328 | + | ||
329 | +err1: | ||
330 | + printk(KERN_ERR "Unable to add platform device\n"); | ||
331 | + platform_device_put(omap3touchbook_snd_device); | ||
332 | + | ||
333 | + return ret; | ||
334 | +} | ||
335 | +module_init(omap3touchbook_soc_init); | ||
336 | + | ||
337 | +static void __exit omap3touchbook_soc_exit(void) | ||
338 | +{ | ||
339 | + snd_soc_jack_free_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), | ||
340 | + hs_jack_gpios); | ||
341 | + | ||
342 | + platform_device_unregister(omap3touchbook_snd_device); | ||
343 | +} | ||
344 | +module_exit(omap3touchbook_soc_exit); | ||
345 | + | ||
346 | +MODULE_AUTHOR("Gregoire Gentil <gregoire@gentil.com>"); | ||
347 | +MODULE_LICENSE("GPL"); | ||
348 | -- | ||
349 | 1.6.6.1 | ||
350 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch new file mode 100644 index 00000000..d517f072 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0014-backlight-add-PWM-support.patch | |||
@@ -0,0 +1,126 @@ | |||
1 | From cc8cb0d0731c7a0517653e65c754051a69f34c3e Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Wed, 31 Mar 2010 11:14:04 +0200 | ||
4 | Subject: [PATCH 14/17] backlight: add PWM support | ||
5 | |||
6 | --- | ||
7 | drivers/video/backlight/backlight.c | 81 +++++++++++++++++++++++++++++++++++ | ||
8 | include/linux/backlight.h | 3 + | ||
9 | 2 files changed, 84 insertions(+), 0 deletions(-) | ||
10 | |||
11 | diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c | ||
12 | index 7898707..615f40f 100644 | ||
13 | --- a/drivers/video/backlight/backlight.c | ||
14 | +++ b/drivers/video/backlight/backlight.c | ||
15 | @@ -226,6 +226,84 @@ static void bl_device_release(struct device *dev) | ||
16 | kfree(bd); | ||
17 | } | ||
18 | |||
19 | +static ssize_t backlight_show_boost(struct device *dev, struct device_attribute *attr, char *buf) | ||
20 | +{ | ||
21 | + struct backlight_device *bd = to_backlight_device(dev); | ||
22 | + return sprintf(buf, "%u\n", bd->props.boost); | ||
23 | +} | ||
24 | + | ||
25 | +static ssize_t backlight_store_boost(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
26 | +{ | ||
27 | + unsigned long i; | ||
28 | + struct backlight_device *bd = to_backlight_device(dev); | ||
29 | + | ||
30 | + if (strict_strtoul(buf, 10, &i)) | ||
31 | + return -EINVAL; | ||
32 | + | ||
33 | + mutex_lock(&bd->ops_lock); | ||
34 | + if (bd->ops) | ||
35 | + { | ||
36 | + if (i) | ||
37 | + bd->props.boost = 1; | ||
38 | + else | ||
39 | + bd->props.boost = 0; | ||
40 | + backlight_update_status(bd); | ||
41 | + } | ||
42 | + mutex_unlock(&bd->ops_lock); | ||
43 | + | ||
44 | + return count; | ||
45 | +} | ||
46 | + | ||
47 | +static ssize_t backlight_show_pwm_fq(struct device *dev, struct device_attribute *attr, char *buf) | ||
48 | +{ | ||
49 | + struct backlight_device *bd = to_backlight_device(dev); | ||
50 | + return sprintf(buf, "%u\n", bd->props.pwm_fq); | ||
51 | +} | ||
52 | + | ||
53 | +static ssize_t backlight_store_pwm_fq(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
54 | +{ | ||
55 | + unsigned long i; | ||
56 | + struct backlight_device *bd = to_backlight_device(dev); | ||
57 | + | ||
58 | + if (strict_strtoul(buf, 10, &i)) | ||
59 | + return -EINVAL; | ||
60 | + | ||
61 | + mutex_lock(&bd->ops_lock); | ||
62 | + if (bd->ops) | ||
63 | + { | ||
64 | + bd->props.pwm_fq = i; | ||
65 | + backlight_update_status(bd); | ||
66 | + } | ||
67 | + mutex_unlock(&bd->ops_lock); | ||
68 | + | ||
69 | + return count; | ||
70 | +} | ||
71 | + | ||
72 | +static ssize_t backlight_show_min_duty(struct device *dev, struct device_attribute *attr, char *buf) | ||
73 | +{ | ||
74 | + struct backlight_device *bd = to_backlight_device(dev); | ||
75 | + return sprintf(buf, "%u\n", bd->props.min_duty); | ||
76 | +} | ||
77 | + | ||
78 | +static ssize_t backlight_store_min_duty(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
79 | +{ | ||
80 | + unsigned long i; | ||
81 | + struct backlight_device *bd = to_backlight_device(dev); | ||
82 | + | ||
83 | + if (strict_strtoul(buf, 10, &i)) | ||
84 | + return -EINVAL; | ||
85 | + | ||
86 | + mutex_lock(&bd->ops_lock); | ||
87 | + if (bd->ops) | ||
88 | + { | ||
89 | + bd->props.min_duty = i; | ||
90 | + backlight_update_status(bd); | ||
91 | + } | ||
92 | + mutex_unlock(&bd->ops_lock); | ||
93 | + | ||
94 | + return count; | ||
95 | +} | ||
96 | + | ||
97 | static struct device_attribute bl_device_attributes[] = { | ||
98 | __ATTR(bl_power, 0644, backlight_show_power, backlight_store_power), | ||
99 | __ATTR(brightness, 0666, backlight_show_brightness, | ||
100 | @@ -233,6 +311,9 @@ static struct device_attribute bl_device_attributes[] = { | ||
101 | __ATTR(actual_brightness, 0444, backlight_show_actual_brightness, | ||
102 | NULL), | ||
103 | __ATTR(max_brightness, 0444, backlight_show_max_brightness, NULL), | ||
104 | + __ATTR(boost, 0666, backlight_show_boost, backlight_store_boost), | ||
105 | + __ATTR(pwm_fq, 0666, backlight_show_pwm_fq, backlight_store_pwm_fq), | ||
106 | + __ATTR(min_duty, 0666, backlight_show_min_duty, backlight_store_min_duty), | ||
107 | __ATTR_NULL, | ||
108 | }; | ||
109 | |||
110 | diff --git a/include/linux/backlight.h b/include/linux/backlight.h | ||
111 | index 0f5f578..f3a9b9f 100644 | ||
112 | --- a/include/linux/backlight.h | ||
113 | +++ b/include/linux/backlight.h | ||
114 | @@ -64,6 +64,9 @@ struct backlight_properties { | ||
115 | int fb_blank; | ||
116 | /* Flags used to signal drivers of state changes */ | ||
117 | /* Upper 4 bits are reserved for driver internal use */ | ||
118 | + int boost; | ||
119 | + int pwm_fq; | ||
120 | + int min_duty; | ||
121 | unsigned int state; | ||
122 | |||
123 | #define BL_CORE_SUSPENDED (1 << 0) /* backlight is suspended */ | ||
124 | -- | ||
125 | 1.6.6.1 | ||
126 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch new file mode 100644 index 00000000..562c459e --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0015-Forward-port-TWL4030-BCI-driver-from-2.6.29-to-2.6.3.patch | |||
@@ -0,0 +1,1367 @@ | |||
1 | From c3a08f3d696866508ef2b5e2fd065b8295b3e1a8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Tim Yamin <plasm@roo.me.uk> | ||
3 | Date: Sun, 9 May 2010 10:14:23 +0200 | ||
4 | Subject: [PATCH 15/17] Forward port TWL4030 BCI driver from 2.6.29 to 2.6.31 with AI enhancements. | ||
5 | |||
6 | Signed-off-by: Tim Yamin <plasm@roo.me.uk> | ||
7 | --- | ||
8 | drivers/power/Kconfig | 7 + | ||
9 | drivers/power/Makefile | 1 + | ||
10 | drivers/power/twl4030_bci_battery.c | 1307 +++++++++++++++++++++++++++++++++++ | ||
11 | include/linux/i2c/twl.h | 1 + | ||
12 | 4 files changed, 1316 insertions(+), 0 deletions(-) | ||
13 | create mode 100644 drivers/power/twl4030_bci_battery.c | ||
14 | |||
15 | diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig | ||
16 | index d4b3d67..8345b3f 100644 | ||
17 | --- a/drivers/power/Kconfig | ||
18 | +++ b/drivers/power/Kconfig | ||
19 | @@ -124,4 +124,11 @@ config CHARGER_PCF50633 | ||
20 | help | ||
21 | Say Y to include support for NXP PCF50633 Main Battery Charger. | ||
22 | |||
23 | +config TWL4030_BCI_BATTERY | ||
24 | + tristate "OMAP TWL4030 BCI Battery driver" | ||
25 | + depends on TWL4030_CORE && TWL4030_MADC | ||
26 | + help | ||
27 | + Support for OMAP TWL4030 BCI Battery driver. | ||
28 | + This driver can give support for TWL4030 Battery Charge Interface. | ||
29 | + | ||
30 | endif # POWER_SUPPLY | ||
31 | diff --git a/drivers/power/Makefile b/drivers/power/Makefile | ||
32 | index 573597c..7801da7 100644 | ||
33 | --- a/drivers/power/Makefile | ||
34 | +++ b/drivers/power/Makefile | ||
35 | @@ -31,3 +31,4 @@ obj-$(CONFIG_BATTERY_BQ27x00) += bq27x00_battery.o | ||
36 | obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o | ||
37 | obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o | ||
38 | obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o | ||
39 | +obj-$(CONFIG_TWL4030_BCI_BATTERY) += twl4030_bci_battery.o | ||
40 | diff --git a/drivers/power/twl4030_bci_battery.c b/drivers/power/twl4030_bci_battery.c | ||
41 | new file mode 100644 | ||
42 | index 0000000..0876fc3 | ||
43 | --- /dev/null | ||
44 | +++ b/drivers/power/twl4030_bci_battery.c | ||
45 | @@ -0,0 +1,1307 @@ | ||
46 | +/* | ||
47 | + * linux/drivers/power/twl4030_bci_battery.c | ||
48 | + * | ||
49 | + * OMAP2430/3430 BCI battery driver for Linux | ||
50 | + * | ||
51 | + * Copyright (C) 2008 Texas Instruments, Inc. | ||
52 | + * Author: Texas Instruments, Inc. | ||
53 | + * | ||
54 | + * Copyright (C) 2010 Always Innovating | ||
55 | + * Author: Tim Yamin <plasm@roo.me.uk> | ||
56 | + * | ||
57 | + * This package is free software; you can redistribute it and/or modify | ||
58 | + * it under the terms of the GNU General Public License version 2 as | ||
59 | + * published by the Free Software Foundation. | ||
60 | + * | ||
61 | + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | ||
62 | + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | ||
63 | + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
64 | + */ | ||
65 | + | ||
66 | +/* Boot with automatic charge */ | ||
67 | +#define CHARGE_MODE 1 | ||
68 | + | ||
69 | +#include <linux/init.h> | ||
70 | +#include <linux/module.h> | ||
71 | +#include <linux/device.h> | ||
72 | +#include <linux/interrupt.h> | ||
73 | +#include <linux/delay.h> | ||
74 | +#include <linux/platform_device.h> | ||
75 | +#include <linux/i2c/twl.h> | ||
76 | +#include <linux/power_supply.h> | ||
77 | +#include <linux/i2c/twl4030-madc.h> | ||
78 | + | ||
79 | +#define T2_BATTERY_VOLT 0x04 | ||
80 | +#define T2_BATTERY_TEMP 0x06 | ||
81 | +#define T2_BATTERY_CUR 0x08 | ||
82 | + | ||
83 | +/* charger constants */ | ||
84 | +#define NO_PW_CONN 0 | ||
85 | +#define AC_PW_CONN 0x01 | ||
86 | +#define USB_PW_CONN 0x02 | ||
87 | + | ||
88 | +/* TWL4030_MODULE_USB */ | ||
89 | +#define REG_POWER_CTRL 0x0AC | ||
90 | +#define OTG_EN 0x020 | ||
91 | +#define REG_PHY_CLK_CTRL 0x0FE | ||
92 | +#define REG_PHY_CLK_CTRL_STS 0x0FF | ||
93 | +#define PHY_DPLL_CLK 0x01 | ||
94 | + | ||
95 | +#define REG_BCICTL1 0x023 | ||
96 | +#define REG_BCICTL2 0x024 | ||
97 | +#define CGAIN 0x020 | ||
98 | +#define ITHEN 0x010 | ||
99 | +#define ITHSENS 0x007 | ||
100 | + | ||
101 | +/* Boot BCI flag bits */ | ||
102 | +#define BCIAUTOWEN 0x020 | ||
103 | +#define CONFIG_DONE 0x010 | ||
104 | +#define CVENAC 0x004 | ||
105 | +#define BCIAUTOUSB 0x002 | ||
106 | +#define BCIAUTOAC 0x001 | ||
107 | +#define BCIMSTAT_MASK 0x03F | ||
108 | + | ||
109 | +/* Boot BCI register */ | ||
110 | +#define REG_BOOT_BCI 0x007 | ||
111 | +#define REG_CTRL1 0x00 | ||
112 | +#define REG_SW1SELECT_MSB 0x07 | ||
113 | +#define SW1_CH9_SEL 0x02 | ||
114 | +#define REG_CTRL_SW1 0x012 | ||
115 | +#define SW1_TRIGGER 0x020 | ||
116 | +#define EOC_SW1 0x002 | ||
117 | +#define REG_GPCH9 0x049 | ||
118 | +#define REG_STS_HW_CONDITIONS 0x0F | ||
119 | +#define STS_VBUS 0x080 | ||
120 | +#define STS_CHG 0x02 | ||
121 | +#define REG_BCIMSTATEC 0x02 | ||
122 | +#define REG_BCIMFSTS4 0x010 | ||
123 | +#define REG_BCIMFSTS2 0x00E | ||
124 | +#define REG_BCIMFSTS3 0x00F | ||
125 | +#define REG_BCIMFSTS1 0x001 | ||
126 | +#define USBFASTMCHG 0x004 | ||
127 | +#define BATSTSPCHG 0x004 | ||
128 | +#define BATSTSMCHG 0x040 | ||
129 | +#define VBATOV4 0x020 | ||
130 | +#define VBATOV3 0x010 | ||
131 | +#define VBATOV2 0x008 | ||
132 | +#define VBATOV1 0x004 | ||
133 | +#define REG_BB_CFG 0x012 | ||
134 | +#define BBCHEN 0x010 | ||
135 | + | ||
136 | +/* GPBR */ | ||
137 | +#define REG_GPBR1 0x0c | ||
138 | +#define MADC_HFCLK_EN 0x80 | ||
139 | +#define DEFAULT_MADC_CLK_EN 0x10 | ||
140 | + | ||
141 | +/* Power supply charge interrupt */ | ||
142 | +#define REG_PWR_ISR1 0x00 | ||
143 | +#define REG_PWR_IMR1 0x01 | ||
144 | +#define REG_PWR_EDR1 0x05 | ||
145 | +#define REG_PWR_SIH_CTRL 0x007 | ||
146 | + | ||
147 | +#define USB_PRES 0x004 | ||
148 | +#define CHG_PRES 0x002 | ||
149 | + | ||
150 | +#define USB_PRES_RISING 0x020 | ||
151 | +#define USB_PRES_FALLING 0x010 | ||
152 | +#define CHG_PRES_RISING 0x008 | ||
153 | +#define CHG_PRES_FALLING 0x004 | ||
154 | +#define AC_STATEC 0x20 | ||
155 | +#define COR 0x004 | ||
156 | + | ||
157 | +/* interrupt status registers */ | ||
158 | +#define REG_BCIISR1A 0x0 | ||
159 | +#define REG_BCIISR2A 0x01 | ||
160 | + | ||
161 | +/* Interrupt flags bits BCIISR1 */ | ||
162 | +#define BATSTS_ISR1 0x080 | ||
163 | +#define VBATLVL_ISR1 0x001 | ||
164 | + | ||
165 | +/* Interrupt mask registers for int1*/ | ||
166 | +#define REG_BCIIMR1A 0x002 | ||
167 | +#define REG_BCIIMR2A 0x003 | ||
168 | + | ||
169 | + /* Interrupt masks for BCIIMR1 */ | ||
170 | +#define BATSTS_IMR1 0x080 | ||
171 | +#define VBATLVL_IMR1 0x001 | ||
172 | + | ||
173 | +/* Interrupt edge detection register */ | ||
174 | +#define REG_BCIEDR1 0x00A | ||
175 | +#define REG_BCIEDR2 0x00B | ||
176 | +#define REG_BCIEDR3 0x00C | ||
177 | + | ||
178 | +/* BCIEDR2 */ | ||
179 | +#define BATSTS_EDRRISIN 0x080 | ||
180 | +#define BATSTS_EDRFALLING 0x040 | ||
181 | + | ||
182 | +/* BCIEDR3 */ | ||
183 | +#define VBATLVL_EDRRISIN 0x02 | ||
184 | + | ||
185 | +/* BCIIREF1 */ | ||
186 | +#define REG_BCIIREF1 0x027 | ||
187 | +#define REG_BCIIREF2 0x028 | ||
188 | + | ||
189 | +/* BCIMFTH1 */ | ||
190 | +#define REG_BCIMFTH1 0x016 | ||
191 | + | ||
192 | +/* Key */ | ||
193 | +#define KEY_IIREF 0xE7 | ||
194 | +#define KEY_FTH1 0xD2 | ||
195 | +#define REG_BCIMFKEY 0x011 | ||
196 | + | ||
197 | +/* Step size and prescaler ratio */ | ||
198 | +#define TEMP_STEP_SIZE 147 | ||
199 | +#define TEMP_PSR_R 100 | ||
200 | + | ||
201 | +#define VOLT_STEP_SIZE 588 | ||
202 | +#define VOLT_PSR_R 100 | ||
203 | + | ||
204 | +#define CURR_STEP_SIZE 147 | ||
205 | +#define CURR_PSR_R1 44 | ||
206 | +#define CURR_PSR_R2 80 | ||
207 | + | ||
208 | +#define BK_VOLT_STEP_SIZE 441 | ||
209 | +#define BK_VOLT_PSR_R 100 | ||
210 | + | ||
211 | +#define ENABLE 1 | ||
212 | +#define DISABLE 1 | ||
213 | + | ||
214 | +struct twl4030_bci_device_info { | ||
215 | + struct device *dev; | ||
216 | + | ||
217 | + unsigned long update_time; | ||
218 | + int voltage_uV; | ||
219 | + int bk_voltage_uV; | ||
220 | + int current_uA; | ||
221 | + int temp_C; | ||
222 | + int charge_rsoc; | ||
223 | + int charge_status; | ||
224 | + | ||
225 | + struct power_supply bat; | ||
226 | + struct power_supply bk_bat; | ||
227 | + struct delayed_work twl4030_bci_monitor_work; | ||
228 | + struct delayed_work twl4030_bk_bci_monitor_work; | ||
229 | + | ||
230 | + struct twl4030_bci_platform_data *pdata; | ||
231 | +}; | ||
232 | + | ||
233 | +static int usb_charger_flag; | ||
234 | +static int LVL_1, LVL_2, LVL_3, LVL_4; | ||
235 | + | ||
236 | +static int read_bci_val(u8 reg_1); | ||
237 | +static inline int clear_n_set(u8 mod_no, u8 clear, u8 set, u8 reg); | ||
238 | +static int twl4030charger_presence(void); | ||
239 | + | ||
240 | +/* | ||
241 | + * Report and clear the charger presence event. | ||
242 | + */ | ||
243 | +static inline int twl4030charger_presence_evt(void) | ||
244 | +{ | ||
245 | + int ret; | ||
246 | + u8 chg_sts, set = 0, clear = 0; | ||
247 | + | ||
248 | + /* read charger power supply status */ | ||
249 | + ret = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &chg_sts, | ||
250 | + REG_STS_HW_CONDITIONS); | ||
251 | + if (ret) | ||
252 | + return IRQ_NONE; | ||
253 | + | ||
254 | + if (chg_sts & STS_CHG) { /* If the AC charger have been connected */ | ||
255 | + /* configuring falling edge detection for CHG_PRES */ | ||
256 | + set = CHG_PRES_FALLING; | ||
257 | + clear = CHG_PRES_RISING; | ||
258 | + } else { /* If the AC charger have been disconnected */ | ||
259 | + /* configuring rising edge detection for CHG_PRES */ | ||
260 | + set = CHG_PRES_RISING; | ||
261 | + clear = CHG_PRES_FALLING; | ||
262 | + } | ||
263 | + | ||
264 | + /* Update the interrupt edge detection register */ | ||
265 | + clear_n_set(TWL4030_MODULE_INT, clear, set, REG_PWR_EDR1); | ||
266 | + | ||
267 | + return 0; | ||
268 | +} | ||
269 | + | ||
270 | +/* | ||
271 | + * Interrupt service routine | ||
272 | + * | ||
273 | + * Attends to TWL 4030 power module interruptions events, specifically | ||
274 | + * USB_PRES (USB charger presence) CHG_PRES (AC charger presence) events | ||
275 | + * | ||
276 | + */ | ||
277 | +static irqreturn_t twl4030charger_interrupt(int irq, void *_di) | ||
278 | +{ | ||
279 | + struct twl4030_bci_device_info *di = _di; | ||
280 | + | ||
281 | +#ifdef CONFIG_LOCKDEP | ||
282 | + /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which | ||
283 | + * we don't want and can't tolerate. Although it might be | ||
284 | + * friendlier not to borrow this thread context... | ||
285 | + */ | ||
286 | + local_irq_enable(); | ||
287 | +#endif | ||
288 | + | ||
289 | + twl4030charger_presence_evt(); | ||
290 | + power_supply_changed(&di->bat); | ||
291 | + | ||
292 | + return IRQ_HANDLED; | ||
293 | +} | ||
294 | + | ||
295 | +/* | ||
296 | + * This function handles the twl4030 battery presence interrupt | ||
297 | + */ | ||
298 | +static int twl4030battery_presence_evt(void) | ||
299 | +{ | ||
300 | + int ret; | ||
301 | + u8 batstsmchg, batstspchg; | ||
302 | + | ||
303 | + /* check for the battery presence in main charge*/ | ||
304 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, | ||
305 | + &batstsmchg, REG_BCIMFSTS3); | ||
306 | + if (ret) | ||
307 | + return ret; | ||
308 | + | ||
309 | + /* check for the battery presence in precharge */ | ||
310 | + ret = twl_i2c_read_u8(TWL4030_MODULE_PRECHARGE, | ||
311 | + &batstspchg, REG_BCIMFSTS1); | ||
312 | + if (ret) | ||
313 | + return ret; | ||
314 | + | ||
315 | + /* | ||
316 | + * REVISIT: Physically inserting/removing the batt | ||
317 | + * does not seem to generate an int on 3430ES2 SDP. | ||
318 | + */ | ||
319 | + if ((batstspchg & BATSTSPCHG) || (batstsmchg & BATSTSMCHG)) { | ||
320 | + /* In case of the battery insertion event */ | ||
321 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_EDRRISIN, | ||
322 | + BATSTS_EDRFALLING, REG_BCIEDR2); | ||
323 | + if (ret) | ||
324 | + return ret; | ||
325 | + } else { | ||
326 | + /* In case of the battery removal event */ | ||
327 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_EDRFALLING, | ||
328 | + BATSTS_EDRRISIN, REG_BCIEDR2); | ||
329 | + if (ret) | ||
330 | + return ret; | ||
331 | + } | ||
332 | + | ||
333 | + return 0; | ||
334 | +} | ||
335 | + | ||
336 | +/* | ||
337 | + * This function handles the twl4030 battery voltage level interrupt. | ||
338 | + */ | ||
339 | +static int twl4030battery_level_evt(void) | ||
340 | +{ | ||
341 | + int ret; | ||
342 | + u8 mfst; | ||
343 | + | ||
344 | + /* checking for threshold event */ | ||
345 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, | ||
346 | + &mfst, REG_BCIMFSTS2); | ||
347 | + if (ret) | ||
348 | + return ret; | ||
349 | + | ||
350 | + /* REVISIT could use a bitmap */ | ||
351 | + if (mfst & VBATOV4) { | ||
352 | + LVL_4 = 1; | ||
353 | + LVL_3 = 0; | ||
354 | + LVL_2 = 0; | ||
355 | + LVL_1 = 0; | ||
356 | + } else if (mfst & VBATOV3) { | ||
357 | + LVL_4 = 0; | ||
358 | + LVL_3 = 1; | ||
359 | + LVL_2 = 0; | ||
360 | + LVL_1 = 0; | ||
361 | + } else if (mfst & VBATOV2) { | ||
362 | + LVL_4 = 0; | ||
363 | + LVL_3 = 0; | ||
364 | + LVL_2 = 1; | ||
365 | + LVL_1 = 0; | ||
366 | + } else { | ||
367 | + LVL_4 = 0; | ||
368 | + LVL_3 = 0; | ||
369 | + LVL_2 = 0; | ||
370 | + LVL_1 = 1; | ||
371 | + } | ||
372 | + | ||
373 | + return 0; | ||
374 | +} | ||
375 | + | ||
376 | +/* | ||
377 | + * Interrupt service routine | ||
378 | + * | ||
379 | + * Attends to BCI interruptions events, | ||
380 | + * specifically BATSTS (battery connection and removal) | ||
381 | + * VBATOV (main battery voltage threshold) events | ||
382 | + * | ||
383 | + */ | ||
384 | +static irqreturn_t twl4030battery_interrupt(int irq, void *_di) | ||
385 | +{ | ||
386 | + u8 isr1a_val, isr2a_val, clear_2a, clear_1a; | ||
387 | + int ret; | ||
388 | + | ||
389 | +#ifdef CONFIG_LOCKDEP | ||
390 | + /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which | ||
391 | + * we don't want and can't tolerate. Although it might be | ||
392 | + * friendlier not to borrow this thread context... | ||
393 | + */ | ||
394 | + local_irq_enable(); | ||
395 | +#endif | ||
396 | + | ||
397 | + ret = twl_i2c_read_u8(TWL4030_MODULE_INTERRUPTS, &isr1a_val, | ||
398 | + REG_BCIISR1A); | ||
399 | + if (ret) | ||
400 | + return IRQ_NONE; | ||
401 | + | ||
402 | + ret = twl_i2c_read_u8(TWL4030_MODULE_INTERRUPTS, &isr2a_val, | ||
403 | + REG_BCIISR2A); | ||
404 | + if (ret) | ||
405 | + return IRQ_NONE; | ||
406 | + | ||
407 | + clear_2a = (isr2a_val & VBATLVL_ISR1) ? (VBATLVL_ISR1) : 0; | ||
408 | + clear_1a = (isr1a_val & BATSTS_ISR1) ? (BATSTS_ISR1) : 0; | ||
409 | + | ||
410 | + /* cleaning BCI interrupt status flags */ | ||
411 | + ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, | ||
412 | + clear_1a , REG_BCIISR1A); | ||
413 | + if (ret) | ||
414 | + return IRQ_NONE; | ||
415 | + | ||
416 | + ret = twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, | ||
417 | + clear_2a , REG_BCIISR2A); | ||
418 | + if (ret) | ||
419 | + return IRQ_NONE; | ||
420 | + | ||
421 | + /* battery connetion or removal event */ | ||
422 | + if (isr1a_val & BATSTS_ISR1) | ||
423 | + twl4030battery_presence_evt(); | ||
424 | + /* battery voltage threshold event*/ | ||
425 | + else if (isr2a_val & VBATLVL_ISR1) | ||
426 | + twl4030battery_level_evt(); | ||
427 | + else | ||
428 | + return IRQ_NONE; | ||
429 | + | ||
430 | + return IRQ_HANDLED; | ||
431 | +} | ||
432 | + | ||
433 | +/* | ||
434 | + * Enable/Disable hardware battery level event notifications. | ||
435 | + */ | ||
436 | +static int twl4030battery_hw_level_en(int enable) | ||
437 | +{ | ||
438 | + int ret; | ||
439 | + | ||
440 | + if (enable) { | ||
441 | + /* unmask VBATOV interrupt for INT1 */ | ||
442 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, VBATLVL_IMR1, | ||
443 | + 0, REG_BCIIMR2A); | ||
444 | + if (ret) | ||
445 | + return ret; | ||
446 | + | ||
447 | + /* configuring interrupt edge detection for VBATOv */ | ||
448 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, | ||
449 | + VBATLVL_EDRRISIN, REG_BCIEDR3); | ||
450 | + if (ret) | ||
451 | + return ret; | ||
452 | + } else { | ||
453 | + /* mask VBATOV interrupt for INT1 */ | ||
454 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, | ||
455 | + VBATLVL_IMR1, REG_BCIIMR2A); | ||
456 | + if (ret) | ||
457 | + return ret; | ||
458 | + } | ||
459 | + | ||
460 | + return 0; | ||
461 | +} | ||
462 | + | ||
463 | +/* | ||
464 | + * Enable/disable hardware battery presence event notifications. | ||
465 | + */ | ||
466 | +static int twl4030battery_hw_presence_en(int enable) | ||
467 | +{ | ||
468 | + int ret; | ||
469 | + | ||
470 | + if (enable) { | ||
471 | + /* unmask BATSTS interrupt for INT1 */ | ||
472 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, BATSTS_IMR1, | ||
473 | + 0, REG_BCIIMR1A); | ||
474 | + if (ret) | ||
475 | + return ret; | ||
476 | + | ||
477 | + /* configuring interrupt edge for BATSTS */ | ||
478 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, | ||
479 | + BATSTS_EDRRISIN | BATSTS_EDRFALLING, REG_BCIEDR2); | ||
480 | + if (ret) | ||
481 | + return ret; | ||
482 | + } else { | ||
483 | + /* mask BATSTS interrupt for INT1 */ | ||
484 | + ret = clear_n_set(TWL4030_MODULE_INTERRUPTS, 0, | ||
485 | + BATSTS_IMR1, REG_BCIIMR1A); | ||
486 | + if (ret) | ||
487 | + return ret; | ||
488 | + } | ||
489 | + | ||
490 | + return 0; | ||
491 | +} | ||
492 | + | ||
493 | +/* | ||
494 | + * Enable/Disable AC Charge funtionality. | ||
495 | + */ | ||
496 | +static int twl4030charger_ac_en(int enable, int automatic) | ||
497 | +{ | ||
498 | + int ret; | ||
499 | + | ||
500 | + if (enable) { | ||
501 | + /* forcing the field BCIAUTOAC (BOOT_BCI[0) to 1 */ | ||
502 | + if(!automatic) { | ||
503 | + ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOAC | CVENAC, | ||
504 | + (CONFIG_DONE | BCIAUTOWEN), | ||
505 | + REG_BOOT_BCI); | ||
506 | + } else { | ||
507 | + ret = clear_n_set(TWL4030_MODULE_PM_MASTER, 0, | ||
508 | + (CONFIG_DONE | BCIAUTOWEN | BCIAUTOAC | CVENAC), | ||
509 | + REG_BOOT_BCI); | ||
510 | + } | ||
511 | + if (ret) | ||
512 | + return ret; | ||
513 | + } else { | ||
514 | + /* forcing the field BCIAUTOAC (BOOT_BCI[0) to 0*/ | ||
515 | + ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOAC, | ||
516 | + (CONFIG_DONE | BCIAUTOWEN), | ||
517 | + REG_BOOT_BCI); | ||
518 | + if (ret) | ||
519 | + return ret; | ||
520 | + } | ||
521 | + | ||
522 | + return 0; | ||
523 | +} | ||
524 | + | ||
525 | +/* | ||
526 | + * Enable/Disable USB Charge funtionality. | ||
527 | + */ | ||
528 | +int twl4030charger_usb_en(int enable) | ||
529 | +{ | ||
530 | + u8 value; | ||
531 | + int ret; | ||
532 | + unsigned long timeout; | ||
533 | + | ||
534 | + if (enable) { | ||
535 | + /* Check for USB charger conneted */ | ||
536 | + ret = twl4030charger_presence(); | ||
537 | + if (ret < 0) | ||
538 | + return ret; | ||
539 | + | ||
540 | + if (!(ret & USB_PW_CONN)) | ||
541 | + return -ENXIO; | ||
542 | + | ||
543 | + /* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */ | ||
544 | + ret = clear_n_set(TWL4030_MODULE_PM_MASTER, 0, | ||
545 | + (CONFIG_DONE | BCIAUTOWEN | BCIAUTOUSB), | ||
546 | + REG_BOOT_BCI); | ||
547 | + if (ret) | ||
548 | + return ret; | ||
549 | + | ||
550 | + ret = clear_n_set(TWL4030_MODULE_USB, 0, PHY_DPLL_CLK, | ||
551 | + REG_PHY_CLK_CTRL); | ||
552 | + if (ret) | ||
553 | + return ret; | ||
554 | + | ||
555 | + value = 0; | ||
556 | + timeout = jiffies + msecs_to_jiffies(50); | ||
557 | + | ||
558 | + while ((!(value & PHY_DPLL_CLK)) && | ||
559 | + time_before(jiffies, timeout)) { | ||
560 | + udelay(10); | ||
561 | + ret = twl_i2c_read_u8(TWL4030_MODULE_USB, &value, | ||
562 | + REG_PHY_CLK_CTRL_STS); | ||
563 | + if (ret) | ||
564 | + return ret; | ||
565 | + } | ||
566 | + | ||
567 | + /* OTG_EN (POWER_CTRL[5]) to 1 */ | ||
568 | + ret = clear_n_set(TWL4030_MODULE_USB, 0, OTG_EN, | ||
569 | + REG_POWER_CTRL); | ||
570 | + if (ret) | ||
571 | + return ret; | ||
572 | + | ||
573 | + mdelay(50); | ||
574 | + | ||
575 | + /* forcing USBFASTMCHG(BCIMFSTS4[2]) to 1 */ | ||
576 | + ret = clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, | ||
577 | + USBFASTMCHG, REG_BCIMFSTS4); | ||
578 | + if (ret) | ||
579 | + return ret; | ||
580 | + } else { | ||
581 | + twl4030charger_presence(); | ||
582 | + ret = clear_n_set(TWL4030_MODULE_PM_MASTER, BCIAUTOUSB, | ||
583 | + (CONFIG_DONE | BCIAUTOWEN), REG_BOOT_BCI); | ||
584 | + if (ret) | ||
585 | + return ret; | ||
586 | + } | ||
587 | + | ||
588 | + return 0; | ||
589 | +} | ||
590 | + | ||
591 | +/* | ||
592 | + * Return battery temperature | ||
593 | + * Or < 0 on failure. | ||
594 | + */ | ||
595 | +static int twl4030battery_temperature(struct twl4030_bci_device_info *di) | ||
596 | +{ | ||
597 | + u8 val; | ||
598 | + int temp, curr, volt, res, ret; | ||
599 | + | ||
600 | + /* Is a temperature table specified? */ | ||
601 | + if (!di->pdata->tblsize) | ||
602 | + return 0; | ||
603 | + | ||
604 | + /* Getting and calculating the thermistor voltage */ | ||
605 | + ret = read_bci_val(T2_BATTERY_TEMP); | ||
606 | + if (ret < 0) | ||
607 | + return ret; | ||
608 | + | ||
609 | + volt = (ret * TEMP_STEP_SIZE) / TEMP_PSR_R; | ||
610 | + | ||
611 | + /* Getting and calculating the supply current in micro ampers */ | ||
612 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, | ||
613 | + REG_BCICTL2); | ||
614 | + if (ret) | ||
615 | + return 0; | ||
616 | + | ||
617 | + curr = ((val & ITHSENS) + 1) * 10; | ||
618 | + | ||
619 | + /* Getting and calculating the thermistor resistance in ohms*/ | ||
620 | + res = volt * 1000 / curr; | ||
621 | + | ||
622 | + /*calculating temperature*/ | ||
623 | + for (temp = 58; temp >= 0; temp--) { | ||
624 | + int actual = di->pdata->battery_tmp_tbl[temp]; | ||
625 | + if ((actual - res) >= 0) | ||
626 | + break; | ||
627 | + } | ||
628 | + | ||
629 | + /* Negative temperature */ | ||
630 | + if (temp < 3) { | ||
631 | + if (temp == 2) | ||
632 | + temp = -1; | ||
633 | + else if (temp == 1) | ||
634 | + temp = -2; | ||
635 | + else | ||
636 | + temp = -3; | ||
637 | + } | ||
638 | + | ||
639 | + return temp + 1; | ||
640 | +} | ||
641 | + | ||
642 | +/* | ||
643 | + * Return battery voltage | ||
644 | + * Or < 0 on failure. | ||
645 | + */ | ||
646 | +static int twl4030battery_voltage(void) | ||
647 | +{ | ||
648 | + int volt = read_bci_val(T2_BATTERY_VOLT); | ||
649 | + return (volt * VOLT_STEP_SIZE) / VOLT_PSR_R; | ||
650 | +} | ||
651 | + | ||
652 | +/* | ||
653 | + * Get latest battery voltage (using MADC) | ||
654 | + * | ||
655 | + * When the BCI is not charging, the BCI voltage registers are not | ||
656 | + * updated and are 'frozen' but the data can be read through the | ||
657 | + * MADC. | ||
658 | + */ | ||
659 | +static int twl4030battery_voltage_madc(void) | ||
660 | +{ | ||
661 | + struct twl4030_madc_request req; | ||
662 | + | ||
663 | + req.channels = (1 << 12); | ||
664 | + req.do_avg = 0; | ||
665 | + req.method = TWL4030_MADC_SW1; | ||
666 | + req.active = 0; | ||
667 | + req.func_cb = NULL; | ||
668 | + twl4030_madc_conversion(&req); | ||
669 | + | ||
670 | + return (((int) req.rbuf[12]) * VOLT_STEP_SIZE) / VOLT_PSR_R; | ||
671 | +} | ||
672 | + | ||
673 | +/* | ||
674 | + * Return the battery current | ||
675 | + * Or < 0 on failure. | ||
676 | + */ | ||
677 | +static int twl4030battery_current(void) | ||
678 | +{ | ||
679 | + int ret, curr = read_bci_val(T2_BATTERY_CUR); | ||
680 | + u8 val; | ||
681 | + | ||
682 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, | ||
683 | + REG_BCICTL1); | ||
684 | + if (ret) | ||
685 | + return ret; | ||
686 | + | ||
687 | + if (val & CGAIN) /* slope of 0.44 mV/mA */ | ||
688 | + return (curr * CURR_STEP_SIZE) / CURR_PSR_R1; | ||
689 | + else /* slope of 0.88 mV/mA */ | ||
690 | + return (curr * CURR_STEP_SIZE) / CURR_PSR_R2; | ||
691 | +} | ||
692 | + | ||
693 | +/* | ||
694 | + * Return the battery backup voltage | ||
695 | + * Or < 0 on failure. | ||
696 | + */ | ||
697 | +static int twl4030backupbatt_voltage(void) | ||
698 | +{ | ||
699 | + struct twl4030_madc_request req; | ||
700 | + int temp; | ||
701 | + | ||
702 | + req.channels = (1 << 9); | ||
703 | + req.do_avg = 0; | ||
704 | + req.method = TWL4030_MADC_SW1; | ||
705 | + req.active = 0; | ||
706 | + req.func_cb = NULL; | ||
707 | + twl4030_madc_conversion(&req); | ||
708 | + temp = (u16)req.rbuf[9]; | ||
709 | + | ||
710 | + return (temp * BK_VOLT_STEP_SIZE) / BK_VOLT_PSR_R; | ||
711 | +} | ||
712 | + | ||
713 | +/* | ||
714 | + * Returns an integer value, that means, | ||
715 | + * NO_PW_CONN no power supply is connected | ||
716 | + * AC_PW_CONN if the AC power supply is connected | ||
717 | + * USB_PW_CONN if the USB power supply is connected | ||
718 | + * AC_PW_CONN + USB_PW_CONN if USB and AC power supplies are both connected | ||
719 | + * | ||
720 | + * Or < 0 on failure. | ||
721 | + */ | ||
722 | +static int twl4030charger_presence(void) | ||
723 | +{ | ||
724 | + int ret; | ||
725 | + u8 hwsts; | ||
726 | + | ||
727 | + ret = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &hwsts, | ||
728 | + REG_STS_HW_CONDITIONS); | ||
729 | + if (ret) { | ||
730 | + pr_err("twl4030_bci: error reading STS_HW_CONDITIONS\n"); | ||
731 | + return ret; | ||
732 | + } | ||
733 | + | ||
734 | + ret = (hwsts & STS_CHG) ? AC_PW_CONN : NO_PW_CONN; | ||
735 | + ret += (hwsts & STS_VBUS) ? USB_PW_CONN : NO_PW_CONN; | ||
736 | + | ||
737 | + if (ret & USB_PW_CONN) | ||
738 | + usb_charger_flag = 1; | ||
739 | + else | ||
740 | + usb_charger_flag = 0; | ||
741 | + | ||
742 | + return ret; | ||
743 | + | ||
744 | +} | ||
745 | + | ||
746 | +/* | ||
747 | + * Returns the main charge FSM status | ||
748 | + * Or < 0 on failure. | ||
749 | + */ | ||
750 | +static int twl4030bci_status(void) | ||
751 | +{ | ||
752 | + int ret; | ||
753 | + u8 status; | ||
754 | + | ||
755 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, | ||
756 | + &status, REG_BCIMSTATEC); | ||
757 | + if (ret) { | ||
758 | + pr_err("twl4030_bci: error reading BCIMSTATEC\n"); | ||
759 | + return ret; | ||
760 | + } | ||
761 | + | ||
762 | +#ifdef DEBUG | ||
763 | + printk("BCI DEBUG: BCIMSTATEC Charge state is 0x%x\n", status); | ||
764 | +#endif | ||
765 | + return (int) (status & BCIMSTAT_MASK); | ||
766 | +} | ||
767 | + | ||
768 | +static int read_bci_val(u8 reg) | ||
769 | +{ | ||
770 | + int ret, temp; | ||
771 | + u8 val; | ||
772 | + | ||
773 | + /* reading MSB */ | ||
774 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, | ||
775 | + reg + 1); | ||
776 | + if (ret) | ||
777 | + return ret; | ||
778 | + | ||
779 | + temp = ((int)(val & 0x03)) << 8; | ||
780 | + | ||
781 | + /* reading LSB */ | ||
782 | + ret = twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &val, | ||
783 | + reg); | ||
784 | + if (ret) | ||
785 | + return ret; | ||
786 | + | ||
787 | + return temp | val; | ||
788 | +} | ||
789 | + | ||
790 | +/* | ||
791 | + * Settup the twl4030 BCI module to enable backup | ||
792 | + * battery charging. | ||
793 | + */ | ||
794 | +static int twl4030backupbatt_voltage_setup(void) | ||
795 | +{ | ||
796 | + int ret; | ||
797 | + | ||
798 | + /* Starting backup batery charge */ | ||
799 | + ret = clear_n_set(TWL4030_MODULE_PM_RECEIVER, 0, BBCHEN, | ||
800 | + REG_BB_CFG); | ||
801 | + if (ret) | ||
802 | + return ret; | ||
803 | + | ||
804 | + return 0; | ||
805 | +} | ||
806 | + | ||
807 | +/* | ||
808 | + * Settup the twl4030 BCI module to measure battery | ||
809 | + * temperature | ||
810 | + */ | ||
811 | +static int twl4030battery_temp_setup(void) | ||
812 | +{ | ||
813 | +#ifdef DEBUG | ||
814 | + u8 i; | ||
815 | +#endif | ||
816 | + u8 ret; | ||
817 | + | ||
818 | + /* Enabling thermistor current */ | ||
819 | + ret = clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, 0x1B, | ||
820 | + REG_BCICTL1); | ||
821 | + if (ret) | ||
822 | + return ret; | ||
823 | + | ||
824 | +#ifdef DEBUG | ||
825 | + twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &ret, REG_BOOT_BCI); | ||
826 | + printk("BCI DEBUG: BOOT_BCI Value is 0x%x\n", ret); | ||
827 | + | ||
828 | + twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &ret, REG_STS_HW_CONDITIONS); | ||
829 | + printk("BCI DEBUG: STS_HW_CONDITIONS Value is 0x%x\n", ret); | ||
830 | + | ||
831 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, REG_BCICTL1); | ||
832 | + printk("BCI DEBUG: BCICTL1 Value is 0x%x\n", ret); | ||
833 | + | ||
834 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, REG_BCICTL2); | ||
835 | + printk("BCI DEBUG: BCICTL2 Value is 0x%x\n", ret); | ||
836 | + | ||
837 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, 0x0); | ||
838 | + printk("BCI DEBUG: BCIMDEN Value is 0x%x\n", ret); | ||
839 | + | ||
840 | + twl_i2c_read_u8(TWL4030_MODULE_INTBR, &ret, REG_GPBR1); | ||
841 | + printk("BCI DEBUG: GPBR1 Value is 0x%x\n", ret); | ||
842 | + | ||
843 | + for(i = 0x0; i <= 0x32; i++) | ||
844 | + { | ||
845 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ret, i); | ||
846 | + printk("BCI DEBUG: BCI 0x%x Value is 0x%x\n", i, ret); | ||
847 | + } | ||
848 | +#endif | ||
849 | + | ||
850 | + return 0; | ||
851 | +} | ||
852 | + | ||
853 | +/* | ||
854 | + * Sets and clears bits on an given register on a given module | ||
855 | + */ | ||
856 | +static inline int clear_n_set(u8 mod_no, u8 clear, u8 set, u8 reg) | ||
857 | +{ | ||
858 | + int ret; | ||
859 | + u8 val = 0; | ||
860 | + | ||
861 | + /* Gets the initial register value */ | ||
862 | + ret = twl_i2c_read_u8(mod_no, &val, reg); | ||
863 | + if (ret) | ||
864 | + return ret; | ||
865 | + /* Clearing all those bits to clear */ | ||
866 | + val &= ~(clear); | ||
867 | + | ||
868 | + /* Setting all those bits to set */ | ||
869 | + val |= set; | ||
870 | + | ||
871 | + /* Update the register */ | ||
872 | + ret = twl_i2c_write_u8(mod_no, val, reg); | ||
873 | + if (ret) | ||
874 | + return ret; | ||
875 | + | ||
876 | + return 0; | ||
877 | +} | ||
878 | + | ||
879 | +static enum power_supply_property twl4030_bci_battery_props[] = { | ||
880 | + POWER_SUPPLY_PROP_STATUS, | ||
881 | + POWER_SUPPLY_PROP_ONLINE, | ||
882 | + POWER_SUPPLY_PROP_VOLTAGE_NOW, | ||
883 | + POWER_SUPPLY_PROP_CURRENT_NOW, | ||
884 | + POWER_SUPPLY_PROP_CAPACITY, | ||
885 | + POWER_SUPPLY_PROP_TEMP, | ||
886 | +}; | ||
887 | + | ||
888 | +static enum power_supply_property twl4030_bk_bci_battery_props[] = { | ||
889 | + POWER_SUPPLY_PROP_VOLTAGE_NOW, | ||
890 | +}; | ||
891 | + | ||
892 | +static void | ||
893 | +twl4030_bk_bci_battery_read_status(struct twl4030_bci_device_info *di) | ||
894 | +{ | ||
895 | + di->bk_voltage_uV = twl4030backupbatt_voltage(); | ||
896 | +} | ||
897 | + | ||
898 | +static void twl4030_bk_bci_battery_work(struct work_struct *work) | ||
899 | +{ | ||
900 | + struct twl4030_bci_device_info *di = container_of(work, | ||
901 | + struct twl4030_bci_device_info, | ||
902 | + twl4030_bk_bci_monitor_work.work); | ||
903 | + | ||
904 | + if(!di->pdata->no_backup_battery) | ||
905 | + twl4030_bk_bci_battery_read_status(di); | ||
906 | + schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 500); | ||
907 | +} | ||
908 | + | ||
909 | +static void twl4030_bci_battery_read_status(struct twl4030_bci_device_info *di) | ||
910 | +{ | ||
911 | + if(di->charge_status != POWER_SUPPLY_STATUS_DISCHARGING) { | ||
912 | + di->temp_C = twl4030battery_temperature(di); | ||
913 | + di->voltage_uV = twl4030battery_voltage(); | ||
914 | + di->current_uA = twl4030battery_current(); | ||
915 | + } | ||
916 | +} | ||
917 | + | ||
918 | +static void | ||
919 | +twl4030_bci_battery_update_status(struct twl4030_bci_device_info *di) | ||
920 | +{ | ||
921 | + if (power_supply_am_i_supplied(&di->bat)) | ||
922 | + di->charge_status = POWER_SUPPLY_STATUS_CHARGING; | ||
923 | + else | ||
924 | + di->charge_status = POWER_SUPPLY_STATUS_DISCHARGING; | ||
925 | + twl4030_bci_battery_read_status(di); | ||
926 | +} | ||
927 | + | ||
928 | +static void twl4030_bci_battery_work(struct work_struct *work) | ||
929 | +{ | ||
930 | + struct twl4030_bci_device_info *di = container_of(work, | ||
931 | + struct twl4030_bci_device_info, twl4030_bci_monitor_work.work); | ||
932 | + | ||
933 | + twl4030_bci_battery_update_status(di); | ||
934 | + schedule_delayed_work(&di->twl4030_bci_monitor_work, 100); | ||
935 | +} | ||
936 | + | ||
937 | + | ||
938 | +#define to_twl4030_bci_device_info(x) container_of((x), \ | ||
939 | + struct twl4030_bci_device_info, bat); | ||
940 | + | ||
941 | +static void twl4030_bci_battery_external_power_changed(struct power_supply *psy) | ||
942 | +{ | ||
943 | + struct twl4030_bci_device_info *di = to_twl4030_bci_device_info(psy); | ||
944 | + | ||
945 | + cancel_delayed_work(&di->twl4030_bci_monitor_work); | ||
946 | + schedule_delayed_work(&di->twl4030_bci_monitor_work, 0); | ||
947 | +} | ||
948 | + | ||
949 | +#define to_twl4030_bk_bci_device_info(x) container_of((x), \ | ||
950 | + struct twl4030_bci_device_info, bk_bat); | ||
951 | + | ||
952 | +static ssize_t | ||
953 | +show_charge_current(struct device *dev, struct device_attribute *attr, char *buf) | ||
954 | +{ | ||
955 | + u8 ctl; | ||
956 | + int ret = read_bci_val(REG_BCIIREF1) & 0x1FF; | ||
957 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &ctl, REG_BCICTL1); | ||
958 | + | ||
959 | + if (ctl & CGAIN) | ||
960 | + ret |= 0x200; | ||
961 | + | ||
962 | +#ifdef DEBUG | ||
963 | + /* Dump debug */ | ||
964 | + twl4030battery_temp_setup(); | ||
965 | +#endif | ||
966 | + | ||
967 | + return sprintf(buf, "%d\n", ret); | ||
968 | +} | ||
969 | + | ||
970 | +static ssize_t | ||
971 | +set_charge_current(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | ||
972 | +{ | ||
973 | + unsigned long newCurrent; | ||
974 | + int ret; | ||
975 | + | ||
976 | + ret = strict_strtoul(buf, 10, &newCurrent); | ||
977 | + if (ret) | ||
978 | + return -EINVAL; | ||
979 | + | ||
980 | + ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, KEY_IIREF, REG_BCIMFKEY); | ||
981 | + if (ret) | ||
982 | + return ret; | ||
983 | + | ||
984 | + ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, newCurrent & 0xff, REG_BCIIREF1); | ||
985 | + if (ret) | ||
986 | + return ret; | ||
987 | + | ||
988 | + ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, KEY_IIREF, REG_BCIMFKEY); | ||
989 | + if (ret) | ||
990 | + return ret; | ||
991 | + | ||
992 | + ret = twl_i2c_write_u8(TWL4030_MODULE_MAIN_CHARGE, (newCurrent >> 8) & 0x1, REG_BCIIREF2); | ||
993 | + if (ret) | ||
994 | + return ret; | ||
995 | + | ||
996 | + /* Set software-controlled charge */ | ||
997 | + twl4030charger_ac_en(ENABLE, 0); | ||
998 | + | ||
999 | + /* Set CGAIN = 0 or 1 */ | ||
1000 | + if(newCurrent > 511) { | ||
1001 | + u8 tmp; | ||
1002 | + | ||
1003 | + /* Set CGAIN = 1 -- need to wait until automatic charge turns off */ | ||
1004 | + while(!ret) { | ||
1005 | + clear_n_set(TWL4030_MODULE_MAIN_CHARGE, 0, CGAIN | 0x1B, REG_BCICTL1); | ||
1006 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &tmp, REG_BCICTL1); | ||
1007 | + | ||
1008 | + ret = tmp & CGAIN; | ||
1009 | + if(!ret) | ||
1010 | + mdelay(50); | ||
1011 | + } | ||
1012 | + } else { | ||
1013 | + u8 tmp; | ||
1014 | + | ||
1015 | + /* Set CGAIN = 0 -- need to wait until automatic charge turns off */ | ||
1016 | + while(!ret) { | ||
1017 | + clear_n_set(TWL4030_MODULE_MAIN_CHARGE, CGAIN, 0x1B, REG_BCICTL1); | ||
1018 | + twl_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, &tmp, REG_BCICTL1); | ||
1019 | + | ||
1020 | + ret = !(tmp & CGAIN); | ||
1021 | + if(!ret) | ||
1022 | + mdelay(50); | ||
1023 | + } | ||
1024 | + } | ||
1025 | + | ||
1026 | + /* Set automatic charge (CGAIN = 0/1 persists) */ | ||
1027 | + twl4030charger_ac_en(ENABLE, 1); | ||
1028 | + | ||
1029 | + return count; | ||
1030 | +} | ||
1031 | + | ||
1032 | +static ssize_t | ||
1033 | +show_voltage(struct device *dev, struct device_attribute *attr, char *buf) | ||
1034 | +{ | ||
1035 | + return sprintf(buf, "%d\n", twl4030battery_voltage_madc()); | ||
1036 | +} | ||
1037 | + | ||
1038 | +static DEVICE_ATTR(charge_current, S_IRUGO | S_IWUGO, show_charge_current, set_charge_current); | ||
1039 | +static DEVICE_ATTR(voltage_now_madc, S_IRUGO, show_voltage, NULL); | ||
1040 | + | ||
1041 | +static int twl4030_bk_bci_battery_get_property(struct power_supply *psy, | ||
1042 | + enum power_supply_property psp, | ||
1043 | + union power_supply_propval *val) | ||
1044 | +{ | ||
1045 | + struct twl4030_bci_device_info *di = to_twl4030_bk_bci_device_info(psy); | ||
1046 | + | ||
1047 | + switch (psp) { | ||
1048 | + case POWER_SUPPLY_PROP_VOLTAGE_NOW: | ||
1049 | + val->intval = di->bk_voltage_uV; | ||
1050 | + break; | ||
1051 | + default: | ||
1052 | + return -EINVAL; | ||
1053 | + } | ||
1054 | + | ||
1055 | + return 0; | ||
1056 | +} | ||
1057 | + | ||
1058 | +static int twl4030_bci_battery_get_property(struct power_supply *psy, | ||
1059 | + enum power_supply_property psp, | ||
1060 | + union power_supply_propval *val) | ||
1061 | +{ | ||
1062 | + struct twl4030_bci_device_info *di; | ||
1063 | + int status = 0; | ||
1064 | + | ||
1065 | + di = to_twl4030_bci_device_info(psy); | ||
1066 | + | ||
1067 | + switch (psp) { | ||
1068 | + case POWER_SUPPLY_PROP_STATUS: | ||
1069 | + val->intval = di->charge_status; | ||
1070 | + return 0; | ||
1071 | + default: | ||
1072 | + break; | ||
1073 | + } | ||
1074 | + | ||
1075 | + switch (psp) { | ||
1076 | + case POWER_SUPPLY_PROP_VOLTAGE_NOW: | ||
1077 | + { | ||
1078 | + /* Get latest data from MADC -- not done periodically by | ||
1079 | + worker as this is more expensive, so only do it when we | ||
1080 | + are actually asked for the data... */ | ||
1081 | + if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING) | ||
1082 | + val->intval = twl4030battery_voltage_madc(); | ||
1083 | + else | ||
1084 | + val->intval = di->voltage_uV; | ||
1085 | + | ||
1086 | + break; | ||
1087 | + } | ||
1088 | + case POWER_SUPPLY_PROP_CURRENT_NOW: | ||
1089 | + /* FIXME: Get from MADC */ | ||
1090 | + if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING) | ||
1091 | + val->intval = 0; | ||
1092 | + else | ||
1093 | + val->intval = di->current_uA; | ||
1094 | + break; | ||
1095 | + case POWER_SUPPLY_PROP_TEMP: | ||
1096 | + val->intval = di->temp_C; | ||
1097 | + break; | ||
1098 | + case POWER_SUPPLY_PROP_ONLINE: | ||
1099 | + status = twl4030bci_status(); | ||
1100 | + if ((status & AC_STATEC) == AC_STATEC) | ||
1101 | + val->intval = POWER_SUPPLY_TYPE_MAINS; | ||
1102 | + else if (usb_charger_flag) | ||
1103 | + val->intval = POWER_SUPPLY_TYPE_USB; | ||
1104 | + else | ||
1105 | + val->intval = 0; | ||
1106 | + break; | ||
1107 | + case POWER_SUPPLY_PROP_CAPACITY: | ||
1108 | + /* Get latest data from MADC -- not done periodically by | ||
1109 | + worker as this is more expensive, so only do it when we | ||
1110 | + are actually asked for the data... */ | ||
1111 | + if(di->charge_status == POWER_SUPPLY_STATUS_DISCHARGING) | ||
1112 | + di->voltage_uV = twl4030battery_voltage_madc(); | ||
1113 | + | ||
1114 | + /* | ||
1115 | + * need to get the correct percentage value per the | ||
1116 | + * battery characteristics. Approx values for now. | ||
1117 | + */ | ||
1118 | + if (di->voltage_uV < 2894 || LVL_1) { | ||
1119 | + val->intval = 5; | ||
1120 | + LVL_1 = 0; | ||
1121 | + } else if ((di->voltage_uV < 3451 && di->voltage_uV > 2894) | ||
1122 | + || LVL_2) { | ||
1123 | + val->intval = 20; | ||
1124 | + LVL_2 = 0; | ||
1125 | + } else if ((di->voltage_uV < 3902 && di->voltage_uV > 3451) | ||
1126 | + || LVL_3) { | ||
1127 | + val->intval = 50; | ||
1128 | + LVL_3 = 0; | ||
1129 | + } else if ((di->voltage_uV < 3949 && di->voltage_uV > 3902) | ||
1130 | + || LVL_4) { | ||
1131 | + val->intval = 75; | ||
1132 | + LVL_4 = 0; | ||
1133 | + } else if (di->voltage_uV > 3949) | ||
1134 | + val->intval = 90; | ||
1135 | + break; | ||
1136 | + default: | ||
1137 | + return -EINVAL; | ||
1138 | + } | ||
1139 | + return 0; | ||
1140 | +} | ||
1141 | + | ||
1142 | +static char *twl4030_bci_supplied_to[] = { | ||
1143 | + "twl4030_bci_battery", | ||
1144 | +}; | ||
1145 | + | ||
1146 | +static int __init twl4030_bci_battery_probe(struct platform_device *pdev) | ||
1147 | +{ | ||
1148 | + struct twl4030_bci_platform_data *pdata = pdev->dev.platform_data; | ||
1149 | + struct twl4030_bci_device_info *di; | ||
1150 | + int irq; | ||
1151 | + int ret; | ||
1152 | + | ||
1153 | + di = kzalloc(sizeof(*di), GFP_KERNEL); | ||
1154 | + if (!di) | ||
1155 | + return -ENOMEM; | ||
1156 | + | ||
1157 | + di->dev = &pdev->dev; | ||
1158 | + di->bat.name = "twl4030_bci_battery"; | ||
1159 | + di->bat.supplied_to = twl4030_bci_supplied_to; | ||
1160 | + di->bat.num_supplicants = ARRAY_SIZE(twl4030_bci_supplied_to); | ||
1161 | + di->bat.type = POWER_SUPPLY_TYPE_BATTERY; | ||
1162 | + di->bat.properties = twl4030_bci_battery_props; | ||
1163 | + di->bat.num_properties = ARRAY_SIZE(twl4030_bci_battery_props); | ||
1164 | + di->bat.get_property = twl4030_bci_battery_get_property; | ||
1165 | + di->bat.external_power_changed = | ||
1166 | + twl4030_bci_battery_external_power_changed; | ||
1167 | + | ||
1168 | + di->charge_status = POWER_SUPPLY_STATUS_UNKNOWN; | ||
1169 | + | ||
1170 | + di->bk_bat.name = "twl4030_bci_bk_battery"; | ||
1171 | + di->bk_bat.type = POWER_SUPPLY_TYPE_BATTERY; | ||
1172 | + di->bk_bat.properties = twl4030_bk_bci_battery_props; | ||
1173 | + di->bk_bat.num_properties = ARRAY_SIZE(twl4030_bk_bci_battery_props); | ||
1174 | + di->bk_bat.get_property = twl4030_bk_bci_battery_get_property; | ||
1175 | + di->bk_bat.external_power_changed = NULL; | ||
1176 | + di->pdata = pdata; | ||
1177 | + | ||
1178 | + /* Set up clocks */ | ||
1179 | + twl_i2c_write_u8(TWL4030_MODULE_INTBR, MADC_HFCLK_EN | DEFAULT_MADC_CLK_EN, REG_GPBR1); | ||
1180 | + | ||
1181 | + twl4030charger_ac_en(ENABLE, CHARGE_MODE); | ||
1182 | + twl4030charger_usb_en(ENABLE); | ||
1183 | + twl4030battery_hw_level_en(ENABLE); | ||
1184 | + twl4030battery_hw_presence_en(ENABLE); | ||
1185 | + | ||
1186 | + platform_set_drvdata(pdev, di); | ||
1187 | + | ||
1188 | + /* settings for temperature sensing */ | ||
1189 | + ret = twl4030battery_temp_setup(); | ||
1190 | + if (ret) | ||
1191 | + goto temp_setup_fail; | ||
1192 | + | ||
1193 | + /* enabling GPCH09 for read back battery voltage */ | ||
1194 | + if(!di->pdata->no_backup_battery) | ||
1195 | + { | ||
1196 | + ret = twl4030backupbatt_voltage_setup(); | ||
1197 | + if (ret) | ||
1198 | + goto voltage_setup_fail; | ||
1199 | + } | ||
1200 | + | ||
1201 | + /* REVISIT do we need to request both IRQs ?? */ | ||
1202 | + | ||
1203 | + /* request BCI interruption */ | ||
1204 | + irq = platform_get_irq(pdev, 1); | ||
1205 | + ret = request_irq(irq, twl4030battery_interrupt, | ||
1206 | + 0, pdev->name, NULL); | ||
1207 | + if (ret) { | ||
1208 | + dev_dbg(&pdev->dev, "could not request irq %d, status %d\n", | ||
1209 | + irq, ret); | ||
1210 | + goto batt_irq_fail; | ||
1211 | + } | ||
1212 | + | ||
1213 | + /* request Power interruption */ | ||
1214 | + irq = platform_get_irq(pdev, 0); | ||
1215 | + ret = request_irq(irq, twl4030charger_interrupt, | ||
1216 | + 0, pdev->name, di); | ||
1217 | + | ||
1218 | + if (ret) { | ||
1219 | + dev_dbg(&pdev->dev, "could not request irq %d, status %d\n", | ||
1220 | + irq, ret); | ||
1221 | + goto chg_irq_fail; | ||
1222 | + } | ||
1223 | + | ||
1224 | + ret = power_supply_register(&pdev->dev, &di->bat); | ||
1225 | + if (ret) { | ||
1226 | + dev_dbg(&pdev->dev, "failed to register main battery\n"); | ||
1227 | + goto batt_failed; | ||
1228 | + } | ||
1229 | + | ||
1230 | + INIT_DELAYED_WORK_DEFERRABLE(&di->twl4030_bci_monitor_work, | ||
1231 | + twl4030_bci_battery_work); | ||
1232 | + schedule_delayed_work(&di->twl4030_bci_monitor_work, 0); | ||
1233 | + | ||
1234 | + if(!pdata->no_backup_battery) | ||
1235 | + { | ||
1236 | + ret = power_supply_register(&pdev->dev, &di->bk_bat); | ||
1237 | + if (ret) { | ||
1238 | + dev_dbg(&pdev->dev, "failed to register backup battery\n"); | ||
1239 | + goto bk_batt_failed; | ||
1240 | + } | ||
1241 | + } | ||
1242 | + | ||
1243 | + ret = device_create_file(di->bat.dev, &dev_attr_voltage_now_madc); | ||
1244 | + ret = device_create_file(di->bat.dev, &dev_attr_charge_current); | ||
1245 | + if (ret) { | ||
1246 | + dev_err(&pdev->dev, "failed to create sysfs entries\n"); | ||
1247 | + goto bk_batt_failed; | ||
1248 | + } | ||
1249 | + | ||
1250 | + INIT_DELAYED_WORK_DEFERRABLE(&di->twl4030_bk_bci_monitor_work, | ||
1251 | + twl4030_bk_bci_battery_work); | ||
1252 | + schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 500); | ||
1253 | + | ||
1254 | + set_charge_current (NULL, NULL, "1023", 4); | ||
1255 | + return 0; | ||
1256 | + | ||
1257 | +bk_batt_failed: | ||
1258 | + if(!pdata->no_backup_battery) | ||
1259 | + power_supply_unregister(&di->bat); | ||
1260 | +batt_failed: | ||
1261 | + free_irq(irq, di); | ||
1262 | +chg_irq_fail: | ||
1263 | + irq = platform_get_irq(pdev, 1); | ||
1264 | + free_irq(irq, NULL); | ||
1265 | +batt_irq_fail: | ||
1266 | +voltage_setup_fail: | ||
1267 | +temp_setup_fail: | ||
1268 | + twl4030charger_ac_en(DISABLE, CHARGE_MODE); | ||
1269 | + twl4030charger_usb_en(DISABLE); | ||
1270 | + twl4030battery_hw_level_en(DISABLE); | ||
1271 | + twl4030battery_hw_presence_en(DISABLE); | ||
1272 | + kfree(di); | ||
1273 | + | ||
1274 | + return ret; | ||
1275 | +} | ||
1276 | + | ||
1277 | +static int __exit twl4030_bci_battery_remove(struct platform_device *pdev) | ||
1278 | +{ | ||
1279 | + struct twl4030_bci_device_info *di = platform_get_drvdata(pdev); | ||
1280 | + int irq; | ||
1281 | + | ||
1282 | + twl4030charger_ac_en(DISABLE, CHARGE_MODE); | ||
1283 | + twl4030charger_usb_en(DISABLE); | ||
1284 | + twl4030battery_hw_level_en(DISABLE); | ||
1285 | + twl4030battery_hw_presence_en(DISABLE); | ||
1286 | + | ||
1287 | + irq = platform_get_irq(pdev, 0); | ||
1288 | + free_irq(irq, di); | ||
1289 | + | ||
1290 | + irq = platform_get_irq(pdev, 1); | ||
1291 | + free_irq(irq, NULL); | ||
1292 | + | ||
1293 | + flush_scheduled_work(); | ||
1294 | + power_supply_unregister(&di->bat); | ||
1295 | + power_supply_unregister(&di->bk_bat); | ||
1296 | + platform_set_drvdata(pdev, NULL); | ||
1297 | + kfree(di); | ||
1298 | + | ||
1299 | + return 0; | ||
1300 | +} | ||
1301 | + | ||
1302 | +#ifdef CONFIG_PM | ||
1303 | +static int twl4030_bci_battery_suspend(struct platform_device *pdev, | ||
1304 | + pm_message_t state) | ||
1305 | +{ | ||
1306 | + struct twl4030_bci_device_info *di = platform_get_drvdata(pdev); | ||
1307 | + | ||
1308 | + di->charge_status = POWER_SUPPLY_STATUS_UNKNOWN; | ||
1309 | + cancel_delayed_work(&di->twl4030_bci_monitor_work); | ||
1310 | + cancel_delayed_work(&di->twl4030_bk_bci_monitor_work); | ||
1311 | + return 0; | ||
1312 | +} | ||
1313 | + | ||
1314 | +static int twl4030_bci_battery_resume(struct platform_device *pdev) | ||
1315 | +{ | ||
1316 | + struct twl4030_bci_device_info *di = platform_get_drvdata(pdev); | ||
1317 | + | ||
1318 | + schedule_delayed_work(&di->twl4030_bci_monitor_work, 0); | ||
1319 | + schedule_delayed_work(&di->twl4030_bk_bci_monitor_work, 50); | ||
1320 | + return 0; | ||
1321 | +} | ||
1322 | +#else | ||
1323 | +#define twl4030_bci_battery_suspend NULL | ||
1324 | +#define twl4030_bci_battery_resume NULL | ||
1325 | +#endif /* CONFIG_PM */ | ||
1326 | + | ||
1327 | +static struct platform_driver twl4030_bci_battery_driver = { | ||
1328 | + .probe = twl4030_bci_battery_probe, | ||
1329 | + .remove = __exit_p(twl4030_bci_battery_remove), | ||
1330 | + .suspend = twl4030_bci_battery_suspend, | ||
1331 | + .resume = twl4030_bci_battery_resume, | ||
1332 | + .driver = { | ||
1333 | + .name = "twl4030_bci", | ||
1334 | + }, | ||
1335 | +}; | ||
1336 | + | ||
1337 | +MODULE_LICENSE("GPL"); | ||
1338 | +MODULE_ALIAS("platform:twl4030_bci"); | ||
1339 | +MODULE_AUTHOR("Texas Instruments Inc"); | ||
1340 | + | ||
1341 | +static int __init twl4030_battery_init(void) | ||
1342 | +{ | ||
1343 | + return platform_driver_register(&twl4030_bci_battery_driver); | ||
1344 | +} | ||
1345 | +module_init(twl4030_battery_init); | ||
1346 | + | ||
1347 | +static void __exit twl4030_battery_exit(void) | ||
1348 | +{ | ||
1349 | + platform_driver_unregister(&twl4030_bci_battery_driver); | ||
1350 | +} | ||
1351 | +module_exit(twl4030_battery_exit); | ||
1352 | + | ||
1353 | diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h | ||
1354 | index d975c5b..a3470ce 100644 | ||
1355 | --- a/include/linux/i2c/twl.h | ||
1356 | +++ b/include/linux/i2c/twl.h | ||
1357 | @@ -442,6 +442,7 @@ struct twl4030_clock_init_data { | ||
1358 | struct twl4030_bci_platform_data { | ||
1359 | int *battery_tmp_tbl; | ||
1360 | unsigned int tblsize; | ||
1361 | + bool no_backup_battery; | ||
1362 | }; | ||
1363 | |||
1364 | /* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */ | ||
1365 | -- | ||
1366 | 1.6.6.1 | ||
1367 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch new file mode 100644 index 00000000..0dc58abf --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0016-ARM-OMAP-omap3-touchbook-update-boardfile.patch | |||
@@ -0,0 +1,620 @@ | |||
1 | From 67a87638586acaf7907f94d2f0d3b09190c23880 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gregoire Gentil <gregoire@gentil.com> | ||
3 | Date: Fri, 12 Mar 2010 11:49:16 +0100 | ||
4 | Subject: [PATCH 16/17] ARM: OMAP: omap3-touchbook: update boardfile | ||
5 | |||
6 | --- | ||
7 | arch/arm/mach-omap2/board-omap3touchbook.c | 417 +++++++++++++++++++++------- | ||
8 | 1 files changed, 322 insertions(+), 95 deletions(-) | ||
9 | |||
10 | diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c | ||
11 | index fc3e03c..c22a3e3 100644 | ||
12 | --- a/arch/arm/mach-omap2/board-omap3touchbook.c | ||
13 | +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | ||
14 | @@ -1,7 +1,7 @@ | ||
15 | /* | ||
16 | * linux/arch/arm/mach-omap2/board-omap3touchbook.c | ||
17 | * | ||
18 | - * Copyright (C) 2009 Always Innovating | ||
19 | + * Copyright (C) 2009-2010 Always Innovating | ||
20 | * | ||
21 | * Modified from mach-omap2/board-omap3beagleboard.c | ||
22 | * | ||
23 | @@ -33,6 +33,7 @@ | ||
24 | #include <linux/spi/spi.h> | ||
25 | |||
26 | #include <linux/spi/ads7846.h> | ||
27 | +#include <linux/mma7455l.h> | ||
28 | |||
29 | #include <linux/regulator/machine.h> | ||
30 | #include <linux/i2c/twl.h> | ||
31 | @@ -45,6 +46,7 @@ | ||
32 | |||
33 | #include <plat/board.h> | ||
34 | #include <plat/common.h> | ||
35 | +#include <plat/display.h> | ||
36 | #include <plat/gpmc.h> | ||
37 | #include <plat/nand.h> | ||
38 | #include <plat/usb.h> | ||
39 | @@ -60,18 +62,22 @@ | ||
40 | |||
41 | #include <asm/setup.h> | ||
42 | |||
43 | +#include <plat/dmtimer.h> | ||
44 | +#include <linux/backlight.h> | ||
45 | |||
46 | #define GPMC_CS0_BASE 0x60 | ||
47 | #define GPMC_CS_SIZE 0x30 | ||
48 | |||
49 | #define NAND_BLOCK_SIZE SZ_128K | ||
50 | |||
51 | +#define OMAP3_HJ_GPIO 56 | ||
52 | #define OMAP3_AC_GPIO 136 | ||
53 | +#define OMAP3_TS2_GPIO 154 | ||
54 | #define OMAP3_TS_GPIO 162 | ||
55 | #define TB_BL_PWM_TIMER 9 | ||
56 | #define TB_KILL_POWER_GPIO 168 | ||
57 | |||
58 | -unsigned long touchbook_revision; | ||
59 | +unsigned long ai_revision = 2; | ||
60 | |||
61 | static struct mtd_partition omap3touchbook_nand_partitions[] = { | ||
62 | /* All the partition sizes are listed in terms of NAND block size */ | ||
63 | @@ -126,6 +132,103 @@ static struct platform_device omap3touchbook_nand_device = { | ||
64 | .resource = &omap3touchbook_nand_resource, | ||
65 | }; | ||
66 | |||
67 | +static int touchbook_enable_dvi(struct omap_dss_device *dssdev) | ||
68 | +{ | ||
69 | + if (dssdev->reset_gpio != -1) | ||
70 | + gpio_set_value(dssdev->reset_gpio, 1); | ||
71 | + | ||
72 | + return 0; | ||
73 | +} | ||
74 | + | ||
75 | +static void touchbook_disable_dvi(struct omap_dss_device *dssdev) | ||
76 | +{ | ||
77 | + if (dssdev->reset_gpio != -1) | ||
78 | + gpio_set_value(dssdev->reset_gpio, 0); | ||
79 | +} | ||
80 | + | ||
81 | +static struct omap_dss_device touchbook_dvi_device = { | ||
82 | + .type = OMAP_DISPLAY_TYPE_DPI, | ||
83 | + .name = "dvi", | ||
84 | + .driver_name = "generic_panel", | ||
85 | + .phy.dpi.data_lines = 24, | ||
86 | + .reset_gpio = 176, | ||
87 | + .platform_enable = touchbook_enable_dvi, | ||
88 | + .platform_disable = touchbook_disable_dvi, | ||
89 | +}; | ||
90 | + | ||
91 | +static int touchbook_panel_enable_tv(struct omap_dss_device *dssdev) | ||
92 | +{ | ||
93 | +#define ENABLE_VDAC_DEDICATED 0x03 | ||
94 | +#define ENABLE_VDAC_DEV_GRP 0x20 | ||
95 | + | ||
96 | + twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, | ||
97 | + ENABLE_VDAC_DEDICATED, | ||
98 | + TWL4030_VDAC_DEDICATED); | ||
99 | + twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, | ||
100 | + ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); | ||
101 | + | ||
102 | + return 0; | ||
103 | +} | ||
104 | + | ||
105 | +static void touchbook_panel_disable_tv(struct omap_dss_device *dssdev) | ||
106 | +{ | ||
107 | + twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, | ||
108 | + TWL4030_VDAC_DEDICATED); | ||
109 | + twl_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, | ||
110 | + TWL4030_VDAC_DEV_GRP); | ||
111 | +} | ||
112 | + | ||
113 | +static struct omap_dss_device touchbook_tv_device = { | ||
114 | + .name = "tv", | ||
115 | + .driver_name = "venc", | ||
116 | + .type = OMAP_DISPLAY_TYPE_VENC, | ||
117 | + .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, | ||
118 | + .platform_enable = touchbook_panel_enable_tv, | ||
119 | + .platform_disable = touchbook_panel_disable_tv, | ||
120 | +}; | ||
121 | + | ||
122 | +static struct omap_dss_device *touchbook_dss_devices[] = { | ||
123 | + &touchbook_dvi_device, | ||
124 | + &touchbook_tv_device, | ||
125 | +}; | ||
126 | + | ||
127 | +static struct omap_dss_board_info touchbook_dss_data = { | ||
128 | + .num_devices = ARRAY_SIZE(touchbook_dss_devices), | ||
129 | + .devices = touchbook_dss_devices, | ||
130 | + .default_device = &touchbook_dvi_device, | ||
131 | +}; | ||
132 | + | ||
133 | +static struct platform_device touchbook_dss_device = { | ||
134 | + .name = "omapdss", | ||
135 | + .id = -1, | ||
136 | + .dev = { | ||
137 | + .platform_data = &touchbook_dss_data, | ||
138 | + }, | ||
139 | +}; | ||
140 | + | ||
141 | +static struct regulator_consumer_supply touchbook_vdac_supply = { | ||
142 | + .supply = "vdda_dac", | ||
143 | + .dev = &touchbook_dss_device.dev, | ||
144 | +}; | ||
145 | + | ||
146 | +static struct regulator_consumer_supply touchbook_vdvi_supply = { | ||
147 | + .supply = "vdds_dsi", | ||
148 | + .dev = &touchbook_dss_device.dev, | ||
149 | +}; | ||
150 | + | ||
151 | +static void __init touchbook_display_init(void) | ||
152 | +{ | ||
153 | + int r; | ||
154 | + | ||
155 | + r = gpio_request(touchbook_dvi_device.reset_gpio, "DVI reset"); | ||
156 | + if (r < 0) { | ||
157 | + printk(KERN_ERR "Unable to get DVI reset GPIO\n"); | ||
158 | + return; | ||
159 | + } | ||
160 | + | ||
161 | + gpio_direction_output(touchbook_dvi_device.reset_gpio, 0); | ||
162 | +} | ||
163 | + | ||
164 | #include "sdram-micron-mt46h32m32lf-6.h" | ||
165 | |||
166 | static struct twl4030_hsmmc_info mmc[] = { | ||
167 | @@ -137,15 +240,6 @@ static struct twl4030_hsmmc_info mmc[] = { | ||
168 | {} /* Terminator */ | ||
169 | }; | ||
170 | |||
171 | -static struct platform_device omap3_touchbook_lcd_device = { | ||
172 | - .name = "omap3touchbook_lcd", | ||
173 | - .id = -1, | ||
174 | -}; | ||
175 | - | ||
176 | -static struct omap_lcd_config omap3_touchbook_lcd_config __initdata = { | ||
177 | - .ctrl_name = "internal", | ||
178 | -}; | ||
179 | - | ||
180 | static struct regulator_consumer_supply touchbook_vmmc1_supply = { | ||
181 | .supply = "vmmc", | ||
182 | }; | ||
183 | @@ -177,6 +271,7 @@ static int touchbook_twl_gpio_setup(struct device *dev, | ||
184 | * power switch and overcurrent detect | ||
185 | */ | ||
186 | |||
187 | +#if 0 | ||
188 | gpio_request(gpio + 1, "EHCI_nOC"); | ||
189 | gpio_direction_input(gpio + 1); | ||
190 | |||
191 | @@ -187,6 +282,7 @@ static int touchbook_twl_gpio_setup(struct device *dev, | ||
192 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | ||
193 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | ||
194 | |||
195 | +#endif | ||
196 | return 0; | ||
197 | } | ||
198 | |||
199 | @@ -201,16 +297,6 @@ static struct twl4030_gpio_platform_data touchbook_gpio_data = { | ||
200 | .setup = touchbook_twl_gpio_setup, | ||
201 | }; | ||
202 | |||
203 | -static struct regulator_consumer_supply touchbook_vdac_supply = { | ||
204 | - .supply = "vdac", | ||
205 | - .dev = &omap3_touchbook_lcd_device.dev, | ||
206 | -}; | ||
207 | - | ||
208 | -static struct regulator_consumer_supply touchbook_vdvi_supply = { | ||
209 | - .supply = "vdvi", | ||
210 | - .dev = &omap3_touchbook_lcd_device.dev, | ||
211 | -}; | ||
212 | - | ||
213 | /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ | ||
214 | static struct regulator_init_data touchbook_vmmc1 = { | ||
215 | .constraints = { | ||
216 | @@ -283,6 +369,15 @@ static struct twl4030_codec_data touchbook_codec_data = { | ||
217 | .audio = &touchbook_audio_data, | ||
218 | }; | ||
219 | |||
220 | +static struct twl4030_bci_platform_data touchbook_bci_data = { | ||
221 | + .tblsize = 0, | ||
222 | + .no_backup_battery = 1, | ||
223 | +}; | ||
224 | + | ||
225 | +static struct twl4030_madc_platform_data touchbook_madc_data = { | ||
226 | + .irq_line = 1, | ||
227 | +}; | ||
228 | + | ||
229 | static struct twl4030_platform_data touchbook_twldata = { | ||
230 | .irq_base = TWL4030_IRQ_BASE, | ||
231 | .irq_end = TWL4030_IRQ_END, | ||
232 | @@ -291,10 +386,15 @@ static struct twl4030_platform_data touchbook_twldata = { | ||
233 | .usb = &touchbook_usb_data, | ||
234 | .gpio = &touchbook_gpio_data, | ||
235 | .codec = &touchbook_codec_data, | ||
236 | + .madc = &touchbook_madc_data, | ||
237 | .vmmc1 = &touchbook_vmmc1, | ||
238 | .vsim = &touchbook_vsim, | ||
239 | .vdac = &touchbook_vdac, | ||
240 | .vpll2 = &touchbook_vpll2, | ||
241 | + | ||
242 | + /* TouchBook BCI */ | ||
243 | + .bci = &touchbook_bci_data, | ||
244 | + .madc = &touchbook_madc_data, | ||
245 | }; | ||
246 | |||
247 | static struct i2c_board_info __initdata touchbook_i2c_boardinfo[] = { | ||
248 | @@ -310,10 +410,18 @@ static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = { | ||
249 | { | ||
250 | I2C_BOARD_INFO("bq27200", 0x55), | ||
251 | }, | ||
252 | + { | ||
253 | + I2C_BOARD_INFO("chacha", 0x40), | ||
254 | + .irq = OMAP_GPIO_IRQ(OMAP3_TS2_GPIO), | ||
255 | + }, | ||
256 | + { | ||
257 | + I2C_BOARD_INFO("ds1307", 0x68), | ||
258 | + }, | ||
259 | }; | ||
260 | |||
261 | static int __init omap3_touchbook_i2c_init(void) | ||
262 | { | ||
263 | + int ret; | ||
264 | /* Standard TouchBook bus */ | ||
265 | omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo, | ||
266 | ARRAY_SIZE(touchbook_i2c_boardinfo)); | ||
267 | @@ -322,53 +430,16 @@ static int __init omap3_touchbook_i2c_init(void) | ||
268 | omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo, | ||
269 | ARRAY_SIZE(touchBook_i2c_boardinfo)); | ||
270 | |||
271 | - return 0; | ||
272 | -} | ||
273 | - | ||
274 | -static void __init omap3_ads7846_init(void) | ||
275 | -{ | ||
276 | - if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) { | ||
277 | - printk(KERN_ERR "Failed to request GPIO %d for " | ||
278 | - "ads7846 pen down IRQ\n", OMAP3_TS_GPIO); | ||
279 | - return; | ||
280 | + ret = gpio_request(OMAP3_TS2_GPIO, "chacha"); | ||
281 | + if (ret < 0) { | ||
282 | + printk(KERN_ERR "Failed to request GPIO %d for chacha IRQ\n", OMAP3_TS2_GPIO); | ||
283 | + return 0; | ||
284 | } | ||
285 | + gpio_direction_input(OMAP3_TS2_GPIO); | ||
286 | |||
287 | - gpio_direction_input(OMAP3_TS_GPIO); | ||
288 | - omap_set_gpio_debounce(OMAP3_TS_GPIO, 1); | ||
289 | - omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa); | ||
290 | + return 0; | ||
291 | } | ||
292 | |||
293 | -static struct ads7846_platform_data ads7846_config = { | ||
294 | - .x_min = 100, | ||
295 | - .y_min = 265, | ||
296 | - .x_max = 3950, | ||
297 | - .y_max = 3750, | ||
298 | - .x_plate_ohms = 40, | ||
299 | - .pressure_max = 255, | ||
300 | - .debounce_max = 10, | ||
301 | - .debounce_tol = 5, | ||
302 | - .debounce_rep = 1, | ||
303 | - .gpio_pendown = OMAP3_TS_GPIO, | ||
304 | - .keep_vref_on = 1, | ||
305 | -}; | ||
306 | - | ||
307 | -static struct omap2_mcspi_device_config ads7846_mcspi_config = { | ||
308 | - .turbo_mode = 0, | ||
309 | - .single_channel = 1, /* 0: slave, 1: master */ | ||
310 | -}; | ||
311 | - | ||
312 | -static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = { | ||
313 | - { | ||
314 | - .modalias = "ads7846", | ||
315 | - .bus_num = 4, | ||
316 | - .chip_select = 0, | ||
317 | - .max_speed_hz = 1500000, | ||
318 | - .controller_data = &ads7846_mcspi_config, | ||
319 | - .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO), | ||
320 | - .platform_data = &ads7846_config, | ||
321 | - } | ||
322 | -}; | ||
323 | - | ||
324 | static struct gpio_led gpio_leds[] = { | ||
325 | { | ||
326 | .name = "touchbook::usr0", | ||
327 | @@ -412,6 +483,7 @@ static struct gpio_keys_button gpio_buttons[] = { | ||
328 | .gpio = 183, | ||
329 | .desc = "power", | ||
330 | .wakeup = 1, | ||
331 | + .active_low = 1, | ||
332 | }, | ||
333 | }; | ||
334 | |||
335 | @@ -428,23 +500,8 @@ static struct platform_device keys_gpio = { | ||
336 | }, | ||
337 | }; | ||
338 | |||
339 | -static struct omap_board_config_kernel omap3_touchbook_config[] __initdata = { | ||
340 | - { OMAP_TAG_LCD, &omap3_touchbook_lcd_config }, | ||
341 | -}; | ||
342 | - | ||
343 | -#ifdef CONFIG_OMAP_MUX | ||
344 | -static struct omap_board_mux board_mux[] __initdata = { | ||
345 | - { .reg_offset = OMAP_MUX_TERMINATOR }, | ||
346 | -}; | ||
347 | -#else | ||
348 | -#define board_mux NULL | ||
349 | -#endif | ||
350 | - | ||
351 | static void __init omap3_touchbook_init_irq(void) | ||
352 | { | ||
353 | - omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | ||
354 | - omap_board_config = omap3_touchbook_config; | ||
355 | - omap_board_config_size = ARRAY_SIZE(omap3_touchbook_config); | ||
356 | omap2_init_common_hw(mt46h32m32lf6_sdrc_params, | ||
357 | mt46h32m32lf6_sdrc_params, omap35x_mpu_rate_table, | ||
358 | omap35x_dsp_rate_table, omap35x_l3_rate_table); | ||
359 | @@ -456,9 +513,9 @@ static void __init omap3_touchbook_init_irq(void) | ||
360 | } | ||
361 | |||
362 | static struct platform_device *omap3_touchbook_devices[] __initdata = { | ||
363 | - &omap3_touchbook_lcd_device, | ||
364 | &leds_gpio, | ||
365 | &keys_gpio, | ||
366 | + &touchbook_dss_device, | ||
367 | }; | ||
368 | |||
369 | static void __init omap3touchbook_flash_init(void) | ||
370 | @@ -500,7 +557,7 @@ static void __init omap3touchbook_flash_init(void) | ||
371 | } | ||
372 | } | ||
373 | |||
374 | -static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | ||
375 | +static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { | ||
376 | |||
377 | .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, | ||
378 | .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, | ||
379 | @@ -512,6 +569,170 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { | ||
380 | .reset_gpio_port[2] = -EINVAL | ||
381 | }; | ||
382 | |||
383 | +#ifdef CONFIG_OMAP_MUX | ||
384 | +static struct omap_board_mux board_mux[] __initdata = { | ||
385 | + { .reg_offset = OMAP_MUX_TERMINATOR }, | ||
386 | +}; | ||
387 | +#else | ||
388 | +#define board_mux NULL | ||
389 | +#endif | ||
390 | + | ||
391 | +static struct ads7846_platform_data ads7846_config = { | ||
392 | + .x_min = 100, | ||
393 | + .y_min = 265, | ||
394 | + .x_max = 3950, | ||
395 | + .y_max = 3750, | ||
396 | + .x_plate_ohms = 40, | ||
397 | + .pressure_max = 255, | ||
398 | + .debounce_max = 10, | ||
399 | + .debounce_tol = 5, | ||
400 | + .debounce_rep = 1, | ||
401 | + .gpio_pendown = OMAP3_TS_GPIO, | ||
402 | + .keep_vref_on = 1, | ||
403 | +}; | ||
404 | + | ||
405 | +static struct omap2_mcspi_device_config ads7846_mcspi_config = { | ||
406 | + .turbo_mode = 0, | ||
407 | + .single_channel = 1, /* 0: slave, 1: master */ | ||
408 | +}; | ||
409 | + | ||
410 | +static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = { | ||
411 | + { | ||
412 | + .modalias = "ads7846", | ||
413 | + .bus_num = 4, | ||
414 | + .chip_select = 0, | ||
415 | + .max_speed_hz = 1500000, | ||
416 | + .controller_data = &ads7846_mcspi_config, | ||
417 | + .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO), | ||
418 | + .platform_data = &ads7846_config, | ||
419 | + } | ||
420 | +}; | ||
421 | + | ||
422 | +static void __init omap3_ads7846_init(void) | ||
423 | +{ | ||
424 | + if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) { | ||
425 | + printk(KERN_ERR "Failed to request GPIO %d for " | ||
426 | + "ads7846 pen down IRQ\n", OMAP3_TS_GPIO); | ||
427 | + return; | ||
428 | + } | ||
429 | + | ||
430 | + gpio_direction_input(OMAP3_TS_GPIO); | ||
431 | + omap_set_gpio_debounce(OMAP3_TS_GPIO, 1); | ||
432 | + omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa); | ||
433 | +} | ||
434 | + | ||
435 | +static struct mma7455l_platform_data mma7455l_config = { | ||
436 | + .calibration_x = -4, | ||
437 | + .calibration_y = 28, | ||
438 | + .calibration_z = -28, | ||
439 | +}; | ||
440 | + | ||
441 | +static struct omap2_mcspi_device_config mma7455l_mcspi_config = { | ||
442 | + .turbo_mode = 0, | ||
443 | + .single_channel = 1, /* 0: slave, 1: master */ | ||
444 | +}; | ||
445 | + | ||
446 | +static struct spi_board_info omap3_mma7455l_spi_board_info[] __initdata = { | ||
447 | + { | ||
448 | + .modalias = "mma7455l", | ||
449 | + .bus_num = 3, | ||
450 | + .chip_select = 0, | ||
451 | + .max_speed_hz = 200000, | ||
452 | + .irq = OMAP_GPIO_IRQ(OMAP3_AC_GPIO), | ||
453 | + .controller_data = &mma7455l_mcspi_config, //(void *) 135, | ||
454 | + .platform_data = &mma7455l_config, | ||
455 | + } | ||
456 | +}; | ||
457 | + | ||
458 | +static void __init omap3_mma7455l_init(void) | ||
459 | +{ | ||
460 | + int ret; | ||
461 | + | ||
462 | + ret = gpio_request(OMAP3_AC_GPIO, "mma7455l"); | ||
463 | + if (ret < 0) { | ||
464 | + printk(KERN_ERR "Failed to request GPIO %d for mma7455l IRQ\n", OMAP3_AC_GPIO); | ||
465 | + return; | ||
466 | + } | ||
467 | + | ||
468 | + gpio_direction_input(OMAP3_AC_GPIO); | ||
469 | +} | ||
470 | + | ||
471 | +static int touchbook_backlight_brightness = 50; | ||
472 | +static struct omap_dm_timer *touchbook_backlight_pwm; | ||
473 | + | ||
474 | +static int touchbook_backlight_read(struct backlight_device *bd) | ||
475 | +{ | ||
476 | + return touchbook_backlight_brightness; | ||
477 | +} | ||
478 | + | ||
479 | +static int touchbook_backlight_update(struct backlight_device *bd) | ||
480 | +{ | ||
481 | + int value = bd->props.brightness; | ||
482 | + touchbook_backlight_brightness = value; | ||
483 | + | ||
484 | + /* Frequency calculation: | ||
485 | + - For 200Hz PWM, you want to load -164 (=> -32768Hz / 200Hz). | ||
486 | + - Minimum duty cycle for the backlight is 15%. | ||
487 | + - You have (164*0.85) => ~140 levels of brightness. | ||
488 | + */ | ||
489 | + | ||
490 | + /* Halve input brightness */ | ||
491 | + if (!bd->props.boost) | ||
492 | + value /= 2; | ||
493 | + | ||
494 | + /* For maximum brightness, just stop the timer... */ | ||
495 | + if(value != bd->props.max_brightness) | ||
496 | + { | ||
497 | + /* Load the appropriate value for 200Hz PWM */ | ||
498 | + u32 period = clk_get_rate(omap_dm_timer_get_fclk(touchbook_backlight_pwm)) / bd->props.pwm_fq; | ||
499 | + | ||
500 | + /* Minimum duty cycle is 15% */ | ||
501 | + u32 minimum = (period * bd->props.min_duty) / 100; | ||
502 | + u32 maximum = (period * 17) / 20; | ||
503 | + | ||
504 | + /* Work out match value */ | ||
505 | + u32 match = (maximum * value) / 100; | ||
506 | + | ||
507 | + /* Start... */ | ||
508 | + omap_dm_timer_set_load(touchbook_backlight_pwm, 1, 0xFFFFFFFF - period - 1); | ||
509 | + omap_dm_timer_set_match(touchbook_backlight_pwm, 1, 0xFFFFFFFF - minimum - match); | ||
510 | + omap_dm_timer_write_counter(touchbook_backlight_pwm, -1); | ||
511 | + omap_dm_timer_start(touchbook_backlight_pwm); | ||
512 | + } | ||
513 | + else | ||
514 | + omap_dm_timer_stop(touchbook_backlight_pwm); | ||
515 | + | ||
516 | + | ||
517 | + return 0; | ||
518 | +} | ||
519 | + | ||
520 | +static struct backlight_ops touchbook_backlight_properties = { | ||
521 | + .get_brightness = touchbook_backlight_read, | ||
522 | + .update_status = touchbook_backlight_update, | ||
523 | +}; | ||
524 | + | ||
525 | +static void __init omap3_touchbook_backlight_init(void) | ||
526 | +{ | ||
527 | + static struct backlight_device *bd; | ||
528 | + bd = backlight_device_register("touchbook", NULL, NULL, &touchbook_backlight_properties); | ||
529 | + | ||
530 | + if(bd) | ||
531 | + { | ||
532 | + touchbook_backlight_pwm = omap_dm_timer_request_specific(TB_BL_PWM_TIMER); | ||
533 | + omap_dm_timer_enable(touchbook_backlight_pwm); | ||
534 | + omap_dm_timer_set_source(touchbook_backlight_pwm, OMAP_TIMER_SRC_SYS_CLK); | ||
535 | + omap_dm_timer_set_pwm(touchbook_backlight_pwm, 1, 1, OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE); | ||
536 | + | ||
537 | + bd->props.max_brightness = 100; | ||
538 | + bd->props.brightness = touchbook_backlight_brightness; | ||
539 | + bd->props.boost = 0; | ||
540 | + bd->props.min_duty = 15; | ||
541 | + bd->props.pwm_fq = 200; | ||
542 | + } | ||
543 | + | ||
544 | + touchbook_backlight_update(bd); | ||
545 | +} | ||
546 | + | ||
547 | static void omap3_touchbook_poweroff(void) | ||
548 | { | ||
549 | int r; | ||
550 | @@ -525,33 +746,26 @@ static void omap3_touchbook_poweroff(void) | ||
551 | gpio_direction_output(TB_KILL_POWER_GPIO, 0); | ||
552 | } | ||
553 | |||
554 | -static void __init early_touchbook_revision(char **p) | ||
555 | +static int __init ai_revision_instance(char *str) | ||
556 | { | ||
557 | - if (!*p) | ||
558 | - return; | ||
559 | + if (!str) | ||
560 | + return -EINVAL; | ||
561 | + | ||
562 | + ai_revision = simple_strtoul(str, NULL, 10); | ||
563 | |||
564 | - strict_strtoul(*p, 10, &touchbook_revision); | ||
565 | + return 0; | ||
566 | } | ||
567 | -__early_param("tbr=", early_touchbook_revision); | ||
568 | |||
569 | static void __init omap3_touchbook_init(void) | ||
570 | { | ||
571 | pm_power_off = omap3_touchbook_poweroff; | ||
572 | |||
573 | + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | ||
574 | omap3_touchbook_i2c_init(); | ||
575 | platform_add_devices(omap3_touchbook_devices, | ||
576 | ARRAY_SIZE(omap3_touchbook_devices)); | ||
577 | omap_serial_init(); | ||
578 | |||
579 | - omap_mux_init_gpio(170, OMAP_PIN_INPUT); | ||
580 | - gpio_request(176, "DVI_nPD"); | ||
581 | - /* REVISIT leave DVI powered down until it's needed ... */ | ||
582 | - gpio_direction_output(176, true); | ||
583 | - | ||
584 | - /* Touchscreen and accelerometer */ | ||
585 | - spi_register_board_info(omap3_ads7846_spi_board_info, | ||
586 | - ARRAY_SIZE(omap3_ads7846_spi_board_info)); | ||
587 | - omap3_ads7846_init(); | ||
588 | usb_musb_init(); | ||
589 | usb_ehci_init(&ehci_pdata); | ||
590 | omap3touchbook_flash_init(); | ||
591 | @@ -559,6 +773,17 @@ static void __init omap3_touchbook_init(void) | ||
592 | /* Ensure SDRC pins are mux'd for self-refresh */ | ||
593 | omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); | ||
594 | omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); | ||
595 | + | ||
596 | + touchbook_display_init(); | ||
597 | + omap3_touchbook_backlight_init(); | ||
598 | + | ||
599 | + /* Touchscreen and accelerometer */ | ||
600 | + spi_register_board_info(omap3_ads7846_spi_board_info, | ||
601 | + ARRAY_SIZE(omap3_ads7846_spi_board_info)); | ||
602 | + spi_register_board_info(omap3_mma7455l_spi_board_info, | ||
603 | + ARRAY_SIZE(omap3_mma7455l_spi_board_info)); | ||
604 | + omap3_ads7846_init(); | ||
605 | + omap3_mma7455l_init(); | ||
606 | } | ||
607 | |||
608 | static void __init omap3_touchbook_map_io(void) | ||
609 | @@ -567,6 +792,8 @@ static void __init omap3_touchbook_map_io(void) | ||
610 | omap2_map_common_io(); | ||
611 | } | ||
612 | |||
613 | +early_param("air", ai_revision_instance); | ||
614 | + | ||
615 | MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board") | ||
616 | /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */ | ||
617 | .phys_io = 0x48000000, | ||
618 | -- | ||
619 | 1.6.6.1 | ||
620 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch new file mode 100644 index 00000000..8a06ead4 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/0017-ARM-OMAP-add-800MHz-OPP-and-remove-125MHz-one.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 1f36c057ab83a5c5e8162094fb52022edd5ba9b8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Koen Kooi <koen@dominion.thruhere.net> | ||
3 | Date: Tue, 4 May 2010 09:01:21 +0200 | ||
4 | Subject: [PATCH 17/17] ARM: OMAP: add 800MHz OPP and remove 125MHz one | ||
5 | |||
6 | --- | ||
7 | arch/arm/mach-omap2/pm34xx.c | 6 ++++-- | ||
8 | 1 files changed, 4 insertions(+), 2 deletions(-) | ||
9 | |||
10 | diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c | ||
11 | index d1cc528..42fbcdd 100644 | ||
12 | --- a/arch/arm/mach-omap2/pm34xx.c | ||
13 | +++ b/arch/arm/mach-omap2/pm34xx.c | ||
14 | @@ -120,7 +120,7 @@ static struct prm_setup_vc prm_setup = { | ||
15 | struct omap_opp omap35x_mpu_rate_table[] = { | ||
16 | {0, 0, 0}, | ||
17 | /*OPP1*/ | ||
18 | - {S125M, VDD1_OPP1, 0x1E}, | ||
19 | +// {S125M, VDD1_OPP1, 0x1E}, | ||
20 | /*OPP2*/ | ||
21 | {S250M, VDD1_OPP2, 0x26}, | ||
22 | /*OPP3*/ | ||
23 | @@ -131,12 +131,13 @@ struct omap_opp omap35x_mpu_rate_table[] = { | ||
24 | {S600M, VDD1_OPP5, 0x3C}, | ||
25 | /*OPP6*/ | ||
26 | {S720M, VDD1_OPP6, 0x3C}, | ||
27 | + {S800M, VDD1_OPP6, 0x3F}, | ||
28 | }; | ||
29 | |||
30 | struct omap_opp omap35x_dsp_rate_table[] = { | ||
31 | {0, 0, 0}, | ||
32 | /*OPP1*/ | ||
33 | - {S90M, VDD1_OPP1, 0x1E}, | ||
34 | +// {S90M, VDD1_OPP1, 0x1E}, | ||
35 | /*OPP2*/ | ||
36 | {S180M, VDD1_OPP2, 0x26}, | ||
37 | /*OPP3*/ | ||
38 | @@ -147,6 +148,7 @@ struct omap_opp omap35x_dsp_rate_table[] = { | ||
39 | {S430M, VDD1_OPP5, 0x3C}, | ||
40 | /*OPP5*/ | ||
41 | {S520M, VDD1_OPP6, 0x3C}, | ||
42 | + {S600M, VDD1_OPP6, 0x3F}, | ||
43 | }; | ||
44 | |||
45 | struct omap_opp omap35x_l3_rate_table[] = { | ||
46 | -- | ||
47 | 1.6.6.1 | ||
48 | |||
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig new file mode 100644 index 00000000..6f2b7bd9 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/omap3-touchbook/defconfig | |||
@@ -0,0 +1,3043 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.32 | ||
4 | # Mon May 10 12:50:28 2010 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
8 | CONFIG_GENERIC_GPIO=y | ||
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_STACKTRACE_SUPPORT=y | ||
13 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
14 | CONFIG_LOCKDEP_SUPPORT=y | ||
15 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
16 | CONFIG_HARDIRQS_SW_RESEND=y | ||
17 | CONFIG_GENERIC_IRQ_PROBE=y | ||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
19 | CONFIG_ARCH_HAS_CPUFREQ=y | ||
20 | CONFIG_GENERIC_HWEIGHT=y | ||
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
22 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
23 | CONFIG_OPROFILE_ARMV7=y | ||
24 | CONFIG_VECTORS_BASE=0xffff0000 | ||
25 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
26 | CONFIG_CONSTRUCTORS=y | ||
27 | |||
28 | # | ||
29 | # General setup | ||
30 | # | ||
31 | CONFIG_EXPERIMENTAL=y | ||
32 | CONFIG_BROKEN_ON_SMP=y | ||
33 | CONFIG_LOCK_KERNEL=y | ||
34 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
35 | CONFIG_LOCALVERSION="" | ||
36 | # CONFIG_LOCALVERSION_AUTO is not set | ||
37 | CONFIG_SWAP=y | ||
38 | CONFIG_SYSVIPC=y | ||
39 | CONFIG_SYSVIPC_SYSCTL=y | ||
40 | # CONFIG_POSIX_MQUEUE is not set | ||
41 | CONFIG_BSD_PROCESS_ACCT=y | ||
42 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
43 | CONFIG_TASKSTATS=y | ||
44 | CONFIG_TASK_DELAY_ACCT=y | ||
45 | CONFIG_TASK_XACCT=y | ||
46 | CONFIG_TASK_IO_ACCOUNTING=y | ||
47 | # CONFIG_AUDIT is not set | ||
48 | |||
49 | # | ||
50 | # RCU Subsystem | ||
51 | # | ||
52 | CONFIG_TREE_RCU=y | ||
53 | # CONFIG_TREE_PREEMPT_RCU is not set | ||
54 | # CONFIG_TINY_RCU is not set | ||
55 | # CONFIG_RCU_TRACE is not set | ||
56 | CONFIG_RCU_FANOUT=32 | ||
57 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
58 | # CONFIG_TREE_RCU_TRACE is not set | ||
59 | CONFIG_IKCONFIG=y | ||
60 | CONFIG_IKCONFIG_PROC=y | ||
61 | CONFIG_LOG_BUF_SHIFT=15 | ||
62 | CONFIG_GROUP_SCHED=y | ||
63 | CONFIG_FAIR_GROUP_SCHED=y | ||
64 | # CONFIG_RT_GROUP_SCHED is not set | ||
65 | CONFIG_USER_SCHED=y | ||
66 | # CONFIG_CGROUP_SCHED is not set | ||
67 | # CONFIG_CGROUPS is not set | ||
68 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
69 | # CONFIG_RELAY is not set | ||
70 | # CONFIG_NAMESPACES is not set | ||
71 | CONFIG_BLK_DEV_INITRD=y | ||
72 | CONFIG_INITRAMFS_SOURCE="" | ||
73 | CONFIG_RD_GZIP=y | ||
74 | CONFIG_RD_BZIP2=y | ||
75 | CONFIG_RD_LZMA=y | ||
76 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
77 | CONFIG_SYSCTL=y | ||
78 | CONFIG_ANON_INODES=y | ||
79 | CONFIG_EMBEDDED=y | ||
80 | CONFIG_UID16=y | ||
81 | # CONFIG_SYSCTL_SYSCALL is not set | ||
82 | CONFIG_KALLSYMS=y | ||
83 | # CONFIG_KALLSYMS_ALL is not set | ||
84 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
85 | CONFIG_HOTPLUG=y | ||
86 | CONFIG_PRINTK=y | ||
87 | CONFIG_BUG=y | ||
88 | # CONFIG_ELF_CORE is not set | ||
89 | CONFIG_BASE_FULL=y | ||
90 | CONFIG_FUTEX=y | ||
91 | CONFIG_EPOLL=y | ||
92 | CONFIG_SIGNALFD=y | ||
93 | CONFIG_TIMERFD=y | ||
94 | CONFIG_EVENTFD=y | ||
95 | CONFIG_SHMEM=y | ||
96 | CONFIG_AIO=y | ||
97 | |||
98 | # | ||
99 | # Kernel Performance Events And Counters | ||
100 | # | ||
101 | CONFIG_VM_EVENT_COUNTERS=y | ||
102 | # CONFIG_COMPAT_BRK is not set | ||
103 | CONFIG_SLAB=y | ||
104 | # CONFIG_SLUB is not set | ||
105 | # CONFIG_SLOB is not set | ||
106 | CONFIG_PROFILING=y | ||
107 | CONFIG_TRACEPOINTS=y | ||
108 | CONFIG_OPROFILE=m | ||
109 | CONFIG_HAVE_OPROFILE=y | ||
110 | # CONFIG_KPROBES is not set | ||
111 | CONFIG_HAVE_KPROBES=y | ||
112 | CONFIG_HAVE_KRETPROBES=y | ||
113 | CONFIG_HAVE_CLK=y | ||
114 | |||
115 | # | ||
116 | # GCOV-based kernel profiling | ||
117 | # | ||
118 | # CONFIG_GCOV_KERNEL is not set | ||
119 | CONFIG_SLOW_WORK=y | ||
120 | # CONFIG_SLOW_WORK_DEBUG is not set | ||
121 | CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
122 | CONFIG_SLABINFO=y | ||
123 | CONFIG_RT_MUTEXES=y | ||
124 | CONFIG_BASE_SMALL=0 | ||
125 | CONFIG_MODULES=y | ||
126 | CONFIG_MODULE_FORCE_LOAD=y | ||
127 | CONFIG_MODULE_UNLOAD=y | ||
128 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
129 | CONFIG_MODVERSIONS=y | ||
130 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
131 | CONFIG_BLOCK=y | ||
132 | CONFIG_LBDAF=y | ||
133 | CONFIG_BLK_DEV_BSG=y | ||
134 | CONFIG_BLK_DEV_INTEGRITY=y | ||
135 | |||
136 | # | ||
137 | # IO Schedulers | ||
138 | # | ||
139 | CONFIG_IOSCHED_NOOP=y | ||
140 | CONFIG_IOSCHED_DEADLINE=y | ||
141 | CONFIG_IOSCHED_CFQ=y | ||
142 | # CONFIG_DEFAULT_DEADLINE is not set | ||
143 | CONFIG_DEFAULT_CFQ=y | ||
144 | # CONFIG_DEFAULT_NOOP is not set | ||
145 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
146 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
147 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
148 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
149 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
150 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
151 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
152 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
153 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
154 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
155 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
156 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
157 | # CONFIG_INLINE_READ_LOCK is not set | ||
158 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
159 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
160 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
161 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
162 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
163 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
164 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
165 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
166 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
167 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
168 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
169 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
170 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
171 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
172 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
173 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
174 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
175 | CONFIG_FREEZER=y | ||
176 | |||
177 | # | ||
178 | # System Type | ||
179 | # | ||
180 | CONFIG_MMU=y | ||
181 | # CONFIG_ARCH_AAEC2000 is not set | ||
182 | # CONFIG_ARCH_INTEGRATOR is not set | ||
183 | # CONFIG_ARCH_REALVIEW is not set | ||
184 | # CONFIG_ARCH_VERSATILE is not set | ||
185 | # CONFIG_ARCH_AT91 is not set | ||
186 | # CONFIG_ARCH_CLPS711X is not set | ||
187 | # CONFIG_ARCH_GEMINI is not set | ||
188 | # CONFIG_ARCH_EBSA110 is not set | ||
189 | # CONFIG_ARCH_EP93XX is not set | ||
190 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
191 | # CONFIG_ARCH_MXC is not set | ||
192 | # CONFIG_ARCH_STMP3XXX is not set | ||
193 | # CONFIG_ARCH_NETX is not set | ||
194 | # CONFIG_ARCH_H720X is not set | ||
195 | # CONFIG_ARCH_NOMADIK is not set | ||
196 | # CONFIG_ARCH_IOP13XX is not set | ||
197 | # CONFIG_ARCH_IOP32X is not set | ||
198 | # CONFIG_ARCH_IOP33X is not set | ||
199 | # CONFIG_ARCH_IXP23XX is not set | ||
200 | # CONFIG_ARCH_IXP2000 is not set | ||
201 | # CONFIG_ARCH_IXP4XX is not set | ||
202 | # CONFIG_ARCH_L7200 is not set | ||
203 | # CONFIG_ARCH_DOVE is not set | ||
204 | # CONFIG_ARCH_KIRKWOOD is not set | ||
205 | # CONFIG_ARCH_LOKI is not set | ||
206 | # CONFIG_ARCH_MV78XX0 is not set | ||
207 | # CONFIG_ARCH_ORION5X is not set | ||
208 | # CONFIG_ARCH_MMP is not set | ||
209 | # CONFIG_ARCH_KS8695 is not set | ||
210 | # CONFIG_ARCH_NS9XXX is not set | ||
211 | # CONFIG_ARCH_W90X900 is not set | ||
212 | # CONFIG_ARCH_PNX4008 is not set | ||
213 | # CONFIG_ARCH_PXA is not set | ||
214 | # CONFIG_ARCH_MSM is not set | ||
215 | # CONFIG_ARCH_RPC is not set | ||
216 | # CONFIG_ARCH_SA1100 is not set | ||
217 | # CONFIG_ARCH_S3C2410 is not set | ||
218 | # CONFIG_ARCH_S3C64XX is not set | ||
219 | # CONFIG_ARCH_S5PC1XX is not set | ||
220 | # CONFIG_ARCH_SHARK is not set | ||
221 | # CONFIG_ARCH_LH7A40X is not set | ||
222 | # CONFIG_ARCH_U300 is not set | ||
223 | # CONFIG_ARCH_DAVINCI is not set | ||
224 | CONFIG_ARCH_OMAP=y | ||
225 | # CONFIG_ARCH_BCMRING is not set | ||
226 | # CONFIG_ARCH_U8500 is not set | ||
227 | |||
228 | # | ||
229 | # TI OMAP Implementations | ||
230 | # | ||
231 | CONFIG_ARCH_OMAP_OTG=y | ||
232 | # CONFIG_ARCH_OMAP1 is not set | ||
233 | # CONFIG_ARCH_OMAP2 is not set | ||
234 | CONFIG_ARCH_OMAP3=y | ||
235 | # CONFIG_ARCH_OMAP4 is not set | ||
236 | |||
237 | # | ||
238 | # OMAP Feature Selections | ||
239 | # | ||
240 | CONFIG_OMAP_SMARTREFLEX=y | ||
241 | # CONFIG_OMAP_SMARTREFLEX_TESTING is not set | ||
242 | CONFIG_OMAP_RESET_CLOCKS=y | ||
243 | # CONFIG_OMAP_MUX is not set | ||
244 | CONFIG_OMAP_MCBSP=y | ||
245 | CONFIG_OMAP_MBOX_FWK=m | ||
246 | # CONFIG_OMAP_MPU_TIMER is not set | ||
247 | CONFIG_OMAP_32K_TIMER=y | ||
248 | # CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set | ||
249 | # CONFIG_OMAP3_DEBOBS is not set | ||
250 | CONFIG_OMAP_32K_TIMER_HZ=128 | ||
251 | CONFIG_OMAP_DM_TIMER=y | ||
252 | # CONFIG_OMAP_LL_DEBUG_UART1 is not set | ||
253 | # CONFIG_OMAP_LL_DEBUG_UART2 is not set | ||
254 | CONFIG_OMAP_LL_DEBUG_UART3=y | ||
255 | # CONFIG_OMAP_LL_DEBUG_NONE is not set | ||
256 | # CONFIG_OMAP_PM_NONE is not set | ||
257 | # CONFIG_OMAP_PM_NOOP is not set | ||
258 | CONFIG_OMAP_PM_SRF=y | ||
259 | CONFIG_ARCH_OMAP34XX=y | ||
260 | CONFIG_ARCH_OMAP3430=y | ||
261 | |||
262 | # | ||
263 | # OMAP Board Type | ||
264 | # | ||
265 | # CONFIG_MACH_OMAP3_BEAGLE is not set | ||
266 | # CONFIG_MACH_OMAP_LDP is not set | ||
267 | # CONFIG_MACH_OVERO is not set | ||
268 | # CONFIG_MACH_OMAP3EVM is not set | ||
269 | # CONFIG_MACH_OMAP3517EVM is not set | ||
270 | # CONFIG_MACH_OMAP3_PANDORA is not set | ||
271 | CONFIG_MACH_OMAP3_TOUCHBOOK=y | ||
272 | # CONFIG_MACH_OMAP_3430SDP is not set | ||
273 | # CONFIG_MACH_NOKIA_RX51 is not set | ||
274 | # CONFIG_MACH_OMAP_ZOOM2 is not set | ||
275 | # CONFIG_MACH_OMAP_ZOOM3 is not set | ||
276 | # CONFIG_MACH_CM_T35 is not set | ||
277 | # CONFIG_MACH_IGEP0020 is not set | ||
278 | # CONFIG_MACH_OMAP_3630SDP is not set | ||
279 | # CONFIG_OMAP3_EMU is not set | ||
280 | # CONFIG_OMAP3_SDRC_AC_TIMING is not set | ||
281 | |||
282 | # | ||
283 | # Processor Type | ||
284 | # | ||
285 | CONFIG_CPU_32=y | ||
286 | CONFIG_CPU_32v6K=y | ||
287 | CONFIG_CPU_V7=y | ||
288 | CONFIG_CPU_32v7=y | ||
289 | CONFIG_CPU_ABRT_EV7=y | ||
290 | CONFIG_CPU_PABRT_V7=y | ||
291 | CONFIG_CPU_CACHE_V7=y | ||
292 | CONFIG_CPU_CACHE_VIPT=y | ||
293 | CONFIG_CPU_COPY_V6=y | ||
294 | CONFIG_CPU_TLB_V7=y | ||
295 | CONFIG_CPU_HAS_ASID=y | ||
296 | CONFIG_CPU_CP15=y | ||
297 | CONFIG_CPU_CP15_MMU=y | ||
298 | |||
299 | # | ||
300 | # Processor Features | ||
301 | # | ||
302 | CONFIG_ARM_THUMB=y | ||
303 | CONFIG_ARM_THUMBEE=y | ||
304 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
305 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
306 | # CONFIG_CPU_BPREDICT_DISABLE is not set | ||
307 | CONFIG_HAS_TLS_REG=y | ||
308 | CONFIG_ARM_L1_CACHE_SHIFT=6 | ||
309 | # CONFIG_USER_L2_PLE is not set | ||
310 | # CONFIG_USER_PMON is not set | ||
311 | CONFIG_ARM_ERRATA_430973=y | ||
312 | # CONFIG_ARM_ERRATA_458693 is not set | ||
313 | # CONFIG_ARM_ERRATA_460075 is not set | ||
314 | CONFIG_COMMON_CLKDEV=y | ||
315 | |||
316 | # | ||
317 | # Bus support | ||
318 | # | ||
319 | # CONFIG_PCI_SYSCALL is not set | ||
320 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
321 | # CONFIG_PCCARD is not set | ||
322 | |||
323 | # | ||
324 | # Kernel Features | ||
325 | # | ||
326 | CONFIG_TICK_ONESHOT=y | ||
327 | CONFIG_NO_HZ=y | ||
328 | CONFIG_HIGH_RES_TIMERS=y | ||
329 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
330 | # CONFIG_VMSPLIT_3G is not set | ||
331 | CONFIG_VMSPLIT_2G=y | ||
332 | # CONFIG_VMSPLIT_1G is not set | ||
333 | CONFIG_PAGE_OFFSET=0x80000000 | ||
334 | # CONFIG_PREEMPT_NONE is not set | ||
335 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
336 | CONFIG_PREEMPT=y | ||
337 | CONFIG_HZ=128 | ||
338 | # CONFIG_THUMB2_KERNEL is not set | ||
339 | CONFIG_AEABI=y | ||
340 | # CONFIG_OABI_COMPAT is not set | ||
341 | CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y | ||
342 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||
343 | # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||
344 | # CONFIG_HIGHMEM is not set | ||
345 | CONFIG_SELECT_MEMORY_MODEL=y | ||
346 | CONFIG_FLATMEM_MANUAL=y | ||
347 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
348 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
349 | CONFIG_FLATMEM=y | ||
350 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
351 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
352 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
353 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
354 | CONFIG_ZONE_DMA_FLAG=0 | ||
355 | CONFIG_VIRT_TO_BUS=y | ||
356 | # CONFIG_KSM is not set | ||
357 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
358 | CONFIG_LEDS=y | ||
359 | CONFIG_ALIGNMENT_TRAP=y | ||
360 | # CONFIG_UACCESS_WITH_MEMCPY is not set | ||
361 | CONFIG_CPU_V7_SYSFS=y | ||
362 | |||
363 | # | ||
364 | # Boot options | ||
365 | # | ||
366 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
367 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
368 | CONFIG_CMDLINE=" debug " | ||
369 | # CONFIG_XIP_KERNEL is not set | ||
370 | CONFIG_KEXEC=y | ||
371 | CONFIG_ATAGS_PROC=y | ||
372 | |||
373 | # | ||
374 | # CPU Power Management | ||
375 | # | ||
376 | CONFIG_CPU_FREQ=y | ||
377 | CONFIG_CPU_FREQ_TABLE=y | ||
378 | # CONFIG_CPU_FREQ_DEBUG is not set | ||
379 | CONFIG_CPU_FREQ_STAT=y | ||
380 | CONFIG_CPU_FREQ_STAT_DETAILS=y | ||
381 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||
382 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
383 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | ||
384 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | ||
385 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | ||
386 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
387 | CONFIG_CPU_FREQ_GOV_POWERSAVE=y | ||
388 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | ||
389 | CONFIG_CPU_FREQ_GOV_ONDEMAND=y | ||
390 | CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y | ||
391 | CONFIG_CPU_IDLE=y | ||
392 | CONFIG_CPU_IDLE_GOV_LADDER=y | ||
393 | CONFIG_CPU_IDLE_GOV_MENU=y | ||
394 | |||
395 | # | ||
396 | # Floating point emulation | ||
397 | # | ||
398 | |||
399 | # | ||
400 | # At least one emulation must be selected | ||
401 | # | ||
402 | CONFIG_VFP=y | ||
403 | CONFIG_VFPv3=y | ||
404 | CONFIG_NEON=y | ||
405 | |||
406 | # | ||
407 | # Userspace binary formats | ||
408 | # | ||
409 | CONFIG_BINFMT_ELF=y | ||
410 | CONFIG_HAVE_AOUT=y | ||
411 | CONFIG_BINFMT_AOUT=m | ||
412 | CONFIG_BINFMT_MISC=m | ||
413 | |||
414 | # | ||
415 | # Power management options | ||
416 | # | ||
417 | CONFIG_PM=y | ||
418 | CONFIG_PM_DEBUG=y | ||
419 | # CONFIG_PM_VERBOSE is not set | ||
420 | CONFIG_CAN_PM_TRACE=y | ||
421 | CONFIG_PM_SLEEP=y | ||
422 | CONFIG_SUSPEND=y | ||
423 | # CONFIG_PM_TEST_SUSPEND is not set | ||
424 | CONFIG_SUSPEND_FREEZER=y | ||
425 | # CONFIG_APM_EMULATION is not set | ||
426 | # CONFIG_PM_RUNTIME is not set | ||
427 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
428 | CONFIG_NET=y | ||
429 | |||
430 | # | ||
431 | # Networking options | ||
432 | # | ||
433 | CONFIG_PACKET=y | ||
434 | CONFIG_PACKET_MMAP=y | ||
435 | CONFIG_UNIX=y | ||
436 | CONFIG_XFRM=y | ||
437 | # CONFIG_XFRM_USER is not set | ||
438 | # CONFIG_XFRM_SUB_POLICY is not set | ||
439 | # CONFIG_XFRM_MIGRATE is not set | ||
440 | # CONFIG_XFRM_STATISTICS is not set | ||
441 | CONFIG_XFRM_IPCOMP=m | ||
442 | CONFIG_NET_KEY=y | ||
443 | # CONFIG_NET_KEY_MIGRATE is not set | ||
444 | CONFIG_INET=y | ||
445 | # CONFIG_IP_MULTICAST is not set | ||
446 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
447 | CONFIG_IP_FIB_HASH=y | ||
448 | CONFIG_IP_PNP=y | ||
449 | CONFIG_IP_PNP_DHCP=y | ||
450 | CONFIG_IP_PNP_BOOTP=y | ||
451 | CONFIG_IP_PNP_RARP=y | ||
452 | CONFIG_NET_IPIP=m | ||
453 | CONFIG_NET_IPGRE=m | ||
454 | # CONFIG_ARPD is not set | ||
455 | # CONFIG_SYN_COOKIES is not set | ||
456 | CONFIG_INET_AH=m | ||
457 | CONFIG_INET_ESP=m | ||
458 | CONFIG_INET_IPCOMP=m | ||
459 | CONFIG_INET_XFRM_TUNNEL=m | ||
460 | CONFIG_INET_TUNNEL=m | ||
461 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
462 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
463 | CONFIG_INET_XFRM_MODE_BEET=y | ||
464 | CONFIG_INET_LRO=y | ||
465 | CONFIG_INET_DIAG=m | ||
466 | CONFIG_INET_TCP_DIAG=m | ||
467 | CONFIG_TCP_CONG_ADVANCED=y | ||
468 | CONFIG_TCP_CONG_BIC=m | ||
469 | CONFIG_TCP_CONG_CUBIC=y | ||
470 | CONFIG_TCP_CONG_WESTWOOD=m | ||
471 | CONFIG_TCP_CONG_HTCP=m | ||
472 | CONFIG_TCP_CONG_HSTCP=m | ||
473 | CONFIG_TCP_CONG_HYBLA=m | ||
474 | CONFIG_TCP_CONG_VEGAS=m | ||
475 | CONFIG_TCP_CONG_SCALABLE=m | ||
476 | CONFIG_TCP_CONG_LP=m | ||
477 | CONFIG_TCP_CONG_VENO=m | ||
478 | CONFIG_TCP_CONG_YEAH=m | ||
479 | CONFIG_TCP_CONG_ILLINOIS=m | ||
480 | # CONFIG_DEFAULT_BIC is not set | ||
481 | CONFIG_DEFAULT_CUBIC=y | ||
482 | # CONFIG_DEFAULT_HTCP is not set | ||
483 | # CONFIG_DEFAULT_VEGAS is not set | ||
484 | # CONFIG_DEFAULT_WESTWOOD is not set | ||
485 | # CONFIG_DEFAULT_RENO is not set | ||
486 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
487 | # CONFIG_TCP_MD5SIG is not set | ||
488 | CONFIG_IPV6=m | ||
489 | # CONFIG_IPV6_PRIVACY is not set | ||
490 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
491 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
492 | CONFIG_INET6_AH=m | ||
493 | CONFIG_INET6_ESP=m | ||
494 | CONFIG_INET6_IPCOMP=m | ||
495 | CONFIG_IPV6_MIP6=m | ||
496 | CONFIG_INET6_XFRM_TUNNEL=m | ||
497 | CONFIG_INET6_TUNNEL=m | ||
498 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
499 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
500 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
501 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
502 | CONFIG_IPV6_SIT=m | ||
503 | # CONFIG_IPV6_SIT_6RD is not set | ||
504 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
505 | CONFIG_IPV6_TUNNEL=m | ||
506 | CONFIG_IPV6_MULTIPLE_TABLES=y | ||
507 | CONFIG_IPV6_SUBTREES=y | ||
508 | CONFIG_IPV6_MROUTE=y | ||
509 | # CONFIG_IPV6_PIMSM_V2 is not set | ||
510 | # CONFIG_NETWORK_SECMARK is not set | ||
511 | CONFIG_NETFILTER=y | ||
512 | # CONFIG_NETFILTER_DEBUG is not set | ||
513 | CONFIG_NETFILTER_ADVANCED=y | ||
514 | CONFIG_BRIDGE_NETFILTER=y | ||
515 | |||
516 | # | ||
517 | # Core Netfilter Configuration | ||
518 | # | ||
519 | CONFIG_NETFILTER_NETLINK=m | ||
520 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
521 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
522 | CONFIG_NF_CONNTRACK=m | ||
523 | CONFIG_NF_CT_ACCT=y | ||
524 | CONFIG_NF_CONNTRACK_MARK=y | ||
525 | CONFIG_NF_CONNTRACK_EVENTS=y | ||
526 | CONFIG_NF_CT_PROTO_DCCP=m | ||
527 | CONFIG_NF_CT_PROTO_GRE=m | ||
528 | CONFIG_NF_CT_PROTO_SCTP=m | ||
529 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
530 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
531 | CONFIG_NF_CONNTRACK_FTP=m | ||
532 | CONFIG_NF_CONNTRACK_H323=m | ||
533 | CONFIG_NF_CONNTRACK_IRC=m | ||
534 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
535 | CONFIG_NF_CONNTRACK_PPTP=m | ||
536 | CONFIG_NF_CONNTRACK_SANE=m | ||
537 | CONFIG_NF_CONNTRACK_SIP=m | ||
538 | CONFIG_NF_CONNTRACK_TFTP=m | ||
539 | CONFIG_NF_CT_NETLINK=m | ||
540 | # CONFIG_NETFILTER_TPROXY is not set | ||
541 | CONFIG_NETFILTER_XTABLES=m | ||
542 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
543 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
544 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
545 | CONFIG_NETFILTER_XT_TARGET_HL=m | ||
546 | # CONFIG_NETFILTER_XT_TARGET_LED is not set | ||
547 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
548 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
549 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
550 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set | ||
551 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
552 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | ||
553 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
554 | # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set | ||
555 | # CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set | ||
556 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
557 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
558 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
559 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
560 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
561 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
562 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
563 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
564 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
565 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
566 | CONFIG_NETFILTER_XT_MATCH_HL=m | ||
567 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
568 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
569 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
570 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
571 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
572 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
573 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
574 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
575 | # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set | ||
576 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
577 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
578 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
579 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
580 | CONFIG_NETFILTER_XT_MATCH_RECENT=m | ||
581 | # CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set | ||
582 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
583 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
584 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
585 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
586 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
587 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
588 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
589 | # CONFIG_NETFILTER_XT_MATCH_OSF is not set | ||
590 | CONFIG_IP_VS=m | ||
591 | CONFIG_IP_VS_IPV6=y | ||
592 | CONFIG_IP_VS_DEBUG=y | ||
593 | CONFIG_IP_VS_TAB_BITS=12 | ||
594 | |||
595 | # | ||
596 | # IPVS transport protocol load balancing support | ||
597 | # | ||
598 | CONFIG_IP_VS_PROTO_TCP=y | ||
599 | CONFIG_IP_VS_PROTO_UDP=y | ||
600 | CONFIG_IP_VS_PROTO_AH_ESP=y | ||
601 | CONFIG_IP_VS_PROTO_ESP=y | ||
602 | CONFIG_IP_VS_PROTO_AH=y | ||
603 | |||
604 | # | ||
605 | # IPVS scheduler | ||
606 | # | ||
607 | CONFIG_IP_VS_RR=m | ||
608 | CONFIG_IP_VS_WRR=m | ||
609 | CONFIG_IP_VS_LC=m | ||
610 | CONFIG_IP_VS_WLC=m | ||
611 | CONFIG_IP_VS_LBLC=m | ||
612 | CONFIG_IP_VS_LBLCR=m | ||
613 | CONFIG_IP_VS_DH=m | ||
614 | CONFIG_IP_VS_SH=m | ||
615 | CONFIG_IP_VS_SED=m | ||
616 | CONFIG_IP_VS_NQ=m | ||
617 | |||
618 | # | ||
619 | # IPVS application helper | ||
620 | # | ||
621 | CONFIG_IP_VS_FTP=m | ||
622 | |||
623 | # | ||
624 | # IP: Netfilter Configuration | ||
625 | # | ||
626 | CONFIG_NF_DEFRAG_IPV4=m | ||
627 | CONFIG_NF_CONNTRACK_IPV4=m | ||
628 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
629 | CONFIG_IP_NF_QUEUE=m | ||
630 | CONFIG_IP_NF_IPTABLES=m | ||
631 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
632 | CONFIG_IP_NF_MATCH_AH=m | ||
633 | CONFIG_IP_NF_MATCH_ECN=m | ||
634 | CONFIG_IP_NF_MATCH_TTL=m | ||
635 | CONFIG_IP_NF_FILTER=m | ||
636 | CONFIG_IP_NF_TARGET_REJECT=m | ||
637 | CONFIG_IP_NF_TARGET_LOG=m | ||
638 | CONFIG_IP_NF_TARGET_ULOG=m | ||
639 | CONFIG_NF_NAT=m | ||
640 | CONFIG_NF_NAT_NEEDED=y | ||
641 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
642 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
643 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
644 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
645 | CONFIG_NF_NAT_PROTO_DCCP=m | ||
646 | CONFIG_NF_NAT_PROTO_GRE=m | ||
647 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
648 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
649 | CONFIG_NF_NAT_FTP=m | ||
650 | CONFIG_NF_NAT_IRC=m | ||
651 | CONFIG_NF_NAT_TFTP=m | ||
652 | CONFIG_NF_NAT_AMANDA=m | ||
653 | CONFIG_NF_NAT_PPTP=m | ||
654 | CONFIG_NF_NAT_H323=m | ||
655 | CONFIG_NF_NAT_SIP=m | ||
656 | CONFIG_IP_NF_MANGLE=m | ||
657 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
658 | CONFIG_IP_NF_TARGET_ECN=m | ||
659 | CONFIG_IP_NF_TARGET_TTL=m | ||
660 | CONFIG_IP_NF_RAW=m | ||
661 | CONFIG_IP_NF_ARPTABLES=m | ||
662 | CONFIG_IP_NF_ARPFILTER=m | ||
663 | CONFIG_IP_NF_ARP_MANGLE=m | ||
664 | |||
665 | # | ||
666 | # IPv6: Netfilter Configuration | ||
667 | # | ||
668 | CONFIG_NF_CONNTRACK_IPV6=m | ||
669 | CONFIG_IP6_NF_QUEUE=m | ||
670 | CONFIG_IP6_NF_IPTABLES=m | ||
671 | CONFIG_IP6_NF_MATCH_AH=m | ||
672 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
673 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
674 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
675 | CONFIG_IP6_NF_MATCH_HL=m | ||
676 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
677 | CONFIG_IP6_NF_MATCH_MH=m | ||
678 | CONFIG_IP6_NF_MATCH_RT=m | ||
679 | CONFIG_IP6_NF_TARGET_HL=m | ||
680 | CONFIG_IP6_NF_TARGET_LOG=m | ||
681 | CONFIG_IP6_NF_FILTER=m | ||
682 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
683 | CONFIG_IP6_NF_MANGLE=m | ||
684 | CONFIG_IP6_NF_RAW=m | ||
685 | # CONFIG_BRIDGE_NF_EBTABLES is not set | ||
686 | CONFIG_IP_DCCP=m | ||
687 | CONFIG_INET_DCCP_DIAG=m | ||
688 | |||
689 | # | ||
690 | # DCCP CCIDs Configuration (EXPERIMENTAL) | ||
691 | # | ||
692 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
693 | CONFIG_IP_DCCP_CCID3=y | ||
694 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
695 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
696 | CONFIG_IP_DCCP_TFRC_LIB=y | ||
697 | |||
698 | # | ||
699 | # DCCP Kernel Hacking | ||
700 | # | ||
701 | # CONFIG_IP_DCCP_DEBUG is not set | ||
702 | CONFIG_IP_SCTP=m | ||
703 | # CONFIG_SCTP_DBG_MSG is not set | ||
704 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
705 | # CONFIG_SCTP_HMAC_NONE is not set | ||
706 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
707 | CONFIG_SCTP_HMAC_MD5=y | ||
708 | # CONFIG_RDS is not set | ||
709 | CONFIG_TIPC=m | ||
710 | # CONFIG_TIPC_ADVANCED is not set | ||
711 | # CONFIG_TIPC_DEBUG is not set | ||
712 | CONFIG_ATM=m | ||
713 | CONFIG_ATM_CLIP=m | ||
714 | # CONFIG_ATM_CLIP_NO_ICMP is not set | ||
715 | CONFIG_ATM_LANE=m | ||
716 | CONFIG_ATM_MPOA=m | ||
717 | CONFIG_ATM_BR2684=m | ||
718 | # CONFIG_ATM_BR2684_IPFILTER is not set | ||
719 | CONFIG_STP=m | ||
720 | CONFIG_GARP=m | ||
721 | CONFIG_BRIDGE=m | ||
722 | # CONFIG_NET_DSA is not set | ||
723 | CONFIG_VLAN_8021Q=m | ||
724 | CONFIG_VLAN_8021Q_GVRP=y | ||
725 | # CONFIG_DECNET is not set | ||
726 | CONFIG_LLC=m | ||
727 | # CONFIG_LLC2 is not set | ||
728 | # CONFIG_IPX is not set | ||
729 | # CONFIG_ATALK is not set | ||
730 | # CONFIG_X25 is not set | ||
731 | # CONFIG_LAPB is not set | ||
732 | # CONFIG_ECONET is not set | ||
733 | CONFIG_WAN_ROUTER=m | ||
734 | # CONFIG_PHONET is not set | ||
735 | CONFIG_IEEE802154=m | ||
736 | CONFIG_NET_SCHED=y | ||
737 | |||
738 | # | ||
739 | # Queueing/Scheduling | ||
740 | # | ||
741 | CONFIG_NET_SCH_CBQ=m | ||
742 | CONFIG_NET_SCH_HTB=m | ||
743 | CONFIG_NET_SCH_HFSC=m | ||
744 | CONFIG_NET_SCH_ATM=m | ||
745 | CONFIG_NET_SCH_PRIO=m | ||
746 | CONFIG_NET_SCH_MULTIQ=m | ||
747 | CONFIG_NET_SCH_RED=m | ||
748 | CONFIG_NET_SCH_SFQ=m | ||
749 | CONFIG_NET_SCH_TEQL=m | ||
750 | CONFIG_NET_SCH_TBF=m | ||
751 | CONFIG_NET_SCH_GRED=m | ||
752 | CONFIG_NET_SCH_DSMARK=m | ||
753 | CONFIG_NET_SCH_NETEM=m | ||
754 | CONFIG_NET_SCH_DRR=m | ||
755 | |||
756 | # | ||
757 | # Classification | ||
758 | # | ||
759 | CONFIG_NET_CLS=y | ||
760 | CONFIG_NET_CLS_BASIC=m | ||
761 | CONFIG_NET_CLS_TCINDEX=m | ||
762 | CONFIG_NET_CLS_ROUTE4=m | ||
763 | CONFIG_NET_CLS_ROUTE=y | ||
764 | CONFIG_NET_CLS_FW=m | ||
765 | CONFIG_NET_CLS_U32=m | ||
766 | CONFIG_CLS_U32_PERF=y | ||
767 | CONFIG_CLS_U32_MARK=y | ||
768 | CONFIG_NET_CLS_RSVP=m | ||
769 | CONFIG_NET_CLS_RSVP6=m | ||
770 | CONFIG_NET_CLS_FLOW=m | ||
771 | # CONFIG_NET_EMATCH is not set | ||
772 | # CONFIG_NET_CLS_ACT is not set | ||
773 | CONFIG_NET_CLS_IND=y | ||
774 | CONFIG_NET_SCH_FIFO=y | ||
775 | # CONFIG_DCB is not set | ||
776 | |||
777 | # | ||
778 | # Network testing | ||
779 | # | ||
780 | # CONFIG_NET_PKTGEN is not set | ||
781 | # CONFIG_NET_DROP_MONITOR is not set | ||
782 | # CONFIG_HAMRADIO is not set | ||
783 | CONFIG_CAN=m | ||
784 | CONFIG_CAN_RAW=m | ||
785 | CONFIG_CAN_BCM=m | ||
786 | |||
787 | # | ||
788 | # CAN Device Drivers | ||
789 | # | ||
790 | CONFIG_CAN_VCAN=m | ||
791 | # CONFIG_CAN_DEV is not set | ||
792 | # CONFIG_CAN_DEBUG_DEVICES is not set | ||
793 | CONFIG_IRDA=m | ||
794 | |||
795 | # | ||
796 | # IrDA protocols | ||
797 | # | ||
798 | CONFIG_IRLAN=m | ||
799 | CONFIG_IRNET=m | ||
800 | CONFIG_IRCOMM=m | ||
801 | CONFIG_IRDA_ULTRA=y | ||
802 | |||
803 | # | ||
804 | # IrDA options | ||
805 | # | ||
806 | CONFIG_IRDA_CACHE_LAST_LSAP=y | ||
807 | CONFIG_IRDA_FAST_RR=y | ||
808 | CONFIG_IRDA_DEBUG=y | ||
809 | |||
810 | # | ||
811 | # Infrared-port device drivers | ||
812 | # | ||
813 | |||
814 | # | ||
815 | # SIR device drivers | ||
816 | # | ||
817 | CONFIG_IRTTY_SIR=m | ||
818 | |||
819 | # | ||
820 | # Dongle support | ||
821 | # | ||
822 | CONFIG_DONGLE=y | ||
823 | CONFIG_ESI_DONGLE=m | ||
824 | CONFIG_ACTISYS_DONGLE=m | ||
825 | CONFIG_TEKRAM_DONGLE=m | ||
826 | CONFIG_TOIM3232_DONGLE=m | ||
827 | CONFIG_LITELINK_DONGLE=m | ||
828 | CONFIG_MA600_DONGLE=m | ||
829 | CONFIG_GIRBIL_DONGLE=m | ||
830 | CONFIG_MCP2120_DONGLE=m | ||
831 | CONFIG_OLD_BELKIN_DONGLE=m | ||
832 | # CONFIG_ACT200L_DONGLE is not set | ||
833 | CONFIG_KINGSUN_DONGLE=m | ||
834 | CONFIG_KSDAZZLE_DONGLE=m | ||
835 | CONFIG_KS959_DONGLE=m | ||
836 | |||
837 | # | ||
838 | # FIR device drivers | ||
839 | # | ||
840 | CONFIG_USB_IRDA=m | ||
841 | CONFIG_SIGMATEL_FIR=m | ||
842 | CONFIG_MCS_FIR=m | ||
843 | CONFIG_BT=m | ||
844 | CONFIG_BT_L2CAP=m | ||
845 | CONFIG_BT_SCO=m | ||
846 | CONFIG_BT_RFCOMM=m | ||
847 | CONFIG_BT_RFCOMM_TTY=y | ||
848 | CONFIG_BT_BNEP=m | ||
849 | CONFIG_BT_BNEP_MC_FILTER=y | ||
850 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
851 | CONFIG_BT_HIDP=m | ||
852 | |||
853 | # | ||
854 | # Bluetooth device drivers | ||
855 | # | ||
856 | CONFIG_BT_HCIBTUSB=m | ||
857 | CONFIG_BT_HCIBTSDIO=m | ||
858 | CONFIG_BT_HCIUART=m | ||
859 | CONFIG_BT_HCIUART_H4=y | ||
860 | CONFIG_BT_HCIUART_BCSP=y | ||
861 | CONFIG_BT_HCIUART_LL=y | ||
862 | CONFIG_BT_HCIBCM203X=m | ||
863 | CONFIG_BT_HCIBPA10X=m | ||
864 | CONFIG_BT_HCIBFUSB=m | ||
865 | # CONFIG_BT_HCIVHCI is not set | ||
866 | # CONFIG_BT_MRVL is not set | ||
867 | CONFIG_AF_RXRPC=m | ||
868 | # CONFIG_AF_RXRPC_DEBUG is not set | ||
869 | # CONFIG_RXKAD is not set | ||
870 | CONFIG_FIB_RULES=y | ||
871 | CONFIG_WIRELESS=y | ||
872 | CONFIG_WIRELESS_EXT=y | ||
873 | CONFIG_WEXT_CORE=y | ||
874 | CONFIG_WEXT_PROC=y | ||
875 | CONFIG_WEXT_SPY=y | ||
876 | CONFIG_WEXT_PRIV=y | ||
877 | CONFIG_CFG80211=m | ||
878 | # CONFIG_NL80211_TESTMODE is not set | ||
879 | # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set | ||
880 | # CONFIG_CFG80211_REG_DEBUG is not set | ||
881 | CONFIG_CFG80211_DEFAULT_PS=y | ||
882 | # CONFIG_CFG80211_DEBUGFS is not set | ||
883 | CONFIG_WIRELESS_OLD_REGULATORY=y | ||
884 | CONFIG_CFG80211_WEXT=y | ||
885 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
886 | CONFIG_LIB80211=y | ||
887 | CONFIG_LIB80211_CRYPT_WEP=m | ||
888 | CONFIG_LIB80211_CRYPT_CCMP=m | ||
889 | CONFIG_LIB80211_CRYPT_TKIP=m | ||
890 | # CONFIG_LIB80211_DEBUG is not set | ||
891 | CONFIG_MAC80211=m | ||
892 | CONFIG_MAC80211_RC_PID=y | ||
893 | CONFIG_MAC80211_RC_MINSTREL=y | ||
894 | CONFIG_MAC80211_RC_DEFAULT_PID=y | ||
895 | # CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set | ||
896 | CONFIG_MAC80211_RC_DEFAULT="pid" | ||
897 | # CONFIG_MAC80211_MESH is not set | ||
898 | CONFIG_MAC80211_LEDS=y | ||
899 | # CONFIG_MAC80211_DEBUGFS is not set | ||
900 | # CONFIG_MAC80211_DEBUG_MENU is not set | ||
901 | CONFIG_WIMAX=m | ||
902 | CONFIG_WIMAX_DEBUG_LEVEL=8 | ||
903 | CONFIG_RFKILL=m | ||
904 | CONFIG_RFKILL_LEDS=y | ||
905 | CONFIG_RFKILL_INPUT=y | ||
906 | CONFIG_NET_9P=m | ||
907 | # CONFIG_NET_9P_DEBUG is not set | ||
908 | |||
909 | # | ||
910 | # Device Drivers | ||
911 | # | ||
912 | |||
913 | # | ||
914 | # Generic Driver Options | ||
915 | # | ||
916 | CONFIG_UEVENT_HELPER_PATH="" | ||
917 | CONFIG_DEVTMPFS=y | ||
918 | CONFIG_DEVTMPFS_MOUNT=y | ||
919 | CONFIG_STANDALONE=y | ||
920 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
921 | CONFIG_FW_LOADER=y | ||
922 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
923 | CONFIG_EXTRA_FIRMWARE="" | ||
924 | # CONFIG_DEBUG_DRIVER is not set | ||
925 | # CONFIG_DEBUG_DEVRES is not set | ||
926 | # CONFIG_SYS_HYPERVISOR is not set | ||
927 | # CONFIG_CONNECTOR is not set | ||
928 | CONFIG_MTD=y | ||
929 | # CONFIG_MTD_DEBUG is not set | ||
930 | # CONFIG_MTD_TESTS is not set | ||
931 | CONFIG_MTD_CONCAT=y | ||
932 | CONFIG_MTD_PARTITIONS=y | ||
933 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
934 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
935 | # CONFIG_MTD_AFS_PARTS is not set | ||
936 | # CONFIG_MTD_AR7_PARTS is not set | ||
937 | |||
938 | # | ||
939 | # User Modules And Translation Layers | ||
940 | # | ||
941 | CONFIG_MTD_CHAR=y | ||
942 | CONFIG_MTD_BLKDEVS=y | ||
943 | CONFIG_MTD_BLOCK=y | ||
944 | # CONFIG_FTL is not set | ||
945 | # CONFIG_NFTL is not set | ||
946 | # CONFIG_INFTL is not set | ||
947 | # CONFIG_RFD_FTL is not set | ||
948 | # CONFIG_SSFDC is not set | ||
949 | # CONFIG_MTD_OOPS is not set | ||
950 | |||
951 | # | ||
952 | # RAM/ROM/Flash chip drivers | ||
953 | # | ||
954 | # CONFIG_MTD_CFI is not set | ||
955 | # CONFIG_MTD_JEDECPROBE is not set | ||
956 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
957 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
958 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
959 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
960 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
961 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
962 | CONFIG_MTD_CFI_I1=y | ||
963 | CONFIG_MTD_CFI_I2=y | ||
964 | # CONFIG_MTD_CFI_I4 is not set | ||
965 | # CONFIG_MTD_CFI_I8 is not set | ||
966 | # CONFIG_MTD_RAM is not set | ||
967 | # CONFIG_MTD_ROM is not set | ||
968 | # CONFIG_MTD_ABSENT is not set | ||
969 | |||
970 | # | ||
971 | # Mapping drivers for chip access | ||
972 | # | ||
973 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
974 | # CONFIG_MTD_PLATRAM is not set | ||
975 | |||
976 | # | ||
977 | # Self-contained MTD device drivers | ||
978 | # | ||
979 | # CONFIG_MTD_DATAFLASH is not set | ||
980 | # CONFIG_MTD_M25P80 is not set | ||
981 | # CONFIG_MTD_SST25L is not set | ||
982 | # CONFIG_MTD_SLRAM is not set | ||
983 | # CONFIG_MTD_PHRAM is not set | ||
984 | # CONFIG_MTD_MTDRAM is not set | ||
985 | # CONFIG_MTD_BLOCK2MTD is not set | ||
986 | |||
987 | # | ||
988 | # Disk-On-Chip Device Drivers | ||
989 | # | ||
990 | # CONFIG_MTD_DOC2000 is not set | ||
991 | # CONFIG_MTD_DOC2001 is not set | ||
992 | # CONFIG_MTD_DOC2001PLUS is not set | ||
993 | CONFIG_MTD_NAND=y | ||
994 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
995 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
996 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
997 | # CONFIG_MTD_NAND_GPIO is not set | ||
998 | CONFIG_MTD_NAND_OMAP2=y | ||
999 | CONFIG_MTD_NAND_OMAP_PREFETCH=y | ||
1000 | # CONFIG_MTD_NAND_OMAP_PREFETCH_DMA is not set | ||
1001 | CONFIG_MTD_NAND_IDS=y | ||
1002 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
1003 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
1004 | CONFIG_MTD_NAND_PLATFORM=y | ||
1005 | # CONFIG_MTD_ALAUDA is not set | ||
1006 | # CONFIG_MTD_ONENAND is not set | ||
1007 | |||
1008 | # | ||
1009 | # LPDDR flash memory drivers | ||
1010 | # | ||
1011 | # CONFIG_MTD_LPDDR is not set | ||
1012 | |||
1013 | # | ||
1014 | # UBI - Unsorted block images | ||
1015 | # | ||
1016 | CONFIG_MTD_UBI=y | ||
1017 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
1018 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
1019 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
1020 | |||
1021 | # | ||
1022 | # UBI debugging options | ||
1023 | # | ||
1024 | # CONFIG_MTD_UBI_DEBUG is not set | ||
1025 | # CONFIG_PARPORT is not set | ||
1026 | CONFIG_BLK_DEV=y | ||
1027 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
1028 | CONFIG_BLK_DEV_LOOP=y | ||
1029 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
1030 | |||
1031 | # | ||
1032 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
1033 | # | ||
1034 | # CONFIG_BLK_DEV_NBD is not set | ||
1035 | # CONFIG_BLK_DEV_UB is not set | ||
1036 | CONFIG_BLK_DEV_RAM=y | ||
1037 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
1038 | CONFIG_BLK_DEV_RAM_SIZE=16384 | ||
1039 | # CONFIG_BLK_DEV_XIP is not set | ||
1040 | CONFIG_CDROM_PKTCDVD=m | ||
1041 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
1042 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
1043 | # CONFIG_ATA_OVER_ETH is not set | ||
1044 | # CONFIG_MG_DISK is not set | ||
1045 | CONFIG_MISC_DEVICES=y | ||
1046 | # CONFIG_AD525X_DPOT is not set | ||
1047 | # CONFIG_ICS932S401 is not set | ||
1048 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
1049 | CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7 | ||
1050 | # CONFIG_ISL29003 is not set | ||
1051 | # CONFIG_DS1682 is not set | ||
1052 | # CONFIG_TI_DAC7512 is not set | ||
1053 | # CONFIG_C2PORT is not set | ||
1054 | |||
1055 | # | ||
1056 | # EEPROM support | ||
1057 | # | ||
1058 | # CONFIG_EEPROM_AT24 is not set | ||
1059 | # CONFIG_EEPROM_AT25 is not set | ||
1060 | # CONFIG_EEPROM_LEGACY is not set | ||
1061 | # CONFIG_EEPROM_MAX6875 is not set | ||
1062 | CONFIG_EEPROM_93CX6=y | ||
1063 | # CONFIG_IWMC3200TOP is not set | ||
1064 | CONFIG_HAVE_IDE=y | ||
1065 | # CONFIG_IDE is not set | ||
1066 | |||
1067 | # | ||
1068 | # SCSI device support | ||
1069 | # | ||
1070 | CONFIG_RAID_ATTRS=m | ||
1071 | CONFIG_SCSI=y | ||
1072 | CONFIG_SCSI_DMA=y | ||
1073 | # CONFIG_SCSI_TGT is not set | ||
1074 | # CONFIG_SCSI_NETLINK is not set | ||
1075 | CONFIG_SCSI_PROC_FS=y | ||
1076 | |||
1077 | # | ||
1078 | # SCSI support type (disk, tape, CD-ROM) | ||
1079 | # | ||
1080 | CONFIG_BLK_DEV_SD=y | ||
1081 | # CONFIG_CHR_DEV_ST is not set | ||
1082 | # CONFIG_CHR_DEV_OSST is not set | ||
1083 | CONFIG_BLK_DEV_SR=y | ||
1084 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
1085 | CONFIG_CHR_DEV_SG=y | ||
1086 | CONFIG_CHR_DEV_SCH=m | ||
1087 | CONFIG_SCSI_MULTI_LUN=y | ||
1088 | # CONFIG_SCSI_CONSTANTS is not set | ||
1089 | # CONFIG_SCSI_LOGGING is not set | ||
1090 | CONFIG_SCSI_SCAN_ASYNC=y | ||
1091 | CONFIG_SCSI_WAIT_SCAN=m | ||
1092 | |||
1093 | # | ||
1094 | # SCSI Transports | ||
1095 | # | ||
1096 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
1097 | # CONFIG_SCSI_FC_ATTRS is not set | ||
1098 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
1099 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
1100 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
1101 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
1102 | CONFIG_SCSI_LOWLEVEL=y | ||
1103 | CONFIG_ISCSI_TCP=m | ||
1104 | # CONFIG_LIBFC is not set | ||
1105 | # CONFIG_LIBFCOE is not set | ||
1106 | # CONFIG_SCSI_DEBUG is not set | ||
1107 | # CONFIG_SCSI_DH is not set | ||
1108 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
1109 | # CONFIG_ATA is not set | ||
1110 | CONFIG_MD=y | ||
1111 | CONFIG_BLK_DEV_MD=m | ||
1112 | CONFIG_MD_LINEAR=m | ||
1113 | CONFIG_MD_RAID0=m | ||
1114 | CONFIG_MD_RAID1=m | ||
1115 | CONFIG_MD_RAID10=m | ||
1116 | CONFIG_MD_RAID456=m | ||
1117 | CONFIG_MD_RAID6_PQ=m | ||
1118 | # CONFIG_ASYNC_RAID6_TEST is not set | ||
1119 | CONFIG_MD_MULTIPATH=m | ||
1120 | CONFIG_MD_FAULTY=m | ||
1121 | CONFIG_BLK_DEV_DM=m | ||
1122 | # CONFIG_DM_DEBUG is not set | ||
1123 | CONFIG_DM_CRYPT=m | ||
1124 | CONFIG_DM_SNAPSHOT=m | ||
1125 | CONFIG_DM_MIRROR=m | ||
1126 | # CONFIG_DM_LOG_USERSPACE is not set | ||
1127 | CONFIG_DM_ZERO=m | ||
1128 | CONFIG_DM_MULTIPATH=m | ||
1129 | # CONFIG_DM_MULTIPATH_QL is not set | ||
1130 | # CONFIG_DM_MULTIPATH_ST is not set | ||
1131 | CONFIG_DM_DELAY=m | ||
1132 | CONFIG_DM_UEVENT=y | ||
1133 | CONFIG_NETDEVICES=y | ||
1134 | CONFIG_DUMMY=m | ||
1135 | CONFIG_BONDING=m | ||
1136 | CONFIG_MACVLAN=m | ||
1137 | CONFIG_EQUALIZER=m | ||
1138 | CONFIG_TUN=m | ||
1139 | CONFIG_VETH=m | ||
1140 | # CONFIG_NET_ETHERNET is not set | ||
1141 | CONFIG_MII=m | ||
1142 | # CONFIG_NETDEV_1000 is not set | ||
1143 | # CONFIG_NETDEV_10000 is not set | ||
1144 | CONFIG_WLAN=y | ||
1145 | # CONFIG_LIBERTAS_THINFIRM is not set | ||
1146 | # CONFIG_AT76C50X_USB is not set | ||
1147 | CONFIG_USB_ZD1201=m | ||
1148 | CONFIG_USB_NET_RNDIS_WLAN=m | ||
1149 | CONFIG_RTL8187=m | ||
1150 | CONFIG_RTL8187_LEDS=y | ||
1151 | # CONFIG_MAC80211_HWSIM is not set | ||
1152 | # CONFIG_ATH_COMMON is not set | ||
1153 | CONFIG_B43=m | ||
1154 | # CONFIG_B43_SDIO is not set | ||
1155 | CONFIG_B43_PHY_LP=y | ||
1156 | CONFIG_B43_LEDS=y | ||
1157 | CONFIG_B43_HWRNG=y | ||
1158 | # CONFIG_B43_DEBUG is not set | ||
1159 | # CONFIG_B43LEGACY is not set | ||
1160 | CONFIG_HOSTAP=m | ||
1161 | CONFIG_HOSTAP_FIRMWARE=y | ||
1162 | CONFIG_HOSTAP_FIRMWARE_NVRAM=y | ||
1163 | # CONFIG_IWM is not set | ||
1164 | CONFIG_LIBERTAS=m | ||
1165 | CONFIG_LIBERTAS_USB=m | ||
1166 | # CONFIG_LIBERTAS_SDIO is not set | ||
1167 | # CONFIG_LIBERTAS_SPI is not set | ||
1168 | # CONFIG_LIBERTAS_DEBUG is not set | ||
1169 | CONFIG_P54_COMMON=m | ||
1170 | CONFIG_P54_USB=m | ||
1171 | # CONFIG_P54_SPI is not set | ||
1172 | CONFIG_P54_LEDS=y | ||
1173 | CONFIG_RT2X00=m | ||
1174 | CONFIG_RT2500USB=m | ||
1175 | CONFIG_RT73USB=m | ||
1176 | CONFIG_RT2800USB=m | ||
1177 | CONFIG_RT2800_LIB=m | ||
1178 | CONFIG_RT2X00_LIB_USB=m | ||
1179 | CONFIG_RT2X00_LIB=m | ||
1180 | CONFIG_RT2X00_LIB_HT=y | ||
1181 | CONFIG_RT2X00_LIB_FIRMWARE=y | ||
1182 | CONFIG_RT2X00_LIB_CRYPTO=y | ||
1183 | CONFIG_RT2X00_LIB_LEDS=y | ||
1184 | # CONFIG_RT2X00_DEBUG is not set | ||
1185 | # CONFIG_WL12XX is not set | ||
1186 | CONFIG_ZD1211RW=m | ||
1187 | # CONFIG_ZD1211RW_DEBUG is not set | ||
1188 | |||
1189 | # | ||
1190 | # WiMAX Wireless Broadband devices | ||
1191 | # | ||
1192 | # CONFIG_WIMAX_I2400M_USB is not set | ||
1193 | # CONFIG_WIMAX_I2400M_SDIO is not set | ||
1194 | |||
1195 | # | ||
1196 | # USB Network Adapters | ||
1197 | # | ||
1198 | CONFIG_USB_CATC=m | ||
1199 | CONFIG_USB_KAWETH=m | ||
1200 | CONFIG_USB_PEGASUS=m | ||
1201 | CONFIG_USB_RTL8150=m | ||
1202 | CONFIG_USB_USBNET=m | ||
1203 | CONFIG_USB_NET_AX8817X=m | ||
1204 | CONFIG_USB_NET_CDCETHER=m | ||
1205 | # CONFIG_USB_NET_CDC_EEM is not set | ||
1206 | CONFIG_USB_NET_DM9601=m | ||
1207 | CONFIG_USB_NET_SMSC95XX=m | ||
1208 | CONFIG_USB_NET_GL620A=m | ||
1209 | CONFIG_USB_NET_NET1080=m | ||
1210 | CONFIG_USB_NET_PLUSB=m | ||
1211 | CONFIG_USB_NET_MCS7830=m | ||
1212 | CONFIG_USB_NET_RNDIS_HOST=m | ||
1213 | CONFIG_USB_NET_CDC_SUBSET=m | ||
1214 | CONFIG_USB_ALI_M5632=y | ||
1215 | CONFIG_USB_AN2720=y | ||
1216 | CONFIG_USB_BELKIN=y | ||
1217 | CONFIG_USB_ARMLINUX=y | ||
1218 | CONFIG_USB_EPSON2888=y | ||
1219 | CONFIG_USB_KC2190=y | ||
1220 | CONFIG_USB_NET_ZAURUS=m | ||
1221 | # CONFIG_USB_HSO is not set | ||
1222 | # CONFIG_USB_NET_INT51X1 is not set | ||
1223 | # CONFIG_WAN is not set | ||
1224 | CONFIG_ATM_DRIVERS=y | ||
1225 | # CONFIG_ATM_DUMMY is not set | ||
1226 | # CONFIG_ATM_TCP is not set | ||
1227 | CONFIG_IEEE802154_DRIVERS=m | ||
1228 | # CONFIG_IEEE802154_FAKEHARD is not set | ||
1229 | CONFIG_PPP=m | ||
1230 | CONFIG_PPP_MULTILINK=y | ||
1231 | CONFIG_PPP_FILTER=y | ||
1232 | CONFIG_PPP_ASYNC=m | ||
1233 | CONFIG_PPP_SYNC_TTY=m | ||
1234 | CONFIG_PPP_DEFLATE=m | ||
1235 | CONFIG_PPP_BSDCOMP=m | ||
1236 | CONFIG_PPP_MPPE=m | ||
1237 | CONFIG_PPPOE=m | ||
1238 | # CONFIG_PPPOATM is not set | ||
1239 | CONFIG_PPPOL2TP=m | ||
1240 | # CONFIG_SLIP is not set | ||
1241 | CONFIG_SLHC=m | ||
1242 | CONFIG_NETCONSOLE=m | ||
1243 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
1244 | CONFIG_NETPOLL=y | ||
1245 | CONFIG_NETPOLL_TRAP=y | ||
1246 | CONFIG_NET_POLL_CONTROLLER=y | ||
1247 | # CONFIG_ISDN is not set | ||
1248 | # CONFIG_PHONE is not set | ||
1249 | |||
1250 | # | ||
1251 | # Input device support | ||
1252 | # | ||
1253 | CONFIG_INPUT=y | ||
1254 | CONFIG_INPUT_FF_MEMLESS=y | ||
1255 | # CONFIG_INPUT_POLLDEV is not set | ||
1256 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
1257 | |||
1258 | # | ||
1259 | # Userland interfaces | ||
1260 | # | ||
1261 | CONFIG_INPUT_MOUSEDEV=y | ||
1262 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
1263 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
1264 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
1265 | # CONFIG_INPUT_JOYDEV is not set | ||
1266 | CONFIG_INPUT_EVDEV=y | ||
1267 | # CONFIG_INPUT_EVBUG is not set | ||
1268 | |||
1269 | # | ||
1270 | # Input Device Drivers | ||
1271 | # | ||
1272 | CONFIG_INPUT_KEYBOARD=y | ||
1273 | # CONFIG_KEYBOARD_ADP5588 is not set | ||
1274 | # CONFIG_KEYBOARD_ATKBD is not set | ||
1275 | # CONFIG_QT2160 is not set | ||
1276 | # CONFIG_KEYBOARD_LKKBD is not set | ||
1277 | CONFIG_KEYBOARD_GPIO=y | ||
1278 | # CONFIG_KEYBOARD_TCA6416 is not set | ||
1279 | # CONFIG_KEYBOARD_MATRIX is not set | ||
1280 | # CONFIG_KEYBOARD_LM8323 is not set | ||
1281 | # CONFIG_KEYBOARD_MAX7359 is not set | ||
1282 | # CONFIG_KEYBOARD_NEWTON is not set | ||
1283 | # CONFIG_KEYBOARD_OPENCORES is not set | ||
1284 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
1285 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
1286 | # CONFIG_KEYBOARD_TWL4030 is not set | ||
1287 | # CONFIG_KEYBOARD_XTKBD is not set | ||
1288 | CONFIG_INPUT_MOUSE=y | ||
1289 | CONFIG_MOUSE_PS2=y | ||
1290 | CONFIG_MOUSE_PS2_ALPS=y | ||
1291 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
1292 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
1293 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
1294 | # CONFIG_MOUSE_PS2_ELANTECH is not set | ||
1295 | # CONFIG_MOUSE_PS2_SENTELIC is not set | ||
1296 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
1297 | # CONFIG_MOUSE_SERIAL is not set | ||
1298 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
1299 | # CONFIG_MOUSE_BCM5974 is not set | ||
1300 | # CONFIG_MOUSE_VSXXXAA is not set | ||
1301 | # CONFIG_MOUSE_GPIO is not set | ||
1302 | # CONFIG_MOUSE_SYNAPTICS_I2C is not set | ||
1303 | # CONFIG_INPUT_JOYSTICK is not set | ||
1304 | # CONFIG_INPUT_TABLET is not set | ||
1305 | CONFIG_INPUT_TOUCHSCREEN=y | ||
1306 | CONFIG_TOUCHSCREEN_ADS7846=y | ||
1307 | # CONFIG_TOUCHSCREEN_AD7877 is not set | ||
1308 | # CONFIG_TOUCHSCREEN_AD7879_I2C is not set | ||
1309 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set | ||
1310 | # CONFIG_TOUCHSCREEN_AD7879 is not set | ||
1311 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | ||
1312 | # CONFIG_TOUCHSCREEN_EETI is not set | ||
1313 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | ||
1314 | # CONFIG_TOUCHSCREEN_GUNZE is not set | ||
1315 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
1316 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set | ||
1317 | # CONFIG_TOUCHSCREEN_MCS5000 is not set | ||
1318 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
1319 | # CONFIG_TOUCHSCREEN_INEXIO is not set | ||
1320 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
1321 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | ||
1322 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | ||
1323 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | ||
1324 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set | ||
1325 | # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set | ||
1326 | # CONFIG_TOUCHSCREEN_TSC2007 is not set | ||
1327 | # CONFIG_TOUCHSCREEN_TSC2004 is not set | ||
1328 | # CONFIG_TOUCHSCREEN_W90X900 is not set | ||
1329 | CONFIG_INPUT_MISC=y | ||
1330 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
1331 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
1332 | # CONFIG_INPUT_KEYSPAN_REMOTE is not set | ||
1333 | CONFIG_INPUT_POWERMATE=m | ||
1334 | # CONFIG_INPUT_YEALINK is not set | ||
1335 | # CONFIG_INPUT_CM109 is not set | ||
1336 | CONFIG_INPUT_TWL4030_PWRBUTTON=y | ||
1337 | CONFIG_INPUT_UINPUT=y | ||
1338 | # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set | ||
1339 | CONFIG_INPUT_MMA7455L=y | ||
1340 | |||
1341 | # | ||
1342 | # Hardware I/O ports | ||
1343 | # | ||
1344 | CONFIG_SERIO=y | ||
1345 | CONFIG_SERIO_SERPORT=y | ||
1346 | CONFIG_SERIO_LIBPS2=y | ||
1347 | # CONFIG_SERIO_RAW is not set | ||
1348 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
1349 | # CONFIG_GAMEPORT is not set | ||
1350 | |||
1351 | # | ||
1352 | # Character devices | ||
1353 | # | ||
1354 | CONFIG_VT=y | ||
1355 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
1356 | CONFIG_VT_CONSOLE=y | ||
1357 | CONFIG_HW_CONSOLE=y | ||
1358 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
1359 | CONFIG_DEVKMEM=y | ||
1360 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
1361 | |||
1362 | # | ||
1363 | # Serial drivers | ||
1364 | # | ||
1365 | CONFIG_SERIAL_8250=y | ||
1366 | CONFIG_SERIAL_8250_CONSOLE=y | ||
1367 | CONFIG_SERIAL_8250_NR_UARTS=32 | ||
1368 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
1369 | CONFIG_SERIAL_8250_EXTENDED=y | ||
1370 | CONFIG_SERIAL_8250_MANY_PORTS=y | ||
1371 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
1372 | CONFIG_SERIAL_8250_DETECT_IRQ=y | ||
1373 | CONFIG_SERIAL_8250_RSA=y | ||
1374 | |||
1375 | # | ||
1376 | # Non-8250 serial port support | ||
1377 | # | ||
1378 | # CONFIG_SERIAL_MAX3100 is not set | ||
1379 | CONFIG_SERIAL_CORE=y | ||
1380 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
1381 | CONFIG_UNIX98_PTYS=y | ||
1382 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
1383 | # CONFIG_LEGACY_PTYS is not set | ||
1384 | # CONFIG_IPMI_HANDLER is not set | ||
1385 | CONFIG_HW_RANDOM=y | ||
1386 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set | ||
1387 | # CONFIG_R3964 is not set | ||
1388 | CONFIG_RAW_DRIVER=m | ||
1389 | CONFIG_MAX_RAW_DEVS=256 | ||
1390 | # CONFIG_TCG_TPM is not set | ||
1391 | CONFIG_I2C=y | ||
1392 | CONFIG_I2C_BOARDINFO=y | ||
1393 | CONFIG_I2C_COMPAT=y | ||
1394 | CONFIG_I2C_CHARDEV=y | ||
1395 | CONFIG_I2C_HELPER_AUTO=y | ||
1396 | |||
1397 | # | ||
1398 | # I2C Hardware Bus support | ||
1399 | # | ||
1400 | |||
1401 | # | ||
1402 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
1403 | # | ||
1404 | # CONFIG_I2C_DESIGNWARE is not set | ||
1405 | # CONFIG_I2C_GPIO is not set | ||
1406 | # CONFIG_I2C_OCORES is not set | ||
1407 | CONFIG_I2C_OMAP=y | ||
1408 | # CONFIG_I2C_SIMTEC is not set | ||
1409 | |||
1410 | # | ||
1411 | # External I2C/SMBus adapter drivers | ||
1412 | # | ||
1413 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
1414 | # CONFIG_I2C_TAOS_EVM is not set | ||
1415 | CONFIG_I2C_TINY_USB=m | ||
1416 | |||
1417 | # | ||
1418 | # Other I2C/SMBus bus drivers | ||
1419 | # | ||
1420 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
1421 | # CONFIG_I2C_STUB is not set | ||
1422 | |||
1423 | # | ||
1424 | # Miscellaneous I2C Chip support | ||
1425 | # | ||
1426 | # CONFIG_SENSORS_TSL2550 is not set | ||
1427 | # CONFIG_I2C_DEBUG_CORE is not set | ||
1428 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
1429 | # CONFIG_I2C_DEBUG_BUS is not set | ||
1430 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
1431 | CONFIG_SPI=y | ||
1432 | # CONFIG_SPI_DEBUG is not set | ||
1433 | CONFIG_SPI_MASTER=y | ||
1434 | |||
1435 | # | ||
1436 | # SPI Master Controller Drivers | ||
1437 | # | ||
1438 | # CONFIG_SPI_BITBANG is not set | ||
1439 | # CONFIG_SPI_GPIO is not set | ||
1440 | CONFIG_SPI_OMAP24XX=y | ||
1441 | # CONFIG_SPI_XILINX is not set | ||
1442 | |||
1443 | # | ||
1444 | # SPI Protocol Masters | ||
1445 | # | ||
1446 | # CONFIG_SPI_SPIDEV is not set | ||
1447 | # CONFIG_SPI_TLE62X0 is not set | ||
1448 | |||
1449 | # | ||
1450 | # PPS support | ||
1451 | # | ||
1452 | # CONFIG_PPS is not set | ||
1453 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
1454 | CONFIG_GPIOLIB=y | ||
1455 | # CONFIG_DEBUG_GPIO is not set | ||
1456 | CONFIG_GPIO_SYSFS=y | ||
1457 | |||
1458 | # | ||
1459 | # Memory mapped GPIO expanders: | ||
1460 | # | ||
1461 | |||
1462 | # | ||
1463 | # I2C GPIO expanders: | ||
1464 | # | ||
1465 | # CONFIG_GPIO_MAX732X is not set | ||
1466 | # CONFIG_GPIO_PCA953X is not set | ||
1467 | # CONFIG_GPIO_PCF857X is not set | ||
1468 | CONFIG_GPIO_TWL4030=y | ||
1469 | |||
1470 | # | ||
1471 | # PCI GPIO expanders: | ||
1472 | # | ||
1473 | |||
1474 | # | ||
1475 | # SPI GPIO expanders: | ||
1476 | # | ||
1477 | # CONFIG_GPIO_MAX7301 is not set | ||
1478 | # CONFIG_GPIO_MCP23S08 is not set | ||
1479 | # CONFIG_GPIO_MC33880 is not set | ||
1480 | |||
1481 | # | ||
1482 | # AC97 GPIO expanders: | ||
1483 | # | ||
1484 | # CONFIG_W1 is not set | ||
1485 | CONFIG_POWER_SUPPLY=y | ||
1486 | # CONFIG_POWER_SUPPLY_DEBUG is not set | ||
1487 | # CONFIG_PDA_POWER is not set | ||
1488 | # CONFIG_BATTERY_DS2760 is not set | ||
1489 | # CONFIG_BATTERY_DS2782 is not set | ||
1490 | CONFIG_BATTERY_BQ27x00=y | ||
1491 | # CONFIG_BATTERY_MAX17040 is not set | ||
1492 | CONFIG_TWL4030_BCI_BATTERY=y | ||
1493 | CONFIG_HWMON=y | ||
1494 | # CONFIG_HWMON_VID is not set | ||
1495 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
1496 | |||
1497 | # | ||
1498 | # Native drivers | ||
1499 | # | ||
1500 | # CONFIG_SENSORS_AD7414 is not set | ||
1501 | # CONFIG_SENSORS_AD7418 is not set | ||
1502 | # CONFIG_SENSORS_ADCXX is not set | ||
1503 | # CONFIG_SENSORS_ADM1021 is not set | ||
1504 | # CONFIG_SENSORS_ADM1025 is not set | ||
1505 | # CONFIG_SENSORS_ADM1026 is not set | ||
1506 | # CONFIG_SENSORS_ADM1029 is not set | ||
1507 | # CONFIG_SENSORS_ADM1031 is not set | ||
1508 | # CONFIG_SENSORS_ADM9240 is not set | ||
1509 | # CONFIG_SENSORS_ADT7462 is not set | ||
1510 | # CONFIG_SENSORS_ADT7470 is not set | ||
1511 | # CONFIG_SENSORS_ADT7473 is not set | ||
1512 | # CONFIG_SENSORS_ADT7475 is not set | ||
1513 | # CONFIG_SENSORS_ATXP1 is not set | ||
1514 | # CONFIG_SENSORS_DS1621 is not set | ||
1515 | # CONFIG_SENSORS_F71805F is not set | ||
1516 | # CONFIG_SENSORS_F71882FG is not set | ||
1517 | # CONFIG_SENSORS_F75375S is not set | ||
1518 | # CONFIG_SENSORS_G760A is not set | ||
1519 | # CONFIG_SENSORS_GL518SM is not set | ||
1520 | # CONFIG_SENSORS_GL520SM is not set | ||
1521 | # CONFIG_SENSORS_IT87 is not set | ||
1522 | # CONFIG_SENSORS_LM63 is not set | ||
1523 | # CONFIG_SENSORS_LM70 is not set | ||
1524 | # CONFIG_SENSORS_LM73 is not set | ||
1525 | # CONFIG_SENSORS_LM75 is not set | ||
1526 | # CONFIG_SENSORS_LM77 is not set | ||
1527 | # CONFIG_SENSORS_LM78 is not set | ||
1528 | # CONFIG_SENSORS_LM80 is not set | ||
1529 | # CONFIG_SENSORS_LM83 is not set | ||
1530 | # CONFIG_SENSORS_LM85 is not set | ||
1531 | # CONFIG_SENSORS_LM87 is not set | ||
1532 | # CONFIG_SENSORS_LM90 is not set | ||
1533 | # CONFIG_SENSORS_LM92 is not set | ||
1534 | # CONFIG_SENSORS_LM93 is not set | ||
1535 | # CONFIG_SENSORS_LTC4215 is not set | ||
1536 | # CONFIG_SENSORS_LTC4245 is not set | ||
1537 | # CONFIG_SENSORS_LM95241 is not set | ||
1538 | # CONFIG_SENSORS_MAX1111 is not set | ||
1539 | # CONFIG_SENSORS_MAX1619 is not set | ||
1540 | # CONFIG_SENSORS_MAX6650 is not set | ||
1541 | # CONFIG_SENSORS_PC87360 is not set | ||
1542 | # CONFIG_SENSORS_PC87427 is not set | ||
1543 | # CONFIG_SENSORS_PCF8591 is not set | ||
1544 | # CONFIG_SENSORS_SHT15 is not set | ||
1545 | # CONFIG_SENSORS_DME1737 is not set | ||
1546 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
1547 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
1548 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
1549 | # CONFIG_SENSORS_ADS7828 is not set | ||
1550 | # CONFIG_SENSORS_THMC50 is not set | ||
1551 | # CONFIG_SENSORS_TMP401 is not set | ||
1552 | # CONFIG_SENSORS_TMP421 is not set | ||
1553 | # CONFIG_SENSORS_VT1211 is not set | ||
1554 | # CONFIG_SENSORS_W83781D is not set | ||
1555 | # CONFIG_SENSORS_W83791D is not set | ||
1556 | # CONFIG_SENSORS_W83792D is not set | ||
1557 | # CONFIG_SENSORS_W83793 is not set | ||
1558 | # CONFIG_SENSORS_W83L785TS is not set | ||
1559 | # CONFIG_SENSORS_W83L786NG is not set | ||
1560 | # CONFIG_SENSORS_W83627HF is not set | ||
1561 | # CONFIG_SENSORS_W83627EHF is not set | ||
1562 | # CONFIG_SENSORS_LIS3_SPI is not set | ||
1563 | CONFIG_THERMAL=y | ||
1564 | CONFIG_THERMAL_HWMON=y | ||
1565 | CONFIG_WATCHDOG=y | ||
1566 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
1567 | |||
1568 | # | ||
1569 | # Watchdog Device Drivers | ||
1570 | # | ||
1571 | # CONFIG_SOFT_WATCHDOG is not set | ||
1572 | CONFIG_OMAP_WATCHDOG=y | ||
1573 | CONFIG_TWL4030_WATCHDOG=m | ||
1574 | |||
1575 | # | ||
1576 | # USB-based Watchdog Cards | ||
1577 | # | ||
1578 | # CONFIG_USBPCWATCHDOG is not set | ||
1579 | CONFIG_SSB_POSSIBLE=y | ||
1580 | |||
1581 | # | ||
1582 | # Sonics Silicon Backplane | ||
1583 | # | ||
1584 | CONFIG_SSB=y | ||
1585 | CONFIG_SSB_SDIOHOST_POSSIBLE=y | ||
1586 | # CONFIG_SSB_SDIOHOST is not set | ||
1587 | # CONFIG_SSB_SILENT is not set | ||
1588 | # CONFIG_SSB_DEBUG is not set | ||
1589 | |||
1590 | # | ||
1591 | # Multifunction device drivers | ||
1592 | # | ||
1593 | CONFIG_MFD_CORE=y | ||
1594 | # CONFIG_MFD_SM501 is not set | ||
1595 | # CONFIG_MFD_ASIC3 is not set | ||
1596 | # CONFIG_HTC_EGPIO is not set | ||
1597 | # CONFIG_HTC_PASIC3 is not set | ||
1598 | # CONFIG_TPS65010 is not set | ||
1599 | CONFIG_TWL4030_CORE=y | ||
1600 | # CONFIG_TWL4030_POWER is not set | ||
1601 | CONFIG_TWL4030_CODEC=y | ||
1602 | CONFIG_TWL4030_MADC=y | ||
1603 | # CONFIG_MFD_TMIO is not set | ||
1604 | # CONFIG_MFD_T7L66XB is not set | ||
1605 | # CONFIG_MFD_TC6387XB is not set | ||
1606 | # CONFIG_MFD_TC6393XB is not set | ||
1607 | # CONFIG_PMIC_DA903X is not set | ||
1608 | # CONFIG_PMIC_ADP5520 is not set | ||
1609 | # CONFIG_MFD_WM8400 is not set | ||
1610 | # CONFIG_MFD_WM831X is not set | ||
1611 | # CONFIG_MFD_WM8350_I2C is not set | ||
1612 | # CONFIG_MFD_PCF50633 is not set | ||
1613 | # CONFIG_MFD_MC13783 is not set | ||
1614 | # CONFIG_AB3100_CORE is not set | ||
1615 | # CONFIG_EZX_PCAP is not set | ||
1616 | # CONFIG_MFD_88PM8607 is not set | ||
1617 | # CONFIG_AB4500_CORE is not set | ||
1618 | CONFIG_REGULATOR=y | ||
1619 | # CONFIG_REGULATOR_DEBUG is not set | ||
1620 | # CONFIG_REGULATOR_FIXED_VOLTAGE is not set | ||
1621 | # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set | ||
1622 | # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set | ||
1623 | # CONFIG_REGULATOR_BQ24022 is not set | ||
1624 | # CONFIG_REGULATOR_MAX1586 is not set | ||
1625 | CONFIG_REGULATOR_TWL4030=y | ||
1626 | # CONFIG_REGULATOR_LP3971 is not set | ||
1627 | # CONFIG_REGULATOR_TPS65023 is not set | ||
1628 | # CONFIG_REGULATOR_TPS6507X is not set | ||
1629 | CONFIG_MEDIA_SUPPORT=y | ||
1630 | |||
1631 | # | ||
1632 | # Multimedia core support | ||
1633 | # | ||
1634 | CONFIG_VIDEO_DEV=m | ||
1635 | CONFIG_VIDEO_V4L2_COMMON=m | ||
1636 | CONFIG_VIDEO_ALLOW_V4L1=y | ||
1637 | CONFIG_VIDEO_V4L1_COMPAT=y | ||
1638 | CONFIG_DVB_CORE=m | ||
1639 | CONFIG_VIDEO_MEDIA=m | ||
1640 | |||
1641 | # | ||
1642 | # Multimedia drivers | ||
1643 | # | ||
1644 | CONFIG_MEDIA_ATTACH=y | ||
1645 | CONFIG_MEDIA_TUNER=m | ||
1646 | CONFIG_MEDIA_TUNER_CUSTOMISE=y | ||
1647 | CONFIG_MEDIA_TUNER_SIMPLE=m | ||
1648 | CONFIG_MEDIA_TUNER_TDA8290=m | ||
1649 | CONFIG_MEDIA_TUNER_TDA827X=m | ||
1650 | CONFIG_MEDIA_TUNER_TDA18271=m | ||
1651 | CONFIG_MEDIA_TUNER_TDA9887=m | ||
1652 | CONFIG_MEDIA_TUNER_TEA5761=m | ||
1653 | CONFIG_MEDIA_TUNER_TEA5767=m | ||
1654 | CONFIG_MEDIA_TUNER_MT20XX=m | ||
1655 | CONFIG_MEDIA_TUNER_MT2060=m | ||
1656 | CONFIG_MEDIA_TUNER_MT2266=m | ||
1657 | CONFIG_MEDIA_TUNER_MT2131=m | ||
1658 | CONFIG_MEDIA_TUNER_QT1010=m | ||
1659 | CONFIG_MEDIA_TUNER_XC2028=m | ||
1660 | CONFIG_MEDIA_TUNER_XC5000=m | ||
1661 | CONFIG_MEDIA_TUNER_MXL5005S=m | ||
1662 | CONFIG_MEDIA_TUNER_MXL5007T=m | ||
1663 | CONFIG_MEDIA_TUNER_MC44S803=m | ||
1664 | CONFIG_MEDIA_TUNER_MAX2165=m | ||
1665 | CONFIG_VIDEO_V4L2=m | ||
1666 | CONFIG_VIDEO_V4L1=m | ||
1667 | CONFIG_VIDEOBUF_GEN=m | ||
1668 | CONFIG_VIDEOBUF_DMA_SG=m | ||
1669 | CONFIG_VIDEOBUF_VMALLOC=m | ||
1670 | CONFIG_VIDEOBUF_DVB=m | ||
1671 | CONFIG_VIDEO_IR=m | ||
1672 | CONFIG_VIDEO_TVEEPROM=m | ||
1673 | CONFIG_VIDEO_TUNER=m | ||
1674 | CONFIG_VIDEO_CAPTURE_DRIVERS=y | ||
1675 | # CONFIG_VIDEO_ADV_DEBUG is not set | ||
1676 | # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set | ||
1677 | # CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set | ||
1678 | CONFIG_VIDEO_IR_I2C=m | ||
1679 | |||
1680 | # | ||
1681 | # Encoders/decoders and other helper chips | ||
1682 | # | ||
1683 | |||
1684 | # | ||
1685 | # Audio decoders | ||
1686 | # | ||
1687 | CONFIG_VIDEO_TVAUDIO=m | ||
1688 | CONFIG_VIDEO_TDA7432=m | ||
1689 | CONFIG_VIDEO_TDA9840=m | ||
1690 | CONFIG_VIDEO_TDA9875=m | ||
1691 | CONFIG_VIDEO_TEA6415C=m | ||
1692 | CONFIG_VIDEO_TEA6420=m | ||
1693 | CONFIG_VIDEO_MSP3400=m | ||
1694 | CONFIG_VIDEO_CS5345=m | ||
1695 | CONFIG_VIDEO_CS53L32A=m | ||
1696 | CONFIG_VIDEO_M52790=m | ||
1697 | CONFIG_VIDEO_TLV320AIC23B=m | ||
1698 | CONFIG_VIDEO_WM8775=m | ||
1699 | CONFIG_VIDEO_WM8739=m | ||
1700 | CONFIG_VIDEO_VP27SMPX=m | ||
1701 | |||
1702 | # | ||
1703 | # RDS decoders | ||
1704 | # | ||
1705 | CONFIG_VIDEO_SAA6588=m | ||
1706 | |||
1707 | # | ||
1708 | # Video decoders | ||
1709 | # | ||
1710 | CONFIG_VIDEO_ADV7180=m | ||
1711 | CONFIG_VIDEO_BT819=m | ||
1712 | CONFIG_VIDEO_BT856=m | ||
1713 | CONFIG_VIDEO_BT866=m | ||
1714 | CONFIG_VIDEO_KS0127=m | ||
1715 | # CONFIG_VIDEO_OV7670 is not set | ||
1716 | CONFIG_VIDEO_MT9V011=m | ||
1717 | CONFIG_VIDEO_TCM825X=m | ||
1718 | CONFIG_VIDEO_MT9P012=m | ||
1719 | CONFIG_VIDEO_DW9710=m | ||
1720 | # CONFIG_VIDEO_OV3640 is not set | ||
1721 | CONFIG_VIDEO_IMX046=m | ||
1722 | CONFIG_VIDEO_LV8093=m | ||
1723 | CONFIG_VIDEO_SAA7110=m | ||
1724 | CONFIG_VIDEO_SAA711X=m | ||
1725 | CONFIG_VIDEO_SAA717X=m | ||
1726 | CONFIG_VIDEO_SAA7191=m | ||
1727 | CONFIG_VIDEO_TVP514X=m | ||
1728 | CONFIG_VIDEO_TVP5150=m | ||
1729 | CONFIG_VIDEO_VPX3220=m | ||
1730 | |||
1731 | # | ||
1732 | # Video and audio decoders | ||
1733 | # | ||
1734 | CONFIG_VIDEO_CX25840=m | ||
1735 | |||
1736 | # | ||
1737 | # MPEG video encoders | ||
1738 | # | ||
1739 | CONFIG_VIDEO_CX2341X=m | ||
1740 | |||
1741 | # | ||
1742 | # Video encoders | ||
1743 | # | ||
1744 | CONFIG_VIDEO_SAA7127=m | ||
1745 | CONFIG_VIDEO_SAA7185=m | ||
1746 | CONFIG_VIDEO_ADV7170=m | ||
1747 | CONFIG_VIDEO_ADV7175=m | ||
1748 | CONFIG_VIDEO_THS7303=m | ||
1749 | CONFIG_VIDEO_ADV7343=m | ||
1750 | |||
1751 | # | ||
1752 | # Video improvement chips | ||
1753 | # | ||
1754 | CONFIG_VIDEO_UPD64031A=m | ||
1755 | CONFIG_VIDEO_UPD64083=m | ||
1756 | CONFIG_VIDEO_VIVI=m | ||
1757 | # CONFIG_VIDEO_CPIA is not set | ||
1758 | # CONFIG_VIDEO_CPIA2 is not set | ||
1759 | # CONFIG_VIDEO_SAA5246A is not set | ||
1760 | # CONFIG_VIDEO_SAA5249 is not set | ||
1761 | # CONFIG_VIDEO_AU0828 is not set | ||
1762 | CONFIG_TI_MEDIA=m | ||
1763 | CONFIG_VIDEO_VPSS_SYSTEM=m | ||
1764 | # CONFIG_VIDEO_VPFE_CAPTURE is not set | ||
1765 | CONFIG_VIDEO_OMAP2_VOUT=m | ||
1766 | # CONFIG_VIDEO_OMAP3 is not set | ||
1767 | # CONFIG_VIDEO_OMAP34XX_ISP_PREVIEWER is not set | ||
1768 | # CONFIG_VIDEO_OMAP34XX_ISP_RESIZER is not set | ||
1769 | # CONFIG_SOC_CAMERA is not set | ||
1770 | CONFIG_V4L_USB_DRIVERS=y | ||
1771 | CONFIG_USB_VIDEO_CLASS=m | ||
1772 | CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y | ||
1773 | CONFIG_USB_GSPCA=m | ||
1774 | # CONFIG_USB_M5602 is not set | ||
1775 | # CONFIG_USB_STV06XX is not set | ||
1776 | # CONFIG_USB_GL860 is not set | ||
1777 | # CONFIG_USB_GSPCA_CONEX is not set | ||
1778 | # CONFIG_USB_GSPCA_ETOMS is not set | ||
1779 | # CONFIG_USB_GSPCA_FINEPIX is not set | ||
1780 | # CONFIG_USB_GSPCA_JEILINJ is not set | ||
1781 | # CONFIG_USB_GSPCA_MARS is not set | ||
1782 | # CONFIG_USB_GSPCA_MR97310A is not set | ||
1783 | # CONFIG_USB_GSPCA_OV519 is not set | ||
1784 | # CONFIG_USB_GSPCA_OV534 is not set | ||
1785 | # CONFIG_USB_GSPCA_PAC207 is not set | ||
1786 | # CONFIG_USB_GSPCA_PAC7302 is not set | ||
1787 | # CONFIG_USB_GSPCA_PAC7311 is not set | ||
1788 | # CONFIG_USB_GSPCA_SN9C20X is not set | ||
1789 | # CONFIG_USB_GSPCA_SONIXB is not set | ||
1790 | # CONFIG_USB_GSPCA_SONIXJ is not set | ||
1791 | # CONFIG_USB_GSPCA_SPCA500 is not set | ||
1792 | # CONFIG_USB_GSPCA_SPCA501 is not set | ||
1793 | # CONFIG_USB_GSPCA_SPCA505 is not set | ||
1794 | # CONFIG_USB_GSPCA_SPCA506 is not set | ||
1795 | # CONFIG_USB_GSPCA_SPCA508 is not set | ||
1796 | # CONFIG_USB_GSPCA_SPCA561 is not set | ||
1797 | # CONFIG_USB_GSPCA_SQ905 is not set | ||
1798 | # CONFIG_USB_GSPCA_SQ905C is not set | ||
1799 | # CONFIG_USB_GSPCA_STK014 is not set | ||
1800 | # CONFIG_USB_GSPCA_STV0680 is not set | ||
1801 | # CONFIG_USB_GSPCA_SUNPLUS is not set | ||
1802 | # CONFIG_USB_GSPCA_T613 is not set | ||
1803 | # CONFIG_USB_GSPCA_TV8532 is not set | ||
1804 | # CONFIG_USB_GSPCA_VC032X is not set | ||
1805 | # CONFIG_USB_GSPCA_ZC3XX is not set | ||
1806 | CONFIG_VIDEO_PVRUSB2=m | ||
1807 | CONFIG_VIDEO_PVRUSB2_SYSFS=y | ||
1808 | CONFIG_VIDEO_PVRUSB2_DVB=y | ||
1809 | # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set | ||
1810 | CONFIG_VIDEO_HDPVR=m | ||
1811 | CONFIG_VIDEO_EM28XX=m | ||
1812 | CONFIG_VIDEO_EM28XX_ALSA=m | ||
1813 | CONFIG_VIDEO_EM28XX_DVB=m | ||
1814 | CONFIG_VIDEO_CX231XX=m | ||
1815 | CONFIG_VIDEO_CX231XX_ALSA=m | ||
1816 | CONFIG_VIDEO_CX231XX_DVB=m | ||
1817 | CONFIG_VIDEO_USBVISION=m | ||
1818 | CONFIG_VIDEO_USBVIDEO=m | ||
1819 | CONFIG_USB_VICAM=m | ||
1820 | CONFIG_USB_IBMCAM=m | ||
1821 | CONFIG_USB_KONICAWC=m | ||
1822 | CONFIG_USB_QUICKCAM_MESSENGER=m | ||
1823 | CONFIG_USB_ET61X251=m | ||
1824 | CONFIG_VIDEO_OVCAMCHIP=m | ||
1825 | CONFIG_USB_W9968CF=m | ||
1826 | CONFIG_USB_OV511=m | ||
1827 | CONFIG_USB_SE401=m | ||
1828 | CONFIG_USB_SN9C102=m | ||
1829 | CONFIG_USB_STV680=m | ||
1830 | CONFIG_USB_ZC0301=m | ||
1831 | CONFIG_USB_PWC=m | ||
1832 | # CONFIG_USB_PWC_DEBUG is not set | ||
1833 | CONFIG_USB_PWC_INPUT_EVDEV=y | ||
1834 | CONFIG_USB_ZR364XX=m | ||
1835 | CONFIG_USB_STKWEBCAM=m | ||
1836 | CONFIG_USB_S2255=m | ||
1837 | CONFIG_RADIO_ADAPTERS=y | ||
1838 | # CONFIG_I2C_SI4713 is not set | ||
1839 | # CONFIG_RADIO_SI4713 is not set | ||
1840 | # CONFIG_USB_DSBR is not set | ||
1841 | # CONFIG_RADIO_SI470X is not set | ||
1842 | # CONFIG_USB_MR800 is not set | ||
1843 | # CONFIG_RADIO_TEA5764 is not set | ||
1844 | # CONFIG_RADIO_TEF6862 is not set | ||
1845 | CONFIG_DVB_MAX_ADAPTERS=8 | ||
1846 | CONFIG_DVB_DYNAMIC_MINORS=y | ||
1847 | CONFIG_DVB_CAPTURE_DRIVERS=y | ||
1848 | # CONFIG_TTPCI_EEPROM is not set | ||
1849 | |||
1850 | # | ||
1851 | # Supported USB Adapters | ||
1852 | # | ||
1853 | CONFIG_DVB_USB=m | ||
1854 | # CONFIG_DVB_USB_DEBUG is not set | ||
1855 | CONFIG_DVB_USB_A800=m | ||
1856 | CONFIG_DVB_USB_DIBUSB_MB=m | ||
1857 | # CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set | ||
1858 | CONFIG_DVB_USB_DIBUSB_MC=m | ||
1859 | CONFIG_DVB_USB_DIB0700=m | ||
1860 | CONFIG_DVB_USB_UMT_010=m | ||
1861 | CONFIG_DVB_USB_CXUSB=m | ||
1862 | CONFIG_DVB_USB_M920X=m | ||
1863 | CONFIG_DVB_USB_GL861=m | ||
1864 | CONFIG_DVB_USB_AU6610=m | ||
1865 | CONFIG_DVB_USB_DIGITV=m | ||
1866 | CONFIG_DVB_USB_VP7045=m | ||
1867 | CONFIG_DVB_USB_VP702X=m | ||
1868 | CONFIG_DVB_USB_GP8PSK=m | ||
1869 | CONFIG_DVB_USB_NOVA_T_USB2=m | ||
1870 | CONFIG_DVB_USB_TTUSB2=m | ||
1871 | CONFIG_DVB_USB_DTT200U=m | ||
1872 | CONFIG_DVB_USB_OPERA1=m | ||
1873 | CONFIG_DVB_USB_AF9005=m | ||
1874 | CONFIG_DVB_USB_AF9005_REMOTE=m | ||
1875 | CONFIG_DVB_USB_DW2102=m | ||
1876 | CONFIG_DVB_USB_CINERGY_T2=m | ||
1877 | CONFIG_DVB_USB_ANYSEE=m | ||
1878 | CONFIG_DVB_USB_DTV5100=m | ||
1879 | CONFIG_DVB_USB_AF9015=m | ||
1880 | CONFIG_DVB_USB_CE6230=m | ||
1881 | CONFIG_DVB_USB_FRIIO=m | ||
1882 | CONFIG_DVB_USB_EC168=m | ||
1883 | CONFIG_SMS_SIANO_MDTV=m | ||
1884 | |||
1885 | # | ||
1886 | # Siano module components | ||
1887 | # | ||
1888 | # CONFIG_SMS_USB_DRV is not set | ||
1889 | # CONFIG_SMS_SDIO_DRV is not set | ||
1890 | |||
1891 | # | ||
1892 | # Supported FlexCopII (B2C2) Adapters | ||
1893 | # | ||
1894 | CONFIG_DVB_B2C2_FLEXCOP=m | ||
1895 | CONFIG_DVB_B2C2_FLEXCOP_USB=m | ||
1896 | # CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set | ||
1897 | |||
1898 | # | ||
1899 | # Supported DVB Frontends | ||
1900 | # | ||
1901 | # CONFIG_DVB_FE_CUSTOMISE is not set | ||
1902 | CONFIG_DVB_CX24123=m | ||
1903 | CONFIG_DVB_MT312=m | ||
1904 | CONFIG_DVB_ZL10039=m | ||
1905 | CONFIG_DVB_S5H1420=m | ||
1906 | CONFIG_DVB_STV0288=m | ||
1907 | CONFIG_DVB_STB6000=m | ||
1908 | CONFIG_DVB_STV0299=m | ||
1909 | CONFIG_DVB_TDA10086=m | ||
1910 | CONFIG_DVB_TUNER_ITD1000=m | ||
1911 | CONFIG_DVB_TUNER_CX24113=m | ||
1912 | CONFIG_DVB_TDA826X=m | ||
1913 | CONFIG_DVB_CX24116=m | ||
1914 | CONFIG_DVB_SI21XX=m | ||
1915 | CONFIG_DVB_CX22702=m | ||
1916 | CONFIG_DVB_TDA1004X=m | ||
1917 | CONFIG_DVB_NXT6000=m | ||
1918 | CONFIG_DVB_MT352=m | ||
1919 | CONFIG_DVB_ZL10353=m | ||
1920 | CONFIG_DVB_DIB3000MB=m | ||
1921 | CONFIG_DVB_DIB3000MC=m | ||
1922 | CONFIG_DVB_DIB7000M=m | ||
1923 | CONFIG_DVB_DIB7000P=m | ||
1924 | CONFIG_DVB_TDA10048=m | ||
1925 | CONFIG_DVB_AF9013=m | ||
1926 | CONFIG_DVB_EC100=m | ||
1927 | CONFIG_DVB_TDA10021=m | ||
1928 | CONFIG_DVB_TDA10023=m | ||
1929 | CONFIG_DVB_STV0297=m | ||
1930 | CONFIG_DVB_NXT200X=m | ||
1931 | CONFIG_DVB_BCM3510=m | ||
1932 | CONFIG_DVB_LGDT330X=m | ||
1933 | CONFIG_DVB_LGDT3305=m | ||
1934 | CONFIG_DVB_S5H1409=m | ||
1935 | CONFIG_DVB_S5H1411=m | ||
1936 | CONFIG_DVB_DIB8000=m | ||
1937 | CONFIG_DVB_PLL=m | ||
1938 | CONFIG_DVB_TUNER_DIB0070=m | ||
1939 | CONFIG_DVB_LNBP21=m | ||
1940 | CONFIG_DVB_ISL6421=m | ||
1941 | CONFIG_DVB_LGS8GL5=m | ||
1942 | CONFIG_DAB=y | ||
1943 | CONFIG_USB_DABUSB=m | ||
1944 | |||
1945 | # | ||
1946 | # Graphics support | ||
1947 | # | ||
1948 | # CONFIG_VGASTATE is not set | ||
1949 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
1950 | CONFIG_FB=y | ||
1951 | # CONFIG_FIRMWARE_EDID is not set | ||
1952 | # CONFIG_FB_DDC is not set | ||
1953 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
1954 | CONFIG_FB_CFB_FILLRECT=y | ||
1955 | CONFIG_FB_CFB_COPYAREA=y | ||
1956 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
1957 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
1958 | # CONFIG_FB_SYS_FILLRECT is not set | ||
1959 | # CONFIG_FB_SYS_COPYAREA is not set | ||
1960 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
1961 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
1962 | # CONFIG_FB_SYS_FOPS is not set | ||
1963 | # CONFIG_FB_SVGALIB is not set | ||
1964 | # CONFIG_FB_MACMODES is not set | ||
1965 | # CONFIG_FB_BACKLIGHT is not set | ||
1966 | # CONFIG_FB_MODE_HELPERS is not set | ||
1967 | # CONFIG_FB_TILEBLITTING is not set | ||
1968 | |||
1969 | # | ||
1970 | # Frame buffer hardware drivers | ||
1971 | # | ||
1972 | # CONFIG_FB_S1D13XXX is not set | ||
1973 | # CONFIG_FB_TMIO is not set | ||
1974 | # CONFIG_FB_VIRTUAL is not set | ||
1975 | # CONFIG_FB_METRONOME is not set | ||
1976 | # CONFIG_FB_MB862XX is not set | ||
1977 | # CONFIG_FB_BROADSHEET is not set | ||
1978 | # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set | ||
1979 | CONFIG_OMAP2_VRAM=y | ||
1980 | CONFIG_OMAP2_VRFB=y | ||
1981 | CONFIG_OMAP2_DSS=y | ||
1982 | CONFIG_OMAP2_VRAM_SIZE=18 | ||
1983 | CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y | ||
1984 | # CONFIG_OMAP2_DSS_RFBI is not set | ||
1985 | CONFIG_OMAP2_DSS_VENC=y | ||
1986 | CONFIG_OMAP2_VENC_OUT_TYPE_SVIDEO=y | ||
1987 | # CONFIG_OMAP2_VENC_OUT_TYPE_COMPOSITE is not set | ||
1988 | # CONFIG_OMAP2_DSS_SDI is not set | ||
1989 | CONFIG_OMAP2_DSS_DSI=y | ||
1990 | CONFIG_OMAP2_DSS_USE_DSI_PLL=y | ||
1991 | # CONFIG_OMAP2_DSS_FAKE_VSYNC is not set | ||
1992 | CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 | ||
1993 | CONFIG_FB_OMAP2=y | ||
1994 | CONFIG_FB_OMAP2_DEBUG_SUPPORT=y | ||
1995 | # CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set | ||
1996 | CONFIG_FB_OMAP2_NUM_FBS=3 | ||
1997 | |||
1998 | # | ||
1999 | # OMAP2/3 Display Device Drivers | ||
2000 | # | ||
2001 | CONFIG_PANEL_GENERIC=y | ||
2002 | # CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set | ||
2003 | # CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set | ||
2004 | CONFIG_PANEL_SHARP_LS037V7DW01=y | ||
2005 | CONFIG_PANEL_SHARP_LQ043T1DG01=y | ||
2006 | # CONFIG_PANEL_TAAL is not set | ||
2007 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
2008 | CONFIG_LCD_CLASS_DEVICE=y | ||
2009 | # CONFIG_LCD_LMS283GF05 is not set | ||
2010 | # CONFIG_LCD_LTV350QV is not set | ||
2011 | # CONFIG_LCD_ILI9320 is not set | ||
2012 | # CONFIG_LCD_TDO24M is not set | ||
2013 | # CONFIG_LCD_VGG2432A4 is not set | ||
2014 | CONFIG_LCD_PLATFORM=y | ||
2015 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
2016 | CONFIG_BACKLIGHT_GENERIC=y | ||
2017 | |||
2018 | # | ||
2019 | # Display device support | ||
2020 | # | ||
2021 | CONFIG_DISPLAY_SUPPORT=y | ||
2022 | |||
2023 | # | ||
2024 | # Display hardware drivers | ||
2025 | # | ||
2026 | |||
2027 | # | ||
2028 | # Console display driver support | ||
2029 | # | ||
2030 | # CONFIG_VGA_CONSOLE is not set | ||
2031 | CONFIG_DUMMY_CONSOLE=y | ||
2032 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
2033 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
2034 | CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y | ||
2035 | # CONFIG_FONTS is not set | ||
2036 | CONFIG_FONT_8x8=y | ||
2037 | CONFIG_FONT_8x16=y | ||
2038 | # CONFIG_LOGO is not set | ||
2039 | CONFIG_SOUND=y | ||
2040 | CONFIG_SOUND_OSS_CORE=y | ||
2041 | CONFIG_SOUND_OSS_CORE_PRECLAIM=y | ||
2042 | CONFIG_SND=y | ||
2043 | CONFIG_SND_TIMER=y | ||
2044 | CONFIG_SND_PCM=y | ||
2045 | CONFIG_SND_HWDEP=m | ||
2046 | CONFIG_SND_RAWMIDI=m | ||
2047 | CONFIG_SND_JACK=y | ||
2048 | CONFIG_SND_SEQUENCER=m | ||
2049 | # CONFIG_SND_SEQ_DUMMY is not set | ||
2050 | CONFIG_SND_OSSEMUL=y | ||
2051 | CONFIG_SND_MIXER_OSS=y | ||
2052 | # CONFIG_SND_PCM_OSS is not set | ||
2053 | CONFIG_SND_SEQUENCER_OSS=y | ||
2054 | CONFIG_SND_HRTIMER=m | ||
2055 | CONFIG_SND_SEQ_HRTIMER_DEFAULT=y | ||
2056 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
2057 | CONFIG_SND_SUPPORT_OLD_API=y | ||
2058 | CONFIG_SND_VERBOSE_PROCFS=y | ||
2059 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
2060 | # CONFIG_SND_DEBUG is not set | ||
2061 | CONFIG_SND_RAWMIDI_SEQ=m | ||
2062 | # CONFIG_SND_OPL3_LIB_SEQ is not set | ||
2063 | # CONFIG_SND_OPL4_LIB_SEQ is not set | ||
2064 | # CONFIG_SND_SBAWE_SEQ is not set | ||
2065 | # CONFIG_SND_EMU10K1_SEQ is not set | ||
2066 | CONFIG_SND_DRIVERS=y | ||
2067 | # CONFIG_SND_DUMMY is not set | ||
2068 | CONFIG_SND_VIRMIDI=m | ||
2069 | # CONFIG_SND_MTPAV is not set | ||
2070 | # CONFIG_SND_SERIAL_U16550 is not set | ||
2071 | # CONFIG_SND_MPU401 is not set | ||
2072 | # CONFIG_SND_ARM is not set | ||
2073 | CONFIG_SND_SPI=y | ||
2074 | CONFIG_SND_USB=y | ||
2075 | CONFIG_SND_USB_AUDIO=m | ||
2076 | CONFIG_SND_USB_CAIAQ=m | ||
2077 | CONFIG_SND_USB_CAIAQ_INPUT=y | ||
2078 | CONFIG_SND_SOC=y | ||
2079 | CONFIG_SND_OMAP_SOC=y | ||
2080 | CONFIG_SND_OMAP_SOC_MCBSP=y | ||
2081 | CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK=y | ||
2082 | CONFIG_SND_SOC_I2C_AND_SPI=y | ||
2083 | # CONFIG_SND_SOC_ALL_CODECS is not set | ||
2084 | CONFIG_SND_SOC_TWL4030=y | ||
2085 | # CONFIG_SOUND_PRIME is not set | ||
2086 | CONFIG_HID_SUPPORT=y | ||
2087 | CONFIG_HID=y | ||
2088 | # CONFIG_HIDRAW is not set | ||
2089 | |||
2090 | # | ||
2091 | # USB Input Devices | ||
2092 | # | ||
2093 | CONFIG_USB_HID=y | ||
2094 | # CONFIG_HID_PID is not set | ||
2095 | # CONFIG_USB_HIDDEV is not set | ||
2096 | |||
2097 | # | ||
2098 | # Special HID drivers | ||
2099 | # | ||
2100 | CONFIG_HID_A4TECH=y | ||
2101 | CONFIG_HID_AI=y | ||
2102 | CONFIG_HID_APPLE=y | ||
2103 | CONFIG_HID_BELKIN=y | ||
2104 | CONFIG_HID_CHERRY=y | ||
2105 | CONFIG_HID_CHICONY=y | ||
2106 | CONFIG_HID_CYPRESS=y | ||
2107 | # CONFIG_HID_DRAGONRISE is not set | ||
2108 | CONFIG_HID_EZKEY=y | ||
2109 | # CONFIG_HID_KYE is not set | ||
2110 | CONFIG_HID_GYRATION=y | ||
2111 | # CONFIG_HID_TWINHAN is not set | ||
2112 | # CONFIG_HID_KENSINGTON is not set | ||
2113 | CONFIG_HID_LOGITECH=y | ||
2114 | # CONFIG_LOGITECH_FF is not set | ||
2115 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | ||
2116 | CONFIG_HID_MICROSOFT=y | ||
2117 | CONFIG_HID_MONTEREY=y | ||
2118 | CONFIG_HID_NTRIG=y | ||
2119 | CONFIG_HID_PANTHERLORD=y | ||
2120 | # CONFIG_PANTHERLORD_FF is not set | ||
2121 | CONFIG_HID_PETALYNX=y | ||
2122 | CONFIG_HID_SAMSUNG=y | ||
2123 | CONFIG_HID_SONY=y | ||
2124 | CONFIG_HID_SUNPLUS=y | ||
2125 | # CONFIG_HID_GREENASIA is not set | ||
2126 | # CONFIG_HID_SMARTJOYPLUS is not set | ||
2127 | CONFIG_HID_TOPSEED=y | ||
2128 | # CONFIG_HID_THRUSTMASTER is not set | ||
2129 | # CONFIG_HID_WACOM is not set | ||
2130 | # CONFIG_HID_ZEROPLUS is not set | ||
2131 | CONFIG_USB_SUPPORT=y | ||
2132 | CONFIG_USB_ARCH_HAS_HCD=y | ||
2133 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
2134 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
2135 | CONFIG_USB=y | ||
2136 | # CONFIG_USB_DEBUG is not set | ||
2137 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
2138 | |||
2139 | # | ||
2140 | # Miscellaneous USB options | ||
2141 | # | ||
2142 | CONFIG_USB_DEVICEFS=y | ||
2143 | CONFIG_USB_DEVICE_CLASS=y | ||
2144 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
2145 | CONFIG_USB_SUSPEND=y | ||
2146 | CONFIG_USB_OTG=y | ||
2147 | # CONFIG_USB_OTG_WHITELIST is not set | ||
2148 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
2149 | CONFIG_USB_MON=y | ||
2150 | # CONFIG_USB_WUSB is not set | ||
2151 | # CONFIG_USB_WUSB_CBAF is not set | ||
2152 | |||
2153 | # | ||
2154 | # USB Host Controller Drivers | ||
2155 | # | ||
2156 | # CONFIG_USB_C67X00_HCD is not set | ||
2157 | CONFIG_USB_EHCI_HCD=y | ||
2158 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
2159 | CONFIG_USB_EHCI_TT_NEWSCHED=y | ||
2160 | CONFIG_USB_OXU210HP_HCD=y | ||
2161 | # CONFIG_USB_ISP116X_HCD is not set | ||
2162 | # CONFIG_USB_ISP1760_HCD is not set | ||
2163 | # CONFIG_USB_ISP1362_HCD is not set | ||
2164 | # CONFIG_USB_OHCI_HCD is not set | ||
2165 | # CONFIG_USB_U132_HCD is not set | ||
2166 | # CONFIG_USB_SL811_HCD is not set | ||
2167 | # CONFIG_USB_R8A66597_HCD is not set | ||
2168 | # CONFIG_USB_HWA_HCD is not set | ||
2169 | CONFIG_USB_MUSB_HDRC=y | ||
2170 | CONFIG_USB_MUSB_SOC=y | ||
2171 | |||
2172 | # | ||
2173 | # OMAP 343x high speed USB support | ||
2174 | # | ||
2175 | # CONFIG_USB_MUSB_HOST is not set | ||
2176 | # CONFIG_USB_MUSB_PERIPHERAL is not set | ||
2177 | CONFIG_USB_MUSB_OTG=y | ||
2178 | CONFIG_USB_GADGET_MUSB_HDRC=y | ||
2179 | CONFIG_USB_MUSB_HDRC_HCD=y | ||
2180 | # CONFIG_MUSB_PIO_ONLY is not set | ||
2181 | CONFIG_USB_INVENTRA_DMA=y | ||
2182 | CONFIG_MUSB_USE_SYSTEM_DMA_RX=y | ||
2183 | # CONFIG_USB_TI_CPPI_DMA is not set | ||
2184 | # CONFIG_USB_TI_CPPI41_DMA is not set | ||
2185 | # CONFIG_USB_MUSB_DEBUG is not set | ||
2186 | |||
2187 | # | ||
2188 | # USB Device Class drivers | ||
2189 | # | ||
2190 | CONFIG_USB_ACM=m | ||
2191 | CONFIG_USB_PRINTER=m | ||
2192 | CONFIG_USB_WDM=m | ||
2193 | CONFIG_USB_TMC=m | ||
2194 | |||
2195 | # | ||
2196 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
2197 | # | ||
2198 | |||
2199 | # | ||
2200 | # also be needed; see USB_STORAGE Help for more info | ||
2201 | # | ||
2202 | CONFIG_USB_STORAGE=y | ||
2203 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
2204 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
2205 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
2206 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
2207 | # CONFIG_USB_STORAGE_USBAT is not set | ||
2208 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
2209 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
2210 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
2211 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
2212 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
2213 | # CONFIG_USB_STORAGE_KARMA is not set | ||
2214 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
2215 | # CONFIG_USB_LIBUSUAL is not set | ||
2216 | |||
2217 | # | ||
2218 | # USB Imaging devices | ||
2219 | # | ||
2220 | # CONFIG_USB_MDC800 is not set | ||
2221 | # CONFIG_USB_MICROTEK is not set | ||
2222 | |||
2223 | # | ||
2224 | # USB port drivers | ||
2225 | # | ||
2226 | CONFIG_USB_SERIAL=m | ||
2227 | CONFIG_USB_EZUSB=y | ||
2228 | CONFIG_USB_SERIAL_GENERIC=y | ||
2229 | CONFIG_USB_SERIAL_AIRCABLE=m | ||
2230 | CONFIG_USB_SERIAL_ARK3116=m | ||
2231 | CONFIG_USB_SERIAL_BELKIN=m | ||
2232 | CONFIG_USB_SERIAL_CH341=m | ||
2233 | CONFIG_USB_SERIAL_WHITEHEAT=m | ||
2234 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | ||
2235 | # CONFIG_USB_SERIAL_CP210X is not set | ||
2236 | CONFIG_USB_SERIAL_CYPRESS_M8=m | ||
2237 | CONFIG_USB_SERIAL_EMPEG=m | ||
2238 | CONFIG_USB_SERIAL_FTDI_SIO=m | ||
2239 | CONFIG_USB_SERIAL_FUNSOFT=m | ||
2240 | CONFIG_USB_SERIAL_VISOR=m | ||
2241 | CONFIG_USB_SERIAL_IPAQ=m | ||
2242 | CONFIG_USB_SERIAL_IR=m | ||
2243 | CONFIG_USB_SERIAL_EDGEPORT=m | ||
2244 | CONFIG_USB_SERIAL_EDGEPORT_TI=m | ||
2245 | CONFIG_USB_SERIAL_GARMIN=m | ||
2246 | CONFIG_USB_SERIAL_IPW=m | ||
2247 | CONFIG_USB_SERIAL_IUU=m | ||
2248 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m | ||
2249 | CONFIG_USB_SERIAL_KEYSPAN=m | ||
2250 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | ||
2251 | CONFIG_USB_SERIAL_KEYSPAN_USA28=y | ||
2252 | CONFIG_USB_SERIAL_KEYSPAN_USA28X=y | ||
2253 | CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y | ||
2254 | CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y | ||
2255 | CONFIG_USB_SERIAL_KEYSPAN_USA19=y | ||
2256 | CONFIG_USB_SERIAL_KEYSPAN_USA18X=y | ||
2257 | CONFIG_USB_SERIAL_KEYSPAN_USA19W=y | ||
2258 | CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y | ||
2259 | CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y | ||
2260 | CONFIG_USB_SERIAL_KEYSPAN_USA49W=y | ||
2261 | CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | ||
2262 | CONFIG_USB_SERIAL_KLSI=m | ||
2263 | CONFIG_USB_SERIAL_KOBIL_SCT=m | ||
2264 | CONFIG_USB_SERIAL_MCT_U232=m | ||
2265 | CONFIG_USB_SERIAL_MOS7720=m | ||
2266 | CONFIG_USB_SERIAL_MOS7840=m | ||
2267 | CONFIG_USB_SERIAL_MOTOROLA=m | ||
2268 | CONFIG_USB_SERIAL_NAVMAN=m | ||
2269 | CONFIG_USB_SERIAL_PL2303=m | ||
2270 | CONFIG_USB_SERIAL_OTI6858=m | ||
2271 | # CONFIG_USB_SERIAL_QUALCOMM is not set | ||
2272 | CONFIG_USB_SERIAL_SPCP8X5=m | ||
2273 | CONFIG_USB_SERIAL_HP4X=m | ||
2274 | CONFIG_USB_SERIAL_SAFE=m | ||
2275 | # CONFIG_USB_SERIAL_SAFE_PADDED is not set | ||
2276 | CONFIG_USB_SERIAL_SIEMENS_MPI=m | ||
2277 | CONFIG_USB_SERIAL_SIERRAWIRELESS=m | ||
2278 | # CONFIG_USB_SERIAL_SYMBOL is not set | ||
2279 | CONFIG_USB_SERIAL_TI=m | ||
2280 | CONFIG_USB_SERIAL_CYBERJACK=m | ||
2281 | CONFIG_USB_SERIAL_XIRCOM=m | ||
2282 | CONFIG_USB_SERIAL_OPTION=m | ||
2283 | CONFIG_USB_SERIAL_OMNINET=m | ||
2284 | CONFIG_USB_SERIAL_OPTICON=m | ||
2285 | CONFIG_USB_SERIAL_DEBUG=m | ||
2286 | |||
2287 | # | ||
2288 | # USB Miscellaneous drivers | ||
2289 | # | ||
2290 | CONFIG_USB_EMI62=m | ||
2291 | CONFIG_USB_EMI26=m | ||
2292 | # CONFIG_USB_ADUTUX is not set | ||
2293 | # CONFIG_USB_SEVSEG is not set | ||
2294 | # CONFIG_USB_RIO500 is not set | ||
2295 | CONFIG_USB_LEGOTOWER=m | ||
2296 | CONFIG_USB_LCD=m | ||
2297 | CONFIG_USB_BERRY_CHARGE=m | ||
2298 | CONFIG_USB_LED=m | ||
2299 | CONFIG_USB_CYPRESS_CY7C63=m | ||
2300 | CONFIG_USB_CYTHERM=m | ||
2301 | CONFIG_USB_IDMOUSE=m | ||
2302 | CONFIG_USB_FTDI_ELAN=m | ||
2303 | # CONFIG_USB_APPLEDISPLAY is not set | ||
2304 | CONFIG_USB_SISUSBVGA=m | ||
2305 | CONFIG_USB_SISUSBVGA_CON=y | ||
2306 | CONFIG_USB_LD=m | ||
2307 | CONFIG_USB_TRANCEVIBRATOR=m | ||
2308 | # CONFIG_USB_IOWARRIOR is not set | ||
2309 | CONFIG_USB_TEST=m | ||
2310 | # CONFIG_USB_ISIGHTFW is not set | ||
2311 | CONFIG_USB_VST=m | ||
2312 | CONFIG_USB_ATM=m | ||
2313 | CONFIG_USB_SPEEDTOUCH=m | ||
2314 | CONFIG_USB_CXACRU=m | ||
2315 | CONFIG_USB_UEAGLEATM=m | ||
2316 | CONFIG_USB_XUSBATM=m | ||
2317 | CONFIG_USB_GADGET=m | ||
2318 | # CONFIG_USB_GADGET_DEBUG is not set | ||
2319 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
2320 | CONFIG_USB_GADGET_DEBUG_FS=y | ||
2321 | CONFIG_USB_GADGET_VBUS_DRAW=2 | ||
2322 | CONFIG_USB_GADGET_SELECTED=y | ||
2323 | # CONFIG_USB_GADGET_AT91 is not set | ||
2324 | # CONFIG_USB_GADGET_ATMEL_USBA is not set | ||
2325 | # CONFIG_USB_GADGET_FSL_USB2 is not set | ||
2326 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
2327 | # CONFIG_USB_GADGET_OMAP is not set | ||
2328 | # CONFIG_USB_GADGET_PXA25X is not set | ||
2329 | # CONFIG_USB_GADGET_R8A66597 is not set | ||
2330 | # CONFIG_USB_GADGET_PXA27X is not set | ||
2331 | # CONFIG_USB_GADGET_S3C_HSOTG is not set | ||
2332 | # CONFIG_USB_GADGET_IMX is not set | ||
2333 | # CONFIG_USB_GADGET_S3C2410 is not set | ||
2334 | # CONFIG_USB_GADGET_M66592 is not set | ||
2335 | # CONFIG_USB_GADGET_AMD5536UDC is not set | ||
2336 | # CONFIG_USB_GADGET_FSL_QE is not set | ||
2337 | # CONFIG_USB_GADGET_CI13XXX is not set | ||
2338 | # CONFIG_USB_GADGET_NET2280 is not set | ||
2339 | # CONFIG_USB_GADGET_GOKU is not set | ||
2340 | # CONFIG_USB_GADGET_LANGWELL is not set | ||
2341 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
2342 | CONFIG_USB_GADGET_DUALSPEED=y | ||
2343 | CONFIG_USB_ZERO=m | ||
2344 | CONFIG_USB_ZERO_HNPTEST=y | ||
2345 | # CONFIG_USB_AUDIO is not set | ||
2346 | CONFIG_USB_ETH=m | ||
2347 | CONFIG_USB_ETH_RNDIS=y | ||
2348 | # CONFIG_USB_ETH_EEM is not set | ||
2349 | CONFIG_USB_GADGETFS=m | ||
2350 | CONFIG_USB_FILE_STORAGE=m | ||
2351 | # CONFIG_USB_FILE_STORAGE_TEST is not set | ||
2352 | # CONFIG_USB_MASS_STORAGE is not set | ||
2353 | CONFIG_USB_G_SERIAL=m | ||
2354 | CONFIG_USB_MIDI_GADGET=m | ||
2355 | CONFIG_USB_G_PRINTER=m | ||
2356 | CONFIG_USB_CDC_COMPOSITE=m | ||
2357 | # CONFIG_USB_G_MULTI is not set | ||
2358 | |||
2359 | # | ||
2360 | # OTG and related infrastructure | ||
2361 | # | ||
2362 | CONFIG_USB_OTG_UTILS=y | ||
2363 | CONFIG_USB_GPIO_VBUS=y | ||
2364 | # CONFIG_ISP1301_OMAP is not set | ||
2365 | # CONFIG_USB_ULPI is not set | ||
2366 | CONFIG_TWL4030_USB=y | ||
2367 | CONFIG_NOP_USB_XCEIV=y | ||
2368 | CONFIG_MMC=y | ||
2369 | # CONFIG_MMC_DEBUG is not set | ||
2370 | CONFIG_MMC_UNSAFE_RESUME=y | ||
2371 | |||
2372 | # | ||
2373 | # MMC/SD/SDIO Card Drivers | ||
2374 | # | ||
2375 | CONFIG_MMC_BLOCK=y | ||
2376 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
2377 | CONFIG_SDIO_UART=y | ||
2378 | # CONFIG_MMC_TEST is not set | ||
2379 | |||
2380 | # | ||
2381 | # MMC/SD/SDIO Host Controller Drivers | ||
2382 | # | ||
2383 | # CONFIG_MMC_SDHCI is not set | ||
2384 | # CONFIG_MMC_OMAP is not set | ||
2385 | CONFIG_MMC_OMAP_HS=y | ||
2386 | # CONFIG_MMC_AT91 is not set | ||
2387 | # CONFIG_MMC_ATMELMCI is not set | ||
2388 | CONFIG_MMC_SPI=m | ||
2389 | # CONFIG_MEMSTICK is not set | ||
2390 | CONFIG_NEW_LEDS=y | ||
2391 | CONFIG_LEDS_CLASS=y | ||
2392 | |||
2393 | # | ||
2394 | # LED drivers | ||
2395 | # | ||
2396 | # CONFIG_LEDS_PCA9532 is not set | ||
2397 | CONFIG_LEDS_GPIO=y | ||
2398 | CONFIG_LEDS_GPIO_PLATFORM=y | ||
2399 | # CONFIG_LEDS_LP3944 is not set | ||
2400 | # CONFIG_LEDS_PCA955X is not set | ||
2401 | # CONFIG_LEDS_DAC124S085 is not set | ||
2402 | # CONFIG_LEDS_BD2802 is not set | ||
2403 | |||
2404 | # | ||
2405 | # LED Triggers | ||
2406 | # | ||
2407 | CONFIG_LEDS_TRIGGERS=y | ||
2408 | CONFIG_LEDS_TRIGGER_TIMER=m | ||
2409 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
2410 | CONFIG_LEDS_TRIGGER_BACKLIGHT=m | ||
2411 | # CONFIG_LEDS_TRIGGER_GPIO is not set | ||
2412 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=m | ||
2413 | |||
2414 | # | ||
2415 | # iptables trigger is under Netfilter config (LED target) | ||
2416 | # | ||
2417 | # CONFIG_ACCESSIBILITY is not set | ||
2418 | CONFIG_RTC_LIB=y | ||
2419 | CONFIG_RTC_CLASS=y | ||
2420 | CONFIG_RTC_HCTOSYS=y | ||
2421 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
2422 | # CONFIG_RTC_DEBUG is not set | ||
2423 | |||
2424 | # | ||
2425 | # RTC interfaces | ||
2426 | # | ||
2427 | CONFIG_RTC_INTF_SYSFS=y | ||
2428 | CONFIG_RTC_INTF_PROC=y | ||
2429 | CONFIG_RTC_INTF_DEV=y | ||
2430 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
2431 | # CONFIG_RTC_DRV_TEST is not set | ||
2432 | |||
2433 | # | ||
2434 | # I2C RTC drivers | ||
2435 | # | ||
2436 | CONFIG_RTC_DRV_DS1307=y | ||
2437 | # CONFIG_RTC_DRV_DS1374 is not set | ||
2438 | # CONFIG_RTC_DRV_DS1672 is not set | ||
2439 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
2440 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
2441 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
2442 | # CONFIG_RTC_DRV_X1205 is not set | ||
2443 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
2444 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
2445 | # CONFIG_RTC_DRV_M41T80 is not set | ||
2446 | CONFIG_RTC_DRV_TWL4030=y | ||
2447 | # CONFIG_RTC_DRV_S35390A is not set | ||
2448 | # CONFIG_RTC_DRV_FM3130 is not set | ||
2449 | # CONFIG_RTC_DRV_RX8581 is not set | ||
2450 | # CONFIG_RTC_DRV_RX8025 is not set | ||
2451 | |||
2452 | # | ||
2453 | # SPI RTC drivers | ||
2454 | # | ||
2455 | # CONFIG_RTC_DRV_M41T94 is not set | ||
2456 | # CONFIG_RTC_DRV_DS1305 is not set | ||
2457 | # CONFIG_RTC_DRV_DS1390 is not set | ||
2458 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
2459 | # CONFIG_RTC_DRV_R9701 is not set | ||
2460 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
2461 | # CONFIG_RTC_DRV_DS3234 is not set | ||
2462 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
2463 | |||
2464 | # | ||
2465 | # Platform RTC drivers | ||
2466 | # | ||
2467 | # CONFIG_RTC_DRV_CMOS is not set | ||
2468 | # CONFIG_RTC_DRV_DS1286 is not set | ||
2469 | # CONFIG_RTC_DRV_DS1511 is not set | ||
2470 | # CONFIG_RTC_DRV_DS1553 is not set | ||
2471 | # CONFIG_RTC_DRV_DS1742 is not set | ||
2472 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
2473 | # CONFIG_RTC_DRV_M48T86 is not set | ||
2474 | # CONFIG_RTC_DRV_M48T35 is not set | ||
2475 | # CONFIG_RTC_DRV_M48T59 is not set | ||
2476 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
2477 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
2478 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
2479 | # CONFIG_RTC_DRV_V3020 is not set | ||
2480 | |||
2481 | # | ||
2482 | # on-CPU RTC drivers | ||
2483 | # | ||
2484 | # CONFIG_DMADEVICES is not set | ||
2485 | # CONFIG_AUXDISPLAY is not set | ||
2486 | CONFIG_UIO=m | ||
2487 | CONFIG_UIO_PDRV=m | ||
2488 | CONFIG_UIO_PDRV_GENIRQ=m | ||
2489 | # CONFIG_UIO_SMX is not set | ||
2490 | # CONFIG_UIO_SERCOS3 is not set | ||
2491 | |||
2492 | # | ||
2493 | # TI VLYNQ | ||
2494 | # | ||
2495 | CONFIG_STAGING=y | ||
2496 | # CONFIG_STAGING_EXCLUDE_BUILD is not set | ||
2497 | # CONFIG_USB_IP_COMMON is not set | ||
2498 | CONFIG_W35UND=m | ||
2499 | CONFIG_PRISM2_USB=m | ||
2500 | # CONFIG_ECHO is not set | ||
2501 | CONFIG_OTUS=m | ||
2502 | # CONFIG_COMEDI is not set | ||
2503 | # CONFIG_ASUS_OLED is not set | ||
2504 | # CONFIG_INPUT_MIMIO is not set | ||
2505 | # CONFIG_TRANZPORT is not set | ||
2506 | |||
2507 | # | ||
2508 | # Qualcomm MSM Camera And Video | ||
2509 | # | ||
2510 | |||
2511 | # | ||
2512 | # Camera Sensor Selection | ||
2513 | # | ||
2514 | # CONFIG_INPUT_GPIO is not set | ||
2515 | # CONFIG_DST is not set | ||
2516 | # CONFIG_POHMELFS is not set | ||
2517 | # CONFIG_PLAN9AUTH is not set | ||
2518 | # CONFIG_LINE6_USB is not set | ||
2519 | # CONFIG_USB_SERIAL_QUATECH2 is not set | ||
2520 | # CONFIG_USB_SERIAL_QUATECH_USB2 is not set | ||
2521 | # CONFIG_VT6656 is not set | ||
2522 | # CONFIG_FB_UDL is not set | ||
2523 | |||
2524 | # | ||
2525 | # RAR Register Driver | ||
2526 | # | ||
2527 | # CONFIG_RAR_REGISTER is not set | ||
2528 | # CONFIG_IIO is not set | ||
2529 | # CONFIG_RAMZSWAP is not set | ||
2530 | # CONFIG_BATMAN_ADV is not set | ||
2531 | # CONFIG_STRIP is not set | ||
2532 | |||
2533 | # | ||
2534 | # CBUS support | ||
2535 | # | ||
2536 | # CONFIG_CBUS is not set | ||
2537 | |||
2538 | # | ||
2539 | # File systems | ||
2540 | # | ||
2541 | CONFIG_FS_JOURNAL_INFO=y | ||
2542 | CONFIG_EXT2_FS=y | ||
2543 | # CONFIG_EXT2_FS_XATTR is not set | ||
2544 | # CONFIG_EXT2_FS_XIP is not set | ||
2545 | CONFIG_EXT3_FS=y | ||
2546 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
2547 | # CONFIG_EXT3_FS_XATTR is not set | ||
2548 | CONFIG_EXT4_FS=m | ||
2549 | CONFIG_EXT4_FS_XATTR=y | ||
2550 | # CONFIG_EXT4_FS_POSIX_ACL is not set | ||
2551 | # CONFIG_EXT4_FS_SECURITY is not set | ||
2552 | # CONFIG_EXT4_DEBUG is not set | ||
2553 | CONFIG_JBD=y | ||
2554 | # CONFIG_JBD_DEBUG is not set | ||
2555 | CONFIG_JBD2=m | ||
2556 | # CONFIG_JBD2_DEBUG is not set | ||
2557 | CONFIG_FS_MBCACHE=m | ||
2558 | CONFIG_REISERFS_FS=m | ||
2559 | # CONFIG_REISERFS_CHECK is not set | ||
2560 | CONFIG_REISERFS_PROC_INFO=y | ||
2561 | CONFIG_REISERFS_FS_XATTR=y | ||
2562 | # CONFIG_REISERFS_FS_POSIX_ACL is not set | ||
2563 | # CONFIG_REISERFS_FS_SECURITY is not set | ||
2564 | CONFIG_JFS_FS=m | ||
2565 | # CONFIG_JFS_POSIX_ACL is not set | ||
2566 | # CONFIG_JFS_SECURITY is not set | ||
2567 | # CONFIG_JFS_DEBUG is not set | ||
2568 | # CONFIG_JFS_STATISTICS is not set | ||
2569 | CONFIG_FS_POSIX_ACL=y | ||
2570 | CONFIG_XFS_FS=m | ||
2571 | # CONFIG_XFS_QUOTA is not set | ||
2572 | # CONFIG_XFS_POSIX_ACL is not set | ||
2573 | # CONFIG_XFS_RT is not set | ||
2574 | # CONFIG_XFS_DEBUG is not set | ||
2575 | CONFIG_GFS2_FS=m | ||
2576 | # CONFIG_GFS2_FS_LOCKING_DLM is not set | ||
2577 | CONFIG_OCFS2_FS=m | ||
2578 | CONFIG_OCFS2_FS_O2CB=m | ||
2579 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
2580 | CONFIG_OCFS2_FS_STATS=y | ||
2581 | CONFIG_OCFS2_DEBUG_MASKLOG=y | ||
2582 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
2583 | # CONFIG_OCFS2_FS_POSIX_ACL is not set | ||
2584 | CONFIG_BTRFS_FS=m | ||
2585 | # CONFIG_BTRFS_FS_POSIX_ACL is not set | ||
2586 | # CONFIG_NILFS2_FS is not set | ||
2587 | CONFIG_FILE_LOCKING=y | ||
2588 | CONFIG_FSNOTIFY=y | ||
2589 | CONFIG_DNOTIFY=y | ||
2590 | CONFIG_INOTIFY=y | ||
2591 | CONFIG_INOTIFY_USER=y | ||
2592 | CONFIG_QUOTA=y | ||
2593 | # CONFIG_QUOTA_NETLINK_INTERFACE is not set | ||
2594 | CONFIG_PRINT_QUOTA_WARNING=y | ||
2595 | CONFIG_QUOTA_TREE=y | ||
2596 | # CONFIG_QFMT_V1 is not set | ||
2597 | CONFIG_QFMT_V2=y | ||
2598 | CONFIG_QUOTACTL=y | ||
2599 | # CONFIG_AUTOFS_FS is not set | ||
2600 | CONFIG_AUTOFS4_FS=m | ||
2601 | CONFIG_FUSE_FS=y | ||
2602 | # CONFIG_CUSE is not set | ||
2603 | CONFIG_GENERIC_ACL=y | ||
2604 | |||
2605 | # | ||
2606 | # Caches | ||
2607 | # | ||
2608 | # CONFIG_FSCACHE is not set | ||
2609 | |||
2610 | # | ||
2611 | # CD-ROM/DVD Filesystems | ||
2612 | # | ||
2613 | CONFIG_ISO9660_FS=m | ||
2614 | CONFIG_JOLIET=y | ||
2615 | CONFIG_ZISOFS=y | ||
2616 | CONFIG_UDF_FS=m | ||
2617 | CONFIG_UDF_NLS=y | ||
2618 | |||
2619 | # | ||
2620 | # DOS/FAT/NT Filesystems | ||
2621 | # | ||
2622 | CONFIG_FAT_FS=y | ||
2623 | CONFIG_MSDOS_FS=y | ||
2624 | CONFIG_VFAT_FS=y | ||
2625 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
2626 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
2627 | CONFIG_NTFS_FS=m | ||
2628 | # CONFIG_NTFS_DEBUG is not set | ||
2629 | CONFIG_NTFS_RW=y | ||
2630 | |||
2631 | # | ||
2632 | # Pseudo filesystems | ||
2633 | # | ||
2634 | CONFIG_PROC_FS=y | ||
2635 | CONFIG_PROC_SYSCTL=y | ||
2636 | CONFIG_PROC_PAGE_MONITOR=y | ||
2637 | CONFIG_SYSFS=y | ||
2638 | CONFIG_TMPFS=y | ||
2639 | CONFIG_TMPFS_POSIX_ACL=y | ||
2640 | # CONFIG_HUGETLB_PAGE is not set | ||
2641 | CONFIG_CONFIGFS_FS=m | ||
2642 | CONFIG_MISC_FILESYSTEMS=y | ||
2643 | CONFIG_ADFS_FS=m | ||
2644 | # CONFIG_ADFS_FS_RW is not set | ||
2645 | CONFIG_AFFS_FS=m | ||
2646 | # CONFIG_ECRYPT_FS is not set | ||
2647 | CONFIG_HFS_FS=m | ||
2648 | CONFIG_HFSPLUS_FS=m | ||
2649 | CONFIG_BEFS_FS=m | ||
2650 | # CONFIG_BEFS_DEBUG is not set | ||
2651 | CONFIG_BFS_FS=m | ||
2652 | CONFIG_EFS_FS=m | ||
2653 | CONFIG_JFFS2_FS=y | ||
2654 | CONFIG_JFFS2_FS_DEBUG=0 | ||
2655 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
2656 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
2657 | CONFIG_JFFS2_SUMMARY=y | ||
2658 | CONFIG_JFFS2_FS_XATTR=y | ||
2659 | CONFIG_JFFS2_FS_POSIX_ACL=y | ||
2660 | CONFIG_JFFS2_FS_SECURITY=y | ||
2661 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
2662 | CONFIG_JFFS2_ZLIB=y | ||
2663 | CONFIG_JFFS2_LZO=y | ||
2664 | CONFIG_JFFS2_RTIME=y | ||
2665 | CONFIG_JFFS2_RUBIN=y | ||
2666 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
2667 | # CONFIG_JFFS2_CMODE_PRIORITY is not set | ||
2668 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
2669 | CONFIG_JFFS2_CMODE_FAVOURLZO=y | ||
2670 | CONFIG_UBIFS_FS=y | ||
2671 | CONFIG_UBIFS_FS_XATTR=y | ||
2672 | CONFIG_UBIFS_FS_ADVANCED_COMPR=y | ||
2673 | CONFIG_UBIFS_FS_LZO=y | ||
2674 | CONFIG_UBIFS_FS_ZLIB=y | ||
2675 | # CONFIG_UBIFS_FS_DEBUG is not set | ||
2676 | CONFIG_CRAMFS=m | ||
2677 | CONFIG_SQUASHFS=y | ||
2678 | # CONFIG_SQUASHFS_EMBEDDED is not set | ||
2679 | CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 | ||
2680 | CONFIG_VXFS_FS=m | ||
2681 | CONFIG_MINIX_FS=m | ||
2682 | CONFIG_OMFS_FS=m | ||
2683 | CONFIG_HPFS_FS=m | ||
2684 | CONFIG_QNX4FS_FS=m | ||
2685 | CONFIG_ROMFS_FS=m | ||
2686 | CONFIG_ROMFS_BACKED_BY_BLOCK=y | ||
2687 | # CONFIG_ROMFS_BACKED_BY_MTD is not set | ||
2688 | # CONFIG_ROMFS_BACKED_BY_BOTH is not set | ||
2689 | CONFIG_ROMFS_ON_BLOCK=y | ||
2690 | CONFIG_SYSV_FS=m | ||
2691 | CONFIG_UFS_FS=m | ||
2692 | # CONFIG_UFS_FS_WRITE is not set | ||
2693 | # CONFIG_UFS_DEBUG is not set | ||
2694 | CONFIG_NETWORK_FILESYSTEMS=y | ||
2695 | CONFIG_NFS_FS=y | ||
2696 | CONFIG_NFS_V3=y | ||
2697 | # CONFIG_NFS_V3_ACL is not set | ||
2698 | CONFIG_NFS_V4=y | ||
2699 | # CONFIG_NFS_V4_1 is not set | ||
2700 | CONFIG_ROOT_NFS=y | ||
2701 | CONFIG_NFSD=m | ||
2702 | CONFIG_NFSD_V2_ACL=y | ||
2703 | CONFIG_NFSD_V3=y | ||
2704 | CONFIG_NFSD_V3_ACL=y | ||
2705 | CONFIG_NFSD_V4=y | ||
2706 | CONFIG_LOCKD=y | ||
2707 | CONFIG_LOCKD_V4=y | ||
2708 | CONFIG_EXPORTFS=m | ||
2709 | CONFIG_NFS_ACL_SUPPORT=m | ||
2710 | CONFIG_NFS_COMMON=y | ||
2711 | CONFIG_SUNRPC=y | ||
2712 | CONFIG_SUNRPC_GSS=y | ||
2713 | CONFIG_RPCSEC_GSS_KRB5=y | ||
2714 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
2715 | CONFIG_SMB_FS=m | ||
2716 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
2717 | CONFIG_CIFS=m | ||
2718 | CONFIG_CIFS_STATS=y | ||
2719 | CONFIG_CIFS_STATS2=y | ||
2720 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
2721 | # CONFIG_CIFS_UPCALL is not set | ||
2722 | # CONFIG_CIFS_XATTR is not set | ||
2723 | # CONFIG_CIFS_DEBUG2 is not set | ||
2724 | # CONFIG_CIFS_DFS_UPCALL is not set | ||
2725 | CONFIG_CIFS_EXPERIMENTAL=y | ||
2726 | CONFIG_NCP_FS=m | ||
2727 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
2728 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
2729 | # CONFIG_NCPFS_STRONG is not set | ||
2730 | # CONFIG_NCPFS_NFS_NS is not set | ||
2731 | # CONFIG_NCPFS_OS2_NS is not set | ||
2732 | # CONFIG_NCPFS_SMALLDOS is not set | ||
2733 | # CONFIG_NCPFS_NLS is not set | ||
2734 | # CONFIG_NCPFS_EXTRAS is not set | ||
2735 | CONFIG_CODA_FS=m | ||
2736 | CONFIG_AFS_FS=m | ||
2737 | # CONFIG_AFS_DEBUG is not set | ||
2738 | CONFIG_9P_FS=m | ||
2739 | |||
2740 | # | ||
2741 | # Partition Types | ||
2742 | # | ||
2743 | CONFIG_PARTITION_ADVANCED=y | ||
2744 | # CONFIG_ACORN_PARTITION is not set | ||
2745 | # CONFIG_OSF_PARTITION is not set | ||
2746 | # CONFIG_AMIGA_PARTITION is not set | ||
2747 | # CONFIG_ATARI_PARTITION is not set | ||
2748 | CONFIG_MAC_PARTITION=y | ||
2749 | CONFIG_MSDOS_PARTITION=y | ||
2750 | CONFIG_BSD_DISKLABEL=y | ||
2751 | CONFIG_MINIX_SUBPARTITION=y | ||
2752 | CONFIG_SOLARIS_X86_PARTITION=y | ||
2753 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
2754 | CONFIG_LDM_PARTITION=y | ||
2755 | CONFIG_LDM_DEBUG=y | ||
2756 | # CONFIG_SGI_PARTITION is not set | ||
2757 | # CONFIG_ULTRIX_PARTITION is not set | ||
2758 | # CONFIG_SUN_PARTITION is not set | ||
2759 | # CONFIG_KARMA_PARTITION is not set | ||
2760 | CONFIG_EFI_PARTITION=y | ||
2761 | # CONFIG_SYSV68_PARTITION is not set | ||
2762 | CONFIG_NLS=y | ||
2763 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
2764 | CONFIG_NLS_CODEPAGE_437=y | ||
2765 | CONFIG_NLS_CODEPAGE_737=m | ||
2766 | CONFIG_NLS_CODEPAGE_775=m | ||
2767 | CONFIG_NLS_CODEPAGE_850=m | ||
2768 | CONFIG_NLS_CODEPAGE_852=m | ||
2769 | CONFIG_NLS_CODEPAGE_855=m | ||
2770 | CONFIG_NLS_CODEPAGE_857=m | ||
2771 | CONFIG_NLS_CODEPAGE_860=m | ||
2772 | CONFIG_NLS_CODEPAGE_861=m | ||
2773 | CONFIG_NLS_CODEPAGE_862=m | ||
2774 | CONFIG_NLS_CODEPAGE_863=m | ||
2775 | CONFIG_NLS_CODEPAGE_864=m | ||
2776 | CONFIG_NLS_CODEPAGE_865=m | ||
2777 | CONFIG_NLS_CODEPAGE_866=m | ||
2778 | CONFIG_NLS_CODEPAGE_869=m | ||
2779 | CONFIG_NLS_CODEPAGE_936=m | ||
2780 | CONFIG_NLS_CODEPAGE_950=m | ||
2781 | CONFIG_NLS_CODEPAGE_932=m | ||
2782 | CONFIG_NLS_CODEPAGE_949=m | ||
2783 | CONFIG_NLS_CODEPAGE_874=m | ||
2784 | CONFIG_NLS_ISO8859_8=m | ||
2785 | CONFIG_NLS_CODEPAGE_1250=m | ||
2786 | CONFIG_NLS_CODEPAGE_1251=m | ||
2787 | CONFIG_NLS_ASCII=m | ||
2788 | CONFIG_NLS_ISO8859_1=y | ||
2789 | CONFIG_NLS_ISO8859_2=m | ||
2790 | CONFIG_NLS_ISO8859_3=m | ||
2791 | CONFIG_NLS_ISO8859_4=m | ||
2792 | CONFIG_NLS_ISO8859_5=m | ||
2793 | CONFIG_NLS_ISO8859_6=m | ||
2794 | CONFIG_NLS_ISO8859_7=m | ||
2795 | CONFIG_NLS_ISO8859_9=m | ||
2796 | CONFIG_NLS_ISO8859_13=m | ||
2797 | CONFIG_NLS_ISO8859_14=m | ||
2798 | CONFIG_NLS_ISO8859_15=m | ||
2799 | CONFIG_NLS_KOI8_R=m | ||
2800 | CONFIG_NLS_KOI8_U=m | ||
2801 | CONFIG_NLS_UTF8=y | ||
2802 | CONFIG_DLM=m | ||
2803 | # CONFIG_DLM_DEBUG is not set | ||
2804 | |||
2805 | # | ||
2806 | # Kernel hacking | ||
2807 | # | ||
2808 | CONFIG_PRINTK_TIME=y | ||
2809 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
2810 | CONFIG_ENABLE_MUST_CHECK=y | ||
2811 | CONFIG_FRAME_WARN=1024 | ||
2812 | CONFIG_MAGIC_SYSRQ=y | ||
2813 | # CONFIG_STRIP_ASM_SYMS is not set | ||
2814 | # CONFIG_UNUSED_SYMBOLS is not set | ||
2815 | CONFIG_DEBUG_FS=y | ||
2816 | # CONFIG_HEADERS_CHECK is not set | ||
2817 | CONFIG_DEBUG_KERNEL=y | ||
2818 | # CONFIG_DEBUG_SHIRQ is not set | ||
2819 | CONFIG_DETECT_SOFTLOCKUP=y | ||
2820 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
2821 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
2822 | CONFIG_DETECT_HUNG_TASK=y | ||
2823 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
2824 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
2825 | CONFIG_SCHED_DEBUG=y | ||
2826 | CONFIG_SCHEDSTATS=y | ||
2827 | CONFIG_TIMER_STATS=y | ||
2828 | # CONFIG_DEBUG_OBJECTS is not set | ||
2829 | # CONFIG_DEBUG_SLAB is not set | ||
2830 | # CONFIG_DEBUG_KMEMLEAK is not set | ||
2831 | CONFIG_DEBUG_PREEMPT=y | ||
2832 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
2833 | # CONFIG_RT_MUTEX_TESTER is not set | ||
2834 | # CONFIG_DEBUG_SPINLOCK is not set | ||
2835 | CONFIG_DEBUG_MUTEXES=y | ||
2836 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
2837 | # CONFIG_PROVE_LOCKING is not set | ||
2838 | # CONFIG_LOCK_STAT is not set | ||
2839 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
2840 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
2841 | CONFIG_STACKTRACE=y | ||
2842 | # CONFIG_DEBUG_KOBJECT is not set | ||
2843 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
2844 | # CONFIG_DEBUG_INFO is not set | ||
2845 | # CONFIG_DEBUG_VM is not set | ||
2846 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
2847 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
2848 | # CONFIG_DEBUG_LIST is not set | ||
2849 | # CONFIG_DEBUG_SG is not set | ||
2850 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
2851 | # CONFIG_DEBUG_CREDENTIALS is not set | ||
2852 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
2853 | # CONFIG_RCU_TORTURE_TEST is not set | ||
2854 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
2855 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
2856 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
2857 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
2858 | # CONFIG_FAULT_INJECTION is not set | ||
2859 | # CONFIG_LATENCYTOP is not set | ||
2860 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
2861 | # CONFIG_PAGE_POISONING is not set | ||
2862 | CONFIG_NOP_TRACER=y | ||
2863 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
2864 | CONFIG_RING_BUFFER=y | ||
2865 | CONFIG_EVENT_TRACING=y | ||
2866 | CONFIG_CONTEXT_SWITCH_TRACER=y | ||
2867 | CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
2868 | CONFIG_TRACING=y | ||
2869 | CONFIG_TRACING_SUPPORT=y | ||
2870 | CONFIG_FTRACE=y | ||
2871 | # CONFIG_FUNCTION_TRACER is not set | ||
2872 | # CONFIG_IRQSOFF_TRACER is not set | ||
2873 | # CONFIG_PREEMPT_TRACER is not set | ||
2874 | # CONFIG_SCHED_TRACER is not set | ||
2875 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
2876 | # CONFIG_BOOT_TRACER is not set | ||
2877 | CONFIG_BRANCH_PROFILE_NONE=y | ||
2878 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
2879 | # CONFIG_PROFILE_ALL_BRANCHES is not set | ||
2880 | # CONFIG_STACK_TRACER is not set | ||
2881 | # CONFIG_KMEMTRACE is not set | ||
2882 | # CONFIG_WORKQUEUE_TRACER is not set | ||
2883 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
2884 | # CONFIG_RING_BUFFER_BENCHMARK is not set | ||
2885 | # CONFIG_DYNAMIC_DEBUG is not set | ||
2886 | # CONFIG_SAMPLES is not set | ||
2887 | CONFIG_HAVE_ARCH_KGDB=y | ||
2888 | # CONFIG_KGDB is not set | ||
2889 | CONFIG_ARM_UNWIND=y | ||
2890 | # CONFIG_DEBUG_USER is not set | ||
2891 | # CONFIG_DEBUG_ERRORS is not set | ||
2892 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
2893 | # CONFIG_DEBUG_LL is not set | ||
2894 | # CONFIG_OC_ETM is not set | ||
2895 | |||
2896 | # | ||
2897 | # Security options | ||
2898 | # | ||
2899 | CONFIG_KEYS=y | ||
2900 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
2901 | # CONFIG_SECURITY is not set | ||
2902 | # CONFIG_SECURITYFS is not set | ||
2903 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
2904 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
2905 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
2906 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
2907 | CONFIG_DEFAULT_SECURITY="" | ||
2908 | CONFIG_XOR_BLOCKS=m | ||
2909 | CONFIG_ASYNC_CORE=m | ||
2910 | CONFIG_ASYNC_MEMCPY=m | ||
2911 | CONFIG_ASYNC_XOR=m | ||
2912 | CONFIG_ASYNC_PQ=m | ||
2913 | CONFIG_ASYNC_RAID6_RECOV=m | ||
2914 | CONFIG_CRYPTO=y | ||
2915 | |||
2916 | # | ||
2917 | # Crypto core or helper | ||
2918 | # | ||
2919 | CONFIG_CRYPTO_FIPS=y | ||
2920 | CONFIG_CRYPTO_ALGAPI=y | ||
2921 | CONFIG_CRYPTO_ALGAPI2=y | ||
2922 | CONFIG_CRYPTO_AEAD=m | ||
2923 | CONFIG_CRYPTO_AEAD2=y | ||
2924 | CONFIG_CRYPTO_BLKCIPHER=y | ||
2925 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
2926 | CONFIG_CRYPTO_HASH=y | ||
2927 | CONFIG_CRYPTO_HASH2=y | ||
2928 | CONFIG_CRYPTO_RNG=m | ||
2929 | CONFIG_CRYPTO_RNG2=y | ||
2930 | CONFIG_CRYPTO_PCOMP=y | ||
2931 | CONFIG_CRYPTO_MANAGER=y | ||
2932 | CONFIG_CRYPTO_MANAGER2=y | ||
2933 | CONFIG_CRYPTO_GF128MUL=m | ||
2934 | CONFIG_CRYPTO_NULL=m | ||
2935 | CONFIG_CRYPTO_WORKQUEUE=y | ||
2936 | CONFIG_CRYPTO_CRYPTD=m | ||
2937 | CONFIG_CRYPTO_AUTHENC=m | ||
2938 | CONFIG_CRYPTO_TEST=m | ||
2939 | |||
2940 | # | ||
2941 | # Authenticated Encryption with Associated Data | ||
2942 | # | ||
2943 | CONFIG_CRYPTO_CCM=m | ||
2944 | CONFIG_CRYPTO_GCM=m | ||
2945 | CONFIG_CRYPTO_SEQIV=m | ||
2946 | |||
2947 | # | ||
2948 | # Block modes | ||
2949 | # | ||
2950 | CONFIG_CRYPTO_CBC=y | ||
2951 | CONFIG_CRYPTO_CTR=m | ||
2952 | CONFIG_CRYPTO_CTS=m | ||
2953 | CONFIG_CRYPTO_ECB=y | ||
2954 | CONFIG_CRYPTO_LRW=m | ||
2955 | CONFIG_CRYPTO_PCBC=m | ||
2956 | CONFIG_CRYPTO_XTS=m | ||
2957 | |||
2958 | # | ||
2959 | # Hash modes | ||
2960 | # | ||
2961 | CONFIG_CRYPTO_HMAC=m | ||
2962 | CONFIG_CRYPTO_XCBC=m | ||
2963 | # CONFIG_CRYPTO_VMAC is not set | ||
2964 | |||
2965 | # | ||
2966 | # Digest | ||
2967 | # | ||
2968 | CONFIG_CRYPTO_CRC32C=y | ||
2969 | CONFIG_CRYPTO_GHASH=m | ||
2970 | CONFIG_CRYPTO_MD4=m | ||
2971 | CONFIG_CRYPTO_MD5=y | ||
2972 | CONFIG_CRYPTO_MICHAEL_MIC=y | ||
2973 | CONFIG_CRYPTO_RMD128=m | ||
2974 | CONFIG_CRYPTO_RMD160=m | ||
2975 | CONFIG_CRYPTO_RMD256=m | ||
2976 | CONFIG_CRYPTO_RMD320=m | ||
2977 | CONFIG_CRYPTO_SHA1=m | ||
2978 | CONFIG_CRYPTO_SHA256=m | ||
2979 | CONFIG_CRYPTO_SHA512=m | ||
2980 | CONFIG_CRYPTO_TGR192=m | ||
2981 | CONFIG_CRYPTO_WP512=m | ||
2982 | |||
2983 | # | ||
2984 | # Ciphers | ||
2985 | # | ||
2986 | CONFIG_CRYPTO_AES=y | ||
2987 | CONFIG_CRYPTO_ANUBIS=m | ||
2988 | CONFIG_CRYPTO_ARC4=y | ||
2989 | CONFIG_CRYPTO_BLOWFISH=m | ||
2990 | CONFIG_CRYPTO_CAMELLIA=m | ||
2991 | CONFIG_CRYPTO_CAST5=m | ||
2992 | CONFIG_CRYPTO_CAST6=m | ||
2993 | CONFIG_CRYPTO_DES=y | ||
2994 | CONFIG_CRYPTO_FCRYPT=m | ||
2995 | CONFIG_CRYPTO_KHAZAD=m | ||
2996 | CONFIG_CRYPTO_SALSA20=m | ||
2997 | CONFIG_CRYPTO_SEED=m | ||
2998 | CONFIG_CRYPTO_SERPENT=m | ||
2999 | CONFIG_CRYPTO_TEA=m | ||
3000 | CONFIG_CRYPTO_TWOFISH=m | ||
3001 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
3002 | |||
3003 | # | ||
3004 | # Compression | ||
3005 | # | ||
3006 | CONFIG_CRYPTO_DEFLATE=y | ||
3007 | # CONFIG_CRYPTO_ZLIB is not set | ||
3008 | CONFIG_CRYPTO_LZO=y | ||
3009 | |||
3010 | # | ||
3011 | # Random Number Generation | ||
3012 | # | ||
3013 | CONFIG_CRYPTO_ANSI_CPRNG=m | ||
3014 | CONFIG_CRYPTO_HW=y | ||
3015 | CONFIG_BINARY_PRINTF=y | ||
3016 | |||
3017 | # | ||
3018 | # Library routines | ||
3019 | # | ||
3020 | CONFIG_BITREVERSE=y | ||
3021 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
3022 | CONFIG_CRC_CCITT=y | ||
3023 | CONFIG_CRC16=y | ||
3024 | CONFIG_CRC_T10DIF=y | ||
3025 | CONFIG_CRC_ITU_T=y | ||
3026 | CONFIG_CRC32=y | ||
3027 | CONFIG_CRC7=y | ||
3028 | CONFIG_LIBCRC32C=y | ||
3029 | CONFIG_ZLIB_INFLATE=y | ||
3030 | CONFIG_ZLIB_DEFLATE=y | ||
3031 | CONFIG_LZO_COMPRESS=y | ||
3032 | CONFIG_LZO_DECOMPRESS=y | ||
3033 | CONFIG_DECOMPRESS_GZIP=y | ||
3034 | CONFIG_DECOMPRESS_BZIP2=y | ||
3035 | CONFIG_DECOMPRESS_LZMA=y | ||
3036 | CONFIG_TEXTSEARCH=y | ||
3037 | CONFIG_TEXTSEARCH_KMP=m | ||
3038 | CONFIG_TEXTSEARCH_BM=m | ||
3039 | CONFIG_TEXTSEARCH_FSM=m | ||
3040 | CONFIG_HAS_IOMEM=y | ||
3041 | CONFIG_HAS_IOPORT=y | ||
3042 | CONFIG_HAS_DMA=y | ||
3043 | CONFIG_NLATTR=y | ||