linux: initial micro2440 support for 2.6.29 using mini2440 kernel patches.
authorFlorian Boor <florian.boor@kernelconcepts.de>
Wed, 15 Apr 2009 09:49:06 +0000 (11:49 +0200)
committerFlorian Boor <florian.boor@kernelconcepts.de>
Wed, 15 Apr 2009 09:59:02 +0000 (11:59 +0200)
14 files changed:
recipes/linux/linux-2.6.29/micro2440/0001-S3C-Backported-the-s3c2410-touchscreen-from-openmok.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0002-S3C-Backported-openmoko-s-touchscreen-filters.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0003-VENDOR-armworks-logo.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0004-920T-Use-specific-920t-mtune.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0006-S3C-Allow-the-machine-code-to-get-the-BBT-table-fro.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0007-MINI2440-Add-machine-support.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0008-MINI2440-Delays-command-check-response-on-SD.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0009-MINI2440-Rename-the-SoC-tty-names.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0010-MINI2440-creates-a-mini2440_defconfig-file.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0011-MINI2440-Add-touchscreen-support.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/0012-GRO-Disable-GRO-on-legacy-netif_rx-path.patch [new file with mode: 0644]
recipes/linux/linux-2.6.29/micro2440/defconfig [new file with mode: 0644]
recipes/linux/linux_2.6.29.bb

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 (file)
index 0000000..4e3b300
--- /dev/null
@@ -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 (file)
index 0000000..c171db8
--- /dev/null
@@ -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 (file)
index 0000000..47909aa
--- /dev/null
@@ -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 (file)
index 0000000..d6e2b4d
--- /dev/null
@@ -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 (file)
index 0000000..6b8aaf4
--- /dev/null
@@ -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 (file)
index 0000000..f506462
--- /dev/null
@@ -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 (file)
index 0000000..fd803dd
--- /dev/null
@@ -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 (file)
index 0000000..94b1925
--- /dev/null
@@ -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 (file)
index 0000000..9e9f606
--- /dev/null
@@ -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 (file)
index 0000000..1470baa
--- /dev/null
@@ -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 (file)
index 0000000..2b9c8c0
--- /dev/null
@@ -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 (file)
index 0000000..bfad6d8
--- /dev/null
@@ -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 (file)
index 0000000..e11a85a
--- /dev/null
@@ -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
index 1ba739b..a4a3daf 100644 (file)
@@ -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 \