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