summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-04-15 12:17:19 +0200
committerKoen Kooi <koen@openembedded.org>2009-04-15 12:17:19 +0200
commite91620e6955d9f22989f9d3f046c96c901ee782c (patch)
treeeb68e6a167c20fe3c84d538085059d1fadbea51d
parent3b164e7cc712e1f26d60846f89306b4c852ebf0d (diff)
parent0328f2d7844b000c71650a14d8479fcf98b1a58e (diff)
Merge branch 'org.openembedded.dev' of git@git.openembedded.net:openembedded into org.openembedded.dev
-rw-r--r--conf/machine/micro2440.conf19
-rw-r--r--recipes/images/initramfs-image.bb2
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0001-S3C-Backported-the-s3c2410-touchscreen-from-openmok.patch792
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0002-S3C-Backported-openmoko-s-touchscreen-filters.patch1260
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0003-VENDOR-armworks-logo.patch12079
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0004-920T-Use-specific-920t-mtune.patch28
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch49
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0006-S3C-Allow-the-machine-code-to-get-the-BBT-table-fro.patch49
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0007-MINI2440-Add-machine-support.patch793
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0008-MINI2440-Delays-command-check-response-on-SD.patch30
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0009-MINI2440-Rename-the-SoC-tty-names.patch35
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0010-MINI2440-creates-a-mini2440_defconfig-file.patch2067
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0011-MINI2440-Add-touchscreen-support.patch192
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/0012-GRO-Disable-GRO-on-legacy-netif_rx-path.patch54
-rw-r--r--recipes/linux/linux-2.6.29/micro2440/defconfig2053
-rw-r--r--recipes/linux/linux_2.6.29.bb16
-rw-r--r--recipes/uclibc/uclibc.inc2
17 files changed, 19518 insertions, 2 deletions
diff --git a/conf/machine/micro2440.conf b/conf/machine/micro2440.conf
new file mode 100644
index 0000000000..17aa0d310a
--- /dev/null
+++ b/conf/machine/micro2440.conf
@@ -0,0 +1,19 @@
+#@TYPE: Machine
+#@Name: FriendlyARM micro2440
+#@DESCRIPTION: Machine configuration for FriendlyARM micro2440 Samsung 2440 based board
+
+TARGET_ARCH = "arm"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "115200 ttySAC0"
+
+IMAGE_FSTYPES = "jffs2 tar.gz"
+
+MACHINE_FEATURES = "kernel26 touchscreen screen usbhost usbgadget sound alsa ethernet"
+
+require conf/machine/include/tune-arm920t.inc
+
+KERNEL_IMAGETYPE = "uImage"
+EXTRA_IMAGECMD_jffs2 = "--pad --little-endian -e16KiB -s 0x200 -n"
diff --git a/recipes/images/initramfs-image.bb b/recipes/images/initramfs-image.bb
index d3d1d751cf..e5189849ba 100644
--- a/recipes/images/initramfs-image.bb
+++ b/recipes/images/initramfs-image.bb
@@ -2,7 +2,7 @@
# command line, from teh choices of block device, loop back images (including
# recursive) and NFS.
-IMAGE_INSTALL = "initramfs-module-block initramfs-module-loop initramfs-module-nfs"
+IMAGE_INSTALL = "busybox-static initramfs-module-block initramfs-module-loop initramfs-module-nfs"
IMAGE_LINGUAS = ""
# Remove any kernel-image that the kernel-module-* packages may have pulled in.
diff --git a/recipes/linux/linux-2.6.29/micro2440/0001-S3C-Backported-the-s3c2410-touchscreen-from-openmok.patch b/recipes/linux/linux-2.6.29/micro2440/0001-S3C-Backported-the-s3c2410-touchscreen-from-openmok.patch
new file mode 100644
index 0000000000..4e3b3001f8
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0001-S3C-Backported-the-s3c2410-touchscreen-from-openmok.patch
@@ -0,0 +1,792 @@
+From d13aef4d7aff3b01ea349a07b899debe094bf33e Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Fri, 13 Mar 2009 18:43:43 +0000
+Subject: [PATCH] S3C: Backported the s3c2410 touchscreen from openmoko
+
+This peripheral is pretty essential for the s3c and is missing
+from mainstream linux. This is a straight port of the moko
+kernel.
+---
+ arch/arm/mach-s3c2410/include/mach/ts.h | 35 ++
+ arch/arm/plat-s3c/include/plat/devs.h | 3 +-
+ arch/arm/plat-s3c24xx/devs.c | 19 +
+ arch/arm/plat-s3c24xx/s3c244x.c | 3 +
+ drivers/input/touchscreen/Kconfig | 18 +
+ drivers/input/touchscreen/Makefile | 1 +
+ drivers/input/touchscreen/s3c2410_ts.c | 609 +++++++++++++++++++++++++++++++
+ 7 files changed, 687 insertions(+), 1 deletions(-)
+ create mode 100644 arch/arm/mach-s3c2410/include/mach/ts.h
+ create mode 100644 drivers/input/touchscreen/s3c2410_ts.c
+
+diff --git a/arch/arm/mach-s3c2410/include/mach/ts.h b/arch/arm/mach-s3c2410/include/mach/ts.h
+new file mode 100644
+index 0000000..1b451ea
+--- /dev/null
++++ b/arch/arm/mach-s3c2410/include/mach/ts.h
+@@ -0,0 +1,35 @@
++/* arch/arm/mach-s3c2410/include/mach/ts.h
++ *
++ * Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org>
++ *
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ *
++ * Changelog:
++ * 24-Mar-2005 RTP Created file
++ * 03-Aug-2005 RTP Renamed to ts.h
++ */
++
++#ifndef __ASM_ARM_TS_H
++#define __ASM_ARM_TS_H
++
++#include <../drivers/input/touchscreen/ts_filter.h>
++
++struct s3c2410_ts_mach_info {
++ int delay;
++ int presc;
++ /* array of pointers to filter APIs we want to use, in order
++ * ends on first NULL, all NULL is OK
++ */
++ struct ts_filter_api *filter_sequence[MAX_TS_FILTER_CHAIN];
++ /* array of configuration ints, one for each filter above */
++ void *filter_config[MAX_TS_FILTER_CHAIN];
++};
++
++void set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info);
++
++#endif /* __ASM_ARM_TS_H */
++
+diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h
+index 6b1b523..cf160ab 100644
+--- a/arch/arm/plat-s3c/include/plat/devs.h
++++ b/arch/arm/plat-s3c/include/plat/devs.h
+@@ -45,10 +45,11 @@ extern struct platform_device s3c_device_nand;
+
+ extern struct platform_device s3c_device_usbgadget;
+
++extern struct platform_device s3c_device_ts;
++
+ /* s3c2440 specific devices */
+
+ #ifdef CONFIG_CPU_S3C2440
+
+ extern struct platform_device s3c_device_camif;
+-
+ #endif
+diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
+index 16ac01d..a3f8102 100644
+--- a/arch/arm/plat-s3c24xx/devs.c
++++ b/arch/arm/plat-s3c24xx/devs.c
+@@ -26,6 +26,8 @@
+ #include <asm/mach/irq.h>
+ #include <mach/fb.h>
+ #include <mach/hardware.h>
++#include <mach/ts.h>
++#include <asm/io.h>
+ #include <asm/irq.h>
+
+ #include <plat/regs-serial.h>
+@@ -229,6 +231,23 @@ struct platform_device s3c_device_nand = {
+
+ EXPORT_SYMBOL(s3c_device_nand);
+
++/* Touchscreen */
++struct platform_device s3c_device_ts = {
++ .name = "s3c2410-ts",
++ .id = -1,
++};
++
++EXPORT_SYMBOL(s3c_device_ts);
++
++static struct s3c2410_ts_mach_info s3c2410ts_info;
++
++void set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)
++{
++ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));
++ s3c_device_ts.dev.platform_data = &s3c2410ts_info;
++}
++EXPORT_SYMBOL(set_s3c2410ts_info);
++
+ /* USB Device (Gadget)*/
+
+ static struct resource s3c_usbgadget_resource[] = {
+diff --git a/arch/arm/plat-s3c24xx/s3c244x.c b/arch/arm/plat-s3c24xx/s3c244x.c
+index c1de6bb..df78a15 100644
+--- a/arch/arm/plat-s3c24xx/s3c244x.c
++++ b/arch/arm/plat-s3c24xx/s3c244x.c
+@@ -59,6 +59,8 @@ void __init s3c244x_init_uarts(struct s3c2410_uartcfg *cfg, int no)
+ s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
+ }
+
++extern struct platform_device s3c_device_ts;
++
+ void __init s3c244x_map_io(void)
+ {
+ /* register our io-tables */
+@@ -70,6 +72,7 @@ void __init s3c244x_map_io(void)
+ s3c_device_sdi.name = "s3c2440-sdi";
+ s3c_device_i2c0.name = "s3c2440-i2c";
+ s3c_device_nand.name = "s3c2440-nand";
++ s3c_device_ts.name = "s3c2440-ts";
+ s3c_device_usbgadget.name = "s3c2440-usbgadget";
+ }
+
+diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
+index bb6486a..9076492 100644
+--- a/drivers/input/touchscreen/Kconfig
++++ b/drivers/input/touchscreen/Kconfig
+@@ -79,6 +79,24 @@ config TOUCHSCREEN_FUJITSU
+ To compile this driver as a module, choose M here: the
+ module will be called fujitsu-ts.
+
++config TOUCHSCREEN_S3C2410
++ tristate "Samsung S3C2410 touchscreen input driver"
++ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN
++ select SERIO
++ help
++ Say Y here if you have the s3c2410 touchscreen.
++
++ If unsure, say N.
++
++ To compile this driver as a module, choose M here: the
++ module will be called s3c2410_ts.
++
++config TOUCHSCREEN_S3C2410_DEBUG
++ boolean "Samsung S3C2410 touchscreen debug messages"
++ depends on TOUCHSCREEN_S3C2410
++ help
++ Select this if you want debug messages
++
+ config TOUCHSCREEN_GUNZE
+ tristate "Gunze AHL-51S touchscreen"
+ select SERIO
+diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
+index d3375af..fbcde99 100644
+--- a/drivers/input/touchscreen/Makefile
++++ b/drivers/input/touchscreen/Makefile
+@@ -34,3 +34,4 @@ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9705) += wm9705.o
+ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
+ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o
+ obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o
++obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
+diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
+new file mode 100644
+index 0000000..ea0777c
+--- /dev/null
++++ b/drivers/input/touchscreen/s3c2410_ts.c
+@@ -0,0 +1,609 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Copyright (c) 2004 Arnaud Patard <arnaud.patard@rtp-net.org>
++ * iPAQ H1940 touchscreen support
++ *
++ * ChangeLog
++ *
++ * 2004-09-05: Herbert Pƶtzl <herbert@13thfloor.at>
++ * - added clock (de-)allocation code
++ *
++ * 2005-03-06: Arnaud Patard <arnaud.patard@rtp-net.org>
++ * - h1940_ -> s3c2410 (this driver is now also used on the n30
++ * machines :P)
++ * - Debug messages are now enabled with the config option
++ * TOUCHSCREEN_S3C2410_DEBUG
++ * - Changed the way the value are read
++ * - Input subsystem should now work
++ * - Use ioremap and readl/writel
++ *
++ * 2005-03-23: Arnaud Patard <arnaud.patard@rtp-net.org>
++ * - Make use of some undocumented features of the touchscreen
++ * controller
++ *
++ * 2007-05-23: Harald Welte <laforge@openmoko.org>
++ * - Add proper support for S32440
++ *
++ * 2008-06-23: Andy Green <andy@openmoko.com>
++ * - removed averaging system
++ * - added generic Touchscreen filter stuff
++ *
++ * 2008-11-27: Nelson Castillo <arhuaco@freaks-unidos.net>
++ * - improve interrupt handling
++ */
++
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/input.h>
++#include <linux/init.h>
++#include <linux/serio.h>
++#include <linux/timer.h>
++#include <linux/kfifo.h>
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/clk.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <mach/regs-gpio.h>
++#include <mach/ts.h>
++
++#include <plat/regs-adc.h>
++
++#include "ts_filter.h"
++
++/* For ts.dev.id.version */
++#define S3C2410TSVERSION 0x0101
++
++#define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
++
++#define WAIT4INT(x) (((x)<<8) | \
++ S3C2410_ADCTSC_YM_SEN | \
++ S3C2410_ADCTSC_YP_SEN | \
++ S3C2410_ADCTSC_XP_SEN | \
++ S3C2410_ADCTSC_XY_PST(3))
++
++#define AUTOPST (S3C2410_ADCTSC_YM_SEN | \
++ S3C2410_ADCTSC_YP_SEN | \
++ S3C2410_ADCTSC_XP_SEN | \
++ S3C2410_ADCTSC_AUTO_PST | \
++ S3C2410_ADCTSC_XY_PST(0))
++
++#define DEBUG_LVL KERN_DEBUG
++
++MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
++MODULE_DESCRIPTION("s3c2410 touchscreen driver");
++MODULE_LICENSE("GPL");
++
++/*
++ * Definitions & global arrays.
++ */
++
++static char *s3c2410ts_name = "s3c2410 TouchScreen";
++
++#define TS_RELEASE_TIMEOUT (HZ >> 7 ? HZ >> 7 : 1) /* 8ms (5ms if HZ is 200) */
++#define TS_EVENT_FIFO_SIZE (2 << 6) /* must be a power of 2 */
++
++#define TS_STATE_STANDBY 0 /* initial state */
++#define TS_STATE_PRESSED 1
++#define TS_STATE_RELEASE_PENDING 2
++#define TS_STATE_RELEASE 3
++
++/*
++ * Per-touchscreen data.
++ */
++
++struct s3c2410ts {
++ struct input_dev *dev;
++ struct ts_filter *tsf[MAX_TS_FILTER_CHAIN];
++ int coords[2]; /* just X and Y for us */
++ int is_down;
++ int state;
++ struct kfifo *event_fifo;
++};
++
++static struct s3c2410ts ts;
++
++static void __iomem *base_addr;
++
++/*
++ * A few low level functions.
++ */
++
++static inline void s3c2410_ts_connect(void)
++{
++ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
++ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
++ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
++ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
++}
++
++static void s3c2410_ts_start_adc_conversion(void)
++{
++ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST,
++ base_addr + S3C2410_ADCTSC);
++ writel(readl(base_addr + S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START,
++ base_addr + S3C2410_ADCCON);
++}
++
++/*
++ * Just send the input events.
++ */
++
++enum ts_input_event {IE_DOWN = 0, IE_UP};
++
++static void ts_input_report(int event, int coords[])
++{
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ static char *s[] = {"down", "up"};
++ struct timeval tv;
++
++ do_gettimeofday(&tv);
++#endif
++
++ if (event == IE_DOWN) {
++ input_report_abs(ts.dev, ABS_X, coords[0]);
++ input_report_abs(ts.dev, ABS_Y, coords[1]);
++ input_report_key(ts.dev, BTN_TOUCH, 1);
++ input_report_abs(ts.dev, ABS_PRESSURE, 1);
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ printk(DEBUG_LVL "T:%06d %6s (X:%03d, Y:%03d)\n",
++ (int)tv.tv_usec, s[event], coords[0], coords[1]);
++#endif
++ } else {
++ input_report_key(ts.dev, BTN_TOUCH, 0);
++ input_report_abs(ts.dev, ABS_PRESSURE, 0);
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ printk(DEBUG_LVL "T:%06d %6s\n",
++ (int)tv.tv_usec, s[event]);
++#endif
++ }
++
++ input_sync(ts.dev);
++}
++
++/*
++ * Manage the state of the touchscreen.
++ */
++
++static void event_send_timer_f(unsigned long data);
++
++static struct timer_list event_send_timer =
++ TIMER_INITIALIZER(event_send_timer_f, 0, 0);
++
++static void event_send_timer_f(unsigned long data)
++{
++ static int noop_counter;
++ int event_type;
++
++ while (__kfifo_get(ts.event_fifo, (unsigned char *)&event_type,
++ sizeof(int))) {
++ int buf[2];
++
++ switch (event_type) {
++ case 'D':
++ if (ts.state == TS_STATE_RELEASE_PENDING)
++ /* Ignore short UP event */
++ ts.state = TS_STATE_PRESSED;
++ break;
++
++ case 'U':
++ ts.state = TS_STATE_RELEASE_PENDING;
++ break;
++
++ case 'P':
++ if (ts.is_down) /* stylus_action needs a conversion */
++ s3c2410_ts_start_adc_conversion();
++
++ if (unlikely(__kfifo_get(ts.event_fifo,
++ (unsigned char *)buf,
++ sizeof(int) * 2)
++ != sizeof(int) * 2))
++ goto ts_exit_error;
++
++ ts_input_report(IE_DOWN, buf);
++ ts.state = TS_STATE_PRESSED;
++ break;
++
++ default:
++ goto ts_exit_error;
++ }
++
++ noop_counter = 0;
++ }
++
++ if (noop_counter++ >= 1) {
++ noop_counter = 0;
++ if (ts.state == TS_STATE_RELEASE_PENDING) {
++ /* We delay the UP event for a
++ * while to avoid jitter. If we get a DOWN
++ * event we do not send it. */
++
++ ts_input_report(IE_UP, NULL);
++ ts.state = TS_STATE_STANDBY;
++
++ if (ts.tsf[0])
++ (ts.tsf[0]->api->clear)(ts.tsf[0]);
++ }
++ } else {
++ mod_timer(&event_send_timer, jiffies + TS_RELEASE_TIMEOUT);
++ }
++
++ return;
++
++ts_exit_error: /* should not happen unless we have a bug */
++ printk(KERN_ERR __FILE__ ": event_send_timer_f failed\n");
++}
++
++/*
++ * Manage interrupts.
++ */
++
++static irqreturn_t stylus_updown(int irq, void *dev_id)
++{
++ unsigned long data0;
++ unsigned long data1;
++ int event_type;
++
++ data0 = readl(base_addr+S3C2410_ADCDAT0);
++ data1 = readl(base_addr+S3C2410_ADCDAT1);
++
++ ts.is_down = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) &&
++ (!(data1 & S3C2410_ADCDAT0_UPDOWN));
++
++ event_type = ts.is_down ? 'D' : 'U';
++
++ if (unlikely(__kfifo_put(ts.event_fifo, (unsigned char *)&event_type,
++ sizeof(int)) != sizeof(int))) /* should not happen */
++ printk(KERN_ERR __FILE__": stylus_updown lost event!\n");
++
++ if (ts.is_down)
++ s3c2410_ts_start_adc_conversion();
++ else
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++ mod_timer(&event_send_timer, jiffies + 1);
++
++ return IRQ_HANDLED;
++}
++
++static irqreturn_t stylus_action(int irq, void *dev_id)
++{
++ int buf[3];
++
++ /* grab the ADC results */
++ ts.coords[0] = readl(base_addr + S3C2410_ADCDAT0) &
++ S3C2410_ADCDAT0_XPDATA_MASK;
++ ts.coords[1] = readl(base_addr + S3C2410_ADCDAT1) &
++ S3C2410_ADCDAT1_YPDATA_MASK;
++
++ if (ts.tsf[0]) { /* filtering is enabled, don't use raw directly */
++ switch ((ts.tsf[0]->api->process)(ts.tsf[0], &ts.coords[0])) {
++ case 0: /*
++ * no real sample came out of processing yet,
++ * get another raw result to feed it
++ */
++ s3c2410_ts_start_adc_conversion();
++ return IRQ_HANDLED;
++ case 1: /* filters are ready to deliver a sample */
++ (ts.tsf[0]->api->scale)(ts.tsf[0], &ts.coords[0]);
++ break;
++ case -1:
++ /* error in filters, ignore the event */
++ (ts.tsf[0]->api->clear)(ts.tsf[0]);
++ writel(WAIT4INT(1), base_addr + S3C2410_ADCTSC);
++ return IRQ_HANDLED;
++ default:
++ printk(KERN_ERR":stylus_action error\n");
++ }
++ }
++
++ /* We use a buffer because want an atomic operation */
++ buf[0] = 'P';
++ buf[1] = ts.coords[0];
++ buf[2] = ts.coords[1];
++
++ if (unlikely(__kfifo_put(ts.event_fifo, (unsigned char *)buf,
++ sizeof(int) * 3) != sizeof(int) * 3))
++ /* should not happen */
++ printk(KERN_ERR":stylus_action error\n");
++
++ writel(WAIT4INT(1), base_addr + S3C2410_ADCTSC);
++ mod_timer(&event_send_timer, jiffies + 1);
++
++ return IRQ_HANDLED;
++}
++
++static struct clk *adc_clock;
++
++/*
++ * The functions for inserting/removing us as a module.
++ */
++
++static int __init s3c2410ts_probe(struct platform_device *pdev)
++{
++ int rc;
++ struct s3c2410_ts_mach_info *info;
++ struct input_dev *input_dev;
++ int ret = 0;
++
++ dev_info(&pdev->dev, "Starting\n");
++
++ info = (struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
++
++ if (!info)
++ {
++ dev_err(&pdev->dev, "Hm... too bad: no platform data for ts\n");
++ return -EINVAL;
++ }
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ printk(DEBUG_LVL "Entering s3c2410ts_init\n");
++#endif
++
++ adc_clock = clk_get(NULL, "adc");
++ if (!adc_clock) {
++ dev_err(&pdev->dev, "failed to get adc clock source\n");
++ return -ENOENT;
++ }
++ clk_enable(adc_clock);
++
++#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
++ printk(DEBUG_LVL "got and enabled clock\n");
++#endif
++
++ base_addr = ioremap(S3C2410_PA_ADC,0x20);
++ if (base_addr == NULL) {
++ dev_err(&pdev->dev, "Failed to remap register block\n");
++ ret = -ENOMEM;
++ goto bail0;
++ }
++
++
++ /* If we acutally are a S3C2410: Configure GPIOs */
++ if (!strcmp(pdev->name, "s3c2410-ts"))
++ s3c2410_ts_connect();
++
++ if ((info->presc & 0xff) > 0)
++ writel(S3C2410_ADCCON_PRSCEN |
++ S3C2410_ADCCON_PRSCVL(info->presc&0xFF),
++ base_addr + S3C2410_ADCCON);
++ else
++ writel(0, base_addr+S3C2410_ADCCON);
++
++ /* Initialise registers */
++ if ((info->delay & 0xffff) > 0)
++ writel(info->delay & 0xffff, base_addr + S3C2410_ADCDLY);
++
++ writel(WAIT4INT(0), base_addr + S3C2410_ADCTSC);
++
++ /* Initialise input stuff */
++ memset(&ts, 0, sizeof(struct s3c2410ts));
++ input_dev = input_allocate_device();
++
++ if (!input_dev) {
++ dev_err(&pdev->dev, "Unable to allocate the input device\n");
++ ret = -ENOMEM;
++ goto bail1;
++ }
++
++ ts.dev = input_dev;
++ ts.dev->evbit[0] = BIT_MASK(EV_SYN) | BIT_MASK(EV_KEY) |
++ BIT_MASK(EV_ABS);
++ ts.dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
++ input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
++ input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
++ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);
++
++ ts.dev->name = s3c2410ts_name;
++ ts.dev->id.bustype = BUS_RS232;
++ ts.dev->id.vendor = 0xDEAD;
++ ts.dev->id.product = 0xBEEF;
++ ts.dev->id.version = S3C2410TSVERSION;
++ ts.state = TS_STATE_STANDBY;
++ ts.event_fifo = kfifo_alloc(TS_EVENT_FIFO_SIZE, GFP_KERNEL, NULL);
++ if (IS_ERR(ts.event_fifo)) {
++ ret = -EIO;
++ goto bail2;
++ }
++
++ /* create the filter chain set up for the 2 coordinates we produce */
++ ret = ts_filter_create_chain(
++ pdev, (struct ts_filter_api **)&info->filter_sequence,
++ (void *)&info->filter_config, ts.tsf, ARRAY_SIZE(ts.coords));
++ if (ret)
++ dev_info(&pdev->dev, "%d filter(s) initialized\n", ret);
++ else /* this is OK, just means there won't be any filtering */
++ dev_info(&pdev->dev, "Unfiltered output selected\n");
++
++ if (ts.tsf[0])
++ (ts.tsf[0]->api->clear)(ts.tsf[0]);
++ else
++ dev_info(&pdev->dev, "No filtering\n");
++
++ /* Get irqs */
++ if (request_irq(IRQ_ADC, stylus_action, IRQF_SAMPLE_RANDOM,
++ "s3c2410_action", ts.dev)) {
++ dev_err(&pdev->dev, "Could not allocate ts IRQ_ADC !\n");
++ iounmap(base_addr);
++ ret = -EIO;
++ goto bail3;
++ }
++ if (request_irq(IRQ_TC, stylus_updown, IRQF_SAMPLE_RANDOM,
++ "s3c2410_action", ts.dev)) {
++ dev_err(&pdev->dev, "Could not allocate ts IRQ_TC !\n");
++ free_irq(IRQ_ADC, ts.dev);
++ iounmap(base_addr);
++ ret = -EIO;
++ goto bail4;
++ }
++
++ dev_info(&pdev->dev, "successfully loaded\n");
++
++ /* All went ok, so register to the input system */
++ rc = input_register_device(ts.dev);
++ if (rc) {
++ ret = -EIO;
++ goto bail5;
++ }
++
++ return 0;
++
++bail5:
++ free_irq(IRQ_TC, ts.dev);
++ free_irq(IRQ_ADC, ts.dev);
++ clk_disable(adc_clock);
++ iounmap(base_addr);
++ disable_irq(IRQ_TC);
++bail4:
++ disable_irq(IRQ_ADC);
++bail3:
++ ts_filter_destroy_chain(pdev, ts.tsf);
++ kfifo_free(ts.event_fifo);
++bail2:
++ input_unregister_device(ts.dev);
++bail1:
++ iounmap(base_addr);
++bail0:
++
++ return ret;
++}
++
++static int s3c2410ts_remove(struct platform_device *pdev)
++{
++ disable_irq(IRQ_ADC);
++ disable_irq(IRQ_TC);
++ free_irq(IRQ_TC,ts.dev);
++ free_irq(IRQ_ADC,ts.dev);
++
++ if (adc_clock) {
++ clk_disable(adc_clock);
++ clk_put(adc_clock);
++ adc_clock = NULL;
++ }
++
++ input_unregister_device(ts.dev);
++ iounmap(base_addr);
++
++ ts_filter_destroy_chain(pdev, ts.tsf);
++
++ kfifo_free(ts.event_fifo);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ writel(TSC_SLEEP, base_addr+S3C2410_ADCTSC);
++ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_STDBM,
++ base_addr+S3C2410_ADCCON);
++
++ disable_irq(IRQ_ADC);
++ disable_irq(IRQ_TC);
++
++ clk_disable(adc_clock);
++
++ return 0;
++}
++
++static int s3c2410ts_resume(struct platform_device *pdev)
++{
++ struct s3c2410_ts_mach_info *info =
++ ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;
++
++ clk_enable(adc_clock);
++ mdelay(1);
++
++ if (ts.tsf[0])
++ (ts.tsf[0]->api->clear)(ts.tsf[0]);
++
++ enable_irq(IRQ_ADC);
++ enable_irq(IRQ_TC);
++
++ if ((info->presc&0xff) > 0)
++ writel(S3C2410_ADCCON_PRSCEN |
++ S3C2410_ADCCON_PRSCVL(info->presc&0xFF),
++ base_addr+S3C2410_ADCCON);
++ else
++ writel(0,base_addr+S3C2410_ADCCON);
++
++ /* Initialise registers */
++ if ((info->delay & 0xffff) > 0)
++ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY);
++
++ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
++
++ return 0;
++}
++
++#else
++#define s3c2410ts_suspend NULL
++#define s3c2410ts_resume NULL
++#endif
++
++static struct platform_driver s3c2410ts_driver = {
++ .driver = {
++ .name = "s3c2410-ts",
++ .owner = THIS_MODULE,
++ },
++ .probe = s3c2410ts_probe,
++ .remove = s3c2410ts_remove,
++ .suspend = s3c2410ts_suspend,
++ .resume = s3c2410ts_resume,
++
++};
++
++static struct platform_driver s3c2440ts_driver = {
++ .driver = {
++ .name = "s3c2440-ts",
++ .owner = THIS_MODULE,
++ },
++ .probe = s3c2410ts_probe,
++ .remove = s3c2410ts_remove,
++ .suspend = s3c2410ts_suspend,
++ .resume = s3c2410ts_resume,
++
++};
++
++static int __init s3c2410ts_init(void)
++{
++ int rc;
++
++ rc = platform_driver_register(&s3c2410ts_driver);
++ if (rc < 0)
++ return rc;
++
++ rc = platform_driver_register(&s3c2440ts_driver);
++ if (rc < 0)
++ platform_driver_unregister(&s3c2410ts_driver);
++
++ return rc;
++}
++
++static void __exit s3c2410ts_exit(void)
++{
++ platform_driver_unregister(&s3c2440ts_driver);
++ platform_driver_unregister(&s3c2410ts_driver);
++}
++
++module_init(s3c2410ts_init);
++module_exit(s3c2410ts_exit);
++
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0002-S3C-Backported-openmoko-s-touchscreen-filters.patch b/recipes/linux/linux-2.6.29/micro2440/0002-S3C-Backported-openmoko-s-touchscreen-filters.patch
new file mode 100644
index 0000000000..c171db81ec
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0002-S3C-Backported-openmoko-s-touchscreen-filters.patch
@@ -0,0 +1,1260 @@
+From fe4e1650cff50bff8e8ad62dc036609f53307442 Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Sat, 14 Mar 2009 10:24:07 +0000
+Subject: [PATCH] S3C: Backported openmoko's touchscreen filters
+
+Openmoko's touchscreen layer supports various filtering policy
+for the ADC and touchscreen corrdinates. This is a staight port.
+---
+ drivers/input/touchscreen/Kconfig | 48 ++++++
+ drivers/input/touchscreen/Makefile | 5 +
+ drivers/input/touchscreen/ts_filter.c | 73 +++++++++
+ drivers/input/touchscreen/ts_filter.h | 62 +++++++
+ drivers/input/touchscreen/ts_filter_group.c | 221 ++++++++++++++++++++++++++
+ drivers/input/touchscreen/ts_filter_group.h | 39 +++++
+ drivers/input/touchscreen/ts_filter_linear.c | 173 ++++++++++++++++++++
+ drivers/input/touchscreen/ts_filter_linear.h | 64 ++++++++
+ drivers/input/touchscreen/ts_filter_mean.c | 174 ++++++++++++++++++++
+ drivers/input/touchscreen/ts_filter_mean.h | 34 ++++
+ drivers/input/touchscreen/ts_filter_median.c | 217 +++++++++++++++++++++++++
+ drivers/input/touchscreen/ts_filter_median.h | 36 ++++
+ 12 files changed, 1146 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/input/touchscreen/ts_filter.c
+ create mode 100644 drivers/input/touchscreen/ts_filter.h
+ create mode 100644 drivers/input/touchscreen/ts_filter_group.c
+ create mode 100644 drivers/input/touchscreen/ts_filter_group.h
+ create mode 100644 drivers/input/touchscreen/ts_filter_linear.c
+ create mode 100644 drivers/input/touchscreen/ts_filter_linear.h
+ create mode 100644 drivers/input/touchscreen/ts_filter_mean.c
+ create mode 100644 drivers/input/touchscreen/ts_filter_mean.h
+ create mode 100644 drivers/input/touchscreen/ts_filter_median.c
+ create mode 100644 drivers/input/touchscreen/ts_filter_median.h
+
+diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
+index 9076492..75ff0a8 100644
+--- a/drivers/input/touchscreen/Kconfig
++++ b/drivers/input/touchscreen/Kconfig
+@@ -11,6 +11,54 @@ menuconfig INPUT_TOUCHSCREEN
+
+ if INPUT_TOUCHSCREEN
+
++menuconfig TOUCHSCREEN_FILTER
++ boolean "Touchscreen Filtering"
++ depends on INPUT_TOUCHSCREEN
++ select TOUCHSCREEN_FILTER_GROUP
++ select TOUCHSCREEN_FILTER_MEDIAN
++ select TOUCHSCREEN_FILTER_MEAN
++ select TOUCHSCREEN_FILTER_LINEAR
++ help
++ Select this to include kernel touchscreen filter support. The filters
++ can be combined in any order in your machine init and the parameters
++ for them can also be set there.
++
++if TOUCHSCREEN_FILTER
++
++config TOUCHSCREEN_FILTER_GROUP
++ bool "Group Touchscreen Filter"
++ depends on INPUT_TOUCHSCREEN && TOUCHSCREEN_FILTER
++ default Y
++ help
++ Say Y here if you want to use the Group touchscreen filter, it
++ avoids using atypical samples.
++
++config TOUCHSCREEN_FILTER_MEDIAN
++ bool "Median Average Touchscreen Filter"
++ depends on INPUT_TOUCHSCREEN && TOUCHSCREEN_FILTER
++ default Y
++ help
++ Say Y here if you want to use the Median touchscreen filter, it's
++ highly effective if you data is noisy with occasional excursions.
++
++config TOUCHSCREEN_FILTER_MEAN
++ bool "Mean Average Touchscreen Filter"
++ depends on INPUT_TOUCHSCREEN && TOUCHSCREEN_FILTER
++ default Y
++ help
++ Say Y here if you want to use the Mean touchscreen filter, it
++ can further improve decent quality data by removing jitter
++
++config TOUCHSCREEN_FILTER_LINEAR
++ bool "Linear Touchscreen Filter"
++ depends on INPUT_TOUCHSCREEN && TOUCHSCREEN_FILTER
++ default Y
++ help
++ Say Y here if you want to use the Linear touchscreen filter, it
++ enables the use of calibration data for the touchscreen.
++
++endif
++
+ config TOUCHSCREEN_ADS7846
+ tristate "ADS7846/TSC2046 and ADS7843 based touchscreens"
+ depends on SPI_MASTER
+diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
+index fbcde99..4b0a03e 100644
+--- a/drivers/input/touchscreen/Makefile
++++ b/drivers/input/touchscreen/Makefile
+@@ -35,3 +35,8 @@ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9712) += wm9712.o
+ wm97xx-ts-$(CONFIG_TOUCHSCREEN_WM9713) += wm9713.o
+ obj-$(CONFIG_TOUCHSCREEN_WM97XX_MAINSTONE) += mainstone-wm97xx.o
+ obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o
++obj-$(CONFIG_TOUCHSCREEN_FILTER) += ts_filter.o
++obj-$(CONFIG_TOUCHSCREEN_FILTER_GROUP) += ts_filter_group.o
++obj-$(CONFIG_TOUCHSCREEN_FILTER_LINEAR) += ts_filter_linear.o
++obj-$(CONFIG_TOUCHSCREEN_FILTER_MEDIAN) += ts_filter_median.o
++obj-$(CONFIG_TOUCHSCREEN_FILTER_MEAN) += ts_filter_mean.o
+diff --git a/drivers/input/touchscreen/ts_filter.c b/drivers/input/touchscreen/ts_filter.c
+new file mode 100644
+index 0000000..832844d
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter.c
+@@ -0,0 +1,73 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Copyright (c) 2008 Andy Green <andy@openmoko.com>
++ */
++
++#include <linux/kernel.h>
++#include <linux/device.h>
++#include "ts_filter.h"
++
++static DEFINE_MUTEX(chain_mutex);
++
++int ts_filter_create_chain(struct platform_device *pdev,
++ struct ts_filter_api **api, void **config,
++ struct ts_filter **arr, int count_coords)
++{
++ int count = 0;
++ struct ts_filter *last = NULL;
++
++ if (!api)
++ return 0;
++
++ mutex_lock(&chain_mutex);
++
++ while (*api) {
++ *arr = ((*api)->create)(pdev, *config++, count_coords);
++ if (!*arr) {
++ printk(KERN_ERR "Filter %d failed init\n", count);
++ return count;
++ }
++ (*arr)->api = *api++;
++ if (last)
++ last->next = *arr;
++ last = *arr;
++ arr++;
++ count++;
++ }
++
++ mutex_unlock(&chain_mutex);
++
++ return count;
++}
++EXPORT_SYMBOL_GPL(ts_filter_create_chain);
++
++void ts_filter_destroy_chain(struct platform_device *pdev,
++ struct ts_filter **arr)
++{
++ struct ts_filter **first = arr;
++
++ mutex_lock(&chain_mutex);
++
++ while (*arr) {
++ ((*arr)->api->destroy)(pdev, *arr);
++ arr++;
++ }
++ *first = NULL;
++
++ mutex_unlock(&chain_mutex);
++}
++EXPORT_SYMBOL_GPL(ts_filter_destroy_chain);
++
+diff --git a/drivers/input/touchscreen/ts_filter.h b/drivers/input/touchscreen/ts_filter.h
+new file mode 100644
+index 0000000..3746e45
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter.h
+@@ -0,0 +1,62 @@
++#ifndef __TS_FILTER_H__
++#define __TS_FILTER_H__
++
++/*
++ * Touchscreen filter.
++ *
++ * (c) 2008 Andy Green <andy@openmoko.com>
++ */
++
++#include <linux/platform_device.h>
++
++#define MAX_TS_FILTER_CHAIN 8 /* Max. filters we can chain up. */
++#define MAX_TS_FILTER_COORDS 3 /* X, Y and Z (pressure). */
++
++struct ts_filter;
++
++/* Operations that a filter can perform. */
++
++struct ts_filter_api {
++ struct ts_filter * (*create)(struct platform_device *pdev, void *config,
++ int count_coords);
++ void (*destroy)(struct platform_device *pdev, struct ts_filter *filter);
++ void (*clear)(struct ts_filter *filter);
++ int (*process)(struct ts_filter *filter, int *coords);
++ void (*scale)(struct ts_filter *filter, int *coords);
++};
++
++/*
++ * This is the common part of all filters.
++ * We use this type as an otherwise opaque handle on to
++ * the actual filter. Therefore you need one of these
++ * at the start of your actual filter struct.
++ */
++
++struct ts_filter {
++ struct ts_filter *next; /* Next in chain. */
++ struct ts_filter_api *api; /* Operations to use for this object. */
++ int count_coords;
++ int coords[MAX_TS_FILTER_COORDS];
++};
++
++/*
++ * Helper to create a filter chain from an array of API pointers and
++ * array of config ints. Leaves pointers to created filters in arr
++ * array and fills in ->next pointers to create the chain.
++ */
++
++#ifdef CONFIG_TOUCHSCREEN_FILTER
++extern int ts_filter_create_chain(struct platform_device *pdev,
++ struct ts_filter_api **api, void **config,
++ struct ts_filter **arr, int count_coords);
++
++/* Helper to destroy a whole chain from the list of filter pointers. */
++
++extern void ts_filter_destroy_chain(struct platform_device *pdev,
++ struct ts_filter **arr);
++#else
++#define ts_filter_create_chain(pdev, api, config, arr, count_coords) (0)
++#define ts_filter_destroy_chain(pdev, arr) do { } while (0)
++#endif
++
++#endif
+diff --git a/drivers/input/touchscreen/ts_filter_group.c b/drivers/input/touchscreen/ts_filter_group.c
+new file mode 100644
+index 0000000..f2ecd92
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_group.c
+@@ -0,0 +1,221 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Copyright (C) 2008 by Openmoko, Inc.
++ * Author: Nelson Castillo <arhuaco@freaks-unidos.net>
++ * All rights reserved.
++ *
++ * This filter is useful to reject samples that are not reliable. We consider
++ * that a sample is not reliable if it deviates form the Majority.
++ *
++ * 1) We collect S samples.
++ *
++ * 2) For each dimension:
++ *
++ * - We sort the points.
++ * - Points that are "close enough" are considered to be in the same set.
++ * - We choose the set with more elements. If more than "threshold"
++ * points are in this set we use the first and the last point of the set
++ * to define the valid range for this dimension [min, max], otherwise we
++ * discard all the points and go to step 1.
++ *
++ * 3) We consider the unsorted S samples and try to feed them to the next
++ * filter in the chain. If one of the points of each sample
++ * is not in the allowed range for its dimension, we discard the sample.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/slab.h>
++#include <linux/sort.h>
++#include "ts_filter_group.h"
++
++static void ts_filter_group_clear_internal(struct ts_filter_group *tsfg,
++ int attempts)
++{
++ tsfg->N = 0;
++ tsfg->tries_left = attempts;
++}
++
++static void ts_filter_group_clear(struct ts_filter *tsf)
++{
++ struct ts_filter_group *tsfg = (struct ts_filter_group *)tsf;
++
++ ts_filter_group_clear_internal(tsfg, tsfg->config->attempts);
++
++ if (tsf->next) /* chain */
++ (tsf->next->api->clear)(tsf->next);
++}
++
++static struct ts_filter *ts_filter_group_create(struct platform_device *pdev,
++ void *conf, int count_coords)
++{
++ struct ts_filter_group *tsfg;
++ int i;
++
++ BUG_ON((count_coords < 1) || (count_coords > MAX_TS_FILTER_COORDS));
++
++ tsfg = kzalloc(sizeof(struct ts_filter_group), GFP_KERNEL);
++ if (!tsfg)
++ return NULL;
++
++ tsfg->config = (struct ts_filter_group_configuration *)conf;
++ tsfg->tsf.count_coords = count_coords;
++
++ BUG_ON(tsfg->config->attempts <= 0);
++
++ tsfg->samples[0] = kmalloc((2 + count_coords) * sizeof(int) *
++ tsfg->config->extent, GFP_KERNEL);
++ if (!tsfg->samples[0]) {
++ kfree(tsfg);
++ return NULL;
++ }
++ for (i = 1; i < count_coords; ++i)
++ tsfg->samples[i] = tsfg->samples[0] + i * tsfg->config->extent;
++ tsfg->sorted_samples = tsfg->samples[0] + count_coords *
++ tsfg->config->extent;
++ tsfg->group_size = tsfg->samples[0] + (1 + count_coords) *
++ tsfg->config->extent;
++
++ ts_filter_group_clear_internal(tsfg, tsfg->config->attempts);
++
++ printk(KERN_INFO" Created group ts filter len %d depth %d close %d "
++ "thresh %d\n", tsfg->config->extent, count_coords,
++ tsfg->config->close_enough, tsfg->config->threshold);
++
++ return &tsfg->tsf;
++}
++
++static void ts_filter_group_destroy(struct platform_device *pdev,
++ struct ts_filter *tsf)
++{
++ struct ts_filter_group *tsfg = (struct ts_filter_group *)tsf;
++
++ kfree(tsfg->samples[0]); /* first guy has pointer from kmalloc */
++ kfree(tsf);
++}
++
++static void ts_filter_group_scale(struct ts_filter *tsf, int *coords)
++{
++ if (tsf->next)
++ (tsf->next->api->scale)(tsf->next, coords);
++}
++
++static int int_cmp(const void *_a, const void *_b)
++{
++ const int *a = _a;
++ const int *b = _b;
++
++ if (*a > *b)
++ return 1;
++ if (*a < *b)
++ return -1;
++ return 0;
++}
++
++static int ts_filter_group_process(struct ts_filter *tsf, int *coords)
++{
++ struct ts_filter_group *tsfg = (struct ts_filter_group *)tsf;
++ int n;
++ int i;
++ int ret = 0; /* ask for more samples by default */
++
++ BUG_ON(tsfg->N >= tsfg->config->extent);
++
++ for (n = 0; n < tsf->count_coords; n++)
++ tsfg->samples[n][tsfg->N] = coords[n];
++
++ if (++tsfg->N < tsfg->config->extent)
++ return 0; /* we meed more samples */
++
++ for (n = 0; n < tsfg->tsf.count_coords; n++) {
++ int *v = tsfg->sorted_samples;
++ int ngroups = 0;
++ int best_size;
++ int best_idx = 0;
++ int idx = 0;
++
++ memcpy(v, tsfg->samples[n], tsfg->N * sizeof(int));
++ sort(v, tsfg->N, sizeof(int), int_cmp, NULL);
++
++ tsfg->group_size[0] = 1;
++ for (i = 1; i < tsfg->N; ++i) {
++ if (v[i] - v[i - 1] <= tsfg->config->close_enough)
++ tsfg->group_size[ngroups]++;
++ else
++ tsfg->group_size[++ngroups] = 1;
++ }
++ ngroups++;
++
++ best_size = tsfg->group_size[0];
++ for (i = 1; i < ngroups; i++) {
++ idx += tsfg->group_size[i - 1];
++ if (best_size < tsfg->group_size[i]) {
++ best_size = tsfg->group_size[i];
++ best_idx = idx;
++ }
++ }
++
++ if (best_size < tsfg->config->threshold) {
++ /* this set is not good enough for us */
++ if (--tsfg->tries_left) {
++ ts_filter_group_clear_internal
++ (tsfg, tsfg->tries_left);
++ return 0; /* ask for more samples */
++ }
++ return -1; /* we give up */
++ }
++
++ tsfg->range_min[n] = v[best_idx];
++ tsfg->range_max[n] = v[best_idx + best_size - 1];
++ }
++
++ for (i = 0; i < tsfg->N; ++i) {
++ int r;
++
++ for (n = 0; n < tsfg->tsf.count_coords; ++n) {
++ coords[n] = tsfg->samples[n][i];
++ if (coords[n] < tsfg->range_min[n] ||
++ coords[n] > tsfg->range_max[n])
++ break;
++ }
++
++ if (n != tsfg->tsf.count_coords) /* sample not OK */
++ continue;
++
++ if (tsf->next) {
++ r = (tsf->next->api->process)(tsf->next, coords);
++ if (r) {
++ ret = r;
++ break;
++ }
++ } else if (i == tsfg->N - 1) {
++ ret = 1;
++ }
++ }
++
++ ts_filter_group_clear_internal(tsfg, tsfg->config->attempts);
++
++ return ret;
++}
++
++struct ts_filter_api ts_filter_group_api = {
++ .create = ts_filter_group_create,
++ .destroy = ts_filter_group_destroy,
++ .clear = ts_filter_group_clear,
++ .process = ts_filter_group_process,
++ .scale = ts_filter_group_scale,
++};
++
+diff --git a/drivers/input/touchscreen/ts_filter_group.h b/drivers/input/touchscreen/ts_filter_group.h
+new file mode 100644
+index 0000000..c411080
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_group.h
+@@ -0,0 +1,39 @@
++#ifndef __TS_FILTER_GROUP_H__
++#define __TS_FILTER_GROUP_H__
++
++#include "ts_filter.h"
++
++/*
++ * Touchscreen group filter.
++ *
++ * Copyright (C) 2008 by Openmoko, Inc.
++ * Author: Nelson Castillo <arhuaco@freaks-unidos.net>
++ *
++ */
++
++struct ts_filter_group_configuration {
++ int extent;
++ int close_enough;
++ int threshold;
++ int attempts;
++};
++
++struct ts_filter_group {
++ struct ts_filter tsf;
++ struct ts_filter_group_configuration *config;
++
++ int N; /* How many samples we have */
++ int *samples[MAX_TS_FILTER_COORDS]; /* the samples, our input */
++
++ int *group_size; /* used for temporal computations */
++ int *sorted_samples; /* used for temporal computations */
++
++ int range_max[MAX_TS_FILTER_COORDS]; /* max computed ranges */
++ int range_min[MAX_TS_FILTER_COORDS]; /* min computed ranges */
++
++ int tries_left; /* We finish if we don't get enough samples */
++};
++
++extern struct ts_filter_api ts_filter_group_api;
++
++#endif
+diff --git a/drivers/input/touchscreen/ts_filter_linear.c b/drivers/input/touchscreen/ts_filter_linear.c
+new file mode 100644
+index 0000000..c336252
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_linear.c
+@@ -0,0 +1,173 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Copyright (C) 2008 by Openmoko, Inc.
++ * Author: Nelson Castillo <arhuaco@freaks-unidos.net>
++ * All rights reserved.
++ *
++ * Linearly scale touchscreen values.
++ *
++ * Expose the TS_FILTER_LINEAR_NCONSTANTS for the linear transformation
++ * using sysfs.
++ *
++ */
++
++#include "ts_filter_linear.h"
++#include <linux/kernel.h>
++#include <linux/slab.h>
++#include <linux/string.h>
++
++
++/* sysfs functions */
++
++
++static ssize_t const_attr_show(struct kobject *kobj,
++ struct attribute *attr,
++ char *buf)
++{
++ struct const_attribute *a = to_const_attr(attr);
++
++ return a->show(to_const_obj(kobj), a, buf);
++}
++
++static ssize_t const_attr_store(struct kobject *kobj,
++ struct attribute *attr,
++ const char *buf, size_t len)
++{
++ struct const_attribute *a = to_const_attr(attr);
++
++ return a->store(to_const_obj(kobj), a, buf, len);
++}
++
++static struct sysfs_ops const_sysfs_ops = {
++ .show = const_attr_show,
++ .store = const_attr_store,
++};
++
++static void const_release(struct kobject *kobj)
++{
++ kfree(to_const_obj(kobj)->tsfl);
++}
++
++static ssize_t const_show(struct const_obj *obj, struct const_attribute *attr,
++ char *buf)
++{
++ int who;
++
++ sscanf(attr->attr.name, "%d", &who);
++ return sprintf(buf, "%d\n", obj->tsfl->constants[who]);
++}
++
++static ssize_t const_store(struct const_obj *obj, struct const_attribute *attr,
++ const char *buf, size_t count)
++{
++ int who;
++
++ sscanf(attr->attr.name, "%d", &who);
++ sscanf(buf, "%d", &obj->tsfl->constants[who]);
++ return count;
++}
++
++/* filter functions */
++
++static struct ts_filter *ts_filter_linear_create(struct platform_device *pdev,
++ void *conf, int count_coords)
++{
++ struct ts_filter_linear *tsfl;
++ int i;
++ int ret;
++
++ tsfl = kzalloc(sizeof(struct ts_filter_linear), GFP_KERNEL);
++ if (!tsfl)
++ return NULL;
++
++ tsfl->config = (struct ts_filter_linear_configuration *)conf;
++ tsfl->tsf.count_coords = count_coords;
++
++ for (i = 0; i < TS_FILTER_LINEAR_NCONSTANTS; ++i) {
++ tsfl->constants[i] = tsfl->config->constants[i];
++
++ /* sysfs */
++ sprintf(tsfl->attr_names[i], "%d", i);
++ tsfl->kattrs[i].attr.name = tsfl->attr_names[i];
++ tsfl->kattrs[i].attr.mode = 0666;
++ tsfl->kattrs[i].show = const_show;
++ tsfl->kattrs[i].store = const_store;
++ tsfl->attrs[i] = &tsfl->kattrs[i].attr;
++ }
++ tsfl->attrs[i] = NULL;
++
++ tsfl->const_ktype.sysfs_ops = &const_sysfs_ops;
++ tsfl->const_ktype.release = const_release;
++ tsfl->const_ktype.default_attrs = tsfl->attrs;
++ tsfl->c_obj.tsfl = tsfl; /* kernel frees tsfl in const_release */
++
++ ret = kobject_init_and_add(&tsfl->c_obj.kobj, &tsfl->const_ktype,
++ &pdev->dev.kobj, "calibration");
++ if (ret) {
++ kobject_put(&tsfl->c_obj.kobj);
++ return NULL;
++ }
++
++ printk(KERN_INFO" Created Linear ts filter depth %d\n", count_coords);
++
++ return &tsfl->tsf;
++}
++
++static void ts_filter_linear_destroy(struct platform_device *pdev,
++ struct ts_filter *tsf)
++{
++ struct ts_filter_linear *tsfl = (struct ts_filter_linear *)tsf;
++
++ /* kernel frees tsfl in const_release */
++ kobject_put(&tsfl->c_obj.kobj);
++}
++
++static void ts_filter_linear_clear(struct ts_filter *tsf)
++{
++ if (tsf->next) /* chain */
++ (tsf->next->api->clear)(tsf->next);
++}
++
++
++static void ts_filter_linear_scale(struct ts_filter *tsf, int *coords)
++{
++ struct ts_filter_linear *tsfl = (struct ts_filter_linear *)tsf;
++ int *k = tsfl->constants;
++ int c0 = coords[tsfl->config->coord0];
++ int c1 = coords[tsfl->config->coord1];
++
++ coords[tsfl->config->coord0] = (k[2] + k[0] * c0 + k[1] * c1) / k[6];
++ coords[tsfl->config->coord1] = (k[5] + k[3] * c0 + k[4] * c1) / k[6];
++
++ if (tsf->next)
++ (tsf->next->api->scale)(tsf->next, coords);
++}
++
++static int ts_filter_linear_process(struct ts_filter *tsf, int *coords)
++{
++ if (tsf->next)
++ return (tsf->next->api->process)(tsf->next, coords);
++
++ return 1;
++}
++
++struct ts_filter_api ts_filter_linear_api = {
++ .create = ts_filter_linear_create,
++ .destroy = ts_filter_linear_destroy,
++ .clear = ts_filter_linear_clear,
++ .process = ts_filter_linear_process,
++ .scale = ts_filter_linear_scale,
++};
+diff --git a/drivers/input/touchscreen/ts_filter_linear.h b/drivers/input/touchscreen/ts_filter_linear.h
+new file mode 100644
+index 0000000..fc27cf7
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_linear.h
+@@ -0,0 +1,64 @@
++#ifndef __TS_FILTER_LINEAR_H__
++#define __TS_FILTER_LINEAR_H__
++
++#include "ts_filter.h"
++#include <linux/kobject.h>
++
++/*
++ * Touchscreen linear filter.
++ *
++ * Copyright (C) 2008 by Openmoko, Inc.
++ * Author: Nelson Castillo <arhuaco@freaks-unidos.net>
++ *
++ */
++
++#define TS_FILTER_LINEAR_NCONSTANTS 7
++
++/* sysfs */
++
++struct ts_filter_linear;
++
++struct const_obj {
++ struct ts_filter_linear *tsfl;
++ struct kobject kobj;
++};
++
++#define to_const_obj(x) container_of(x, struct const_obj, kobj)
++
++struct const_attribute {
++ struct attribute attr;
++ ssize_t (*show)(struct const_obj *const, struct const_attribute *attr,
++ char *buf);
++ ssize_t (*store)(struct const_obj *const, struct const_attribute *attr,
++ const char *buf, size_t count);
++};
++
++#define to_const_attr(x) container_of(x, struct const_attribute, attr)
++
++/* filter configuration */
++
++struct ts_filter_linear_configuration {
++ int constants[TS_FILTER_LINEAR_NCONSTANTS];
++ int coord0;
++ int coord1;
++};
++
++/* the filter */
++
++struct ts_filter_linear {
++ struct ts_filter tsf;
++ struct ts_filter_linear_configuration *config;
++
++ int constants[TS_FILTER_LINEAR_NCONSTANTS];
++
++ /* sysfs */
++ struct const_obj c_obj;
++ struct kobj_type const_ktype;
++ struct const_attribute kattrs[TS_FILTER_LINEAR_NCONSTANTS];
++ struct attribute *attrs[TS_FILTER_LINEAR_NCONSTANTS + 1];
++ char attr_names[TS_FILTER_LINEAR_NCONSTANTS][2];
++};
++
++extern struct ts_filter_api ts_filter_linear_api;
++
++#endif
+diff --git a/drivers/input/touchscreen/ts_filter_mean.c b/drivers/input/touchscreen/ts_filter_mean.c
+new file mode 100644
+index 0000000..e4e0f2a
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_mean.c
+@@ -0,0 +1,174 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Copyright (c) 2008 Andy Green <andy@openmoko.com>
++ *
++ *
++ * Mean has no effect if the samples are changing by more that the
++ * threshold set by averaging_threshold in the configuration.
++ *
++ * However while samples come in that don't go outside this threshold from
++ * the last reported sample, Mean replaces the samples with a simple mean
++ * of a configurable number of samples (set by bits_filter_length in config,
++ * which is 2^n, so 5 there makes 32 sample averaging).
++ *
++ * Mean works well if the input data is already good quality, reducing + / - 1
++ * sample jitter when the stylus is still, or moving very slowly, without
++ * introducing abrupt transitions or reducing ability to follow larger
++ * movements. If you set the threshold higher than the dynamic range of the
++ * coordinates, you can just use it as a simple mean average.
++ */
++
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/slab.h>
++#include "ts_filter_mean.h"
++
++static void ts_filter_mean_clear_internal(struct ts_filter *tsf)
++{
++ struct ts_filter_mean *tsfs = (struct ts_filter_mean *)tsf;
++ int n;
++
++ for (n = 0; n < tsfs->tsf.count_coords; n++) {
++ tsfs->fhead[n] = 0;
++ tsfs->ftail[n] = 0;
++ tsfs->lowpass[n] = 0;
++ }
++}
++
++static void ts_filter_mean_clear(struct ts_filter *tsf)
++{
++ ts_filter_mean_clear_internal(tsf);
++
++ if (tsf->next) /* chain */
++ (tsf->next->api->clear)(tsf->next);
++}
++
++static struct ts_filter *ts_filter_mean_create(struct platform_device *pdev,
++ void *config, int count_coords)
++{
++ int *p;
++ int n;
++ struct ts_filter_mean *tsfs = kzalloc(
++ sizeof(struct ts_filter_mean), GFP_KERNEL);
++
++ if (!tsfs)
++ return NULL;
++
++ BUG_ON((count_coords < 1) || (count_coords > MAX_TS_FILTER_COORDS));
++ tsfs->tsf.count_coords = count_coords;
++
++ tsfs->config = (struct ts_filter_mean_configuration *)config;
++
++ tsfs->config->extent = 1 << tsfs->config->bits_filter_length;
++ BUG_ON((tsfs->config->extent > 256) || (!tsfs->config->extent));
++
++ p = kmalloc(tsfs->config->extent * sizeof(int) * count_coords,
++ GFP_KERNEL);
++ if (!p)
++ return NULL;
++
++ for (n = 0; n < count_coords; n++) {
++ tsfs->fifo[n] = p;
++ p += tsfs->config->extent;
++ }
++
++ if (!tsfs->config->averaging_threshold)
++ tsfs->config->averaging_threshold = 0xffff; /* always active */
++
++ ts_filter_mean_clear_internal(&tsfs->tsf);
++
++ printk(KERN_INFO" Created Mean ts filter len %d depth %d thresh %d\n",
++ tsfs->config->extent, count_coords,
++ tsfs->config->averaging_threshold);
++
++ return &tsfs->tsf;
++}
++
++static void ts_filter_mean_destroy(struct platform_device *pdev,
++ struct ts_filter *tsf)
++{
++ struct ts_filter_mean *tsfs = (struct ts_filter_mean *)tsf;
++
++ kfree(tsfs->fifo[0]); /* first guy has pointer from kmalloc */
++ kfree(tsf);
++}
++
++static void ts_filter_mean_scale(struct ts_filter *tsf, int *coords)
++{
++ if (tsf->next) /* chain */
++ (tsf->next->api->scale)(tsf->next, coords);
++}
++
++/*
++ * Give us the raw sample data in x and y, and if we return 1 then you can
++ * get a filtered coordinate from tsm->x and tsm->y. If we return 0 you didn't
++ * fill the filter with samples yet.
++ */
++
++static int ts_filter_mean_process(struct ts_filter *tsf, int *coords)
++{
++ struct ts_filter_mean *tsfs = (struct ts_filter_mean *)tsf;
++ int n;
++ int len;
++
++ for (n = 0; n < tsf->count_coords; n++) {
++
++ /*
++ * Has he moved far enough away that we should abandon current
++ * low pass filtering state?
++ */
++ if ((coords[n] < (tsfs->reported[n] -
++ tsfs->config->averaging_threshold)) ||
++ (coords[n] > (tsfs->reported[n] +
++ tsfs->config->averaging_threshold))) {
++ tsfs->fhead[n] = 0;
++ tsfs->ftail[n] = 0;
++ tsfs->lowpass[n] = 0;
++ }
++
++ /* capture this sample into fifo and sum */
++ tsfs->fifo[n][tsfs->fhead[n]++] = coords[n];
++ if (tsfs->fhead[n] == tsfs->config->extent)
++ tsfs->fhead[n] = 0;
++ tsfs->lowpass[n] += coords[n];
++
++ /* adjust the sum into an average and use that*/
++ len = (tsfs->fhead[n] - tsfs->ftail[n]) &
++ (tsfs->config->extent - 1);
++ coords[n] = (tsfs->lowpass[n] + (len >> 1)) / len;
++ tsfs->reported[n] = coords[n];
++
++ /* remove oldest sample if we are full */
++ if (len == (tsfs->config->extent - 1)) {
++ tsfs->lowpass[n] -= tsfs->fifo[n][tsfs->ftail[n]++];
++ if (tsfs->ftail[n] == tsfs->config->extent)
++ tsfs->ftail[n] = 0;
++ }
++ }
++
++ if (tsf->next) /* chain */
++ return (tsf->next->api->process)(tsf->next, coords);
++
++ return 1;
++}
++
++struct ts_filter_api ts_filter_mean_api = {
++ .create = ts_filter_mean_create,
++ .destroy = ts_filter_mean_destroy,
++ .clear = ts_filter_mean_clear,
++ .process = ts_filter_mean_process,
++ .scale = ts_filter_mean_scale,
++};
+diff --git a/drivers/input/touchscreen/ts_filter_mean.h b/drivers/input/touchscreen/ts_filter_mean.h
+new file mode 100644
+index 0000000..44c506c
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_mean.h
+@@ -0,0 +1,34 @@
++#ifndef __TS_FILTER_MEAN_H__
++#define __TS_FILTER_MEAN_H__
++
++#include "ts_filter.h"
++
++/*
++ * Touchscreen filter.
++ *
++ * mean
++ *
++ * (c) 2008 Andy Green <andy@openmoko.com>
++ */
++
++struct ts_filter_mean_configuration {
++ int bits_filter_length;
++ int averaging_threshold;
++
++ int extent;
++};
++
++struct ts_filter_mean {
++ struct ts_filter tsf;
++ struct ts_filter_mean_configuration *config;
++
++ int reported[MAX_TS_FILTER_COORDS];
++ int lowpass[MAX_TS_FILTER_COORDS];
++ int *fifo[MAX_TS_FILTER_COORDS];
++ int fhead[MAX_TS_FILTER_COORDS];
++ int ftail[MAX_TS_FILTER_COORDS];
++};
++
++extern struct ts_filter_api ts_filter_mean_api;
++
++#endif
+diff --git a/drivers/input/touchscreen/ts_filter_median.c b/drivers/input/touchscreen/ts_filter_median.c
+new file mode 100644
+index 0000000..b3b6a9c
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_median.c
+@@ -0,0 +1,217 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Copyright (c) 2008 Andy Green <andy@openmoko.com>
++ *
++ *
++ * Median averaging stuff. We sort incoming raw samples into an array of
++ * MEDIAN_SIZE length, discarding the oldest sample each time once we are full.
++ * We then return the sum of the middle three samples for X and Y. It means
++ * the final result must be divided by (3 * scaling factor) to correct for
++ * avoiding the repeated /3.
++ *
++ * This strongly rejects brief excursions away from a central point that is
++ * sticky in time compared to the excursion duration.
++ *
++ * Thanks to Dale Schumacher (who wrote some example code) and Carl-Daniel
++ * Halifinger who pointed out this would be a good method.
++ */
++
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/slab.h>
++#include "ts_filter_median.h"
++
++static void ts_filter_median_insert(int *p, int sample, int count)
++{
++ int n;
++
++ /* search through what we got so far to find where to put sample */
++ for (n = 0; n < count; n++)
++ /* we met somebody bigger than us? */
++ if (sample < p[n]) {
++ /* starting from the end, push bigger guys down one */
++ for (count--; count >= n; count--)
++ p[count + 1] = p[count];
++ p[n] = sample; /* and put us in place of first bigger */
++ return;
++ }
++
++ p[count] = sample; /* nobody was bigger than us, add us on the end */
++}
++
++static void ts_filter_median_del(int *p, int value, int count)
++{
++ int index;
++
++ for (index = 0; index < count; index++)
++ if (p[index] == value) {
++ for (; index < count; index++)
++ p[index] = p[index + 1];
++ return;
++ }
++}
++
++
++static void ts_filter_median_clear_internal(struct ts_filter *tsf)
++{
++ struct ts_filter_median *tsfm = (struct ts_filter_median *)tsf;
++
++ tsfm->pos = 0;
++ tsfm->valid = 0;
++
++}
++static void ts_filter_median_clear(struct ts_filter *tsf)
++{
++ ts_filter_median_clear_internal(tsf);
++
++ if (tsf->next) /* chain */
++ (tsf->next->api->clear)(tsf->next);
++}
++
++static struct ts_filter *ts_filter_median_create(struct platform_device *pdev,
++ void *conf, int count_coords)
++{
++ int *p;
++ int n;
++ struct ts_filter_median *tsfm = kzalloc(sizeof(struct ts_filter_median),
++ GFP_KERNEL);
++
++ if (!tsfm)
++ return NULL;
++
++ tsfm->config = (struct ts_filter_median_configuration *)conf;
++ BUG_ON((count_coords < 1) || (count_coords > MAX_TS_FILTER_COORDS));
++ tsfm->tsf.count_coords = count_coords;
++
++ tsfm->config->midpoint = (tsfm->config->extent >> 1) + 1;
++
++ p = kmalloc(2 * count_coords * sizeof(int) * (tsfm->config->extent + 1),
++ GFP_KERNEL);
++ if (!p) {
++ kfree(tsfm);
++ return NULL;
++ }
++
++ for (n = 0; n < count_coords; n++) {
++ tsfm->sort[n] = p;
++ p += tsfm->config->extent + 1;
++ tsfm->fifo[n] = p;
++ p += tsfm->config->extent + 1;
++ }
++
++ ts_filter_median_clear_internal(&tsfm->tsf);
++
++ printk(KERN_INFO" Created Median ts filter len %d depth %d dec %d\n",
++ tsfm->config->extent, count_coords,
++ tsfm->config->decimation_threshold);
++
++ return &tsfm->tsf;
++}
++
++static void ts_filter_median_destroy(struct platform_device *pdev,
++ struct ts_filter *tsf)
++{
++ struct ts_filter_median *tsfm = (struct ts_filter_median *)tsf;
++
++ kfree(tsfm->sort[0]); /* first guy has pointer from kmalloc */
++ kfree(tsf);
++}
++
++static void ts_filter_median_scale(struct ts_filter *tsf, int *coords)
++{
++ int n;
++
++ for (n = 0; n < tsf->count_coords; n++)
++ coords[n] = (coords[n] + 2) / 3;
++
++ if (tsf->next) /* chain */
++ (tsf->next->api->scale)(tsf->next, coords);
++}
++
++/*
++ * Give us the raw sample data coords, and if we return 1 then you can
++ * get a filtered coordinate from coords. If we return 0 you didn't
++ * fill all the filters with samples yet.
++ */
++
++static int ts_filter_median_process(struct ts_filter *tsf, int *coords)
++{
++ struct ts_filter_median *tsfm = (struct ts_filter_median *)tsf;
++ int n;
++ int movement = 1;
++
++ for (n = 0; n < tsf->count_coords; n++) {
++ /* grab copy in insertion order to remove when oldest */
++ tsfm->fifo[n][tsfm->pos] = coords[n];
++ /* insert these samples in sorted order in the median arrays */
++ ts_filter_median_insert(tsfm->sort[n], coords[n], tsfm->valid);
++ }
++ /* move us on in the fifo */
++ if (++tsfm->pos == (tsfm->config->extent + 1))
++ tsfm->pos = 0;
++
++ /* we have finished a median sampling? */
++ if (++tsfm->valid != tsfm->config->extent)
++ return 0; /* no valid sample to use */
++
++ /* discard the oldest sample in median sorted array */
++ tsfm->valid--;
++
++ /*
++ * Sum the middle 3 in the median sorted arrays. We don't divide back
++ * down which increases the sum resolution by a factor of 3 until the
++ * scale API is called.
++ */
++ for (n = 0; n < tsfm->tsf.count_coords; n++)
++ /* perform the deletion of the oldest sample */
++ ts_filter_median_del(tsfm->sort[n], tsfm->fifo[n][tsfm->pos],
++ tsfm->valid);
++
++ tsfm->decimation_count--;
++ if (tsfm->decimation_count >= 0)
++ return 0;
++
++ for (n = 0; n < tsfm->tsf.count_coords; n++) {
++ /* give the coordinate result from summing median 3 */
++ coords[n] = tsfm->sort[n][tsfm->config->midpoint - 1] +
++ tsfm->sort[n][tsfm->config->midpoint] +
++ tsfm->sort[n][tsfm->config->midpoint + 1]
++ ;
++
++ movement += abs(tsfm->last_issued[n] - coords[n]);
++ }
++
++ if (movement > tsfm->config->decimation_threshold) /* fast */
++ tsfm->decimation_count = tsfm->config->decimation_above;
++ else
++ tsfm->decimation_count = tsfm->config->decimation_below;
++
++ memcpy(&tsfm->last_issued[0], coords,
++ tsfm->tsf.count_coords * sizeof(int));
++
++ if (tsf->next) /* chain */
++ return (tsf->next->api->process)(tsf->next, coords);
++
++ return 1;
++}
++
++struct ts_filter_api ts_filter_median_api = {
++ .create = ts_filter_median_create,
++ .destroy = ts_filter_median_destroy,
++ .clear = ts_filter_median_clear,
++ .process = ts_filter_median_process,
++ .scale = ts_filter_median_scale,
++};
+diff --git a/drivers/input/touchscreen/ts_filter_median.h b/drivers/input/touchscreen/ts_filter_median.h
+new file mode 100644
+index 0000000..8f25e27
+--- /dev/null
++++ b/drivers/input/touchscreen/ts_filter_median.h
+@@ -0,0 +1,36 @@
++#ifndef __TS_FILTER_MEDIAN_H__
++#define __TS_FILTER_MEDIAN_H__
++
++#include "ts_filter.h"
++
++/*
++ * Touchscreen filter.
++ *
++ * median
++ *
++ * (c) 2008 Andy Green <andy@openmoko.com>
++ */
++
++struct ts_filter_median_configuration {
++ int extent;
++ int midpoint;
++ int decimation_threshold;
++ int decimation_above;
++ int decimation_below;
++};
++
++struct ts_filter_median {
++ struct ts_filter tsf;
++ struct ts_filter_median_configuration *config;
++
++ int decimation_count;
++ int last_issued[MAX_TS_FILTER_COORDS];
++ int valid; /* how many samples in the sort buffer are valid */
++ int *sort[MAX_TS_FILTER_COORDS]; /* samples taken for median */
++ int *fifo[MAX_TS_FILTER_COORDS]; /* samples taken for median */
++ int pos; /* where we are in the fifo sample memory */
++};
++
++extern struct ts_filter_api ts_filter_median_api;
++
++#endif
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0003-VENDOR-armworks-logo.patch b/recipes/linux/linux-2.6.29/micro2440/0003-VENDOR-armworks-logo.patch
new file mode 100644
index 0000000000..47909aa684
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0003-VENDOR-armworks-logo.patch
@@ -0,0 +1,12079 @@
+From 42c2c795ebc07043ee046dc95d1da5320a02e2ae Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Wed, 25 Mar 2009 17:38:41 +0000
+Subject: [PATCH] VENDOR: armworks logo
+
+Sponsor's kernel logo
+
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ drivers/video/logo/Kconfig | 5 +
+ drivers/video/logo/Makefile | 1 +
+ drivers/video/logo/logo.c | 6 +
+ drivers/video/logo/logo_armworks_clut224.ppm |12004 ++++++++++++++++++++++++++
+ 4 files changed, 12016 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/video/logo/logo_armworks_clut224.ppm
+
+diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
+index 39ac49e..34834ed 100644
+--- a/drivers/video/logo/Kconfig
++++ b/drivers/video/logo/Kconfig
+@@ -82,4 +82,9 @@ config LOGO_M32R_CLUT224
+ depends on M32R
+ default y
+
++config LOGO_ARMWORKS_CLUT224
++ bool "Armworks 224-color logo"
++ depends on MACH_MINI2440
++ default y
++
+ endif # LOGO
+diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
+index b91251d..4d0423f 100644
+--- a/drivers/video/logo/Makefile
++++ b/drivers/video/logo/Makefile
+@@ -15,6 +15,7 @@ obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
+ obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
+ obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
+ obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o
++obj-$(CONFIG_LOGO_ARMWORKS_CLUT224) += logo_armworks_clut224.o
+
+ obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o
+
+diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c
+index 2e85a2b..451817e 100644
+--- a/drivers/video/logo/logo.c
++++ b/drivers/video/logo/logo.c
+@@ -35,6 +35,7 @@ extern const struct linux_logo logo_superh_mono;
+ extern const struct linux_logo logo_superh_vga16;
+ extern const struct linux_logo logo_superh_clut224;
+ extern const struct linux_logo logo_m32r_clut224;
++extern const struct linux_logo logo_armworks_clut224;
+
+ static int nologo;
+ module_param(nologo, bool, 0);
+@@ -115,6 +116,11 @@ const struct linux_logo * __init_refok fb_find_logo(int depth)
+ /* M32R Linux logo */
+ logo = &logo_m32r_clut224;
+ #endif
++#ifdef CONFIG_LOGO_ARMWORKS_CLUT224
++ /* ARMWorks Linux logo -- lower priority */
++ if (!logo)
++ logo = &logo_armworks_clut224;
++#endif
+ }
+ return logo;
+ }
+diff --git a/drivers/video/logo/logo_armworks_clut224.ppm b/drivers/video/logo/logo_armworks_clut224.ppm
+new file mode 100644
+index 0000000..a632167
+--- /dev/null
++++ b/drivers/video/logo/logo_armworks_clut224.ppm
+@@ -0,0 +1,12004 @@
++P3
++# CREATOR: GIMP PNM Filter Version 1.1
++160 25
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++237
++229
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++222
++222
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++239
++236
++254
++249
++242
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++219
++190
++253
++70
++115
++253
++70
++115
++253
++248
++253
++255
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++107
++98
++252
++0
++46
++254
++105
++154
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++245
++233
++253
++26
++69
++251
++51
++102
++253
++252
++250
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++194
++181
++253
++0
++46
++254
++31
++58
++250
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++252
++250
++254
++74
++79
++250
++96
++142
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++246
++253
++107
++108
++252
++51
++102
++253
++54
++95
++252
++39
++86
++253
++54
++95
++252
++94
++132
++253
++196
++207
++254
++252
++250
++254
++254
++255
++252
++248
++253
++255
++252
++250
++254
++146
++155
++253
++113
++137
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++246
++253
++51
++102
++253
++206
++211
++254
++252
++250
++254
++93
++105
++254
++92
++119
++252
++146
++172
++254
++252
++250
++254
++248
++253
++255
++254
++255
++252
++252
++250
++254
++120
++126
++252
++168
++190
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++105
++113
++251
++92
++119
++252
++121
++164
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++240
++254
++1
++52
++251
++5
++39
++251
++214
++226
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++201
++165
++255
++31
++58
++250
++0
++58
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++74
++79
++250
++0
++63
++251
++121
++164
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++234
++219
++253
++120
++126
++252
++51
++102
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++172
++152
++253
++31
++58
++250
++0
++46
++254
++213
++233
++255
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++181
++166
++251
++31
++58
++250
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++250
++226
++255
++33
++46
++250
++1
++52
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++33
++46
++250
++0
++63
++251
++0
++63
++251
++0
++63
++251
++31
++58
++250
++12
++65
++254
++1
++52
++251
++94
++132
++253
++254
++255
++252
++254
++255
++252
++252
++250
++254
++31
++58
++250
++0
++46
++254
++241
++254
++255
++254
++255
++252
++254
++255
++252
++248
++253
++255
++194
++166
++255
++0
++58
++254
++117
++152
++253
++254
++255
++252
++107
++108
++252
++0
++63
++251
++25
++80
++252
++255
++252
++251
++255
++252
++251
++254
++255
++252
++252
++231
++254
++33
++46
++250
++39
++86
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++241
++214
++253
++1
++52
++251
++31
++58
++250
++176
++178
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++231
++254
++1
++52
++251
++1
++52
++251
++223
++230
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++201
++170
++252
++0
++63
++251
++0
++63
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++74
++79
++250
++0
++63
++251
++129
++161
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++120
++126
++252
++31
++58
++250
++70
++115
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++240
++254
++39
++86
++253
++70
++115
++253
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++178
++163
++255
++0
++63
++251
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++132
++122
++252
++26
++69
++251
++0
++63
++251
++155
++174
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++246
++253
++31
++58
++250
++31
++58
++250
++113
++137
++251
++197
++177
++253
++146
++155
++253
++52
++67
++251
++26
++69
++251
++33
++46
++250
++214
++226
++253
++254
++255
++252
++255
++246
++253
++1
++52
++251
++0
++63
++251
++155
++174
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++84
++94
++254
++0
++63
++251
++51
++102
++253
++254
++255
++252
++215
++182
++254
++31
++58
++250
++1
++52
++251
++227
++239
++254
++248
++253
++255
++254
++255
++252
++186
++158
++253
++0
++63
++251
++1
++52
++251
++227
++239
++254
++252
++250
++254
++254
++255
++252
++172
++152
++253
++0
++63
++251
++1
++52
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++231
++254
++0
++58
++254
++0
++58
++254
++222
++222
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++201
++170
++252
++31
++58
++250
++0
++63
++251
++254
++255
++252
++249
++242
++255
++212
++203
++255
++249
++242
++255
++252
++250
++254
++171
++171
++253
++159
++159
++253
++188
++197
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++255
++246
++253
++168
++164
++253
++159
++159
++253
++206
++211
++254
++65
++74
++252
++0
++63
++251
++129
++161
++253
++254
++255
++252
++211
++207
++253
++211
++207
++253
++255
++246
++253
++248
++253
++255
++254
++255
++252
++252
++250
++254
++220
++206
++252
++211
++207
++253
++248
++253
++255
++254
++255
++252
++245
++233
++253
++168
++164
++253
++159
++159
++253
++191
++191
++253
++255
++252
++251
++222
++222
++254
++105
++113
++251
++31
++58
++250
++54
++95
++252
++237
++229
++255
++220
++206
++252
++248
++253
++255
++239
++236
++254
++211
++207
++253
++222
++222
++254
++254
++255
++252
++168
++164
++253
++159
++159
++253
++191
++191
++253
++222
++222
++254
++237
++229
++255
++234
++219
++253
++254
++255
++252
++254
++255
++252
++255
++246
++253
++194
++181
++253
++159
++159
++253
++168
++164
++253
++206
++211
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++178
++163
++255
++31
++58
++250
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++248
++253
++255
++255
++252
++251
++0
++46
++254
++0
++63
++251
++19
++66
++255
++26
++90
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++31
++58
++250
++31
++58
++250
++168
++190
++254
++255
++252
++251
++248
++253
++255
++255
++235
++252
++0
++58
++254
++0
++63
++251
++176
++178
++253
++254
++255
++252
++219
++190
++253
++31
++58
++250
++12
++65
++254
++51
++102
++253
++252
++250
++254
++254
++255
++252
++255
++252
++251
++1
++52
++251
++26
++69
++251
++0
++58
++254
++248
++253
++255
++252
++255
++251
++1
++52
++251
++31
++58
++250
++121
++164
++254
++254
++255
++252
++254
++255
++252
++65
++74
++252
++26
++69
++251
++31
++58
++250
++146
++172
++254
++248
++253
++255
++255
++252
++251
++74
++79
++250
++31
++58
++250
++55
++116
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++203
++186
++253
++159
++159
++253
++171
++171
++253
++239
++236
++254
++252
++250
++254
++248
++253
++255
++255
++252
++251
++211
++207
++253
++211
++207
++253
++254
++255
++252
++206
++193
++253
++159
++159
++253
++171
++171
++253
++245
++233
++253
++31
++58
++250
++0
++58
++254
++223
++230
++252
++252
++250
++254
++254
++255
++252
++220
++206
++252
++223
++212
++252
++188
++197
++251
++254
++255
++252
++254
++255
++252
++171
++171
++253
++159
++159
++253
++176
++178
++253
++249
++242
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++201
++165
++255
++0
++63
++251
++31
++58
++250
++248
++253
++255
++197
++177
++253
++1
++52
++251
++25
++80
++252
++1
++52
++251
++1
++52
++251
++0
++58
++254
++1
++52
++251
++39
++86
++253
++254
++255
++252
++252
++250
++254
++248
++253
++255
++197
++177
++253
++0
++46
++254
++0
++63
++251
++1
++52
++251
++0
++58
++254
++52
++67
++251
++31
++58
++250
++121
++164
++254
++252
++231
++254
++0
++46
++254
++0
++46
++254
++214
++226
++253
++255
++252
++251
++254
++255
++252
++240
++208
++253
++0
++46
++254
++5
++39
++251
++230
++244
++251
++172
++152
++253
++1
++52
++251
++31
++58
++250
++31
++58
++250
++0
++58
++254
++0
++74
++252
++105
++113
++251
++0
++63
++251
++26
++69
++251
++0
++63
++251
++1
++52
++251
++0
++46
++254
++214
++226
++253
++178
++163
++255
++1
++52
++251
++0
++63
++251
++0
++63
++251
++0
++58
++254
++31
++58
++250
++1
++52
++251
++1
++52
++251
++31
++58
++250
++0
++46
++254
++232
++249
++255
++254
++255
++252
++33
++46
++250
++0
++58
++254
++31
++58
++250
++0
++63
++251
++31
++58
++250
++0
++74
++252
++252
++250
++254
++254
++255
++252
++181
++166
++251
++0
++63
++251
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++201
++170
++252
++0
++63
++251
++26
++69
++251
++52
++67
++251
++1
++52
++251
++222
++222
++254
++252
++250
++254
++254
++255
++252
++255
++246
++253
++1
++52
++251
++0
++58
++254
++170
++195
++252
++255
++252
++251
++255
++252
++251
++255
++240
++254
++1
++52
++251
++31
++58
++250
++176
++178
++253
++254
++255
++252
++186
++158
++253
++0
++63
++251
++26
++69
++251
++1
++52
++251
++254
++255
++252
++254
++255
++252
++215
++182
++254
++31
++58
++250
++52
++67
++251
++1
++52
++251
++223
++230
++252
++252
++250
++254
++107
++98
++252
++0
++63
++251
++84
++94
++254
++254
++255
++252
++242
++226
++254
++1
++52
++251
++0
++63
++251
++26
++69
++251
++26
++90
++253
++255
++252
++251
++255
++240
++254
++1
++52
++251
++0
++63
++251
++151
++183
++252
++255
++252
++251
++220
++206
++252
++1
++52
++251
++0
++58
++254
++31
++58
++250
++0
++63
++251
++0
++46
++254
++94
++132
++253
++254
++255
++252
++249
++242
++255
++5
++39
++251
++1
++52
++251
++26
++69
++251
++1
++52
++251
++0
++63
++251
++33
++46
++250
++222
++222
++254
++0
++58
++254
++0
++58
++254
++214
++226
++253
++254
++255
++252
++139
++132
++253
++1
++52
++251
++5
++39
++251
++168
++190
++254
++220
++206
++252
++33
++46
++250
++31
++58
++250
++31
++58
++250
++31
++58
++250
++5
++39
++251
++232
++237
++253
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++201
++170
++252
++0
++63
++251
++31
++58
++250
++252
++250
++254
++197
++177
++253
++0
++63
++251
++12
++65
++254
++52
++67
++251
++159
++159
++253
++105
++113
++251
++0
++58
++254
++31
++58
++250
++82
++136
++253
++254
++255
++252
++210
++185
++254
++1
++52
++251
++0
++63
++251
++26
++69
++251
++159
++159
++253
++67
++107
++251
++0
++63
++251
++0
++63
++251
++121
++164
++254
++255
++235
++252
++1
++52
++251
++1
++52
++251
++223
++230
++252
++254
++255
++252
++254
++255
++252
++234
++219
++253
++31
++58
++250
++1
++52
++251
++248
++253
++255
++0
++46
++254
++26
++69
++251
++51
++102
++253
++181
++166
++251
++105
++113
++251
++96
++142
++252
++176
++178
++253
++64
++85
++253
++26
++69
++251
++26
++69
++251
++137
++146
++254
++92
++119
++252
++230
++244
++251
++181
++166
++251
++0
++63
++251
++52
++67
++251
++1
++52
++251
++146
++155
++253
++78
++97
++251
++145
++140
++253
++54
++95
++252
++0
++63
++251
++0
++58
++254
++241
++254
++255
++254
++255
++252
++145
++140
++253
++92
++119
++252
++159
++159
++253
++120
++126
++252
++0
++58
++254
++31
++58
++250
++82
++136
++253
++254
++255
++252
++181
++166
++251
++31
++58
++250
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++83
++87
++252
++0
++63
++251
++113
++167
++252
++105
++113
++251
++0
++63
++251
++96
++142
++252
++248
++253
++255
++254
++255
++252
++255
++246
++253
++31
++58
++250
++31
++58
++250
++146
++172
++254
++252
++231
++254
++220
++206
++252
++84
++94
++254
++26
++69
++251
++0
++46
++254
++230
++244
++251
++254
++255
++252
++93
++105
++254
++0
++63
++251
++26
++69
++251
++0
++58
++254
++173
++186
++252
++255
++252
++251
++105
++113
++251
++0
++63
++251
++0
++63
++251
++31
++58
++250
++191
++191
++253
++254
++255
++252
++197
++177
++253
++0
++63
++251
++1
++52
++251
++248
++253
++249
++186
++158
++253
++0
++63
++251
++31
++58
++250
++26
++69
++251
++1
++52
++251
++230
++244
++251
++181
++166
++251
++31
++58
++250
++0
++46
++254
++241
++254
++255
++252
++231
++254
++5
++39
++251
++26
++69
++251
++26
++69
++251
++171
++171
++253
++105
++113
++251
++0
++58
++254
++0
++58
++254
++146
++172
++254
++255
++252
++251
++1
++52
++251
++26
++69
++251
++31
++58
++250
++51
++102
++253
++145
++140
++253
++77
++122
++252
++255
++240
++254
++1
++52
++251
++1
++52
++251
++232
++237
++253
++186
++158
++253
++0
++58
++254
++1
++52
++251
++146
++172
++254
++252
++250
++254
++64
++85
++253
++52
++67
++251
++25
++80
++252
++171
++171
++253
++145
++140
++253
++26
++69
++251
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++201
++165
++255
++0
++63
++251
++0
++63
++251
++254
++255
++252
++197
++177
++253
++31
++58
++250
++31
++58
++250
++252
++255
++251
++248
++253
++255
++254
++255
++252
++132
++122
++252
++0
++63
++251
++0
++74
++252
++254
++255
++252
++52
++67
++251
++26
++69
++251
++39
++86
++253
++252
++255
++251
++254
++255
++252
++255
++252
++251
++74
++79
++250
++31
++58
++250
++129
++161
++253
++255
++235
++252
++0
++58
++254
++0
++58
++254
++222
++222
++254
++254
++255
++252
++255
++252
++251
++241
++214
++253
++0
++58
++254
++1
++52
++251
++252
++250
++254
++1
++52
++251
++0
++63
++251
++155
++174
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++113
++137
++251
++31
++58
++250
++55
++116
++253
++248
++253
++255
++254
++255
++252
++252
++250
++254
++186
++158
++253
++0
++63
++251
++0
++58
++254
++206
++211
++254
++254
++255
++252
++252
++255
++251
++255
++252
++251
++229
++192
++251
++0
++63
++251
++1
++52
++251
++241
++254
++255
++255
++252
++251
++248
++253
++255
++254
++255
++252
++252
++250
++254
++252
++250
++254
++186
++158
++253
++0
++63
++251
++25
++80
++252
++252
++250
++254
++181
++166
++251
++0
++63
++251
++26
++69
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++250
++226
++255
++0
++58
++254
++1
++52
++251
++214
++226
++253
++194
++166
++255
++0
++63
++251
++0
++58
++254
++255
++252
++251
++254
++255
++252
++255
++252
++251
++33
++46
++250
++26
++69
++251
++31
++58
++250
++0
++58
++254
++31
++58
++250
++26
++69
++251
++1
++52
++251
++144
++180
++254
++248
++253
++255
++254
++255
++252
++52
++67
++251
++52
++67
++251
++31
++58
++250
++26
++69
++251
++55
++116
++253
++252
++250
++254
++1
++52
++251
++26
++69
++251
++0
++63
++251
++26
++69
++251
++96
++142
++252
++248
++253
++255
++252
++250
++254
++0
++46
++254
++0
++63
++251
++170
++195
++252
++83
++87
++252
++0
++63
++251
++144
++180
++254
++65
++74
++252
++31
++58
++250
++144
++180
++254
++107
++98
++252
++0
++63
++251
++51
++102
++253
++254
++255
++252
++132
++122
++252
++0
++63
++251
++0
++63
++251
++254
++255
++252
++248
++253
++255
++255
++252
++251
++105
++113
++251
++52
++67
++251
++0
++63
++251
++254
++255
++252
++1
++52
++251
++52
++67
++251
++55
++116
++253
++255
++252
++251
++254
++255
++252
++255
++252
++251
++252
++231
++254
++0
++58
++254
++31
++58
++250
++206
++193
++253
++1
++52
++251
++0
++63
++251
++114
++145
++251
++254
++255
++252
++254
++255
++252
++52
++67
++251
++0
++63
++251
++77
++122
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++194
++166
++255
++31
++58
++250
++0
++63
++251
++252
++255
++251
++197
++177
++253
++0
++63
++251
++0
++63
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++201
++170
++252
++31
++58
++250
++0
++74
++252
++254
++255
++252
++1
++52
++251
++31
++58
++250
++188
++197
++251
++248
++253
++255
++255
++252
++251
++255
++252
++251
++74
++79
++250
++0
++63
++251
++121
++164
++254
++255
++240
++254
++0
++58
++254
++0
++58
++254
++223
++230
++252
++248
++253
++255
++255
++252
++251
++241
++214
++253
++0
++58
++254
++1
++52
++251
++248
++253
++249
++83
++87
++252
++0
++63
++251
++0
++58
++254
++54
++95
++252
++191
++191
++253
++254
++255
++252
++255
++252
++251
++120
++126
++252
++0
++63
++251
++67
++107
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++181
++166
++251
++0
++63
++251
++0
++58
++254
++248
++253
++255
++255
++252
++251
++252
++255
++251
++252
++250
++254
++215
++182
++254
++0
++63
++251
++1
++52
++251
++241
++254
++255
++255
++252
++251
++203
++186
++253
++50
++77
++252
++0
++46
++254
++33
++46
++250
++0
++58
++254
++52
++67
++251
++26
++69
++251
++252
++250
++254
++181
++166
++251
++0
++63
++251
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++145
++140
++253
++0
++63
++251
++0
++63
++251
++255
++252
++251
++255
++246
++253
++1
++52
++251
++31
++58
++250
++151
++183
++252
++255
++252
++251
++255
++252
++251
++1
++52
++251
++0
++63
++251
++26
++69
++251
++0
++63
++251
++0
++63
++251
++0
++58
++254
++176
++178
++253
++254
++255
++252
++252
++250
++254
++255
++235
++252
++0
++58
++254
++31
++58
++250
++206
++193
++253
++1
++52
++251
++0
++58
++254
++240
++208
++253
++0
++58
++254
++26
++69
++251
++186
++158
++253
++0
++63
++251
++70
++115
++253
++255
++252
++251
++254
++255
++252
++84
++94
++254
++26
++69
++251
++25
++80
++252
++0
++63
++251
++1
++52
++251
++227
++239
++254
++173
++144
++251
++0
++63
++251
++64
++85
++253
++26
++69
++251
++0
++63
++251
++155
++174
++251
++254
++255
++252
++50
++77
++252
++0
++63
++251
++82
++136
++253
++255
++252
++251
++252
++250
++254
++255
++252
++251
++229
++192
++251
++0
++58
++254
++1
++52
++251
++252
++255
++251
++1
++52
++251
++31
++58
++250
++206
++193
++253
++248
++253
++255
++255
++252
++251
++254
++255
++252
++252
++231
++254
++1
++52
++251
++0
++63
++251
++0
++58
++254
++26
++69
++251
++1
++52
++251
++248
++253
++255
++254
++255
++252
++255
++252
++251
++163
++139
++252
++0
++63
++251
++0
++63
++251
++0
++74
++252
++146
++172
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++248
++253
++255
++201
++165
++255
++0
++63
++251
++31
++58
++250
++255
++252
++251
++197
++177
++253
++0
++58
++254
++0
++63
++251
++252
++250
++254
++254
++255
++252
++252
++250
++254
++201
++170
++252
++0
++63
++251
++50
++77
++252
++255
++246
++253
++1
++52
++251
++0
++58
++254
++196
++207
++254
++255
++252
++251
++254
++255
++252
++254
++255
++252
++74
++79
++250
++0
++63
++251
++121
++164
++254
++252
++231
++254
++1
++52
++251
++0
++58
++254
++214
++226
++253
++254
++255
++252
++254
++255
++252
++241
++214
++253
++31
++58
++250
++0
++58
++254
++219
++245
++255
++252
++255
++251
++107
++108
++252
++1
++52
++251
++0
++63
++251
++0
++58
++254
++54
++95
++252
++254
++255
++252
++120
++126
++252
++31
++58
++250
++67
++107
++251
++248
++253
++255
++254
++255
++252
++252
++255
++251
++178
++163
++255
++0
++63
++251
++25
++80
++252
++254
++255
++252
++248
++253
++255
++252
++250
++254
++254
++255
++252
++223
++186
++252
++0
++58
++254
++0
++58
++254
++248
++253
++249
++197
++177
++253
++33
++46
++250
++52
++67
++251
++0
++63
++251
++94
++132
++253
++78
++97
++251
++0
++63
++251
++0
++74
++252
++254
++255
++252
++181
++166
++251
++0
++63
++251
++26
++69
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++31
++58
++250
++52
++67
++251
++77
++122
++252
++220
++206
++252
++223
++212
++252
++65
++74
++252
++0
++63
++251
++26
++90
++253
++248
++253
++255
++255
++246
++253
++1
++52
++251
++31
++58
++250
++176
++205
++255
++254
++255
++252
++0
++63
++251
++26
++69
++251
++0
++74
++252
++254
++255
++252
++254
++255
++252
++230
++202
++255
++0
++58
++254
++0
++58
++254
++254
++255
++252
++52
++67
++251
++52
++67
++251
++50
++77
++252
++0
++63
++251
++96
++142
++252
++219
++190
++253
++0
++58
++254
++1
++52
++251
++252
++250
++254
++248
++253
++249
++181
++166
++251
++0
++63
++251
++26
++69
++251
++52
++67
++251
++39
++86
++253
++252
++255
++251
++242
++226
++254
++31
++58
++250
++0
++63
++251
++26
++69
++251
++1
++52
++251
++238
++247
++255
++248
++253
++255
++65
++74
++252
++31
++58
++250
++121
++164
++254
++255
++252
++251
++254
++255
++252
++254
++255
++252
++240
++208
++253
++0
++58
++254
++1
++52
++251
++239
++236
++254
++1
++52
++251
++0
++63
++251
++222
++222
++254
++254
++255
++252
++254
++255
++252
++248
++253
++255
++252
++231
++254
++0
++58
++254
++52
++67
++251
++0
++63
++251
++0
++63
++251
++26
++69
++251
++94
++132
++253
++248
++253
++255
++248
++253
++255
++254
++255
++252
++155
++151
++252
++0
++46
++254
++31
++58
++250
++31
++58
++250
++19
++66
++255
++252
++250
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++194
++166
++255
++0
++63
++251
++31
++58
++250
++254
++255
++252
++197
++177
++253
++31
++58
++250
++0
++63
++251
++254
++255
++252
++254
++255
++252
++252
++250
++254
++201
++170
++252
++0
++63
++251
++0
++74
++252
++255
++252
++251
++1
++52
++251
++31
++58
++250
++188
++197
++251
++254
++255
++252
++248
++253
++255
++254
++255
++252
++74
++79
++250
++31
++58
++250
++121
++164
++254
++245
++233
++253
++1
++52
++251
++1
++52
++251
++223
++230
++252
++252
++250
++254
++254
++255
++252
++250
++226
++255
++1
++52
++251
++1
++52
++251
++227
++239
++254
++254
++255
++252
++254
++255
++252
++255
++240
++254
++93
++105
++254
++0
++63
++251
++0
++58
++254
++168
++190
++254
++145
++140
++253
++0
++63
++251
++67
++107
++251
++248
++253
++255
++252
++250
++254
++254
++255
++252
++181
++166
++251
++31
++58
++250
++0
++74
++252
++255
++252
++251
++254
++255
++252
++248
++253
++255
++248
++253
++255
++223
++186
++252
++31
++58
++250
++1
++52
++251
++248
++253
++249
++64
++85
++253
++0
++63
++251
++55
++116
++253
++255
++252
++251
++248
++253
++255
++220
++206
++252
++1
++52
++251
++0
++74
++252
++252
++250
++254
++181
++166
++251
++0
++63
++251
++0
++74
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++215
++182
++254
++0
++58
++254
++52
++67
++251
++0
++63
++251
++0
++58
++254
++0
++58
++254
++0
++63
++251
++26
++69
++251
++1
++52
++251
++213
++233
++255
++255
++252
++251
++31
++58
++250
++31
++58
++250
++168
++190
++254
++255
++252
++251
++230
++202
++255
++1
++52
++251
++31
++58
++250
++114
++145
++251
++254
++255
++252
++173
++144
++251
++0
++63
++251
++50
++77
++252
++248
++253
++249
++172
++152
++253
++0
++63
++251
++26
++69
++251
++0
++58
++254
++195
++216
++245
++252
++231
++254
++0
++58
++254
++1
++52
++251
++227
++239
++254
++255
++252
++251
++255
++240
++254
++1
++52
++251
++26
++69
++251
++31
++58
++250
++121
++164
++254
++243
++245
++242
++254
++255
++252
++50
++77
++252
++52
++67
++251
++52
++67
++251
++26
++90
++253
++255
++252
++251
++255
++252
++251
++64
++85
++253
++0
++63
++251
++94
++132
++253
++254
++255
++252
++248
++253
++255
++254
++255
++252
++210
++185
++254
++0
++63
++251
++1
++52
++251
++248
++253
++249
++0
++46
++254
++0
++58
++254
++196
++207
++254
++254
++255
++252
++255
++252
++251
++254
++255
++252
++252
++231
++254
++0
++58
++254
++52
++67
++251
++77
++122
++252
++132
++122
++252
++0
++63
++251
++33
++46
++250
++222
++222
++254
++254
++255
++252
++255
++252
++251
++252
++255
++251
++254
++255
++252
++145
++140
++253
++0
++63
++251
++0
++58
++254
++77
++122
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++255
++251
++201
++170
++252
++0
++63
++251
++0
++63
++251
++254
++255
++252
++197
++177
++253
++0
++63
++251
++0
++63
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++201
++165
++255
++31
++58
++250
++50
++77
++252
++252
++250
++254
++52
++67
++251
++0
++63
++251
++25
++80
++252
++254
++255
++252
++255
++252
++251
++243
++245
++242
++74
++79
++250
++0
++63
++251
++129
++161
++253
++255
++246
++253
++1
++52
++251
++31
++58
++250
++168
++190
++254
++254
++255
++252
++252
++255
++251
++163
++139
++252
++0
++63
++251
++1
++52
++251
++230
++244
++251
++237
++229
++255
++248
++253
++255
++254
++255
++252
++255
++252
++251
++31
++58
++250
++0
++63
++251
++121
++164
++254
++113
++137
++251
++0
++63
++251
++26
++90
++253
++254
++255
++252
++254
++255
++252
++248
++253
++249
++178
++163
++255
++0
++63
++251
++26
++69
++251
++255
++252
++251
++254
++255
++252
++255
++252
++251
++255
++252
++251
++210
++185
++254
++0
++63
++251
++0
++58
++254
++254
++255
++252
++26
++69
++251
++31
++58
++250
++144
++180
++254
++254
++255
++252
++252
++250
++254
++163
++139
++252
++0
++63
++251
++0
++58
++254
++254
++255
++252
++186
++158
++253
++31
++58
++250
++50
++77
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++83
++87
++252
++0
++63
++251
++26
++69
++251
++146
++155
++253
++137
++146
++254
++137
++146
++254
++155
++151
++252
++0
++58
++254
++0
++63
++251
++113
++137
++251
++255
++252
++251
++33
++46
++250
++0
++63
++251
++170
++195
++252
++252
++255
++251
++255
++252
++251
++120
++113
++253
++26
++69
++251
++33
++46
++250
++227
++239
++254
++105
++113
++251
++31
++58
++250
++77
++122
++252
++252
++250
++254
++250
++226
++255
++31
++58
++250
++0
++63
++251
++26
++69
++251
++255
++252
++251
++252
++255
++251
++1
++52
++251
++31
++58
++250
++176
++178
++253
++255
++252
++251
++248
++253
++249
++64
++85
++253
++0
++63
++251
++1
++52
++251
++223
++230
++252
++255
++252
++251
++252
++250
++254
++186
++158
++253
++0
++63
++251
++0
++58
++254
++129
++161
++253
++255
++252
++251
++252
++250
++254
++139
++132
++253
++0
++63
++251
++0
++63
++251
++252
++250
++254
++255
++252
++251
++248
++253
++255
++74
++79
++250
++0
++63
++251
++0
++74
++252
++255
++252
++251
++0
++58
++254
++0
++58
++254
++206
++211
++254
++252
++250
++254
++254
++255
++252
++243
++245
++242
++252
++231
++254
++0
++58
++254
++1
++52
++251
++232
++233
++243
++248
++253
++249
++31
++58
++250
++26
++69
++251
++0
++74
++252
++248
++253
++255
++249
++242
++255
++232
++237
++253
++254
++255
++252
++254
++255
++252
++132
++122
++252
++0
++63
++251
++51
++102
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++252
++250
++254
++252
++250
++254
++201
++165
++255
++0
++63
++251
++31
++58
++250
++255
++252
++251
++197
++177
++253
++31
++58
++250
++0
++63
++251
++254
++255
++252
++254
++255
++252
++248
++253
++255
++194
++166
++255
++31
++58
++250
++0
++74
++252
++252
++250
++254
++172
++152
++253
++0
++58
++254
++0
++63
++251
++0
++58
++254
++105
++113
++251
++50
++77
++252
++0
++63
++251
++52
++67
++251
++129
++161
++253
++252
++255
++251
++52
++67
++251
++0
++63
++251
++0
++58
++254
++67
++107
++251
++65
++74
++252
++31
++58
++250
++52
++67
++251
++1
++52
++251
++248
++253
++249
++107
++98
++252
++0
++63
++251
++113
++137
++251
++107
++108
++252
++0
++63
++251
++0
++58
++254
++191
++191
++253
++186
++158
++253
++31
++58
++250
++0
++63
++251
++26
++90
++253
++64
++85
++253
++117
++152
++253
++197
++177
++253
++0
++63
++251
++0
++74
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++215
++182
++254
++0
++58
++254
++0
++58
++254
++252
++255
++251
++78
++97
++251
++52
++67
++251
++1
++52
++251
++113
++137
++251
++93
++105
++254
++0
++58
++254
++52
++67
++251
++1
++52
++251
++248
++253
++249
++181
++166
++251
++0
++63
++251
++1
++52
++251
++223
++230
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++252
++231
++254
++31
++58
++250
++0
++63
++251
++117
++152
++253
++255
++252
++251
++255
++252
++251
++243
++245
++242
++252
++255
++251
++105
++113
++251
++0
++63
++251
++0
++63
++251
++254
++255
++252
++1
++52
++251
++0
++58
++254
++168
++190
++254
++248
++253
++255
++255
++252
++251
++248
++253
++255
++0
++58
++254
++0
++63
++251
++51
++102
++253
++50
++77
++252
++0
++63
++251
++146
++172
++254
++252
++255
++251
++255
++252
++251
++83
++87
++252
++0
++63
++251
++129
++161
++253
++252
++250
++254
++254
++255
++252
++83
++87
++252
++0
++63
++251
++105
++154
++254
++252
++250
++254
++254
++255
++252
++186
++158
++253
++0
++63
++251
++39
++86
++253
++254
++255
++252
++252
++255
++251
++252
++255
++251
++255
++235
++252
++0
++58
++254
++1
++52
++251
++227
++239
++254
++254
++255
++252
++254
++255
++252
++255
++246
++253
++0
++46
++254
++0
++63
++251
++0
++63
++251
++113
++137
++251
++50
++77
++252
++52
++67
++251
++1
++52
++251
++170
++195
++252
++255
++252
++251
++1
++52
++251
++31
++58
++250
++206
++211
++254
++254
++255
++252
++248
++253
++255
++252
++255
++251
++252
++231
++254
++0
++58
++254
++1
++52
++251
++237
++229
++255
++252
++255
++251
++230
++202
++255
++1
++52
++251
++31
++58
++250
++105
++154
++254
++194
++166
++255
++1
++52
++251
++77
++122
++252
++113
++137
++251
++31
++58
++250
++0
++63
++251
++82
++136
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++186
++158
++253
++33
++46
++250
++0
++46
++254
++254
++255
++252
++201
++170
++252
++33
++46
++250
++0
++46
++254
++254
++255
++252
++254
++255
++252
++255
++252
++251
++201
++165
++255
++1
++52
++251
++31
++58
++250
++254
++255
++252
++252
++255
++251
++139
++132
++253
++1
++52
++251
++0
++63
++251
++1
++52
++251
++0
++58
++254
++31
++58
++250
++0
++46
++254
++105
++154
++254
++255
++252
++251
++223
++212
++252
++1
++52
++251
++0
++58
++254
++0
++58
++254
++1
++52
++251
++78
++97
++251
++1
++52
++251
++5
++39
++251
++241
++254
++255
++26
++69
++251
++1
++52
++251
++1
++52
++251
++0
++58
++254
++1
++52
++251
++94
++132
++253
++252
++255
++251
++254
++255
++252
++50
++77
++252
++1
++52
++251
++31
++58
++250
++1
++52
++251
++129
++161
++253
++168
++164
++253
++33
++46
++250
++31
++58
++250
++252
++250
++254
++254
++255
++252
++252
++250
++254
++254
++255
++252
++201
++170
++252
++1
++52
++251
++5
++39
++251
++241
++254
++255
++255
++240
++254
++0
++63
++251
++0
++58
++254
++0
++58
++254
++0
++46
++254
++77
++122
++252
++26
++69
++251
++0
++58
++254
++77
++122
++252
++241
++214
++253
++0
++46
++254
++0
++58
++254
++39
++86
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++249
++139
++132
++253
++33
++46
++250
++33
++46
++250
++227
++239
++254
++255
++252
++251
++255
++252
++251
++248
++253
++255
++255
++252
++251
++229
++192
++251
++33
++46
++250
++5
++39
++251
++151
++183
++252
++33
++46
++250
++33
++46
++250
++151
++183
++252
++255
++252
++251
++252
++250
++254
++255
++252
++251
++210
++185
++254
++33
++46
++250
++1
++52
++251
++1
++52
++251
++5
++39
++251
++196
++207
++254
++252
++250
++254
++248
++253
++255
++201
++170
++252
++32
++30
++249
++227
++239
++254
++254
++255
++252
++254
++255
++252
++120
++126
++252
++0
++46
++254
++26
++69
++251
++254
++255
++252
++252
++250
++254
++255
++235
++252
++5
++39
++251
++105
++154
++254
++254
++255
++252
++252
++250
++254
++248
++253
++255
++248
++253
++255
++74
++79
++250
++26
++69
++251
++252
++250
++254
++252
++250
++254
++248
++253
++255
++255
++252
++251
++250
++226
++255
++52
++67
++251
++1
++52
++251
++0
++58
++254
++1
++52
++251
++0
++58
++254
++155
++174
++251
++252
++250
++254
++255
++240
++254
++5
++39
++251
++0
++46
++254
++196
++207
++254
++254
++255
++252
++254
++255
++252
++248
++253
++255
++252
++231
++254
++5
++39
++251
++0
++46
++254
++214
++226
++253
++248
++253
++255
++254
++255
++252
++120
++113
++253
++1
++52
++251
++33
++46
++250
++25
++80
++252
++1
++52
++251
++33
++46
++250
++1
++52
++251
++1
++52
++251
++54
++95
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++245
++233
++253
++245
++233
++253
++248
++253
++255
++248
++253
++255
++245
++233
++253
++245
++233
++253
++254
++255
++252
++252
++250
++254
++248
++253
++255
++252
++250
++254
++237
++229
++255
++245
++233
++253
++255
++252
++251
++252
++255
++251
++254
++255
++252
++249
++242
++255
++211
++207
++253
++211
++207
++253
++243
++245
++242
++255
++246
++253
++245
++233
++253
++249
++242
++255
++255
++252
++251
++254
++255
++252
++254
++255
++252
++220
++206
++252
++211
++207
++253
++232
++233
++243
++252
++255
++251
++237
++229
++255
++245
++233
++253
++248
++253
++255
++255
++252
++251
++237
++229
++255
++220
++206
++252
++211
++207
++253
++234
++239
++242
++252
++250
++254
++248
++253
++255
++254
++255
++252
++254
++255
++252
++220
++206
++252
++220
++206
++252
++223
++212
++252
++249
++242
++255
++252
++250
++254
++237
++229
++255
++239
++236
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++242
++226
++254
++237
++229
++255
++252
++255
++251
++254
++255
++252
++254
++255
++252
++223
++212
++252
++211
++207
++253
++245
++233
++253
++248
++253
++255
++255
++246
++253
++211
++207
++253
++240
++235
++233
++254
++255
++252
++242
++226
++254
++211
++207
++253
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++252
++250
++254
++239
++236
++254
++242
++226
++254
++237
++229
++255
++252
++255
++251
++248
++253
++255
++254
++255
++252
++252
++250
++254
++248
++253
++255
++252
++255
++251
++245
++233
++253
++242
++226
++254
++249
++242
++255
++245
++233
++253
++242
++226
++254
++252
++250
++254
++254
++255
++252
++255
++252
++251
++252
++255
++251
++248
++253
++249
++252
++231
++254
++245
++233
++253
++245
++233
++253
++237
++229
++255
++254
++255
++252
++255
++252
++251
++248
++253
++255
++248
++253
++249
++211
++207
++253
++252
++250
++254
++248
++253
++255
++254
++255
++252
++249
++242
++255
++237
++229
++255
++239
++236
++254
++254
++255
++252
++255
++252
++251
++252
++255
++251
++220
++206
++252
++252
++250
++254
++254
++255
++252
++255
++252
++251
++254
++255
++252
++252
++255
++251
++237
++229
++255
++237
++229
++255
++254
++255
++252
++255
++252
++251
++252
++250
++254
++248
++253
++255
++252
++255
++251
++252
++255
++251
++234
++219
++253
++211
++207
++253
++223
++212
++252
++243
++245
++242
++254
++255
++252
++252
++255
++251
++252
++255
++251
++245
++233
++253
++237
++229
++255
++248
++253
++255
++252
++250
++254
++255
++252
++251
++248
++253
++255
++248
++253
++249
++242
++226
++254
++237
++229
++255
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++237
++229
++255
++245
++233
++253
++255
++252
++251
++249
++242
++255
++220
++206
++252
++211
++207
++253
++239
++236
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++255
++252
++251
++252
++250
++254
++252
++255
++251
++252
++255
++251
++252
++250
++254
++252
++250
++254
++248
++253
++255
++252
++250
++254
++254
++255
++252
++255
++252
++251
++248
++253
++255
++255
++252
++251
++248
++253
++255
++252
++250
++254
++252
++250
++254
++255
++252
++251
++255
++252
++251
++254
++255
++252
++255
++252
++251
++254
++255
++252
++252
++255
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++255
++252
++251
++248
++253
++255
++255
++252
++251
++248
++253
++255
++255
++252
++251
++248
++253
++255
++255
++252
++251
++252
++255
++251
++255
++252
++251
++252
++250
++254
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++248
++253
++255
++252
++255
++251
++248
++253
++255
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++252
++250
++254
++252
++255
++251
++248
++253
++249
++255
++252
++251
++255
++252
++251
++248
++253
++255
++255
++252
++251
++252
++250
++254
++248
++253
++255
++252
++250
++254
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++252
++255
++251
++254
++255
++252
++252
++250
++254
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++248
++253
++255
++254
++255
++252
++252
++255
++251
++248
++253
++255
++254
++255
++252
++248
++253
++255
++248
++253
++255
++248
++253
++255
++252
++250
++254
++252
++250
++254
++248
++253
++255
++248
++253
++255
++248
++253
++255
++255
++252
++251
++248
++253
++255
++255
++252
++251
++254
++255
++252
++252
++250
++254
++252
++250
++254
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++255
++252
++251
++255
++252
++251
++248
++253
++255
++248
++253
++255
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++248
++253
++255
++248
++253
++255
++252
++255
++251
++252
++255
++251
++248
++253
++255
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++252
++250
++254
++255
++252
++251
++248
++253
++249
++252
++255
++251
++248
++253
++255
++255
++252
++251
++252
++250
++254
++252
++250
++254
++248
++253
++249
++248
++253
++255
++255
++252
++251
++255
++252
++251
++254
++255
++252
++255
++252
++251
++255
++252
++251
++255
++252
++251
++252
++255
++251
++255
++252
++251
++254
++255
++252
++254
++255
++252
++252
++250
++254
++248
++253
++255
++254
++255
++252
++248
++253
++255
++254
++255
++252
++252
++255
++251
++252
++255
++251
++255
++252
++251
++252
++250
++254
++252
++255
++251
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++255
++252
++251
++254
++255
++252
++248
++253
++255
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++252
++251
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++252
++250
++254
++254
++255
++252
++252
++250
++254
++252
++250
++254
++255
++252
++251
++254
++255
++252
++252
++250
++254
++252
++250
++254
++254
++255
++252
++255
++252
++251
++255
++252
++251
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++252
++250
++254
++252
++250
++254
++248
++253
++255
++230
++227
++225
++248
++253
++255
++234
++239
++242
++201
++189
++179
++238
++247
++255
++255
++252
++251
++254
++255
++252
++207
++202
++200
++252
++250
++254
++252
++250
++254
++254
++255
++252
++230
++227
++225
++219
++225
++231
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++252
++250
++254
++250
++242
++234
++182
++177
++176
++248
++253
++255
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++252
++250
++254
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++252
++250
++254
++255
++252
++251
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++243
++245
++242
++234
++239
++242
++255
++252
++251
++255
++252
++251
++254
++255
++252
++252
++250
++254
++254
++255
++252
++248
++253
++255
++255
++252
++251
++255
++252
++251
++254
++255
++252
++234
++226
++218
++211
++217
++219
++254
++255
++252
++255
++252
++251
++255
++252
++251
++254
++255
++252
++255
++252
++251
++243
++245
++242
++254
++255
++252
++254
++255
++252
++240
++235
++233
++230
++227
++225
++234
++239
++242
++248
++253
++255
++254
++255
++252
++254
++255
++252
++250
++242
++234
++205
++213
++222
++255
++252
++251
++252
++250
++254
++254
++255
++252
++248
++253
++255
++254
++255
++252
++223
++214
++206
++234
++239
++242
++252
++250
++254
++197
++193
++191
++254
++255
++252
++252
++250
++254
++248
++253
++255
++254
++255
++252
++210
++205
++197
++248
++253
++255
++255
++252
++251
++232
++233
++243
++243
++245
++242
++252
++250
++254
++252
++255
++251
++254
++255
++252
++255
++252
++251
++252
++250
++254
++255
++252
++251
++250
++242
++234
++205
++213
++222
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++248
++253
++255
++252
++250
++254
++252
++250
++254
++252
++250
++254
++254
++255
++252
++255
++252
++251
++255
++252
++251
++255
++252
++251
++252
++250
++254
++252
++250
++254
++252
++250
++254
++248
++253
++255
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++248
++253
++255
++252
++250
++254
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++101
++81
++79
++254
++255
++252
++93
++90
++106
++223
++214
++206
++248
++253
++255
++182
++177
++176
++234
++239
++242
++133
++131
++123
++191
++195
++199
++248
++253
++255
++248
++253
++255
++114
++98
++88
++133
++131
++123
++133
++153
++169
++223
++214
++206
++205
++213
++222
++250
++242
++234
++211
++217
++219
++127
++119
++113
++168
++191
++209
++223
++214
++206
++191
++206
++219
++250
++242
++234
++217
++211
++210
++219
++225
++231
++191
++195
++199
++234
++226
++218
++205
++213
++222
++234
++226
++218
++191
++195
++199
++254
++255
++252
++217
++211
++210
++191
++195
++199
++254
++255
++252
++197
++193
++191
++205
++213
++222
++223
++214
++206
++197
++217
++223
++254
++255
++252
++218
++199
++188
++133
++153
++169
++254
++255
++252
++223
++214
++206
++191
++206
++219
++234
++226
++218
++248
++253
++255
++219
++225
++231
++230
++227
++225
++248
++253
++255
++233
++220
++201
++71
++78
++85
++135
++121
++116
++230
++244
++251
++182
++177
++176
++238
++247
++255
++234
++226
++218
++200
++207
++211
++99
++93
++91
++191
++206
++219
++254
++255
++252
++131
++111
++91
++110
++114
++118
++211
++217
++219
++217
++211
++210
++200
++207
++211
++207
++202
++200
++253
++243
++227
++109
++128
++145
++191
++195
++199
++254
++255
++252
++197
++193
++191
++238
++247
++255
++233
++220
++201
++127
++119
++113
++214
++226
++253
++210
++205
++197
++83
++94
++106
++254
++255
++252
++191
++195
++199
++248
++253
++255
++223
++214
++206
++116
++95
++90
++219
++245
++255
++241
++216
++191
++103
++132
++168
++233
++200
++174
++127
++173
++205
++218
++199
++188
++205
++213
++222
++250
++242
++234
++211
++217
++219
++243
++245
++242
++165
++156
++151
++144
++145
++154
++219
++225
++231
++234
++226
++218
++255
++252
++251
++211
++217
++219
++201
++189
++179
++219
++225
++231
++250
++242
++234
++211
++217
++219
++243
++245
++242
++191
++195
++199
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++128
++106
++98
++136
++138
++135
++116
++128
++152
++175
++164
++146
++140
++125
++114
++191
++206
++219
++114
++126
++132
++152
++151
++143
++190
++169
++150
++144
++172
++189
++252
++250
++254
++143
++119
++115
++136
++138
++135
++163
++169
++165
++99
++101
++107
++110
++114
++118
++175
++164
++146
++149
++165
++177
++135
++121
++116
++201
++189
++179
++123
++140
++148
++159
++140
++125
++158
++152
++139
++133
++153
++169
++168
++130
++120
++182
++180
++166
++116
++128
++152
++122
++122
++119
++210
++205
++197
++114
++111
++108
++166
++173
++180
++136
++125
++125
++117
++106
++105
++174
++167
++156
++149
++165
++177
++201
++189
++179
++99
++101
++107
++99
++101
++107
++241
++254
++255
++218
++199
++188
++144
++172
++189
++253
++243
++227
++104
++107
++127
++165
++156
++151
++152
++151
++143
++144
++145
++154
++83
++94
++106
++114
++111
++108
++252
++250
++254
++189
++172
++142
++171
++197
++224
++248
++253
++255
++157
++123
++106
++197
++217
++223
++114
++111
++108
++117
++106
++105
++166
++173
++180
++114
++111
++108
++219
++225
++231
++248
++253
++255
++140
++125
++114
++142
++155
++162
++240
++235
++233
++119
++121
++124
++114
++111
++108
++175
++164
++146
++149
++165
++177
++142
++155
++162
++158
++152
++139
++135
++121
++116
++123
++140
++148
++133
++131
++123
++96
++109
++136
++152
++151
++143
++174
++167
++156
++135
++154
++178
++122
++124
++136
++146
++125
++108
++152
++151
++143
++122
++124
++136
++130
++146
++146
++146
++125
++108
++232
++249
++255
++253
++243
++227
++86
++88
++91
++117
++106
++105
++171
++197
++224
++174
++167
++156
++86
++88
++91
++182
++180
++166
++135
++154
++178
++117
++106
++105
++210
++205
++197
++152
++156
++171
++122
++122
++119
++116
++95
++90
++149
++143
++139
++167
++182
++195
++149
++143
++139
++96
++107
++119
++165
++156
++151
++167
++182
++195
++101
++81
++79
++133
++131
++123
++176
++200
++211
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++114
++98
++88
++254
++255
++252
++104
++107
++127
++175
++164
++146
++210
++205
++197
++119
++121
++124
++114
++126
++132
++136
++138
++135
++233
++220
++201
++128
++158
++189
++248
++253
++255
++99
++93
++91
++248
++253
++255
++248
++253
++255
++117
++106
++105
++142
++155
++162
++174
++157
++146
++204
++224
++243
++146
++125
++108
++227
++239
++254
++110
++114
++118
++110
++114
++118
++190
++169
++150
++204
++224
++243
++168
++130
++120
++230
++228
++206
++128
++158
++189
++158
++152
++139
++140
++125
++114
++133
++131
++123
++167
++182
++195
++144
++145
++154
++162
++139
++130
++217
++211
++210
++122
++124
++136
++142
++155
++162
++135
++121
++116
++143
++146
++145
++248
++253
++255
++223
++214
++206
++86
++88
++91
++123
++140
++148
++136
++125
++125
++99
++101
++107
++248
++253
++249
++83
++74
++80
++216
++201
++179
++103
++132
++168
++254
++255
++252
++250
++242
++234
++99
++93
++91
++119
++121
++124
++201
++189
++179
++110
++114
++118
++142
++155
++162
++165
++156
++151
++96
++107
++119
++158
++152
++139
++135
++154
++178
++254
++255
++252
++146
++125
++108
++119
++121
++124
++211
++217
++219
++142
++155
++162
++136
++125
++125
++230
++228
++206
++144
++172
++189
++110
++114
++118
++96
++107
++119
++216
++201
++179
++122
++124
++136
++182
++177
++176
++122
++122
++119
++99
++93
++91
++217
++211
++210
++99
++101
++107
++96
++107
++119
++201
++189
++179
++130
++146
++146
++166
++173
++180
++127
++119
++113
++99
++93
++91
++219
++245
++255
++250
++233
++208
++103
++132
++168
++233
++200
++174
++144
++172
++189
++99
++101
++107
++110
++114
++118
++190
++169
++150
++195
++216
++245
++175
++152
++137
++114
++111
++108
++144
++172
++189
++174
++139
++122
++176
++200
++211
++83
++74
++80
++230
++228
++206
++96
++107
++119
++110
++114
++118
++165
++156
++151
++230
++244
++251
++159
++140
++125
++144
++145
++154
++200
++207
++211
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++255
++252
++251
++255
++252
++251
++254
++255
++252
++234
++226
++218
++136
++125
++125
++176
++200
++211
++252
++250
++254
++248
++253
++255
++254
++255
++252
++252
++250
++254
++255
++252
++251
++255
++252
++251
++248
++253
++255
++255
++252
++251
++248
++253
++255
++248
++253
++255
++255
++252
++251
++254
++255
++252
++255
++252
++251
++248
++253
++255
++248
++253
++255
++254
++255
++252
++248
++253
++255
++248
++253
++255
++252
++250
++254
++248
++253
++255
++254
++255
++252
++252
++250
++254
++254
++255
++252
++252
++250
++254
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++252
++250
++254
++254
++255
++252
++255
++252
++251
++255
++252
++251
++255
++252
++251
++248
++253
++255
++254
++255
++252
++248
++253
++255
++248
++253
++255
++248
++253
++255
++252
++255
++251
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++255
++252
++251
++248
++253
++255
++252
++250
++254
++252
++250
++254
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++254
++255
++252
++255
++252
++251
++252
++250
++254
++248
++253
++255
++248
++253
++255
++255
++252
++251
++248
++253
++255
++248
++253
++255
++255
++252
++251
++252
++250
++254
++255
++252
++251
++255
++252
++251
++248
++253
++255
++254
++255
++252
++248
++253
++255
++255
++252
++251
++255
++252
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++255
++252
++251
++255
++252
++251
++248
++253
++255
++254
++255
++252
++248
++253
++255
++248
++253
++255
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++252
++251
++252
++250
++254
++252
++250
++254
++248
++253
++255
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++248
++253
++255
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++248
++253
++255
++248
++253
++255
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++255
++252
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++252
++255
++251
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++255
++252
++251
++255
++252
++251
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++255
++252
++251
++255
++252
++251
++255
++252
++251
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++255
++252
++251
++252
++250
++254
++255
++252
++251
++254
++255
++252
++252
++255
++251
++254
++255
++252
++255
++252
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++248
++253
++255
++254
++255
++252
++255
++252
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++248
++253
++255
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++252
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++248
++253
++255
++254
++255
++252
++248
++253
++255
++254
++255
++252
++255
++252
++251
++252
++250
++254
++254
++255
++252
++254
++255
++252
++248
++253
++255
++255
++252
++251
++254
++255
++252
++252
++250
++254
++252
++250
++254
++255
++252
++251
++254
++255
++252
++254
++255
++252
++248
++253
++255
++255
++252
++251
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++248
++253
++255
++255
++252
++251
++254
++255
++252
++252
++250
++254
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++255
++252
++251
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++255
++252
++251
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++252
++250
++254
++248
++253
++255
++252
++250
++254
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++252
++250
++254
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
++254
++255
++252
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0004-920T-Use-specific-920t-mtune.patch b/recipes/linux/linux-2.6.29/micro2440/0004-920T-Use-specific-920t-mtune.patch
new file mode 100644
index 0000000000..d6e2b4ddd5
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0004-920T-Use-specific-920t-mtune.patch
@@ -0,0 +1,28 @@
+From 95c835a4a2d6ff9c8073136d7673ddc3eba45dfa Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Sat, 14 Mar 2009 10:35:26 +0000
+Subject: [PATCH] 920T: Use specific 920t mtune=
+
+Modern toolchains have an option for it, lets use it ?
+
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ arch/arm/Makefile | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/Makefile b/arch/arm/Makefile
+index 24e0f01..f47f9c9 100644
+--- a/arch/arm/Makefile
++++ b/arch/arm/Makefile
+@@ -68,7 +68,7 @@ tune-$(CONFIG_CPU_ARM740T) :=-mtune=arm7tdmi
+ tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
+-tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
++tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm920t
+ tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
+ tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch b/recipes/linux/linux-2.6.29/micro2440/0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch
new file mode 100644
index 0000000000..6b8aaf4445
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch
@@ -0,0 +1,49 @@
+From a4cba996cb77da4afc26c35402a70c3f008afe96 Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Sat, 14 Mar 2009 10:34:32 +0000
+Subject: [PATCH] 920T: Temp(?) fix for the 40 relocation binutils problem
+
+This prevents the modules failing to load when made
+with modern toolchains. There is no way to prevent binutils
+to generate these relocations, and on the 920t they are
+in fact not needed. So this patch just skip them.
+
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ arch/arm/include/asm/elf.h | 1 +
+ arch/arm/kernel/module.c | 7 +++++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
+index a58378c..ce3b36e 100644
+--- a/arch/arm/include/asm/elf.h
++++ b/arch/arm/include/asm/elf.h
+@@ -50,6 +50,7 @@ typedef struct user_fp elf_fpregset_t;
+ #define R_ARM_ABS32 2
+ #define R_ARM_CALL 28
+ #define R_ARM_JUMP24 29
++#define R_ARM_V4BX 40
+
+ /*
+ * These are used to set parameters in the core dumps.
+diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
+index dab48f2..fa03392 100644
+--- a/arch/arm/kernel/module.c
++++ b/arch/arm/kernel/module.c
+@@ -132,6 +132,13 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
+ *(u32 *)loc |= offset & 0x00ffffff;
+ break;
+
++#ifdef CONFIG_CPU_ARM920T
++ /* modern toolchain generate V4BX for the modules, and there is no
++ * way to skip them being generated in the .ko, so in our case, we just
++ * can ignore them */
++ case R_ARM_V4BX: /* Ignore these sections */
++ break;
++#endif
+ default:
+ printk(KERN_ERR "%s: unknown relocation: %u\n",
+ module->name, ELF32_R_TYPE(rel->r_info));
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0006-S3C-Allow-the-machine-code-to-get-the-BBT-table-fro.patch b/recipes/linux/linux-2.6.29/micro2440/0006-S3C-Allow-the-machine-code-to-get-the-BBT-table-fro.patch
new file mode 100644
index 0000000000..f5064622a5
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0006-S3C-Allow-the-machine-code-to-get-the-BBT-table-fro.patch
@@ -0,0 +1,49 @@
+From be7844e174757ecc8aae7eb0411a7a8801da3aa8 Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Fri, 13 Mar 2009 18:16:48 +0000
+Subject: [PATCH] S3C: Allow the machine code to get the BBT table from NAND
+
+Added a flag to allow the machine code to tell the NAND
+subsystem that it should try to pickup a BBT from the flash,
+and also skip the NAND full scan at startup.
+---
+ arch/arm/plat-s3c/include/plat/nand.h | 4 +++-
+ drivers/mtd/nand/s3c2410.c | 7 +++++++
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/plat-s3c/include/plat/nand.h b/arch/arm/plat-s3c/include/plat/nand.h
+index f4dcd14..0bcd5d0 100644
+--- a/arch/arm/plat-s3c/include/plat/nand.h
++++ b/arch/arm/plat-s3c/include/plat/nand.h
+@@ -22,7 +22,9 @@
+ */
+
+ struct s3c2410_nand_set {
+- unsigned int disable_ecc : 1;
++ unsigned int disable_ecc : 1,
++ /* openmoko u-boot can create BBT */
++ flash_bbt : 1;
+
+ int nr_chips;
+ int nr_partitions;
+diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
+index 8e375d5..f813ca9 100644
+--- a/drivers/mtd/nand/s3c2410.c
++++ b/drivers/mtd/nand/s3c2410.c
+@@ -757,6 +757,13 @@ static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info,
+
+ if (set->disable_ecc)
+ chip->ecc.mode = NAND_ECC_NONE;
++
++ /* If you use u-boot BBT creation code, specifying this flag will
++ * let the kernel fish out the BBT from the NAND, and also skip the
++ * full NAND scan that can take 1/2s or so. Little things... */
++ if (set->flash_bbt)
++ chip->options |= NAND_USE_FLASH_BBT|NAND_SKIP_BBTSCAN;
++
+ }
+
+ /* s3c2410_nand_update_chip
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0007-MINI2440-Add-machine-support.patch b/recipes/linux/linux-2.6.29/micro2440/0007-MINI2440-Add-machine-support.patch
new file mode 100644
index 0000000000..fd803dd405
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0007-MINI2440-Add-machine-support.patch
@@ -0,0 +1,793 @@
+From df4ff90ba57c3a4d2c52e9cb6fb808f682b0a87c Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Wed, 25 Mar 2009 17:19:14 +0000
+Subject: [PATCH] MINI2440: Add machine support
+
+The MINI2440 is a chinese made s3c2440 develpment board with
+a large set of peripherals.
+This patch provides machine support for almost all the features
+of the board.
+
+Since it can come with various "options" fitted, a kernel parameter
+is used to specify the lcd size, backlight control and touchscreen.
+
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ arch/arm/mach-s3c2440/Kconfig | 10 +
+ arch/arm/mach-s3c2440/Makefile | 1 +
+ arch/arm/mach-s3c2440/mach-mini2440.c | 734 +++++++++++++++++++++++++++++++++
+ 3 files changed, 745 insertions(+), 0 deletions(-)
+ create mode 100644 arch/arm/mach-s3c2440/mach-mini2440.c
+
+diff --git a/arch/arm/mach-s3c2440/Kconfig b/arch/arm/mach-s3c2440/Kconfig
+index cde5ae9..7953c22 100644
+--- a/arch/arm/mach-s3c2440/Kconfig
++++ b/arch/arm/mach-s3c2440/Kconfig
+@@ -79,5 +79,15 @@ config MACH_AT2440EVB
+ help
+ Say Y here if you are using the AT2440EVB development board
+
++config MACH_MINI2440
++ bool "MINI2440 development board"
++ select CPU_S3C2440
++ select EEPROM_AT24
++ select BACKLIGHT_PWM
++ select SND_S3C24XX_SOC_S3C24XX_UDA134X
++ help
++ Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
++ available via various sources. It can come with a 3.5" or 7" touch LCD.
++
+ endmenu
+
+diff --git a/arch/arm/mach-s3c2440/Makefile b/arch/arm/mach-s3c2440/Makefile
+index 0b4440e..bfadcf6 100644
+--- a/arch/arm/mach-s3c2440/Makefile
++++ b/arch/arm/mach-s3c2440/Makefile
+@@ -22,3 +22,4 @@ obj-$(CONFIG_MACH_RX3715) += mach-rx3715.o
+ obj-$(CONFIG_ARCH_S3C2440) += mach-smdk2440.o
+ obj-$(CONFIG_MACH_NEXCODER_2440) += mach-nexcoder.o
+ obj-$(CONFIG_MACH_AT2440EVB) += mach-at2440evb.o
++obj-$(CONFIG_MACH_MINI2440) += mach-mini2440.o
+diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c
+new file mode 100644
+index 0000000..0cddb11
+--- /dev/null
++++ b/arch/arm/mach-s3c2440/mach-mini2440.c
+@@ -0,0 +1,734 @@
++/* linux/arch/arm/mach-s3c2440/mach-mini2440.c
++ *
++ * Copyright (c) 2008 Ramax Lo <ramaxlo@gmail.com>
++ * Based on mach-anubis.c by Ben Dooks <ben@simtec.co.uk>
++ * and modifications by SBZ <sbz@spgui.org> and
++ * Weibing <http://weibing.blogbus.com>
++ * Michel Pollet <buserror@gmail.com>
++ *
++ * For product information, visit http://code.google.com/p/mini2440/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++*/
++
++#include <linux/kernel.h>
++#include <linux/types.h>
++#include <linux/interrupt.h>
++#include <linux/list.h>
++#include <linux/timer.h>
++#include <linux/init.h>
++#include <linux/input.h>
++#include <linux/io.h>
++#include <linux/serial_core.h>
++#include <linux/dm9000.h>
++#include <linux/i2c/at24.h>
++#include <linux/platform_device.h>
++#include <linux/gpio_keys.h>
++#include <linux/i2c.h>
++#include <linux/mmc/host.h>
++#include <linux/pwm_backlight.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++
++#include <mach/hardware.h>
++#include <mach/fb.h>
++#include <asm/mach-types.h>
++
++#include <plat/regs-serial.h>
++#include <mach/regs-gpio.h>
++#include <mach/leds-gpio.h>
++#include <mach/regs-mem.h>
++#include <mach/regs-lcd.h>
++#include <mach/irqs.h>
++#include <plat/nand.h>
++#include <plat/iic.h>
++#include <plat/mci.h>
++#include <plat/udc.h>
++
++#include <plat/regs-serial.h>
++#include <mach/regs-gpio.h>
++#include <mach/regs-mem.h>
++#include <mach/regs-lcd.h>
++
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/nand_ecc.h>
++#include <linux/mtd/partitions.h>
++
++#include <plat/clock.h>
++#include <plat/devs.h>
++#include <plat/cpu.h>
++
++#include <sound/s3c24xx_uda134x.h>
++
++#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
++
++static struct map_desc mini2440_iodesc[] __initdata = {
++ /* nothing to declare, move along */
++};
++
++#define UCON S3C2410_UCON_DEFAULT
++#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
++#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
++
++
++static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = {
++ [0] = {
++ .hwport = 0,
++ .flags = 0,
++ .ucon = UCON,
++ .ulcon = ULCON,
++ .ufcon = UFCON,
++ },
++ [1] = {
++ .hwport = 1,
++ .flags = 0,
++ .ucon = UCON,
++ .ulcon = ULCON,
++ .ufcon = UFCON,
++ },
++ [2] = {
++ .hwport = 2,
++ .flags = 0,
++ .ucon = UCON,
++ .ulcon = ULCON,
++ .ufcon = UFCON,
++ },
++};
++
++/* USB device UDC support */
++
++static void mini2440_udc_pullup(enum s3c2410_udc_cmd_e cmd)
++{
++ printk(KERN_DEBUG "udc: pullup(%d)\n",cmd);
++
++ switch (cmd) {
++ case S3C2410_UDC_P_ENABLE :
++ s3c2410_gpio_setpin(S3C2410_GPC5, 1);
++ break;
++ case S3C2410_UDC_P_DISABLE :
++ s3c2410_gpio_setpin(S3C2410_GPC5, 0);
++ break;
++ case S3C2410_UDC_P_RESET :
++ break;
++ default:
++ break;
++ }
++}
++
++static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = {
++ .udc_command = mini2440_udc_pullup,
++};
++
++
++/* LCD timing and setup */
++
++/*
++ * This macro simplifies the table bellow
++ */
++#define _LCD_DECLARE(_xres,margin_left,margin_right,hsync, \
++ _yres,margin_top,margin_bottom,vsync, refresh) \
++ .width = _xres, \
++ .xres = _xres, \
++ .height = _yres, \
++ .yres = _yres, \
++ .left_margin = margin_left, \
++ .right_margin = margin_right, \
++ .upper_margin = margin_top, \
++ .lower_margin = margin_bottom, \
++ .hsync_len = hsync, \
++ .vsync_len = vsync, \
++ .pixclock = (1000000000000LL / \
++ ((refresh) * \
++ (hsync + margin_left + _xres + margin_right) * \
++ (vsync + margin_top + _yres + margin_bottom))), \
++ .bpp = 16,\
++ .type = (S3C2410_LCDCON1_TFT16BPP |\
++ S3C2410_LCDCON1_TFT),
++
++struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = {
++ [0] = { // mini2440 + 3.5" TFT + touchscreen
++ _LCD_DECLARE(
++ 240, 21, 38, 6, /* x timing */
++ 320, 2, 6, 2, /* y timing */
++ 60) /* refresh rate */
++ .lcdcon5 = (S3C2410_LCDCON5_FRM565 |\
++ S3C2410_LCDCON5_INVVLINE |\
++ S3C2410_LCDCON5_INVVFRAME |\
++ S3C2410_LCDCON5_INVVDEN |\
++ S3C2410_LCDCON5_PWREN),
++ },
++ [1] = { // mini2440 + 7" TFT + touchscreen
++ _LCD_DECLARE(
++ 800, 40, 40, 48, /* x timing */
++ 480, 29, 3, 3, /* y timing */
++ 50) /* refresh rate */
++ .lcdcon5 = (S3C2410_LCDCON5_FRM565 |\
++ S3C2410_LCDCON5_INVVLINE |\
++ S3C2410_LCDCON5_INVVFRAME |\
++ S3C2410_LCDCON5_PWREN),
++ },
++ /* VGA all share the timings
++ * NOTE: The VGA board seems to always output at 1024x768
++ * unless you add the dip-switch block. The smaller resolution
++ * WILL work, but be displayed in the top/left corner on the VGA screen
++ */
++ [2] = {
++ _LCD_DECLARE(
++ 1024, 1, 2, 2, /* y timing */
++ 768, 200, 16, 16, /* x timing */
++ 24) /* refresh rate, maximum stable,
++ tested with the FPGA shield */
++ .lcdcon5 = (S3C2410_LCDCON5_FRM565 |\
++ S3C2410_LCDCON5_HWSWP),
++ },
++};
++
++/* todo - put into gpio header */
++
++#define S3C2410_GPCCON_MASK(x) (3 << ((x) * 2))
++#define S3C2410_GPDCON_MASK(x) (3 << ((x) * 2))
++
++struct s3c2410fb_mach_info mini2440_fb_info __initdata = {
++ .displays = &mini2440_lcd_cfg[0], /* not constant! see init */
++ .num_displays = 1,
++ .default_display = 0,
++
++ /* Enable VD[2..7], VD[10..15], VD[18..23] and VCLK, syncs, VDEN
++ * and disable the pull down resistors on pins we are using for LCD
++ * data. */
++
++ .gpcup = (0xf << 1) | (0x3f << 10),
++
++ .gpccon = (S3C2410_GPC1_VCLK | S3C2410_GPC2_VLINE |
++ S3C2410_GPC3_VFRAME | S3C2410_GPC4_VM |
++ S3C2410_GPC10_VD2 | S3C2410_GPC11_VD3 |
++ S3C2410_GPC12_VD4 | S3C2410_GPC13_VD5 |
++ S3C2410_GPC14_VD6 | S3C2410_GPC15_VD7),
++
++ .gpccon_mask = (S3C2410_GPCCON_MASK(1) | S3C2410_GPCCON_MASK(2) |
++ S3C2410_GPCCON_MASK(3) | S3C2410_GPCCON_MASK(4) |
++ S3C2410_GPCCON_MASK(10) | S3C2410_GPCCON_MASK(11) |
++ S3C2410_GPCCON_MASK(12) | S3C2410_GPCCON_MASK(13) |
++ S3C2410_GPCCON_MASK(14) | S3C2410_GPCCON_MASK(15)),
++
++ .gpdup = (0x3f << 2) | (0x3f << 10),
++
++ .gpdcon = (S3C2410_GPD2_VD10 | S3C2410_GPD3_VD11 |
++ S3C2410_GPD4_VD12 | S3C2410_GPD5_VD13 |
++ S3C2410_GPD6_VD14 | S3C2410_GPD7_VD15 |
++ S3C2410_GPD10_VD18 | S3C2410_GPD11_VD19 |
++ S3C2410_GPD12_VD20 | S3C2410_GPD13_VD21 |
++ S3C2410_GPD14_VD22 | S3C2410_GPD15_VD23),
++
++ .gpdcon_mask = (S3C2410_GPDCON_MASK(2) | S3C2410_GPDCON_MASK(3) |
++ S3C2410_GPDCON_MASK(4) | S3C2410_GPDCON_MASK(5) |
++ S3C2410_GPDCON_MASK(6) | S3C2410_GPDCON_MASK(7) |
++ S3C2410_GPDCON_MASK(10) | S3C2410_GPDCON_MASK(11)|
++ S3C2410_GPDCON_MASK(12) | S3C2410_GPDCON_MASK(13)|
++ S3C2410_GPDCON_MASK(14) | S3C2410_GPDCON_MASK(15)),
++};
++
++/* MMC/SD */
++
++static struct s3c24xx_mci_pdata mini2440_mmc_cfg __initdata = {
++ .gpio_detect = S3C2410_GPG8,
++ .gpio_wprotect = S3C2410_GPH8,
++ .set_power = NULL,
++ .ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34,
++};
++
++/* NAND Flash on MINI2440 board */
++
++static struct mtd_partition mini2440_default_nand_part[] __initdata = {
++ [0] = {
++ .name = "u-boot",
++ .size = SZ_256K,
++ .offset = 0,
++ },
++ [1] = {
++ .name = "u-boot-env",
++ .size = SZ_128K,
++ .offset = SZ_256K,
++ },
++ [2] = {
++ .name = "kernel",
++ /* 5 megabytes, for a kernel with no modules
++ * or a uImage with a ramdisk attached */
++ .size = 0x00500000,
++ .offset = SZ_256K + SZ_128K,
++ },
++ [3] = {
++ .name = "root",
++ .offset = SZ_256K + SZ_128K + 0x00500000,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct s3c2410_nand_set mini2440_nand_sets[] __initdata = {
++ [0] = {
++ .name = "nand",
++ .nr_chips = 1,
++ .nr_partitions = ARRAY_SIZE(mini2440_default_nand_part),
++ .partitions = mini2440_default_nand_part,
++ .flash_bbt = 1, /* we use u-boot to create a BBT */
++ },
++};
++
++static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
++ .tacls = 0,
++ .twrph0 = 25,
++ .twrph1 = 15,
++ .nr_sets = ARRAY_SIZE(mini2440_nand_sets),
++ .sets = mini2440_nand_sets,
++ .ignore_unset_ecc = 1,
++};
++
++/* DM9000AEP 10/100 ethernet controller */
++
++static struct resource mini2440_dm9k_resource[] __initdata = {
++ [0] = {
++ .start = MACH_MINI2440_DM9K_BASE,
++ .end = MACH_MINI2440_DM9K_BASE + 3,
++ .flags = IORESOURCE_MEM
++ },
++ [1] = {
++ .start = MACH_MINI2440_DM9K_BASE + 4,
++ .end = MACH_MINI2440_DM9K_BASE + 7,
++ .flags = IORESOURCE_MEM
++ },
++ [2] = {
++ .start = IRQ_EINT7,
++ .end = IRQ_EINT7,
++ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
++ }
++};
++
++static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = {
++ .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
++};
++
++static struct platform_device mini2440_device_eth __initdata = {
++ .name = "dm9000",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(mini2440_dm9k_resource),
++ .resource = mini2440_dm9k_resource,
++ .dev = {
++ .platform_data = &mini2440_dm9k_pdata,
++ },
++};
++
++/* backlight */
++
++static int mini2440_backlight_init(struct device *dev)
++{
++ return 0;
++}
++/*
++ * Cut the power to the LCD if brightness reaches 0
++ */
++static int mini2440_backlight_notify(int brightness)
++{
++ if (brightness) {
++ s3c2410_gpio_setpin(S3C2410_GPB1, 1);
++ s3c2410_gpio_cfgpin(S3C2410_GPB1, S3C2410_GPB1_TOUT1);
++ s3c2410_gpio_setpin(S3C2410_GPG4, 1);
++ s3c2410_gpio_cfgpin(S3C2410_GPG4, S3C2410_GPG4_LCDPWREN);
++ } else {
++ s3c2410_gpio_setpin(S3C2410_GPB1, 0);
++ s3c2410_gpio_cfgpin(S3C2410_GPB1, S3C2410_GPB1_OUTP);
++ s3c2410_gpio_setpin(S3C2410_GPG4, 0);
++ s3c2410_gpio_cfgpin(S3C2410_GPG4, S3C2410_GPG4_OUTP);
++ }
++ return brightness;
++}
++
++static struct platform_pwm_backlight_data mini2440_backlight_data __initdata = {
++ .pwm_id = 1,
++ .max_brightness = 1023,
++ .dft_brightness = 900,
++ .pwm_period_ns = 4000000, /* Fl = 250Hz PWM */
++ .init = mini2440_backlight_init,
++ .notify = mini2440_backlight_notify,
++};
++
++static struct platform_device mini2440_backlight_device __initdata = {
++ .name = "pwm-backlight",
++ .dev = {
++ .platform_data = &mini2440_backlight_data,
++ },
++};
++
++/* CON5
++ * +--+ /-----\
++ * | | | |
++ * | | | BAT |
++ * | | \_____/
++ * | |
++ * | | +----+ +----+
++ * | | | K5 | | K1 |
++ * | | +----+ +----+
++ * | | +----+ +----+
++ * | | | K4 | | K2 |
++ * | | +----+ +----+
++ * | | +----+ +----+
++ * | | | K6 | | K3 |
++ * | | +----+ +----+
++ * .....
++ */
++static struct gpio_keys_button mini2440_buttons[] __initdata = {
++ {
++ .gpio = S3C2410_GPG0, /* K1 */
++ .code = KEY_F1,
++ .desc = "Button 1",
++ .active_low = 1,
++ },
++ {
++ .gpio = S3C2410_GPG3, /* K2 */
++ .code = KEY_F2,
++ .desc = "Button 2",
++ .active_low = 1,
++ },
++ {
++ .gpio = S3C2410_GPG5, /* K3 */
++ .code = KEY_F3,
++ .desc = "Button 3",
++ .active_low = 1,
++ },
++ {
++ .gpio = S3C2410_GPG6, /* K4 */
++ .code = KEY_POWER,
++ .desc = "Power",
++ .active_low = 1,
++ },
++ {
++ .gpio = S3C2410_GPG7, /* K5 */
++ .code = KEY_F5,
++ .desc = "Button 5",
++ .active_low = 1,
++ },
++#if 0
++ /* this pin is also known as TCLK1 and seems to already
++ * marked as "in use" somehow in the kernel -- possibly wrongly */
++ {
++ .gpio = S3C2410_GPG11, /* K6 */
++ .code = KEY_F6,
++ .desc = "Button 6",
++ .active_low = 1,
++ },
++#endif
++};
++
++static struct gpio_keys_platform_data mini2440_button_data __initdata = {
++ .buttons = mini2440_buttons,
++ .nbuttons = ARRAY_SIZE(mini2440_buttons),
++};
++
++static struct platform_device mini2440_button_device __initdata = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &mini2440_button_data,
++ }
++};
++
++/* LEDS */
++
++static struct s3c24xx_led_platdata mini2440_led1_pdata __initdata = {
++ .name = "led1",
++ .gpio = S3C2410_GPB5,
++ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
++ .def_trigger = "heartbeat",
++};
++
++static struct s3c24xx_led_platdata mini2440_led2_pdata __initdata = {
++ .name = "led2",
++ .gpio = S3C2410_GPB6,
++ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
++ .def_trigger = "nand-disk",
++};
++
++static struct s3c24xx_led_platdata mini2440_led3_pdata __initdata = {
++ .name = "led3",
++ .gpio = S3C2410_GPB7,
++ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
++ .def_trigger = "mmc0",
++};
++
++static struct s3c24xx_led_platdata mini2440_led4_pdata __initdata = {
++ .name = "led4",
++ .gpio = S3C2410_GPB8,
++ .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
++ .def_trigger = "",
++};
++
++static struct platform_device mini2440_led1 __initdata = {
++ .name = "s3c24xx_led",
++ .id = 1,
++ .dev = {
++ .platform_data = &mini2440_led1_pdata,
++ },
++};
++
++static struct platform_device mini2440_led2 __initdata = {
++ .name = "s3c24xx_led",
++ .id = 2,
++ .dev = {
++ .platform_data = &mini2440_led2_pdata,
++ },
++};
++
++static struct platform_device mini2440_led3 __initdata = {
++ .name = "s3c24xx_led",
++ .id = 3,
++ .dev = {
++ .platform_data = &mini2440_led3_pdata,
++ },
++};
++
++static struct platform_device mini2440_led4 __initdata = {
++ .name = "s3c24xx_led",
++ .id = 4,
++ .dev = {
++ .platform_data = &mini2440_led4_pdata,
++ },
++};
++
++/* AUDIO */
++
++static struct s3c24xx_uda134x_platform_data mini2440_audio_pins __initdata = {
++ .l3_clk = S3C2410_GPB4,
++ .l3_mode = S3C2410_GPB2,
++ .l3_data = S3C2410_GPB3,
++ .model = UDA134X_UDA1341
++};
++
++static struct platform_device mini2440_audio __initdata = {
++ .name = "s3c24xx_uda134x",
++ .id = 0,
++ .dev = {
++ .platform_data = &mini2440_audio_pins,
++ },
++};
++
++/*
++ * I2C devices
++ */
++static struct at24_platform_data at24c08 = {
++ .byte_len = SZ_8K / 8,
++ .page_size = 16,
++};
++
++static struct i2c_board_info mini2440_i2c_devs[] __initdata = {
++ {
++ I2C_BOARD_INFO("24c08", 0x50),
++ .platform_data = &at24c08,
++ },
++};
++
++/* We can run that eeprom at 400khz */
++static struct s3c2410_platform_i2c mini2440_i2c_info __initdata = {
++ .flags = 0,
++ .slave_addr = 0x10,
++ .bus_freq = 400*1000,
++ .max_freq = 400*1000,
++};
++
++
++static struct platform_device *mini2440_devices[] __initdata = {
++ &s3c_device_usb,
++ &s3c_device_wdt,
++/* &s3c_device_adc,*/ /* ADC doesn't like living with touchscreen ! */
++ &s3c_device_i2c0,
++ &s3c_device_rtc,
++ &s3c_device_usbgadget,
++ &mini2440_device_eth,
++ &mini2440_led1,
++ &mini2440_led2,
++ &mini2440_led3,
++ &mini2440_led4,
++ &mini2440_button_device,
++ &s3c_device_nand,
++ &s3c_device_sdi,
++ &s3c_device_iis,
++ &mini2440_audio,
++/* &s3c_device_timer[0],*/ /* buzzer pwm, no API for it */
++ /* remaining devices are optional */
++};
++
++static void __init mini2440_map_io(void)
++{
++ s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc));
++ s3c24xx_init_clocks(12000000);
++ s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs));
++
++ s3c_device_nand.dev.platform_data = &mini2440_nand_info;
++ s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg;
++}
++
++/*
++ * mini2440_features string
++ *
++ * t = Touchscreen present
++ * b = PWM backlight control
++ * c = camera [TODO]
++ * 0-9 LCD configuration
++ *
++ */
++static char mini2440_features_str[12] __initdata = "0tb";
++
++static int __init mini2440_features_setup(char *str)
++{
++ if (str)
++ strlcpy(mini2440_features_str, str, sizeof(mini2440_features_str));
++ return 1;
++}
++
++__setup("mini2440=", mini2440_features_setup);
++
++#define FEATURE_SCREEN (1 << 0)
++#define FEATURE_BACKLIGHT (1 << 1)
++#define FEATURE_TOUCH (1 << 2)
++#define FEATURE_CAMERA (1 << 3)
++
++struct mini2440_features_t {
++ int count;
++ int done;
++ int lcd_index;
++ struct platform_device *optional[8];
++};
++
++static void mini2440_parse_features(
++ struct mini2440_features_t * features,
++ const char * features_str )
++{
++ const char * fp = features_str;
++
++ features->count = 0;
++ features->done = 0;
++ features->lcd_index = -1;
++
++ while (*fp) {
++ char f = *fp++;
++
++ switch (f) {
++ case '0'...'9': /* tft screen */
++ if (features->done & FEATURE_SCREEN) {
++ printk(KERN_INFO "MINI2440: '%c' ignored, "
++ "screen type already set\n", f);
++ } else {
++ int li = f - '0';
++ if (li >= ARRAY_SIZE(mini2440_lcd_cfg))
++ printk(KERN_INFO "MINI2440: "
++ "'%c' out of range LCD mode\n", f);
++ else {
++ features->optional[features->count++] =
++ &s3c_device_lcd;
++ features->lcd_index = li;
++ }
++ }
++ features->done |= FEATURE_SCREEN;
++ break;
++ case 'b':
++ if (features->done & FEATURE_BACKLIGHT)
++ printk(KERN_INFO "MINI2440: '%c' ignored, "
++ "backlight already set\n", f);
++ else {
++ /* need this timer for the backlight */
++ features->optional[features->count++] =
++ &s3c_device_timer[1];
++ features->optional[features->count++] =
++ &mini2440_backlight_device;
++ }
++ features->done |= FEATURE_BACKLIGHT;
++ break;
++ case 't':
++ printk(KERN_INFO "MINI2440: '%c' ignored, "
++ "touchscreen not compiled in\n", f);
++ break;
++ case 'c':
++ if (features->done & FEATURE_CAMERA)
++ printk(KERN_INFO "MINI2440: '%c' ignored, "
++ "camera already registered\n", f);
++ else
++ features->optional[features->count++] =
++ &s3c_device_camif;
++ features->done |= FEATURE_CAMERA;
++ break;
++ }
++ }
++}
++
++static void __init mini2440_init(void)
++{
++ struct mini2440_features_t features = { 0 };
++ int i;
++
++ printk(KERN_INFO "MINI2440: Option string mini2440=%s\n",
++ mini2440_features_str);
++
++ /* Parse the feature string */
++ mini2440_parse_features(&features, mini2440_features_str);
++
++ /* turn LCD on */
++ s3c2410_gpio_cfgpin(S3C2410_GPC0, S3C2410_GPC0_LEND);
++
++ /* remove pullup on PWM backlight */
++ s3c2410_gpio_pullup(S3C2410_GPB1, 0);
++ s3c2410_gpio_setpin(S3C2410_GPB1, 0);
++ s3c2410_gpio_cfgpin(S3C2410_GPB1, S3C2410_GPB1_TOUT1);
++
++ /* Make sure the D+ pullup pin is output */
++ s3c2410_gpio_cfgpin(S3C2410_GPC5, S3C2410_GPIO_OUTPUT);
++
++ /* mark the key as inout, without pullups (there is one on the board) */
++ for (i = 0; i < ARRAY_SIZE(mini2440_buttons); i++) {
++ s3c2410_gpio_pullup(mini2440_buttons[i].gpio, 0);
++ s3c2410_gpio_cfgpin(mini2440_buttons[i].gpio,
++ S3C2410_GPIO_INPUT);
++ }
++ if (features.lcd_index != -1) {
++ int li;
++
++ mini2440_fb_info.displays =
++ &mini2440_lcd_cfg[features.lcd_index];
++
++ printk(KERN_INFO "MINI2440: LCD");
++ for (li = 0; li < ARRAY_SIZE(mini2440_lcd_cfg); li++)
++ if (li == features.lcd_index)
++ printk(" [%d:%dx%d]", li,
++ mini2440_lcd_cfg[li].width,
++ mini2440_lcd_cfg[li].height);
++ else
++ printk(" %d:%dx%d", li,
++ mini2440_lcd_cfg[li].width,
++ mini2440_lcd_cfg[li].height);
++ printk("\n");
++ s3c24xx_fb_set_platdata(&mini2440_fb_info);
++ }
++ s3c24xx_udc_set_platdata(&mini2440_udc_cfg);
++ s3c_i2c0_set_platdata(&mini2440_i2c_info);
++ i2c_register_board_info(0, mini2440_i2c_devs,
++ ARRAY_SIZE(mini2440_i2c_devs));
++
++ platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
++
++ if (features.count) /* the optional features */
++ platform_add_devices(features.optional, features.count);
++
++}
++
++
++MACHINE_START(MINI2440, "MINI2440")
++ /* Maintainer: Michel Pollet <buserror@gmail.com> */
++ .phys_io = S3C2410_PA_UART,
++ .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
++ .boot_params = S3C2410_SDRAM_PA + 0x100,
++ .map_io = mini2440_map_io,
++ .init_machine = mini2440_init,
++ .init_irq = s3c24xx_init_irq,
++ .timer = &s3c24xx_timer,
++MACHINE_END
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0008-MINI2440-Delays-command-check-response-on-SD.patch b/recipes/linux/linux-2.6.29/micro2440/0008-MINI2440-Delays-command-check-response-on-SD.patch
new file mode 100644
index 0000000000..94b192568d
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0008-MINI2440-Delays-command-check-response-on-SD.patch
@@ -0,0 +1,30 @@
+From 94e4986b61d385491a89b5c287cebd54428df399 Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Sat, 14 Mar 2009 10:37:57 +0000
+Subject: [PATCH] MINI2440: Delays command check response on SD
+
+The mini2440 faidl to initializes the SD cards reliably
+without this small delay.
+---
+ drivers/mmc/core/sd.c | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
+index 26fc098..2449230 100644
+--- a/drivers/mmc/core/sd.c
++++ b/drivers/mmc/core/sd.c
+@@ -449,6 +449,11 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+ if (err < 0)
+ goto free_card;
+
++#ifdef CONFIG_MACH_MINI2440
++ /* Prevents the -110 error at startup/insertion */
++ mdelay(10);
++#endif
++
+ /*
+ * Fetch switch information from card.
+ */
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0009-MINI2440-Rename-the-SoC-tty-names.patch b/recipes/linux/linux-2.6.29/micro2440/0009-MINI2440-Rename-the-SoC-tty-names.patch
new file mode 100644
index 0000000000..9e9f6067cd
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0009-MINI2440-Rename-the-SoC-tty-names.patch
@@ -0,0 +1,35 @@
+From 356642f304af65f33a3ae756eff93bc91974ccce Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Sat, 14 Mar 2009 10:39:49 +0000
+Subject: [PATCH] MINI2440: Rename the SoC tty names.
+
+The 24c2410 default serial ports are created with non-
+standard names, that confuses most embedded distros and
+is also inconsistent with the internal name used for the
+console= parameter. This patch makes the driver use
+the standardized names.
+---
+ drivers/serial/samsung.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c
+index 41ac948..e85a6db 100644
+--- a/drivers/serial/samsung.c
++++ b/drivers/serial/samsung.c
+@@ -823,7 +823,13 @@ static struct uart_ops s3c24xx_serial_ops = {
+
+ static struct uart_driver s3c24xx_uart_drv = {
+ .owner = THIS_MODULE,
++#ifdef CONFIG_MACH_MINI2440
++ /* this was probably meant to be there in the first place, since the #define exists
++ * having non-standard names like "s3c2410_serial" is a royal pain for every distro */
++ .dev_name = S3C24XX_SERIAL_NAME,
++#else
+ .dev_name = "s3c2410_serial",
++#endif
+ .nr = CONFIG_SERIAL_SAMSUNG_UARTS,
+ .cons = S3C24XX_SERIAL_CONSOLE,
+ .driver_name = S3C24XX_SERIAL_NAME,
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0010-MINI2440-creates-a-mini2440_defconfig-file.patch b/recipes/linux/linux-2.6.29/micro2440/0010-MINI2440-creates-a-mini2440_defconfig-file.patch
new file mode 100644
index 0000000000..1470baabda
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0010-MINI2440-creates-a-mini2440_defconfig-file.patch
@@ -0,0 +1,2067 @@
+From eaff38986d77d4e5447a88dc2899eacb029472d2 Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Wed, 25 Mar 2009 17:24:08 +0000
+Subject: [PATCH] MINI2440: creates a mini2440_defconfig file
+
+Just a working, starting point config file for the board.
+
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ arch/arm/configs/mini2440_defconfig | 2045 +++++++++++++++++++++++++++++++++++
+ 1 files changed, 2045 insertions(+), 0 deletions(-)
+ create mode 100644 arch/arm/configs/mini2440_defconfig
+
+diff --git a/arch/arm/configs/mini2440_defconfig b/arch/arm/configs/mini2440_defconfig
+new file mode 100644
+index 0000000..1602aca
+--- /dev/null
++++ b/arch/arm/configs/mini2440_defconfig
+@@ -0,0 +1,2045 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.29
++# Wed Mar 25 17:21:37 2009
++#
++CONFIG_ARM=y
++CONFIG_HAVE_PWM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++CONFIG_GENERIC_GPIO=y
++# CONFIG_GENERIC_TIME is not set
++# CONFIG_GENERIC_CLOCKEVENTS is not set
++CONFIG_MMU=y
++CONFIG_NO_IOPORT=y
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_STACKTRACE_SUPPORT=y
++CONFIG_HAVE_LATENCYTOP_SUPPORT=y
++CONFIG_LOCKDEP_SUPPORT=y
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
++CONFIG_VECTORS_BASE=0xffff0000
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# General setup
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++CONFIG_LOCALVERSION=""
++# CONFIG_LOCALVERSION_AUTO is not set
++CONFIG_SWAP=y
++CONFIG_SYSVIPC=y
++CONFIG_SYSVIPC_SYSCTL=y
++CONFIG_POSIX_MQUEUE=y
++# CONFIG_BSD_PROCESS_ACCT is not set
++# CONFIG_TASKSTATS is not set
++# CONFIG_AUDIT is not set
++
++#
++# RCU Subsystem
++#
++CONFIG_CLASSIC_RCU=y
++# CONFIG_TREE_RCU is not set
++# CONFIG_PREEMPT_RCU is not set
++# CONFIG_TREE_RCU_TRACE is not set
++# CONFIG_PREEMPT_RCU_TRACE is not set
++# CONFIG_IKCONFIG is not set
++CONFIG_LOG_BUF_SHIFT=17
++# CONFIG_GROUP_SCHED is not set
++# CONFIG_CGROUPS is not set
++# CONFIG_SYSFS_DEPRECATED_V2 is not set
++CONFIG_RELAY=y
++CONFIG_NAMESPACES=y
++CONFIG_UTS_NS=y
++CONFIG_IPC_NS=y
++# CONFIG_USER_NS is not set
++# CONFIG_PID_NS is not set
++# CONFIG_NET_NS is not set
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_SYSCTL=y
++CONFIG_ANON_INODES=y
++# CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++CONFIG_BASE_FULL=y
++CONFIG_FUTEX=y
++CONFIG_EPOLL=y
++CONFIG_SIGNALFD=y
++CONFIG_TIMERFD=y
++CONFIG_EVENTFD=y
++CONFIG_SHMEM=y
++CONFIG_AIO=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_SLUB_DEBUG=y
++# CONFIG_COMPAT_BRK is not set
++# CONFIG_SLAB is not set
++CONFIG_SLUB=y
++# CONFIG_SLOB is not set
++# CONFIG_PROFILING is not set
++CONFIG_HAVE_OPROFILE=y
++# CONFIG_KPROBES is not set
++CONFIG_HAVE_KPROBES=y
++CONFIG_HAVE_KRETPROBES=y
++CONFIG_HAVE_CLK=y
++CONFIG_HAVE_GENERIC_DMA_COHERENT=y
++CONFIG_SLABINFO=y
++CONFIG_RT_MUTEXES=y
++CONFIG_BASE_SMALL=0
++CONFIG_MODULES=y
++CONFIG_MODULE_FORCE_LOAD=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODULE_FORCE_UNLOAD=y
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++CONFIG_BLOCK=y
++CONFIG_LBD=y
++# CONFIG_BLK_DEV_IO_TRACE is not set
++# CONFIG_BLK_DEV_BSG is not set
++CONFIG_BLK_DEV_INTEGRITY=y
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++CONFIG_IOSCHED_AS=y
++CONFIG_IOSCHED_DEADLINE=y
++CONFIG_IOSCHED_CFQ=y
++CONFIG_DEFAULT_AS=y
++# CONFIG_DEFAULT_DEADLINE is not set
++# CONFIG_DEFAULT_CFQ is not set
++# CONFIG_DEFAULT_NOOP is not set
++CONFIG_DEFAULT_IOSCHED="anticipatory"
++CONFIG_FREEZER=y
++
++#
++# System Type
++#
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_VERSATILE is not set
++# CONFIG_ARCH_AT91 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP13XX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_KIRKWOOD is not set
++# CONFIG_ARCH_KS8695 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_LOKI is not set
++# CONFIG_ARCH_MV78XX0 is not set
++# CONFIG_ARCH_MXC is not set
++# CONFIG_ARCH_ORION5X is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_RPC is not set
++# CONFIG_ARCH_SA1100 is not set
++CONFIG_ARCH_S3C2410=y
++# CONFIG_ARCH_S3C64XX is not set
++# CONFIG_ARCH_SHARK is not set
++# CONFIG_ARCH_LH7A40X is not set
++# CONFIG_ARCH_DAVINCI is not set
++# CONFIG_ARCH_OMAP is not set
++# CONFIG_ARCH_MSM is not set
++# CONFIG_ARCH_W90X900 is not set
++CONFIG_PLAT_S3C24XX=y
++CONFIG_S3C2410_CLOCK=y
++CONFIG_CPU_S3C244X=y
++CONFIG_S3C24XX_PWM=y
++CONFIG_S3C24XX_GPIO_EXTRA=0
++CONFIG_S3C2410_DMA=y
++# CONFIG_S3C2410_DMA_DEBUG is not set
++CONFIG_S3C24XX_ADC=y
++CONFIG_PLAT_S3C=y
++CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y
++CONFIG_CPU_LLSERIAL_S3C2440=y
++
++#
++# Boot options
++#
++# CONFIG_S3C_BOOT_WATCHDOG is not set
++# CONFIG_S3C_BOOT_ERROR_RESET is not set
++CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
++
++#
++# Power management
++#
++# CONFIG_S3C2410_PM_DEBUG is not set
++# CONFIG_S3C2410_PM_CHECK is not set
++CONFIG_S3C_LOWLEVEL_UART_PORT=0
++CONFIG_S3C_GPIO_SPACE=0
++
++#
++# S3C2400 Machines
++#
++CONFIG_S3C2410_PM=y
++CONFIG_S3C2410_GPIO=y
++
++#
++# S3C2410 Machines
++#
++# CONFIG_ARCH_SMDK2410 is not set
++# CONFIG_ARCH_H1940 is not set
++# CONFIG_MACH_N30 is not set
++# CONFIG_ARCH_BAST is not set
++# CONFIG_MACH_OTOM is not set
++# CONFIG_MACH_AML_M5900 is not set
++# CONFIG_MACH_TCT_HAMMER is not set
++# CONFIG_MACH_VR1000 is not set
++# CONFIG_MACH_QT2410 is not set
++
++#
++# S3C2412 Machines
++#
++# CONFIG_MACH_JIVE is not set
++# CONFIG_MACH_SMDK2413 is not set
++# CONFIG_MACH_SMDK2412 is not set
++# CONFIG_MACH_VSTMS is not set
++CONFIG_CPU_S3C2440=y
++CONFIG_S3C2440_DMA=y
++
++#
++# S3C2440 Machines
++#
++# CONFIG_MACH_ANUBIS is not set
++# CONFIG_MACH_OSIRIS is not set
++# CONFIG_MACH_RX3715 is not set
++# CONFIG_ARCH_S3C2440 is not set
++# CONFIG_MACH_NEXCODER_2440 is not set
++# CONFIG_MACH_AT2440EVB is not set
++CONFIG_MACH_MINI2440=y
++
++#
++# S3C2442 Machines
++#
++
++#
++# S3C2443 Machines
++#
++# CONFIG_MACH_SMDK2443 is not set
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM920T=y
++CONFIG_CPU_32v4T=y
++CONFIG_CPU_ABRT_EV4T=y
++CONFIG_CPU_PABRT_NOIFAR=y
++CONFIG_CPU_CACHE_V4WT=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
++
++#
++# Processor Features
++#
++CONFIG_ARM_THUMB=y
++# CONFIG_CPU_ICACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_OUTER_CACHE is not set
++
++#
++# Bus support
++#
++# CONFIG_PCI_SYSCALL is not set
++# CONFIG_ARCH_SUPPORTS_MSI is not set
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++CONFIG_VMSPLIT_3G=y
++# CONFIG_VMSPLIT_2G is not set
++# CONFIG_VMSPLIT_1G is not set
++CONFIG_PAGE_OFFSET=0xC0000000
++# CONFIG_PREEMPT is not set
++CONFIG_HZ=200
++CONFIG_AEABI=y
++# CONFIG_OABI_COMPAT is not set
++CONFIG_ARCH_FLATMEM_HAS_HOLES=y
++# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
++# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
++CONFIG_SELECT_MEMORY_MODEL=y
++CONFIG_FLATMEM_MANUAL=y
++# CONFIG_DISCONTIGMEM_MANUAL is not set
++# CONFIG_SPARSEMEM_MANUAL is not set
++CONFIG_FLATMEM=y
++CONFIG_FLAT_NODE_MEM_MAP=y
++CONFIG_PAGEFLAGS_EXTENDED=y
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_PHYS_ADDR_T_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=0
++CONFIG_VIRT_TO_BUS=y
++CONFIG_UNEVICTABLE_LRU=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0
++CONFIG_ZBOOT_ROM_BSS=0
++CONFIG_CMDLINE=""
++# CONFIG_XIP_KERNEL is not set
++CONFIG_KEXEC=y
++CONFIG_ATAGS_PROC=y
++
++#
++# CPU Power Management
++#
++CONFIG_CPU_IDLE=y
++CONFIG_CPU_IDLE_GOV_LADDER=y
++
++#
++# Floating point emulation
++#
++
++#
++# At least one emulation must be selected
++#
++
++#
++# Userspace binary formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
++CONFIG_HAVE_AOUT=y
++CONFIG_BINFMT_AOUT=m
++CONFIG_BINFMT_MISC=m
++
++#
++# Power management options
++#
++CONFIG_PM=y
++# CONFIG_PM_DEBUG is not set
++CONFIG_PM_SLEEP=y
++CONFIG_SUSPEND=y
++CONFIG_SUSPEND_FREEZER=y
++CONFIG_APM_EMULATION=y
++CONFIG_ARCH_SUSPEND_POSSIBLE=y
++CONFIG_NET=y
++
++#
++# Networking options
++#
++CONFIG_COMPAT_NET_DEV_OPS=y
++CONFIG_PACKET=y
++CONFIG_PACKET_MMAP=y
++CONFIG_UNIX=y
++CONFIG_XFRM=y
++CONFIG_XFRM_USER=m
++# CONFIG_XFRM_SUB_POLICY is not set
++# CONFIG_XFRM_MIGRATE is not set
++# CONFIG_XFRM_STATISTICS is not set
++CONFIG_NET_KEY=m
++# CONFIG_NET_KEY_MIGRATE is not set
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++CONFIG_IP_ADVANCED_ROUTER=y
++CONFIG_ASK_IP_FIB_HASH=y
++# CONFIG_IP_FIB_TRIE is not set
++CONFIG_IP_FIB_HASH=y
++CONFIG_IP_MULTIPLE_TABLES=y
++CONFIG_IP_ROUTE_MULTIPATH=y
++CONFIG_IP_ROUTE_VERBOSE=y
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++CONFIG_IP_PNP_BOOTP=y
++CONFIG_IP_PNP_RARP=y
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++CONFIG_IP_MROUTE=y
++CONFIG_IP_PIMSM_V1=y
++CONFIG_IP_PIMSM_V2=y
++# CONFIG_ARPD is not set
++CONFIG_SYN_COOKIES=y
++# CONFIG_INET_AH is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_XFRM_TUNNEL is not set
++# CONFIG_INET_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
++# CONFIG_INET_LRO is not set
++CONFIG_INET_DIAG=m
++CONFIG_INET_TCP_DIAG=m
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_CUBIC=y
++CONFIG_DEFAULT_TCP_CONG="cubic"
++# CONFIG_TCP_MD5SIG is not set
++# CONFIG_IPV6 is not set
++# CONFIG_NETWORK_SECMARK is not set
++CONFIG_NETFILTER=y
++# CONFIG_NETFILTER_DEBUG is not set
++CONFIG_NETFILTER_ADVANCED=y
++CONFIG_BRIDGE_NETFILTER=y
++
++#
++# Core Netfilter Configuration
++#
++# CONFIG_NETFILTER_NETLINK_QUEUE is not set
++# CONFIG_NETFILTER_NETLINK_LOG is not set
++# CONFIG_NF_CONNTRACK is not set
++# CONFIG_NETFILTER_XTABLES is not set
++# CONFIG_IP_VS is not set
++
++#
++# IP: Netfilter Configuration
++#
++# CONFIG_NF_DEFRAG_IPV4 is not set
++# CONFIG_IP_NF_QUEUE is not set
++# CONFIG_IP_NF_IPTABLES is not set
++# CONFIG_IP_NF_ARPTABLES is not set
++# CONFIG_BRIDGE_NF_EBTABLES is not set
++# CONFIG_IP_DCCP is not set
++# CONFIG_IP_SCTP is not set
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++CONFIG_STP=m
++CONFIG_GARP=m
++CONFIG_BRIDGE=m
++# CONFIG_NET_DSA is not set
++CONFIG_VLAN_8021Q=m
++CONFIG_VLAN_8021Q_GVRP=y
++# CONFIG_DECNET is not set
++CONFIG_LLC=m
++# CONFIG_LLC2 is not set
++# CONFIG_IPX is not set
++# CONFIG_ATALK is not set
++# CONFIG_X25 is not set
++# CONFIG_LAPB is not set
++# CONFIG_ECONET is not set
++# CONFIG_WAN_ROUTER is not set
++# CONFIG_NET_SCHED is not set
++# CONFIG_DCB is not set
++
++#
++# Network testing
++#
++CONFIG_NET_PKTGEN=m
++# CONFIG_HAMRADIO is not set
++# CONFIG_CAN is not set
++# CONFIG_IRDA is not set
++CONFIG_BT=m
++CONFIG_BT_L2CAP=m
++CONFIG_BT_SCO=m
++CONFIG_BT_RFCOMM=m
++CONFIG_BT_RFCOMM_TTY=y
++CONFIG_BT_BNEP=m
++CONFIG_BT_BNEP_MC_FILTER=y
++CONFIG_BT_BNEP_PROTO_FILTER=y
++CONFIG_BT_HIDP=m
++
++#
++# Bluetooth device drivers
++#
++CONFIG_BT_HCIBTUSB=m
++CONFIG_BT_HCIBTSDIO=m
++CONFIG_BT_HCIUART=m
++CONFIG_BT_HCIUART_H4=y
++CONFIG_BT_HCIUART_BCSP=y
++CONFIG_BT_HCIUART_LL=y
++CONFIG_BT_HCIBCM203X=m
++CONFIG_BT_HCIBPA10X=m
++CONFIG_BT_HCIBFUSB=m
++CONFIG_BT_HCIVHCI=m
++# CONFIG_AF_RXRPC is not set
++# CONFIG_PHONET is not set
++CONFIG_FIB_RULES=y
++CONFIG_WIRELESS=y
++CONFIG_CFG80211=m
++CONFIG_CFG80211_REG_DEBUG=y
++CONFIG_NL80211=y
++CONFIG_WIRELESS_OLD_REGULATORY=y
++CONFIG_WIRELESS_EXT=y
++CONFIG_WIRELESS_EXT_SYSFS=y
++CONFIG_LIB80211=m
++CONFIG_LIB80211_CRYPT_WEP=m
++CONFIG_LIB80211_CRYPT_CCMP=m
++CONFIG_LIB80211_CRYPT_TKIP=m
++# CONFIG_LIB80211_DEBUG is not set
++CONFIG_MAC80211=m
++
++#
++# Rate control algorithm selection
++#
++CONFIG_MAC80211_RC_MINSTREL=y
++# CONFIG_MAC80211_RC_DEFAULT_PID is not set
++CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
++CONFIG_MAC80211_RC_DEFAULT="minstrel"
++CONFIG_MAC80211_MESH=y
++CONFIG_MAC80211_LEDS=y
++# CONFIG_MAC80211_DEBUGFS is not set
++# CONFIG_MAC80211_DEBUG_MENU is not set
++# CONFIG_WIMAX is not set
++# CONFIG_RFKILL is not set
++# CONFIG_NET_9P is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++CONFIG_FW_LOADER=y
++# CONFIG_FIRMWARE_IN_KERNEL is not set
++CONFIG_EXTRA_FIRMWARE=""
++# CONFIG_DEBUG_DRIVER is not set
++# CONFIG_DEBUG_DEVRES is not set
++# CONFIG_SYS_HYPERVISOR is not set
++CONFIG_CONNECTOR=m
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++CONFIG_MTD_CONCAT=y
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_TESTS is not set
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# CONFIG_MTD_AFS_PARTS is not set
++# CONFIG_MTD_AR7_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLKDEVS=y
++CONFIG_MTD_BLOCK=y
++CONFIG_FTL=y
++CONFIG_NFTL=y
++CONFIG_NFTL_RW=y
++CONFIG_INFTL=y
++CONFIG_RFD_FTL=y
++# CONFIG_SSFDC is not set
++# CONFIG_MTD_OOPS is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++CONFIG_MTD_CFI=y
++CONFIG_MTD_JEDECPROBE=y
++CONFIG_MTD_GEN_PROBE=y
++# CONFIG_MTD_CFI_ADV_OPTIONS is not set
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
++CONFIG_MTD_MAP_BANK_WIDTH_2=y
++CONFIG_MTD_MAP_BANK_WIDTH_4=y
++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
++CONFIG_MTD_CFI_I1=y
++CONFIG_MTD_CFI_I2=y
++# CONFIG_MTD_CFI_I4 is not set
++# CONFIG_MTD_CFI_I8 is not set
++# CONFIG_MTD_CFI_INTELEXT is not set
++CONFIG_MTD_CFI_AMDSTD=y
++CONFIG_MTD_CFI_STAA=y
++CONFIG_MTD_CFI_UTIL=y
++CONFIG_MTD_RAM=y
++CONFIG_MTD_ROM=y
++# CONFIG_MTD_ABSENT is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++# CONFIG_MTD_PHYSMAP is not set
++# CONFIG_MTD_ARM_INTEGRATOR is not set
++# CONFIG_MTD_IMPA7 is not set
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++# CONFIG_MTD_DATAFLASH is not set
++# CONFIG_MTD_M25P80 is not set
++# CONFIG_MTD_SLRAM is not set
++# CONFIG_MTD_PHRAM is not set
++# CONFIG_MTD_MTDRAM is not set
++# CONFIG_MTD_BLOCK2MTD is not set
++
++#
++# Disk-On-Chip Device Drivers
++#
++# CONFIG_MTD_DOC2000 is not set
++# CONFIG_MTD_DOC2001 is not set
++# CONFIG_MTD_DOC2001PLUS is not set
++CONFIG_MTD_NAND=y
++CONFIG_MTD_NAND_VERIFY_WRITE=y
++# CONFIG_MTD_NAND_ECC_SMC is not set
++# CONFIG_MTD_NAND_MUSEUM_IDS is not set
++# CONFIG_MTD_NAND_GPIO is not set
++CONFIG_MTD_NAND_IDS=y
++CONFIG_MTD_NAND_S3C2410=y
++# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
++# CONFIG_MTD_NAND_S3C2410_HWECC is not set
++# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
++# CONFIG_MTD_NAND_DISKONCHIP is not set
++# CONFIG_MTD_NAND_NANDSIM is not set
++CONFIG_MTD_NAND_PLATFORM=y
++# CONFIG_MTD_ALAUDA is not set
++# CONFIG_MTD_ONENAND is not set
++
++#
++# LPDDR flash memory drivers
++#
++CONFIG_MTD_LPDDR=y
++CONFIG_MTD_QINFO_PROBE=y
++
++#
++# UBI - Unsorted block images
++#
++# CONFIG_MTD_UBI is not set
++# CONFIG_PARPORT is not set
++CONFIG_BLK_DEV=y
++# CONFIG_BLK_DEV_COW_COMMON is not set
++CONFIG_BLK_DEV_LOOP=m
++# CONFIG_BLK_DEV_CRYPTOLOOP is not set
++CONFIG_BLK_DEV_NBD=m
++# CONFIG_BLK_DEV_UB is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=65536
++# CONFIG_BLK_DEV_XIP is not set
++CONFIG_CDROM_PKTCDVD=m
++CONFIG_CDROM_PKTCDVD_BUFFERS=8
++# CONFIG_CDROM_PKTCDVD_WCACHE is not set
++# CONFIG_ATA_OVER_ETH is not set
++CONFIG_MISC_DEVICES=y
++# CONFIG_ICS932S401 is not set
++# CONFIG_ENCLOSURE_SERVICES is not set
++# CONFIG_C2PORT is not set
++
++#
++# EEPROM support
++#
++CONFIG_EEPROM_AT24=y
++# CONFIG_EEPROM_AT25 is not set
++# CONFIG_EEPROM_LEGACY is not set
++# CONFIG_EEPROM_93CX6 is not set
++CONFIG_HAVE_IDE=y
++# CONFIG_IDE is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++CONFIG_SCSI=m
++CONFIG_SCSI_DMA=y
++# CONFIG_SCSI_TGT is not set
++# CONFIG_SCSI_NETLINK is not set
++# CONFIG_SCSI_PROC_FS is not set
++
++#
++# SCSI support type (disk, tape, CD-ROM)
++#
++CONFIG_BLK_DEV_SD=m
++# CONFIG_CHR_DEV_ST is not set
++# CONFIG_CHR_DEV_OSST is not set
++# CONFIG_BLK_DEV_SR is not set
++CONFIG_CHR_DEV_SG=m
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++# CONFIG_SCSI_MULTI_LUN is not set
++# CONFIG_SCSI_CONSTANTS is not set
++# CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
++CONFIG_SCSI_WAIT_SCAN=m
++
++#
++# SCSI Transports
++#
++# CONFIG_SCSI_SPI_ATTRS is not set
++# CONFIG_SCSI_FC_ATTRS is not set
++# CONFIG_SCSI_ISCSI_ATTRS is not set
++# CONFIG_SCSI_SAS_LIBSAS is not set
++# CONFIG_SCSI_SRP_ATTRS is not set
++# CONFIG_SCSI_LOWLEVEL is not set
++# CONFIG_SCSI_DH is not set
++# CONFIG_ATA is not set
++# CONFIG_MD is not set
++CONFIG_NETDEVICES=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_MACVLAN is not set
++# CONFIG_EQUALIZER is not set
++CONFIG_TUN=m
++# CONFIG_VETH is not set
++# CONFIG_PHYLIB is not set
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++# CONFIG_AX88796 is not set
++# CONFIG_SMC91X is not set
++CONFIG_DM9000=y
++CONFIG_DM9000_DEBUGLEVEL=4
++# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
++# CONFIG_ENC28J60 is not set
++# CONFIG_SMC911X is not set
++# CONFIG_SMSC911X is not set
++# CONFIG_DNET is not set
++# CONFIG_IBM_NEW_EMAC_ZMII is not set
++# CONFIG_IBM_NEW_EMAC_RGMII is not set
++# CONFIG_IBM_NEW_EMAC_TAH is not set
++# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
++# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
++# CONFIG_B44 is not set
++# CONFIG_NETDEV_1000 is not set
++# CONFIG_NETDEV_10000 is not set
++
++#
++# Wireless LAN
++#
++# CONFIG_WLAN_PRE80211 is not set
++CONFIG_WLAN_80211=y
++CONFIG_LIBERTAS=m
++# CONFIG_LIBERTAS_USB is not set
++CONFIG_LIBERTAS_SDIO=m
++# CONFIG_LIBERTAS_DEBUG is not set
++# CONFIG_LIBERTAS_THINFIRM is not set
++# CONFIG_USB_ZD1201 is not set
++# CONFIG_USB_NET_RNDIS_WLAN is not set
++# CONFIG_RTL8187 is not set
++# CONFIG_MAC80211_HWSIM is not set
++# CONFIG_P54_COMMON is not set
++# CONFIG_IWLWIFI_LEDS is not set
++CONFIG_HOSTAP=m
++CONFIG_HOSTAP_FIRMWARE=y
++CONFIG_HOSTAP_FIRMWARE_NVRAM=y
++# CONFIG_B43 is not set
++# CONFIG_B43LEGACY is not set
++CONFIG_ZD1211RW=m
++CONFIG_ZD1211RW_DEBUG=y
++# CONFIG_RT2X00 is not set
++
++#
++# Enable WiMAX (Networking options) to see the WiMAX drivers
++#
++
++#
++# USB Network Adapters
++#
++# CONFIG_USB_CATC is not set
++# CONFIG_USB_KAWETH is not set
++# CONFIG_USB_PEGASUS is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++# CONFIG_ISDN is not set
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++CONFIG_INPUT_FF_MEMLESS=y
++# CONFIG_INPUT_POLLDEV is not set
++
++#
++# Userland interfaces
++#
++CONFIG_INPUT_MOUSEDEV=y
++CONFIG_INPUT_MOUSEDEV_PSAUX=y
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
++# CONFIG_INPUT_JOYDEV is not set
++CONFIG_INPUT_EVDEV=y
++CONFIG_INPUT_EVBUG=y
++
++#
++# Input Device Drivers
++#
++CONFIG_INPUT_KEYBOARD=y
++# CONFIG_KEYBOARD_ATKBD is not set
++# CONFIG_KEYBOARD_SUNKBD is not set
++# CONFIG_KEYBOARD_LKKBD is not set
++# CONFIG_KEYBOARD_XTKBD is not set
++# CONFIG_KEYBOARD_NEWTON is not set
++# CONFIG_KEYBOARD_STOWAWAY is not set
++CONFIG_KEYBOARD_GPIO=y
++CONFIG_INPUT_MOUSE=y
++CONFIG_MOUSE_PS2=y
++CONFIG_MOUSE_PS2_ALPS=y
++CONFIG_MOUSE_PS2_LOGIPS2PP=y
++CONFIG_MOUSE_PS2_SYNAPTICS=y
++CONFIG_MOUSE_PS2_TRACKPOINT=y
++# CONFIG_MOUSE_PS2_ELANTECH is not set
++# CONFIG_MOUSE_PS2_TOUCHKIT is not set
++# CONFIG_MOUSE_SERIAL is not set
++# CONFIG_MOUSE_APPLETOUCH is not set
++# CONFIG_MOUSE_BCM5974 is not set
++# CONFIG_MOUSE_VSXXXAA is not set
++# CONFIG_MOUSE_GPIO is not set
++# CONFIG_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TABLET is not set
++CONFIG_INPUT_TOUCHSCREEN=y
++# CONFIG_TOUCHSCREEN_ADS7846 is not set
++# CONFIG_TOUCHSCREEN_FUJITSU is not set
++# CONFIG_TOUCHSCREEN_GUNZE is not set
++# CONFIG_TOUCHSCREEN_ELO is not set
++# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
++# CONFIG_TOUCHSCREEN_MTOUCH is not set
++# CONFIG_TOUCHSCREEN_INEXIO is not set
++# CONFIG_TOUCHSCREEN_MK712 is not set
++# CONFIG_TOUCHSCREEN_PENMOUNT is not set
++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
++# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
++# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
++# CONFIG_TOUCHSCREEN_TSC2007 is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++CONFIG_SERIO=y
++CONFIG_SERIO_SERPORT=y
++CONFIG_SERIO_LIBPS2=y
++CONFIG_SERIO_RAW=y
++# CONFIG_GAMEPORT is not set
++
++#
++# Character devices
++#
++CONFIG_VT=y
++CONFIG_CONSOLE_TRANSLATIONS=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
++CONFIG_VT_HW_CONSOLE_BINDING=y
++CONFIG_DEVKMEM=y
++# CONFIG_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_SAMSUNG=y
++CONFIG_SERIAL_SAMSUNG_UARTS=3
++CONFIG_SERIAL_SAMSUNG_CONSOLE=y
++CONFIG_SERIAL_S3C2440=y
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=128
++CONFIG_IPMI_HANDLER=m
++# CONFIG_IPMI_PANIC_EVENT is not set
++CONFIG_IPMI_DEVICE_INTERFACE=m
++CONFIG_IPMI_SI=m
++CONFIG_IPMI_WATCHDOG=m
++CONFIG_IPMI_POWEROFF=m
++CONFIG_HW_RANDOM=y
++# CONFIG_R3964 is not set
++# CONFIG_RAW_DRIVER is not set
++# CONFIG_TCG_TPM is not set
++CONFIG_I2C=y
++CONFIG_I2C_BOARDINFO=y
++CONFIG_I2C_CHARDEV=y
++CONFIG_I2C_HELPER_AUTO=y
++CONFIG_I2C_ALGOBIT=y
++
++#
++# I2C Hardware Bus support
++#
++
++#
++# I2C system bus drivers (mostly embedded / system-on-chip)
++#
++# CONFIG_I2C_GPIO is not set
++# CONFIG_I2C_OCORES is not set
++CONFIG_I2C_S3C2410=y
++CONFIG_I2C_SIMTEC=y
++
++#
++# External I2C/SMBus adapter drivers
++#
++# CONFIG_I2C_PARPORT_LIGHT is not set
++# CONFIG_I2C_TAOS_EVM is not set
++# CONFIG_I2C_TINY_USB is not set
++
++#
++# Other I2C/SMBus bus drivers
++#
++# CONFIG_I2C_PCA_PLATFORM is not set
++# CONFIG_I2C_STUB is not set
++
++#
++# Miscellaneous I2C Chip support
++#
++# CONFIG_DS1682 is not set
++# CONFIG_SENSORS_PCF8574 is not set
++# CONFIG_PCF8575 is not set
++# CONFIG_SENSORS_PCA9539 is not set
++# CONFIG_SENSORS_PCF8591 is not set
++# CONFIG_SENSORS_MAX6875 is not set
++CONFIG_SENSORS_TSL2550=y
++# CONFIG_I2C_DEBUG_CORE is not set
++# CONFIG_I2C_DEBUG_ALGO is not set
++# CONFIG_I2C_DEBUG_BUS is not set
++# CONFIG_I2C_DEBUG_CHIP is not set
++CONFIG_SPI=y
++# CONFIG_SPI_DEBUG is not set
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_BITBANG=y
++# CONFIG_SPI_GPIO is not set
++CONFIG_SPI_S3C24XX=y
++# CONFIG_SPI_S3C24XX_GPIO is not set
++
++#
++# SPI Protocol Masters
++#
++CONFIG_SPI_SPIDEV=y
++# CONFIG_SPI_TLE62X0 is not set
++CONFIG_ARCH_REQUIRE_GPIOLIB=y
++CONFIG_GPIOLIB=y
++# CONFIG_DEBUG_GPIO is not set
++CONFIG_GPIO_SYSFS=y
++
++#
++# Memory mapped GPIO expanders:
++#
++
++#
++# I2C GPIO expanders:
++#
++# CONFIG_GPIO_MAX732X is not set
++# CONFIG_GPIO_PCA953X is not set
++# CONFIG_GPIO_PCF857X is not set
++
++#
++# PCI GPIO expanders:
++#
++
++#
++# SPI GPIO expanders:
++#
++# CONFIG_GPIO_MAX7301 is not set
++# CONFIG_GPIO_MCP23S08 is not set
++# CONFIG_W1 is not set
++# CONFIG_POWER_SUPPLY is not set
++# CONFIG_HWMON is not set
++CONFIG_THERMAL=m
++CONFIG_WATCHDOG=y
++# CONFIG_WATCHDOG_NOWAYOUT is not set
++
++#
++# Watchdog Device Drivers
++#
++# CONFIG_SOFT_WATCHDOG is not set
++CONFIG_S3C2410_WATCHDOG=y
++
++#
++# USB-based Watchdog Cards
++#
++# CONFIG_USBPCWATCHDOG is not set
++CONFIG_SSB_POSSIBLE=y
++
++#
++# Sonics Silicon Backplane
++#
++# CONFIG_SSB is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_CORE is not set
++# CONFIG_MFD_SM501 is not set
++# CONFIG_MFD_ASIC3 is not set
++# CONFIG_HTC_EGPIO is not set
++# CONFIG_HTC_PASIC3 is not set
++# CONFIG_TPS65010 is not set
++# CONFIG_TWL4030_CORE is not set
++# CONFIG_MFD_TMIO is not set
++# CONFIG_MFD_T7L66XB is not set
++# CONFIG_MFD_TC6387XB is not set
++# CONFIG_MFD_TC6393XB is not set
++# CONFIG_PMIC_DA903X is not set
++# CONFIG_MFD_WM8400 is not set
++# CONFIG_MFD_WM8350_I2C is not set
++# CONFIG_MFD_PCF50633 is not set
++
++#
++# Multimedia devices
++#
++
++#
++# Multimedia core support
++#
++CONFIG_VIDEO_DEV=m
++CONFIG_VIDEO_V4L2_COMMON=m
++CONFIG_VIDEO_ALLOW_V4L1=y
++CONFIG_VIDEO_V4L1_COMPAT=y
++CONFIG_DVB_CORE=m
++CONFIG_VIDEO_MEDIA=m
++
++#
++# Multimedia drivers
++#
++# CONFIG_MEDIA_ATTACH is not set
++CONFIG_MEDIA_TUNER=m
++# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
++CONFIG_MEDIA_TUNER_SIMPLE=m
++CONFIG_MEDIA_TUNER_TDA8290=m
++CONFIG_MEDIA_TUNER_TDA9887=m
++CONFIG_MEDIA_TUNER_TEA5761=m
++CONFIG_MEDIA_TUNER_TEA5767=m
++CONFIG_MEDIA_TUNER_MT20XX=m
++CONFIG_MEDIA_TUNER_XC2028=m
++CONFIG_MEDIA_TUNER_XC5000=m
++CONFIG_VIDEO_V4L2=m
++CONFIG_VIDEO_V4L1=m
++CONFIG_VIDEOBUF_GEN=m
++CONFIG_VIDEO_CAPTURE_DRIVERS=y
++# CONFIG_VIDEO_ADV_DEBUG is not set
++# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
++CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
++# CONFIG_VIDEO_VIVI is not set
++# CONFIG_VIDEO_CPIA is not set
++# CONFIG_VIDEO_CPIA2 is not set
++# CONFIG_VIDEO_SAA5246A is not set
++# CONFIG_VIDEO_SAA5249 is not set
++# CONFIG_VIDEO_AU0828 is not set
++CONFIG_SOC_CAMERA=m
++# CONFIG_SOC_CAMERA_MT9M001 is not set
++# CONFIG_SOC_CAMERA_MT9M111 is not set
++# CONFIG_SOC_CAMERA_MT9T031 is not set
++# CONFIG_SOC_CAMERA_MT9V022 is not set
++# CONFIG_SOC_CAMERA_TW9910 is not set
++CONFIG_SOC_CAMERA_PLATFORM=m
++# CONFIG_SOC_CAMERA_OV772X is not set
++# CONFIG_VIDEO_SH_MOBILE_CEU is not set
++CONFIG_V4L_USB_DRIVERS=y
++# CONFIG_USB_VIDEO_CLASS is not set
++CONFIG_USB_GSPCA=m
++# CONFIG_USB_M5602 is not set
++# CONFIG_USB_STV06XX is not set
++# CONFIG_USB_GSPCA_CONEX is not set
++# CONFIG_USB_GSPCA_ETOMS is not set
++# CONFIG_USB_GSPCA_FINEPIX is not set
++# CONFIG_USB_GSPCA_MARS is not set
++# CONFIG_USB_GSPCA_OV519 is not set
++# CONFIG_USB_GSPCA_OV534 is not set
++# CONFIG_USB_GSPCA_PAC207 is not set
++# CONFIG_USB_GSPCA_PAC7311 is not set
++# CONFIG_USB_GSPCA_SONIXB is not set
++# CONFIG_USB_GSPCA_SONIXJ is not set
++# CONFIG_USB_GSPCA_SPCA500 is not set
++# CONFIG_USB_GSPCA_SPCA501 is not set
++# CONFIG_USB_GSPCA_SPCA505 is not set
++# CONFIG_USB_GSPCA_SPCA506 is not set
++# CONFIG_USB_GSPCA_SPCA508 is not set
++# CONFIG_USB_GSPCA_SPCA561 is not set
++# CONFIG_USB_GSPCA_STK014 is not set
++# CONFIG_USB_GSPCA_SUNPLUS is not set
++# CONFIG_USB_GSPCA_T613 is not set
++# CONFIG_USB_GSPCA_TV8532 is not set
++# CONFIG_USB_GSPCA_VC032X is not set
++CONFIG_USB_GSPCA_ZC3XX=m
++# CONFIG_VIDEO_PVRUSB2 is not set
++# CONFIG_VIDEO_EM28XX is not set
++# CONFIG_VIDEO_USBVISION is not set
++# CONFIG_USB_VICAM is not set
++# CONFIG_USB_IBMCAM is not set
++# CONFIG_USB_KONICAWC is not set
++# CONFIG_USB_QUICKCAM_MESSENGER is not set
++# CONFIG_USB_ET61X251 is not set
++# CONFIG_VIDEO_OVCAMCHIP is not set
++# CONFIG_USB_OV511 is not set
++# CONFIG_USB_SE401 is not set
++# CONFIG_USB_SN9C102 is not set
++# CONFIG_USB_STV680 is not set
++# CONFIG_USB_ZC0301 is not set
++# CONFIG_USB_PWC is not set
++# CONFIG_USB_ZR364XX is not set
++# CONFIG_USB_STKWEBCAM is not set
++# CONFIG_USB_S2255 is not set
++CONFIG_RADIO_ADAPTERS=y
++# CONFIG_USB_DSBR is not set
++# CONFIG_USB_SI470X is not set
++# CONFIG_USB_MR800 is not set
++# CONFIG_RADIO_TEA5764 is not set
++# CONFIG_DVB_DYNAMIC_MINORS is not set
++CONFIG_DVB_CAPTURE_DRIVERS=y
++# CONFIG_TTPCI_EEPROM is not set
++
++#
++# Supported USB Adapters
++#
++# CONFIG_DVB_USB is not set
++# CONFIG_DVB_SIANO_SMS1XXX is not set
++
++#
++# Supported FlexCopII (B2C2) Adapters
++#
++# CONFIG_DVB_B2C2_FLEXCOP is not set
++
++#
++# Supported DVB Frontends
++#
++
++#
++# Customise DVB Frontends
++#
++# CONFIG_DVB_FE_CUSTOMISE is not set
++
++#
++# Multistandard (satellite) frontends
++#
++# CONFIG_DVB_STB0899 is not set
++# CONFIG_DVB_STB6100 is not set
++
++#
++# DVB-S (satellite) frontends
++#
++# CONFIG_DVB_CX24110 is not set
++# CONFIG_DVB_CX24123 is not set
++# CONFIG_DVB_MT312 is not set
++# CONFIG_DVB_S5H1420 is not set
++# CONFIG_DVB_STV0288 is not set
++# CONFIG_DVB_STB6000 is not set
++# CONFIG_DVB_STV0299 is not set
++# CONFIG_DVB_TDA8083 is not set
++# CONFIG_DVB_TDA10086 is not set
++# CONFIG_DVB_TDA8261 is not set
++# CONFIG_DVB_VES1X93 is not set
++# CONFIG_DVB_TUNER_ITD1000 is not set
++# CONFIG_DVB_TUNER_CX24113 is not set
++# CONFIG_DVB_TDA826X is not set
++# CONFIG_DVB_TUA6100 is not set
++# CONFIG_DVB_CX24116 is not set
++# CONFIG_DVB_SI21XX is not set
++
++#
++# DVB-T (terrestrial) frontends
++#
++# CONFIG_DVB_SP8870 is not set
++# CONFIG_DVB_SP887X is not set
++# CONFIG_DVB_CX22700 is not set
++# CONFIG_DVB_CX22702 is not set
++# CONFIG_DVB_DRX397XD is not set
++# CONFIG_DVB_L64781 is not set
++# CONFIG_DVB_TDA1004X is not set
++# CONFIG_DVB_NXT6000 is not set
++# CONFIG_DVB_MT352 is not set
++# CONFIG_DVB_ZL10353 is not set
++# CONFIG_DVB_DIB3000MB is not set
++# CONFIG_DVB_DIB3000MC is not set
++# CONFIG_DVB_DIB7000M is not set
++# CONFIG_DVB_DIB7000P is not set
++# CONFIG_DVB_TDA10048 is not set
++
++#
++# DVB-C (cable) frontends
++#
++# CONFIG_DVB_VES1820 is not set
++# CONFIG_DVB_TDA10021 is not set
++# CONFIG_DVB_TDA10023 is not set
++# CONFIG_DVB_STV0297 is not set
++
++#
++# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
++#
++# CONFIG_DVB_NXT200X is not set
++# CONFIG_DVB_OR51211 is not set
++# CONFIG_DVB_OR51132 is not set
++# CONFIG_DVB_BCM3510 is not set
++# CONFIG_DVB_LGDT330X is not set
++# CONFIG_DVB_LGDT3304 is not set
++# CONFIG_DVB_S5H1409 is not set
++# CONFIG_DVB_AU8522 is not set
++# CONFIG_DVB_S5H1411 is not set
++
++#
++# ISDB-T (terrestrial) frontends
++#
++# CONFIG_DVB_S921 is not set
++
++#
++# Digital terrestrial only tuners/PLL
++#
++# CONFIG_DVB_PLL is not set
++# CONFIG_DVB_TUNER_DIB0070 is not set
++
++#
++# SEC control devices for DVB-S
++#
++# CONFIG_DVB_LNBP21 is not set
++# CONFIG_DVB_ISL6405 is not set
++# CONFIG_DVB_ISL6421 is not set
++# CONFIG_DVB_LGS8GL5 is not set
++
++#
++# Tools to develop new frontends
++#
++# CONFIG_DVB_DUMMY_FE is not set
++# CONFIG_DVB_AF9013 is not set
++# CONFIG_DAB is not set
++
++#
++# Graphics support
++#
++# CONFIG_VGASTATE is not set
++CONFIG_VIDEO_OUTPUT_CONTROL=y
++CONFIG_FB=y
++CONFIG_FIRMWARE_EDID=y
++# CONFIG_FB_DDC is not set
++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
++CONFIG_FB_CFB_FILLRECT=y
++CONFIG_FB_CFB_COPYAREA=y
++CONFIG_FB_CFB_IMAGEBLIT=y
++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
++# CONFIG_FB_SYS_FILLRECT is not set
++# CONFIG_FB_SYS_COPYAREA is not set
++# CONFIG_FB_SYS_IMAGEBLIT is not set
++# CONFIG_FB_FOREIGN_ENDIAN is not set
++# CONFIG_FB_SYS_FOPS is not set
++# CONFIG_FB_SVGALIB is not set
++# CONFIG_FB_MACMODES is not set
++# CONFIG_FB_BACKLIGHT is not set
++CONFIG_FB_MODE_HELPERS=y
++CONFIG_FB_TILEBLITTING=y
++
++#
++# Frame buffer hardware drivers
++#
++# CONFIG_FB_UVESA is not set
++# CONFIG_FB_S1D13XXX is not set
++CONFIG_FB_S3C2410=y
++# CONFIG_FB_S3C2410_DEBUG is not set
++# CONFIG_FB_VIRTUAL is not set
++# CONFIG_FB_METRONOME is not set
++# CONFIG_FB_MB862XX is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++CONFIG_LCD_CLASS_DEVICE=y
++# CONFIG_LCD_LTV350QV is not set
++# CONFIG_LCD_ILI9320 is not set
++# CONFIG_LCD_TDO24M is not set
++# CONFIG_LCD_VGG2432A4 is not set
++CONFIG_LCD_PLATFORM=y
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++# CONFIG_BACKLIGHT_GENERIC is not set
++CONFIG_BACKLIGHT_PWM=y
++
++#
++# Display device support
++#
++CONFIG_DISPLAY_SUPPORT=y
++
++#
++# Display hardware drivers
++#
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
++CONFIG_FONTS=y
++CONFIG_FONT_8x8=y
++# CONFIG_FONT_8x16 is not set
++# CONFIG_FONT_6x11 is not set
++# CONFIG_FONT_7x14 is not set
++# CONFIG_FONT_PEARL_8x8 is not set
++# CONFIG_FONT_ACORN_8x8 is not set
++CONFIG_FONT_MINI_4x6=y
++# CONFIG_FONT_SUN8x16 is not set
++# CONFIG_FONT_SUN12x22 is not set
++# CONFIG_FONT_10x18 is not set
++CONFIG_LOGO=y
++# CONFIG_LOGO_LINUX_MONO is not set
++# CONFIG_LOGO_LINUX_VGA16 is not set
++# CONFIG_LOGO_LINUX_CLUT224 is not set
++CONFIG_SOUND=y
++CONFIG_SOUND_OSS_CORE=y
++CONFIG_SND=y
++CONFIG_SND_TIMER=y
++CONFIG_SND_PCM=y
++CONFIG_SND_HWDEP=m
++CONFIG_SND_RAWMIDI=m
++CONFIG_SND_SEQUENCER=m
++CONFIG_SND_SEQ_DUMMY=m
++CONFIG_SND_OSSEMUL=y
++CONFIG_SND_MIXER_OSS=m
++CONFIG_SND_PCM_OSS=m
++CONFIG_SND_PCM_OSS_PLUGINS=y
++CONFIG_SND_SEQUENCER_OSS=y
++CONFIG_SND_DYNAMIC_MINORS=y
++CONFIG_SND_SUPPORT_OLD_API=y
++CONFIG_SND_VERBOSE_PROCFS=y
++# CONFIG_SND_VERBOSE_PRINTK is not set
++# CONFIG_SND_DEBUG is not set
++# CONFIG_SND_DRIVERS is not set
++# CONFIG_SND_ARM is not set
++# CONFIG_SND_SPI is not set
++CONFIG_SND_USB=y
++CONFIG_SND_USB_AUDIO=m
++CONFIG_SND_USB_CAIAQ=m
++CONFIG_SND_USB_CAIAQ_INPUT=y
++CONFIG_SND_SOC=y
++CONFIG_SND_S3C24XX_SOC=y
++CONFIG_SND_S3C24XX_SOC_I2S=y
++# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
++CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X=y
++CONFIG_SND_SOC_I2C_AND_SPI=y
++# CONFIG_SND_SOC_ALL_CODECS is not set
++CONFIG_SND_SOC_L3=y
++CONFIG_SND_SOC_UDA134X=y
++# CONFIG_SOUND_PRIME is not set
++CONFIG_HID_SUPPORT=y
++CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
++CONFIG_HIDRAW=y
++
++#
++# USB Input Devices
++#
++CONFIG_USB_HID=y
++CONFIG_HID_PID=y
++CONFIG_USB_HIDDEV=y
++
++#
++# Special HID drivers
++#
++CONFIG_HID_COMPAT=y
++CONFIG_HID_A4TECH=y
++CONFIG_HID_APPLE=y
++CONFIG_HID_BELKIN=y
++CONFIG_HID_CHERRY=y
++CONFIG_HID_CHICONY=y
++CONFIG_HID_CYPRESS=y
++CONFIG_HID_EZKEY=y
++CONFIG_HID_GYRATION=y
++CONFIG_HID_LOGITECH=y
++# CONFIG_LOGITECH_FF is not set
++# CONFIG_LOGIRUMBLEPAD2_FF is not set
++CONFIG_HID_MICROSOFT=y
++CONFIG_HID_MONTEREY=y
++CONFIG_HID_NTRIG=y
++CONFIG_HID_PANTHERLORD=y
++# CONFIG_PANTHERLORD_FF is not set
++CONFIG_HID_PETALYNX=y
++CONFIG_HID_SAMSUNG=y
++CONFIG_HID_SONY=y
++CONFIG_HID_SUNPLUS=y
++# CONFIG_GREENASIA_FF is not set
++CONFIG_HID_TOPSEED=y
++# CONFIG_THRUSTMASTER_FF is not set
++# CONFIG_ZEROPLUS_FF is not set
++CONFIG_USB_SUPPORT=y
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++CONFIG_USB=y
++# CONFIG_USB_DEBUG is not set
++# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
++
++#
++# Miscellaneous USB options
++#
++CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DEVICE_CLASS is not set
++# CONFIG_USB_DYNAMIC_MINORS is not set
++# CONFIG_USB_SUSPEND is not set
++# CONFIG_USB_OTG is not set
++# CONFIG_USB_MON is not set
++# CONFIG_USB_WUSB is not set
++# CONFIG_USB_WUSB_CBAF is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_C67X00_HCD is not set
++# CONFIG_USB_OXU210HP_HCD is not set
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++# CONFIG_USB_R8A66597_HCD is not set
++# CONFIG_USB_HWA_HCD is not set
++# CONFIG_USB_MUSB_HDRC is not set
++# CONFIG_USB_GADGET_MUSB_HDRC is not set
++
++#
++# USB Device Class drivers
++#
++CONFIG_USB_ACM=m
++# CONFIG_USB_PRINTER is not set
++CONFIG_USB_WDM=m
++# CONFIG_USB_TMC is not set
++
++#
++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
++#
++
++#
++# see USB_STORAGE Help for more information
++#
++CONFIG_USB_STORAGE=m
++# CONFIG_USB_STORAGE_DEBUG is not set
++CONFIG_USB_STORAGE_DATAFAB=y
++# CONFIG_USB_STORAGE_FREECOM is not set
++CONFIG_USB_STORAGE_ISD200=y
++CONFIG_USB_STORAGE_USBAT=y
++CONFIG_USB_STORAGE_SDDR09=y
++CONFIG_USB_STORAGE_SDDR55=y
++CONFIG_USB_STORAGE_JUMPSHOT=y
++CONFIG_USB_STORAGE_ALAUDA=y
++# CONFIG_USB_STORAGE_ONETOUCH is not set
++# CONFIG_USB_STORAGE_KARMA is not set
++# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
++CONFIG_USB_LIBUSUAL=y
++
++#
++# USB Imaging devices
++#
++# CONFIG_USB_MDC800 is not set
++# CONFIG_USB_MICROTEK is not set
++
++#
++# USB port drivers
++#
++CONFIG_USB_SERIAL=m
++# CONFIG_USB_EZUSB is not set
++# CONFIG_USB_SERIAL_GENERIC is not set
++# CONFIG_USB_SERIAL_AIRCABLE is not set
++# CONFIG_USB_SERIAL_ARK3116 is not set
++# CONFIG_USB_SERIAL_BELKIN is not set
++# CONFIG_USB_SERIAL_CH341 is not set
++# CONFIG_USB_SERIAL_WHITEHEAT is not set
++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
++CONFIG_USB_SERIAL_CP2101=m
++# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
++# CONFIG_USB_SERIAL_EMPEG is not set
++CONFIG_USB_SERIAL_FTDI_SIO=m
++# CONFIG_USB_SERIAL_FUNSOFT is not set
++# CONFIG_USB_SERIAL_VISOR is not set
++# CONFIG_USB_SERIAL_IPAQ is not set
++# CONFIG_USB_SERIAL_IR is not set
++# CONFIG_USB_SERIAL_EDGEPORT is not set
++# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
++# CONFIG_USB_SERIAL_GARMIN is not set
++# CONFIG_USB_SERIAL_IPW is not set
++# CONFIG_USB_SERIAL_IUU is not set
++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
++# CONFIG_USB_SERIAL_KEYSPAN is not set
++# CONFIG_USB_SERIAL_KLSI is not set
++# CONFIG_USB_SERIAL_KOBIL_SCT is not set
++# CONFIG_USB_SERIAL_MCT_U232 is not set
++# CONFIG_USB_SERIAL_MOS7720 is not set
++# CONFIG_USB_SERIAL_MOS7840 is not set
++# CONFIG_USB_SERIAL_MOTOROLA is not set
++# CONFIG_USB_SERIAL_NAVMAN is not set
++# CONFIG_USB_SERIAL_PL2303 is not set
++# CONFIG_USB_SERIAL_OTI6858 is not set
++CONFIG_USB_SERIAL_SPCP8X5=m
++# CONFIG_USB_SERIAL_HP4X is not set
++# CONFIG_USB_SERIAL_SAFE is not set
++# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
++# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
++# CONFIG_USB_SERIAL_TI is not set
++# CONFIG_USB_SERIAL_CYBERJACK is not set
++# CONFIG_USB_SERIAL_XIRCOM is not set
++# CONFIG_USB_SERIAL_OPTION is not set
++# CONFIG_USB_SERIAL_OMNINET is not set
++# CONFIG_USB_SERIAL_OPTICON is not set
++# CONFIG_USB_SERIAL_DEBUG is not set
++
++#
++# USB Miscellaneous drivers
++#
++# CONFIG_USB_EMI62 is not set
++# CONFIG_USB_EMI26 is not set
++# CONFIG_USB_ADUTUX is not set
++# CONFIG_USB_SEVSEG is not set
++# CONFIG_USB_RIO500 is not set
++# CONFIG_USB_LEGOTOWER is not set
++# CONFIG_USB_LCD is not set
++# CONFIG_USB_BERRY_CHARGE is not set
++# CONFIG_USB_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
++# CONFIG_USB_CYTHERM is not set
++# CONFIG_USB_PHIDGET is not set
++# CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_TRANCEVIBRATOR is not set
++# CONFIG_USB_IOWARRIOR is not set
++# CONFIG_USB_TEST is not set
++# CONFIG_USB_ISIGHTFW is not set
++# CONFIG_USB_VST is not set
++CONFIG_USB_GADGET=y
++# CONFIG_USB_GADGET_DEBUG is not set
++# CONFIG_USB_GADGET_DEBUG_FILES is not set
++# CONFIG_USB_GADGET_DEBUG_FS is not set
++CONFIG_USB_GADGET_VBUS_DRAW=2
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_AT91 is not set
++# CONFIG_USB_GADGET_ATMEL_USBA is not set
++# CONFIG_USB_GADGET_FSL_USB2 is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++# CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_PXA25X is not set
++# CONFIG_USB_GADGET_PXA27X is not set
++CONFIG_USB_GADGET_S3C2410=y
++CONFIG_USB_S3C2410=y
++# CONFIG_USB_S3C2410_DEBUG is not set
++# CONFIG_USB_GADGET_IMX is not set
++# CONFIG_USB_GADGET_M66592 is not set
++# CONFIG_USB_GADGET_AMD5536UDC is not set
++# CONFIG_USB_GADGET_FSL_QE is not set
++# CONFIG_USB_GADGET_CI13XXX is not set
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++# CONFIG_USB_GADGET_DUALSPEED is not set
++CONFIG_USB_ZERO=m
++CONFIG_USB_ETH=m
++CONFIG_USB_ETH_RNDIS=y
++CONFIG_USB_GADGETFS=m
++CONFIG_USB_FILE_STORAGE=m
++# CONFIG_USB_FILE_STORAGE_TEST is not set
++CONFIG_USB_G_SERIAL=m
++# CONFIG_USB_MIDI_GADGET is not set
++# CONFIG_USB_G_PRINTER is not set
++CONFIG_USB_CDC_COMPOSITE=m
++
++#
++# OTG and related infrastructure
++#
++# CONFIG_USB_GPIO_VBUS is not set
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++# CONFIG_MMC_UNSAFE_RESUME is not set
++
++#
++# MMC/SD/SDIO Card Drivers
++#
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_BLOCK_BOUNCE=y
++CONFIG_SDIO_UART=y
++# CONFIG_MMC_TEST is not set
++
++#
++# MMC/SD/SDIO Host Controller Drivers
++#
++CONFIG_MMC_SDHCI=y
++CONFIG_MMC_SPI=y
++CONFIG_MMC_S3C=y
++# CONFIG_MEMSTICK is not set
++# CONFIG_ACCESSIBILITY is not set
++CONFIG_NEW_LEDS=y
++CONFIG_LEDS_CLASS=y
++
++#
++# LED drivers
++#
++CONFIG_LEDS_S3C24XX=y
++# CONFIG_LEDS_PCA9532 is not set
++CONFIG_LEDS_GPIO=y
++# CONFIG_LEDS_PCA955X is not set
++
++#
++# LED Triggers
++#
++CONFIG_LEDS_TRIGGERS=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++CONFIG_LEDS_TRIGGER_BACKLIGHT=y
++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
++CONFIG_RTC_LIB=y
++CONFIG_RTC_CLASS=y
++CONFIG_RTC_HCTOSYS=y
++CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
++# CONFIG_RTC_DEBUG is not set
++
++#
++# RTC interfaces
++#
++CONFIG_RTC_INTF_SYSFS=y
++CONFIG_RTC_INTF_PROC=y
++CONFIG_RTC_INTF_DEV=y
++CONFIG_RTC_INTF_DEV_UIE_EMUL=y
++# CONFIG_RTC_DRV_TEST is not set
++
++#
++# I2C RTC drivers
++#
++# CONFIG_RTC_DRV_DS1307 is not set
++# CONFIG_RTC_DRV_DS1374 is not set
++# CONFIG_RTC_DRV_DS1672 is not set
++# CONFIG_RTC_DRV_MAX6900 is not set
++# CONFIG_RTC_DRV_RS5C372 is not set
++# CONFIG_RTC_DRV_ISL1208 is not set
++# CONFIG_RTC_DRV_X1205 is not set
++# CONFIG_RTC_DRV_PCF8563 is not set
++# CONFIG_RTC_DRV_PCF8583 is not set
++# CONFIG_RTC_DRV_M41T80 is not set
++# CONFIG_RTC_DRV_S35390A is not set
++# CONFIG_RTC_DRV_FM3130 is not set
++# CONFIG_RTC_DRV_RX8581 is not set
++
++#
++# SPI RTC drivers
++#
++# CONFIG_RTC_DRV_M41T94 is not set
++# CONFIG_RTC_DRV_DS1305 is not set
++# CONFIG_RTC_DRV_DS1390 is not set
++# CONFIG_RTC_DRV_MAX6902 is not set
++# CONFIG_RTC_DRV_R9701 is not set
++# CONFIG_RTC_DRV_RS5C348 is not set
++# CONFIG_RTC_DRV_DS3234 is not set
++
++#
++# Platform RTC drivers
++#
++# CONFIG_RTC_DRV_CMOS is not set
++# CONFIG_RTC_DRV_DS1286 is not set
++# CONFIG_RTC_DRV_DS1511 is not set
++# CONFIG_RTC_DRV_DS1553 is not set
++# CONFIG_RTC_DRV_DS1742 is not set
++# CONFIG_RTC_DRV_STK17TA8 is not set
++# CONFIG_RTC_DRV_M48T86 is not set
++# CONFIG_RTC_DRV_M48T35 is not set
++# CONFIG_RTC_DRV_M48T59 is not set
++# CONFIG_RTC_DRV_BQ4802 is not set
++# CONFIG_RTC_DRV_V3020 is not set
++
++#
++# on-CPU RTC drivers
++#
++CONFIG_RTC_DRV_S3C=y
++CONFIG_DMADEVICES=y
++
++#
++# DMA Devices
++#
++# CONFIG_REGULATOR is not set
++# CONFIG_UIO is not set
++# CONFIG_STAGING is not set
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=m
++CONFIG_EXT2_FS_XATTR=y
++CONFIG_EXT2_FS_POSIX_ACL=y
++CONFIG_EXT2_FS_SECURITY=y
++# CONFIG_EXT2_FS_XIP is not set
++CONFIG_EXT3_FS=y
++CONFIG_EXT3_FS_XATTR=y
++CONFIG_EXT3_FS_POSIX_ACL=y
++CONFIG_EXT3_FS_SECURITY=y
++# CONFIG_EXT4_FS is not set
++CONFIG_JBD=y
++# CONFIG_JBD_DEBUG is not set
++CONFIG_FS_MBCACHE=y
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++CONFIG_FS_POSIX_ACL=y
++CONFIG_FILE_LOCKING=y
++# CONFIG_XFS_FS is not set
++# CONFIG_GFS2_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_BTRFS_FS is not set
++CONFIG_DNOTIFY=y
++CONFIG_INOTIFY=y
++CONFIG_INOTIFY_USER=y
++# CONFIG_QUOTA is not set
++CONFIG_AUTOFS_FS=y
++CONFIG_AUTOFS4_FS=y
++# CONFIG_FUSE_FS is not set
++CONFIG_GENERIC_ACL=y
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++CONFIG_FAT_FS=y
++CONFIG_MSDOS_FS=y
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_SYSCTL=y
++CONFIG_PROC_PAGE_MONITOR=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++CONFIG_TMPFS_POSIX_ACL=y
++# CONFIG_HUGETLB_PAGE is not set
++CONFIG_CONFIGFS_FS=m
++CONFIG_MISC_FILESYSTEMS=y
++# CONFIG_ADFS_FS is not set
++# CONFIG_AFFS_FS is not set
++# CONFIG_ECRYPT_FS is not set
++# CONFIG_HFS_FS is not set
++# CONFIG_HFSPLUS_FS is not set
++# CONFIG_BEFS_FS is not set
++# CONFIG_BFS_FS is not set
++# CONFIG_EFS_FS is not set
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
++# CONFIG_JFFS2_SUMMARY is not set
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++# CONFIG_JFFS2_LZO is not set
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++CONFIG_CRAMFS=y
++# CONFIG_SQUASHFS is not set
++# CONFIG_VXFS_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_OMFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++CONFIG_ROMFS_FS=y
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++CONFIG_NETWORK_FILESYSTEMS=y
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++CONFIG_NFS_V3_ACL=y
++CONFIG_NFS_V4=y
++CONFIG_ROOT_NFS=y
++# CONFIG_NFSD is not set
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_ACL_SUPPORT=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++CONFIG_SUNRPC_GSS=y
++# CONFIG_SUNRPC_REGISTER_V4 is not set
++CONFIG_RPCSEC_GSS_KRB5=y
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++# CONFIG_CIFS is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++
++#
++# Partition Types
++#
++CONFIG_PARTITION_ADVANCED=y
++# CONFIG_ACORN_PARTITION is not set
++# CONFIG_OSF_PARTITION is not set
++# CONFIG_AMIGA_PARTITION is not set
++# CONFIG_ATARI_PARTITION is not set
++# CONFIG_MAC_PARTITION is not set
++CONFIG_MSDOS_PARTITION=y
++CONFIG_BSD_DISKLABEL=y
++CONFIG_MINIX_SUBPARTITION=y
++CONFIG_SOLARIS_X86_PARTITION=y
++CONFIG_UNIXWARE_DISKLABEL=y
++CONFIG_LDM_PARTITION=y
++# CONFIG_LDM_DEBUG is not set
++# CONFIG_SGI_PARTITION is not set
++# CONFIG_ULTRIX_PARTITION is not set
++# CONFIG_SUN_PARTITION is not set
++# CONFIG_KARMA_PARTITION is not set
++CONFIG_EFI_PARTITION=y
++# CONFIG_SYSV68_PARTITION is not set
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="cp437"
++CONFIG_NLS_CODEPAGE_437=m
++CONFIG_NLS_CODEPAGE_737=m
++CONFIG_NLS_CODEPAGE_775=m
++CONFIG_NLS_CODEPAGE_850=m
++CONFIG_NLS_CODEPAGE_852=m
++CONFIG_NLS_CODEPAGE_855=m
++CONFIG_NLS_CODEPAGE_857=m
++CONFIG_NLS_CODEPAGE_860=m
++CONFIG_NLS_CODEPAGE_861=m
++CONFIG_NLS_CODEPAGE_862=m
++CONFIG_NLS_CODEPAGE_863=m
++CONFIG_NLS_CODEPAGE_864=m
++CONFIG_NLS_CODEPAGE_865=m
++CONFIG_NLS_CODEPAGE_866=m
++CONFIG_NLS_CODEPAGE_869=m
++CONFIG_NLS_CODEPAGE_936=m
++CONFIG_NLS_CODEPAGE_950=m
++CONFIG_NLS_CODEPAGE_932=m
++CONFIG_NLS_CODEPAGE_949=m
++CONFIG_NLS_CODEPAGE_874=m
++CONFIG_NLS_ISO8859_8=m
++CONFIG_NLS_CODEPAGE_1250=m
++CONFIG_NLS_CODEPAGE_1251=m
++CONFIG_NLS_ASCII=m
++CONFIG_NLS_ISO8859_1=m
++CONFIG_NLS_ISO8859_2=m
++CONFIG_NLS_ISO8859_3=m
++CONFIG_NLS_ISO8859_4=m
++CONFIG_NLS_ISO8859_5=m
++CONFIG_NLS_ISO8859_6=m
++CONFIG_NLS_ISO8859_7=m
++CONFIG_NLS_ISO8859_9=m
++CONFIG_NLS_ISO8859_13=m
++CONFIG_NLS_ISO8859_14=m
++CONFIG_NLS_ISO8859_15=m
++CONFIG_NLS_KOI8_R=m
++CONFIG_NLS_KOI8_U=m
++CONFIG_NLS_UTF8=m
++# CONFIG_DLM is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++# CONFIG_ENABLE_WARN_DEPRECATED is not set
++# CONFIG_ENABLE_MUST_CHECK is not set
++CONFIG_FRAME_WARN=1024
++# CONFIG_MAGIC_SYSRQ is not set
++# CONFIG_UNUSED_SYMBOLS is not set
++CONFIG_DEBUG_FS=y
++# CONFIG_HEADERS_CHECK is not set
++CONFIG_DEBUG_KERNEL=y
++# CONFIG_DEBUG_SHIRQ is not set
++CONFIG_DETECT_SOFTLOCKUP=y
++# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
++CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
++# CONFIG_SCHED_DEBUG is not set
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
++# CONFIG_DEBUG_OBJECTS is not set
++# CONFIG_SLUB_DEBUG_ON is not set
++# CONFIG_SLUB_STATS is not set
++# CONFIG_DEBUG_RT_MUTEXES is not set
++# CONFIG_RT_MUTEX_TESTER is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_LOCK_ALLOC is not set
++# CONFIG_PROVE_LOCKING is not set
++# CONFIG_LOCK_STAT is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
++# CONFIG_DEBUG_KOBJECT is not set
++CONFIG_DEBUG_BUGVERBOSE=y
++CONFIG_DEBUG_INFO=y
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_WRITECOUNT is not set
++CONFIG_DEBUG_MEMORY_INIT=y
++# CONFIG_DEBUG_LIST is not set
++# CONFIG_DEBUG_SG is not set
++# CONFIG_DEBUG_NOTIFIERS is not set
++CONFIG_FRAME_POINTER=y
++# CONFIG_BOOT_PRINTK_DELAY is not set
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_RCU_CPU_STALL_DETECTOR is not set
++# CONFIG_BACKTRACE_SELF_TEST is not set
++# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
++# CONFIG_FAULT_INJECTION is not set
++# CONFIG_LATENCYTOP is not set
++CONFIG_SYSCTL_SYSCALL_CHECK=y
++CONFIG_HAVE_FUNCTION_TRACER=y
++
++#
++# Tracers
++#
++# CONFIG_FUNCTION_TRACER is not set
++# CONFIG_SCHED_TRACER is not set
++# CONFIG_CONTEXT_SWITCH_TRACER is not set
++# CONFIG_BOOT_TRACER is not set
++# CONFIG_TRACE_BRANCH_PROFILING is not set
++# CONFIG_STACK_TRACER is not set
++# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
++# CONFIG_SAMPLES is not set
++CONFIG_HAVE_ARCH_KGDB=y
++# CONFIG_KGDB is not set
++CONFIG_DEBUG_USER=y
++# CONFIG_DEBUG_ERRORS is not set
++# CONFIG_DEBUG_STACK_USAGE is not set
++# CONFIG_DEBUG_LL is not set
++CONFIG_DEBUG_S3C_UART=0
++
++#
++# Security options
++#
++CONFIG_KEYS=y
++# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
++# CONFIG_SECURITY is not set
++# CONFIG_SECURITYFS is not set
++CONFIG_SECURITY_FILE_CAPABILITIES=y
++CONFIG_CRYPTO=y
++
++#
++# Crypto core or helper
++#
++CONFIG_CRYPTO_FIPS=y
++CONFIG_CRYPTO_ALGAPI=y
++CONFIG_CRYPTO_ALGAPI2=y
++CONFIG_CRYPTO_AEAD=m
++CONFIG_CRYPTO_AEAD2=y
++CONFIG_CRYPTO_BLKCIPHER=y
++CONFIG_CRYPTO_BLKCIPHER2=y
++CONFIG_CRYPTO_HASH=y
++CONFIG_CRYPTO_HASH2=y
++CONFIG_CRYPTO_RNG=m
++CONFIG_CRYPTO_RNG2=y
++CONFIG_CRYPTO_MANAGER=y
++CONFIG_CRYPTO_MANAGER2=y
++CONFIG_CRYPTO_GF128MUL=m
++CONFIG_CRYPTO_NULL=m
++CONFIG_CRYPTO_CRYPTD=m
++CONFIG_CRYPTO_AUTHENC=m
++CONFIG_CRYPTO_TEST=m
++
++#
++# Authenticated Encryption with Associated Data
++#
++CONFIG_CRYPTO_CCM=m
++CONFIG_CRYPTO_GCM=m
++CONFIG_CRYPTO_SEQIV=m
++
++#
++# Block modes
++#
++CONFIG_CRYPTO_CBC=y
++CONFIG_CRYPTO_CTR=m
++CONFIG_CRYPTO_CTS=m
++CONFIG_CRYPTO_ECB=y
++CONFIG_CRYPTO_LRW=m
++CONFIG_CRYPTO_PCBC=m
++CONFIG_CRYPTO_XTS=m
++
++#
++# Hash modes
++#
++CONFIG_CRYPTO_HMAC=y
++CONFIG_CRYPTO_XCBC=m
++
++#
++# Digest
++#
++CONFIG_CRYPTO_CRC32C=m
++CONFIG_CRYPTO_MD4=m
++CONFIG_CRYPTO_MD5=y
++CONFIG_CRYPTO_MICHAEL_MIC=y
++CONFIG_CRYPTO_RMD128=m
++CONFIG_CRYPTO_RMD160=m
++CONFIG_CRYPTO_RMD256=m
++CONFIG_CRYPTO_RMD320=m
++CONFIG_CRYPTO_SHA1=m
++CONFIG_CRYPTO_SHA256=m
++CONFIG_CRYPTO_SHA512=m
++CONFIG_CRYPTO_TGR192=m
++CONFIG_CRYPTO_WP512=m
++
++#
++# Ciphers
++#
++CONFIG_CRYPTO_AES=y
++CONFIG_CRYPTO_ANUBIS=m
++CONFIG_CRYPTO_ARC4=y
++CONFIG_CRYPTO_BLOWFISH=m
++CONFIG_CRYPTO_CAMELLIA=m
++CONFIG_CRYPTO_CAST5=m
++CONFIG_CRYPTO_CAST6=m
++CONFIG_CRYPTO_DES=y
++CONFIG_CRYPTO_FCRYPT=m
++CONFIG_CRYPTO_KHAZAD=m
++CONFIG_CRYPTO_SALSA20=m
++CONFIG_CRYPTO_SEED=m
++CONFIG_CRYPTO_SERPENT=m
++CONFIG_CRYPTO_TEA=m
++CONFIG_CRYPTO_TWOFISH=m
++CONFIG_CRYPTO_TWOFISH_COMMON=m
++
++#
++# Compression
++#
++CONFIG_CRYPTO_DEFLATE=m
++CONFIG_CRYPTO_LZO=m
++
++#
++# Random Number Generation
++#
++CONFIG_CRYPTO_ANSI_CPRNG=m
++CONFIG_CRYPTO_HW=y
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++CONFIG_GENERIC_FIND_LAST_BIT=y
++CONFIG_CRC_CCITT=m
++CONFIG_CRC16=m
++CONFIG_CRC_T10DIF=y
++CONFIG_CRC_ITU_T=y
++CONFIG_CRC32=y
++CONFIG_CRC7=y
++CONFIG_LIBCRC32C=m
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_LZO_COMPRESS=m
++CONFIG_LZO_DECOMPRESS=m
++CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_DMA=y
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0011-MINI2440-Add-touchscreen-support.patch b/recipes/linux/linux-2.6.29/micro2440/0011-MINI2440-Add-touchscreen-support.patch
new file mode 100644
index 0000000000..2b9c8c044d
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0011-MINI2440-Add-touchscreen-support.patch
@@ -0,0 +1,192 @@
+From 8f148bda065698d45ab955b2c700ff1a58e28003 Mon Sep 17 00:00:00 2001
+From: Michel Pollet <buserror@gmail.com>
+Date: Wed, 25 Mar 2009 17:45:09 +0000
+Subject: [PATCH] MINI2440: Add touchscreen support
+
+Uses the newly merged moko's touchscreen, optional.
+Updated defconfig too.
+
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ arch/arm/configs/mini2440_defconfig | 10 +++-
+ arch/arm/mach-s3c2440/mach-mini2440.c | 99 ++++++++++++++++++++++++++++++++-
+ 2 files changed, 106 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/configs/mini2440_defconfig b/arch/arm/configs/mini2440_defconfig
+index 1602aca..4e79b4e 100644
+--- a/arch/arm/configs/mini2440_defconfig
++++ b/arch/arm/configs/mini2440_defconfig
+@@ -1,7 +1,7 @@
+ #
+ # Automatically generated make config: don't edit
+ # Linux kernel version: 2.6.29
+-# Wed Mar 25 17:21:37 2009
++# Wed Mar 25 17:47:16 2009
+ #
+ CONFIG_ARM=y
+ CONFIG_HAVE_PWM=y
+@@ -814,8 +814,15 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y
+ # CONFIG_INPUT_JOYSTICK is not set
+ # CONFIG_INPUT_TABLET is not set
+ CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_FILTER=y
++CONFIG_TOUCHSCREEN_FILTER_GROUP=y
++CONFIG_TOUCHSCREEN_FILTER_MEDIAN=y
++CONFIG_TOUCHSCREEN_FILTER_MEAN=y
++CONFIG_TOUCHSCREEN_FILTER_LINEAR=y
+ # CONFIG_TOUCHSCREEN_ADS7846 is not set
+ # CONFIG_TOUCHSCREEN_FUJITSU is not set
++CONFIG_TOUCHSCREEN_S3C2410=y
++# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+ # CONFIG_TOUCHSCREEN_GUNZE is not set
+ # CONFIG_TOUCHSCREEN_ELO is not set
+ # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+@@ -1302,6 +1309,7 @@ CONFIG_LOGO=y
+ # CONFIG_LOGO_LINUX_MONO is not set
+ # CONFIG_LOGO_LINUX_VGA16 is not set
+ # CONFIG_LOGO_LINUX_CLUT224 is not set
++CONFIG_LOGO_ARMWORKS_CLUT224=y
+ CONFIG_SOUND=y
+ CONFIG_SOUND_OSS_CORE=y
+ CONFIG_SND=y
+diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c
+index 0cddb11..9f7d0ff 100644
+--- a/arch/arm/mach-s3c2440/mach-mini2440.c
++++ b/arch/arm/mach-s3c2440/mach-mini2440.c
+@@ -48,6 +48,16 @@
+ #include <plat/mci.h>
+ #include <plat/udc.h>
+
++/*
++ * This is compiled conditionaly, as:
++ * 1) not everyone needs the touchscreen
++ * 2) that s3c_ts code might not have been added
++ * to the kernel with this file
++ */
++#ifdef CONFIG_TOUCHSCREEN_S3C2410
++#include <mach/ts.h>
++#endif
++
+ #include <plat/regs-serial.h>
+ #include <mach/regs-gpio.h>
+ #include <mach/regs-mem.h>
+@@ -64,6 +74,13 @@
+
+ #include <sound/s3c24xx_uda134x.h>
+
++#ifdef CONFIG_TOUCHSCREEN_FILTER
++#include <../drivers/input/touchscreen/ts_filter_linear.h>
++#include <../drivers/input/touchscreen/ts_filter_mean.h>
++#include <../drivers/input/touchscreen/ts_filter_median.h>
++#include <../drivers/input/touchscreen/ts_filter_group.h>
++#endif
++
+ #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
+
+ static struct map_desc mini2440_iodesc[] __initdata = {
+@@ -123,6 +140,69 @@ static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = {
+ .udc_command = mini2440_udc_pullup,
+ };
+
++/* touchscreen configuration */
++
++#ifdef CONFIG_TOUCHSCREEN_FILTER
++static struct ts_filter_linear_configuration mini2440_ts_linear_config __initdata = {
++ .constants = {
++ 0, /* x factor */
++ 1, /* y proportion */
++ 0, /* x offset */
++
++ 1, /* x factor */
++ 0, /* y factor */
++ 0, /* y offset */
++
++ 1 /* common divisor */
++ },
++ .coord0 = 0,
++ .coord1 = 1,
++};
++
++static struct ts_filter_group_configuration mini2440_ts_group_config __initdata = {
++ .extent = 12,
++ .close_enough = 10,
++ .threshold = 6, /* at least half of the points in a group */
++ .attempts = 10,
++};
++
++static struct ts_filter_median_configuration mini2440_ts_median_config __initdata = {
++ .extent = 20,
++ .decimation_below = 3,
++ .decimation_threshold = 8 * 3,
++ .decimation_above = 4,
++};
++
++static struct ts_filter_mean_configuration mini2440_ts_mean_config __initdata = {
++ .bits_filter_length = 2, /* 4 points */
++};
++
++static struct s3c2410_ts_mach_info mini2440_ts_cfg __initdata = {
++ .delay = 10000,
++ .presc = 0xff, /* slow as we can go */
++ .filter_sequence = {
++ [0] = &ts_filter_group_api,
++ [1] = &ts_filter_median_api,
++ [2] = &ts_filter_mean_api,
++ [3] = &ts_filter_linear_api,
++ },
++ .filter_config = {
++ [0] = &mini2440_ts_group_config,
++ [1] = &mini2440_ts_median_config,
++ [2] = &mini2440_ts_mean_config,
++ [3] = &mini2440_ts_linear_config,
++ },
++};
++#else /* !CONFIG_TOUCHSCREEN_FILTER */
++#ifdef CONFIG_TOUCHSCREEN_S3C2410
++static struct s3c2410_ts_mach_info mini2440_ts_cfg = {
++ .delay = 10000,
++ .presc = 0xff, /* slow as we can go */
++};
++#endif /* CONFIG_TOUCHSCREEN_S3C2410 */
++#endif
++
++/* LCD driver info */
+
+ /* LCD timing and setup */
+
+@@ -646,8 +726,18 @@ static void mini2440_parse_features(
+ features->done |= FEATURE_BACKLIGHT;
+ break;
+ case 't':
+- printk(KERN_INFO "MINI2440: '%c' ignored, "
+- "touchscreen not compiled in\n", f);
++#ifdef CONFIG_TOUCHSCREEN_S3C2410
++ if (features->done & FEATURE_TOUCH)
++ printk(KERN_INFO "MINI2440: '%c' ignored, "
++ "touchscreen already set\n", f);
++ else
++ features->optional[features->count++] =
++ &s3c_device_ts;
++ features->done |= FEATURE_TOUCH;
++#else
++ printk(KERN_INFO "MINI2440: '%c' ignored, "
++ "touchscreen not compiled in\n", f);
++#endif
+ break;
+ case 'c':
+ if (features->done & FEATURE_CAMERA)
+@@ -714,6 +804,11 @@ static void __init mini2440_init(void)
+ i2c_register_board_info(0, mini2440_i2c_devs,
+ ARRAY_SIZE(mini2440_i2c_devs));
+
++#ifdef CONFIG_TOUCHSCREEN_S3C2410
++ if (features.done & FEATURE_TOUCH)
++ set_s3c2410ts_info(&mini2440_ts_cfg);
++#endif
++
+ platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
+
+ if (features.count) /* the optional features */
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/0012-GRO-Disable-GRO-on-legacy-netif_rx-path.patch b/recipes/linux/linux-2.6.29/micro2440/0012-GRO-Disable-GRO-on-legacy-netif_rx-path.patch
new file mode 100644
index 0000000000..bfad6d80eb
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/0012-GRO-Disable-GRO-on-legacy-netif_rx-path.patch
@@ -0,0 +1,54 @@
+From 11c0b33d2a046a37bcd96528faa0e93359ef4a4b Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Thu, 26 Mar 2009 00:59:10 -0700
+Subject: [PATCH] GRO: Disable GRO on legacy netif_rx path
+
+When I fixed the GRO crash in the legacy receive path I used
+napi_complete to replace __napi_complete. Unfortunately they're
+not the same when NETPOLL is enabled, which may result in us
+not calling __napi_complete at all.
+
+What's more, we really do need to keep the __napi_complete call
+within the IRQ-off section since in theory an IRQ can occur in
+between and fill up the backlog to the maximum, causing us to
+lock up.
+
+Since we can't seem to find a fix that works properly right now,
+this patch reverts all the GRO support from the netif_rx path.
+
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Michel Pollet <buserror@gmail.com>
+---
+ net/core/dev.c | 9 +++------
+ 1 files changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index e3fe5c7..e438f54 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2588,18 +2588,15 @@ static int process_backlog(struct napi_struct *napi, int quota)
+ local_irq_disable();
+ skb = __skb_dequeue(&queue->input_pkt_queue);
+ if (!skb) {
++ __napi_complete(napi);
+ local_irq_enable();
+- napi_complete(napi);
+- goto out;
++ break;
+ }
+ local_irq_enable();
+
+- napi_gro_receive(napi, skb);
++ netif_receive_skb(skb);
+ } while (++work < quota && jiffies == start_time);
+
+- napi_gro_flush(napi);
+-
+-out:
+ return work;
+ }
+
+--
+1.5.6.3
+
diff --git a/recipes/linux/linux-2.6.29/micro2440/defconfig b/recipes/linux/linux-2.6.29/micro2440/defconfig
new file mode 100644
index 0000000000..e11a85a8f7
--- /dev/null
+++ b/recipes/linux/linux-2.6.29/micro2440/defconfig
@@ -0,0 +1,2053 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.29
+# Sat Apr 4 16:57:10 2009
+#
+CONFIG_ARM=y
+CONFIG_HAVE_PWM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_GENERIC_TIME is not set
+# CONFIG_GENERIC_CLOCKEVENTS is not set
+CONFIG_MMU=y
+CONFIG_NO_IOPORT=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=17
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+CONFIG_RELAY=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_NET_NS is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_BLK_DEV_INTEGRITY=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_S3C2410=y
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_W90X900 is not set
+CONFIG_PLAT_S3C24XX=y
+CONFIG_S3C2410_CLOCK=y
+CONFIG_CPU_S3C244X=y
+CONFIG_S3C24XX_PWM=y
+CONFIG_S3C24XX_GPIO_EXTRA=0
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_S3C24XX_ADC=y
+CONFIG_PLAT_S3C=y
+CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y
+CONFIG_CPU_LLSERIAL_S3C2440=y
+
+#
+# Boot options
+#
+# CONFIG_S3C_BOOT_WATCHDOG is not set
+# CONFIG_S3C_BOOT_ERROR_RESET is not set
+CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
+
+#
+# Power management
+#
+# CONFIG_S3C2410_PM_DEBUG is not set
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C_LOWLEVEL_UART_PORT=0
+CONFIG_S3C_GPIO_SPACE=0
+
+#
+# S3C2400 Machines
+#
+CONFIG_S3C2410_PM=y
+CONFIG_S3C2410_GPIO=y
+
+#
+# S3C2410 Machines
+#
+# CONFIG_ARCH_SMDK2410 is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_AML_M5900 is not set
+# CONFIG_MACH_TCT_HAMMER is not set
+# CONFIG_MACH_VR1000 is not set
+# CONFIG_MACH_QT2410 is not set
+
+#
+# S3C2412 Machines
+#
+# CONFIG_MACH_JIVE is not set
+# CONFIG_MACH_SMDK2413 is not set
+# CONFIG_MACH_SMDK2412 is not set
+# CONFIG_MACH_VSTMS is not set
+CONFIG_CPU_S3C2440=y
+CONFIG_S3C2440_DMA=y
+
+#
+# S3C2440 Machines
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_MACH_RX3715 is not set
+# CONFIG_ARCH_S3C2440 is not set
+# CONFIG_MACH_NEXCODER_2440 is not set
+# CONFIG_MACH_AT2440EVB is not set
+CONFIG_MACH_MINI2440=y
+
+#
+# S3C2442 Machines
+#
+
+#
+# S3C2443 Machines
+#
+# CONFIG_MACH_SMDK2443 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=200
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_UNEVICTABLE_LRU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Power Management
+#
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_APM_EMULATION=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_COMPAT_NET_DEV_OPS=y
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=m
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NF_CONNTRACK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_NF_DEFRAG_IPV4 is not set
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_STP=m
+CONFIG_GARP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=m
+CONFIG_CFG80211_REG_DEBUG=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_FTL=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=y
+CONFIG_RFD_FTL=y
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+CONFIG_MTD_RAM=y
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_IMPA7 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+# CONFIG_MTD_NAND_S3C2410_HWECC is not set
+# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+CONFIG_MTD_LPDDR=y
+CONFIG_MTD_QINFO_PROBE=y
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=65536
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=y
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+CONFIG_DM9000_DEBUGLEVEL=4
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+# CONFIG_LIBERTAS_USB is not set
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_IWLWIFI_LEDS is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+CONFIG_ZD1211RW=m
+CONFIG_ZD1211RW_DEBUG=y
+# CONFIG_RT2X00 is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=y
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_FILTER=y
+CONFIG_TOUCHSCREEN_FILTER_GROUP=y
+CONFIG_TOUCHSCREEN_FILTER_MEDIAN=y
+CONFIG_TOUCHSCREEN_FILTER_MEAN=y
+CONFIG_TOUCHSCREEN_FILTER_LINEAR=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=y
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SAMSUNG=y
+CONFIG_SERIAL_SAMSUNG_UARTS=3
+CONFIG_SERIAL_SAMSUNG_CONSOLE=y
+CONFIG_SERIAL_S3C2440=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=128
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_S3C2410=y
+CONFIG_I2C_SIMTEC=y
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+CONFIG_SENSORS_TSL2550=y
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_GPIO is not set
+CONFIG_SPI_S3C24XX=y
+# CONFIG_SPI_S3C24XX_GPIO is not set
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SPIDEV=y
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=m
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_S3C2410_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_PCF50633 is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+# CONFIG_MEDIA_ATTACH is not set
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_VIDEO_AU0828 is not set
+CONFIG_SOC_CAMERA=m
+# CONFIG_SOC_CAMERA_MT9M001 is not set
+# CONFIG_SOC_CAMERA_MT9M111 is not set
+# CONFIG_SOC_CAMERA_MT9T031 is not set
+# CONFIG_SOC_CAMERA_MT9V022 is not set
+# CONFIG_SOC_CAMERA_TW9910 is not set
+CONFIG_SOC_CAMERA_PLATFORM=m
+# CONFIG_SOC_CAMERA_OV772X is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_USB_VIDEO_CLASS is not set
+CONFIG_USB_GSPCA=m
+# CONFIG_USB_M5602 is not set
+# CONFIG_USB_STV06XX is not set
+# CONFIG_USB_GSPCA_CONEX is not set
+# CONFIG_USB_GSPCA_ETOMS is not set
+# CONFIG_USB_GSPCA_FINEPIX is not set
+# CONFIG_USB_GSPCA_MARS is not set
+# CONFIG_USB_GSPCA_OV519 is not set
+# CONFIG_USB_GSPCA_OV534 is not set
+# CONFIG_USB_GSPCA_PAC207 is not set
+# CONFIG_USB_GSPCA_PAC7311 is not set
+# CONFIG_USB_GSPCA_SONIXB is not set
+# CONFIG_USB_GSPCA_SONIXJ is not set
+# CONFIG_USB_GSPCA_SPCA500 is not set
+# CONFIG_USB_GSPCA_SPCA501 is not set
+# CONFIG_USB_GSPCA_SPCA505 is not set
+# CONFIG_USB_GSPCA_SPCA506 is not set
+# CONFIG_USB_GSPCA_SPCA508 is not set
+# CONFIG_USB_GSPCA_SPCA561 is not set
+# CONFIG_USB_GSPCA_STK014 is not set
+# CONFIG_USB_GSPCA_SUNPLUS is not set
+# CONFIG_USB_GSPCA_T613 is not set
+# CONFIG_USB_GSPCA_TV8532 is not set
+# CONFIG_USB_GSPCA_VC032X is not set
+CONFIG_USB_GSPCA_ZC3XX=m
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_SI470X is not set
+# CONFIG_USB_MR800 is not set
+# CONFIG_RADIO_TEA5764 is not set
+# CONFIG_DVB_DYNAMIC_MINORS is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Supported USB Adapters
+#
+# CONFIG_DVB_USB is not set
+# CONFIG_DVB_SIANO_SMS1XXX is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# Multistandard (satellite) frontends
+#
+# CONFIG_DVB_STB0899 is not set
+# CONFIG_DVB_STB6100 is not set
+
+#
+# DVB-S (satellite) frontends
+#
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_S5H1420 is not set
+# CONFIG_DVB_STV0288 is not set
+# CONFIG_DVB_STB6000 is not set
+# CONFIG_DVB_STV0299 is not set
+# CONFIG_DVB_TDA8083 is not set
+# CONFIG_DVB_TDA10086 is not set
+# CONFIG_DVB_TDA8261 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_TUNER_ITD1000 is not set
+# CONFIG_DVB_TUNER_CX24113 is not set
+# CONFIG_DVB_TDA826X is not set
+# CONFIG_DVB_TUA6100 is not set
+# CONFIG_DVB_CX24116 is not set
+# CONFIG_DVB_SI21XX is not set
+
+#
+# DVB-T (terrestrial) frontends
+#
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+# CONFIG_DVB_CX22700 is not set
+# CONFIG_DVB_CX22702 is not set
+# CONFIG_DVB_DRX397XD is not set
+# CONFIG_DVB_L64781 is not set
+# CONFIG_DVB_TDA1004X is not set
+# CONFIG_DVB_NXT6000 is not set
+# CONFIG_DVB_MT352 is not set
+# CONFIG_DVB_ZL10353 is not set
+# CONFIG_DVB_DIB3000MB is not set
+# CONFIG_DVB_DIB3000MC is not set
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+# CONFIG_DVB_TDA10048 is not set
+
+#
+# DVB-C (cable) frontends
+#
+# CONFIG_DVB_VES1820 is not set
+# CONFIG_DVB_TDA10021 is not set
+# CONFIG_DVB_TDA10023 is not set
+# CONFIG_DVB_STV0297 is not set
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+# CONFIG_DVB_LGDT330X is not set
+# CONFIG_DVB_LGDT3304 is not set
+# CONFIG_DVB_S5H1409 is not set
+# CONFIG_DVB_AU8522 is not set
+# CONFIG_DVB_S5H1411 is not set
+
+#
+# ISDB-T (terrestrial) frontends
+#
+# CONFIG_DVB_S921 is not set
+
+#
+# Digital terrestrial only tuners/PLL
+#
+# CONFIG_DVB_PLL is not set
+# CONFIG_DVB_TUNER_DIB0070 is not set
+
+#
+# SEC control devices for DVB-S
+#
+# CONFIG_DVB_LNBP21 is not set
+# CONFIG_DVB_ISL6405 is not set
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_LGS8GL5 is not set
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+# CONFIG_DVB_AF9013 is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=y
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_ARMWORKS_CLUT224=y
+CONFIG_SOUND=y
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_SOC=y
+CONFIG_SND_S3C24XX_SOC=y
+CONFIG_SND_S3C24XX_SOC_I2S=y
+# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
+CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X=y
+CONFIG_SND_SOC_I2C_AND_SPI=y
+# CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SOC_L3=y
+CONFIG_SND_SOC_UDA134X=y
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_COMPAT=y
+CONFIG_HID_A4TECH=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+CONFIG_HID_CYPRESS=y
+CONFIG_HID_EZKEY=y
+CONFIG_HID_GYRATION=y
+CONFIG_HID_LOGITECH=y
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+CONFIG_HID_NTRIG=y
+CONFIG_HID_PANTHERLORD=y
+# CONFIG_PANTHERLORD_FF is not set
+CONFIG_HID_PETALYNX=y
+CONFIG_HID_SAMSUNG=y
+CONFIG_HID_SONY=y
+CONFIG_HID_SUNPLUS=y
+# CONFIG_GREENASIA_FF is not set
+CONFIG_HID_TOPSEED=y
+# CONFIG_THRUSTMASTER_FF is not set
+# CONFIG_ZEROPLUS_FF is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+# CONFIG_USB_PRINTER is not set
+CONFIG_USB_WDM=m
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+#
+
+#
+# see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+# CONFIG_USB_STORAGE_FREECOM is not set
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=m
+# CONFIG_USB_EZUSB is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+CONFIG_USB_SERIAL_CP2101=m
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_IUU is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_MOTOROLA is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SERIAL_SPCP8X5=m
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_IMX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_CI13XXX is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+CONFIG_USB_CDC_COMPOSITE=m
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_USB_GPIO_VBUS is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SPI=y
+CONFIG_MMC_S3C=y
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_S3C24XX=y
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_PCA955X is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_S3C=y
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+# CONFIG_REGULATOR is not set
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_ECRYPT_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+CONFIG_ROMFS_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_REGISTER_V4 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=1024
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+
+#
+# Tracers
+#
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_BOOT_TRACER is not set
+# CONFIG_TRACE_BRANCH_PROFILING is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_S3C_UART=0
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_SECURITY_FILE_CAPABILITIES=y
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=m
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XTS=m
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_DMA=y
diff --git a/recipes/linux/linux_2.6.29.bb b/recipes/linux/linux_2.6.29.bb
index 1ba739b325..a4a3daf178 100644
--- a/recipes/linux/linux_2.6.29.bb
+++ b/recipes/linux/linux_2.6.29.bb
@@ -11,6 +11,7 @@ DEFAULT_PREFERENCE_canyonlands = "1"
DEFAULT_PREFERENCE_tosa = "1"
DEFAULT_PREFERENCE_vortex86sx = "1"
DEFAULT_PREFERENCE_atngw100 = "1"
+DEFAULT_PREFERENCE_micro2440 = "1"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.29.tar.bz2 \
file://defconfig"
@@ -31,6 +32,21 @@ SRC_URI_append_canyonlands = " \
file://0001-powerpc-4xx-Add-PPC4xx-PCIe-MSI-support.patch;patch=1 \
"
+SRC_URI_append_micro2440 = " \
+ file://0001-S3C-Backported-the-s3c2410-touchscreen-from-openmok.patch;patch=1 \
+ file://0002-S3C-Backported-openmoko-s-touchscreen-filters.patch;patch=1 \
+ file://0003-VENDOR-armworks-logo.patch;patch=1 \
+ file://0004-920T-Use-specific-920t-mtune.patch;patch=1 \
+ file://0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch;patch=1 \
+ file://0006-S3C-Allow-the-machine-code-to-get-the-BBT-table-fro.patch;patch=1 \
+ file://0007-MINI2440-Add-machine-support.patch;patch=1 \
+ file://0008-MINI2440-Delays-command-check-response-on-SD.patch;patch=1 \
+ file://0009-MINI2440-Rename-the-SoC-tty-names.patch;patch=1 \
+ file://0010-MINI2440-creates-a-mini2440_defconfig-file.patch;patch=1 \
+ file://0011-MINI2440-Add-touchscreen-support.patch;patch=1 \
+ file://0012-GRO-Disable-GRO-on-legacy-netif_rx-path.patch;patch=1 \
+ "
+
SRC_URI_append_tosa = " \
file://0001-pxa-make-second-argument-of-clk_add_alias-a-name-in.patch;patch=1 \
file://0002-spi-pxa2xx-spi-set-default-cs_control-to-null_cs_co.patch;patch=1 \
diff --git a/recipes/uclibc/uclibc.inc b/recipes/uclibc/uclibc.inc
index be085ab513..f2f3e9b605 100644
--- a/recipes/uclibc/uclibc.inc
+++ b/recipes/uclibc/uclibc.inc
@@ -208,7 +208,7 @@ do_install() {
rmdir ${D}/usr/bin
fi
- oe_runmake utils
+ oe_runmake "SSP_ALL_CFLAGS=${TARGET_LINK_HASH_STYLE}" utils
oe_runmake STRIPTOOL=true PREFIX=${D} DEVEL_PREFIX=${prefix}/ RUNTIME_PREFIX=/ \
install_utils