aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-openmoko-2.6.32
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-openmoko-2.6.32')
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0001-wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch6
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0002-accels.patch.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0017-accels.patch.patch)16
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0003-usbhost.patch.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0018-usbhost.patch.patch)12
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0004-ar6000_delay.patch.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0019-ar6000_delay.patch.patch)6
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0005-Add-JBT6k74-hook-for-use-by-KMS.patch49
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0005-save_regs.patch.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0020-save_regs.patch.patch)6
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0006-glamo-drm-use-dev_set_drvdata-instead-of-setting-dri.patch29
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch66
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0007-DRM-for-platform-devices.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0002-DRM-for-platform-devices.patch)6
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0007-glamo-drm-select-DRM_KMS_HELPER-for-crtc-functions.patch24
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0008-Glamo-DRM-and-KMS-driver.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0003-Glamo-DRM-and-KMS-driver.patch)605
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0009-A-couple-of-GEM-refcounting-fixes.patch42
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0009-Work-on-Glamo-core-for-DRM.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0004-Work-on-Glamo-core-for-DRM.patch)33
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0010-JBT6k74-work-for-KMS.patch540
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0010-Simplify-the-JBT6k74-driver.patch667
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0011-Don-t-choke-if-userspace-provides-a-pixel-clock-valu.patch79
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0011-Fix-crash-when-reading-Glamo-registers-via-sysfs.patch (renamed from recipes/linux/linux-openmoko-2.6.32/0008-Fix-crash-when-reading-Glamo-registers-via-sysfs.patch)8
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0012-Fix-dynamic-command-queue-allocation.patch131
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0012-Report-all-FB-modes-given-by-the-lower-levels.patch102
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0013-Change-connector-type-to-LVDS.patch29
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0013-Debug-statements-for-testing.patch78
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch223
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0014-Fix-claim-of-2D-register-resource.patch27
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0015-ar6000-send-userspace-an-event-on-disconnection.patch42
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0016-Enable-display-before-trying-to-set-mode-or-base.patch103
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0021-gta02_defconfig.patch2143
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0022-gta02_drm_defconfig.patch2169
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0023-Re-enable-Glamo-fence-IRQ-if-it-sticks.patch36
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0024-Fix-KMS-framebuffer-physical-address.patch38
29 files changed, 1227 insertions, 6088 deletions
diff --git a/recipes/linux/linux-openmoko-2.6.32/0001-wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch b/recipes/linux/linux-openmoko-2.6.32/0001-wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch
index c6a16ab4d5..52fe6262cc 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0001-wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0001-wm8753-fix-build-with-gcc-4.4.2-which-works-ok-with-.patch
@@ -1,7 +1,7 @@
-From b3b22a8f23e6b49d21bbfe70f278a0d79419e3df Mon Sep 17 00:00:00 2001
+From 16722526979959805c493deabaac8cf9ba2f8ef6 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Sat, 7 Nov 2009 20:33:06 +0100
-Subject: [PATCH 1/9] wm8753: fix build with gcc-4.4.2, which works ok with 4.1.2
+Subject: [PATCH 01/14] wm8753: fix build with gcc-4.4.2, which works ok with 4.1.2
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
@@ -24,5 +24,5 @@ index 5ad677c..e148406 100644
K = Kpart & 0xFFFFFFFF;
--
-1.6.6.1
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0017-accels.patch.patch b/recipes/linux/linux-openmoko-2.6.32/0002-accels.patch.patch
index 16f379d055..9644473eda 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0017-accels.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0002-accels.patch.patch
@@ -1,7 +1,7 @@
-From a08be3ba79daf13baca6de98249c8784ede31297 Mon Sep 17 00:00:00 2001
+From b96dbc75c274014171a53da13686bd90d239c023 Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:15:40 +0200
-Subject: [PATCH 17/22] accels.patch
+Subject: [PATCH 02/14] accels.patch
adds support for accelerometers. You will need include/linux/lis302dl.h and
drivers/input/misc/lis302dl.c from andy-tracking. The patch needs
@@ -39,7 +39,7 @@ index 980a099..0ff8949 100644
diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
-index b580b1b..8e3cc91 100644
+index 7965cad..0675181 100644
--- a/arch/arm/mach-s3c2442/mach-gta02.c
+++ b/arch/arm/mach-s3c2442/mach-gta02.c
@@ -63,6 +63,7 @@
@@ -73,7 +73,7 @@ index b580b1b..8e3cc91 100644
struct pcf50633 *gta02_pcf;
/*
-@@ -776,6 +793,60 @@ const struct jbt6k74_platform_data jbt6k74_pdata = {
+@@ -775,6 +792,60 @@ const struct jbt6k74_platform_data jbt6k74_pdata = {
.gpio_reset = GTA02_GPIO_GLAMO(4),
};
@@ -134,7 +134,7 @@ index b580b1b..8e3cc91 100644
static struct spi_board_info gta02_spi_board_info[] = {
{
.modalias = "jbt6k74",
-@@ -786,6 +857,81 @@ static struct spi_board_info gta02_spi_board_info[] = {
+@@ -785,6 +856,81 @@ static struct spi_board_info gta02_spi_board_info[] = {
.bus_num = 2,
.chip_select = 0
},
@@ -216,7 +216,7 @@ index b580b1b..8e3cc91 100644
};
/* BQ27000 Battery */
-@@ -1136,6 +1282,7 @@ static struct platform_device *gta02_devices[] __initdata = {
+@@ -1135,6 +1281,7 @@ static struct platform_device *gta02_devices[] __initdata = {
static struct platform_device *gta02_devices_pmu_children[] = {
&s3c_device_ts,
&gta02_glamo_dev,
@@ -224,7 +224,7 @@ index b580b1b..8e3cc91 100644
&s3c_device_timer[2],
&gta02_hdq_device,
&gta02_gps_userspace_consumer
-@@ -1362,6 +1509,16 @@ static void __init gta02_machine_init(void)
+@@ -1361,6 +1508,16 @@ static void __init gta02_machine_init(void)
/* Set the panic callback to make AUX LED blink at ~5Hz. */
panic_blink = gta02_panic_blink;
@@ -1755,5 +1755,5 @@ index eed4254..f92de01 100644
/* start or stop queue processing */
extern int spi_bitbang_start(struct spi_bitbang *spi);
--
-1.7.0.4
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0018-usbhost.patch.patch b/recipes/linux/linux-openmoko-2.6.32/0003-usbhost.patch.patch
index 16ed3746fd..80b05eac18 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0018-usbhost.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0003-usbhost.patch.patch
@@ -1,7 +1,7 @@
-From d71534de6ab5e132d0798df30408042c229cbb62 Mon Sep 17 00:00:00 2001
+From 1000aee5e65dc824e02aafe2a70ad5b3f0d44d2d Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:17:28 +0200
-Subject: [PATCH 18/22] usbhost.patch
+Subject: [PATCH 03/14] usbhost.patch
adds support for usb host mode and adds usb host pm sysfs node. I just copied
and modified how modem is powered up and backported changes in ohci-s3c2410.c.
@@ -32,7 +32,7 @@ index 6247ca0..3e7145c 100644
# Machine support
diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
-index 8e3cc91..f1d4d51 100644
+index 0675181..779d6df 100644
--- a/arch/arm/mach-s3c2442/mach-gta02.c
+++ b/arch/arm/mach-s3c2442/mach-gta02.c
@@ -322,6 +322,10 @@ static struct platform_device gta02_pm_gsm_dev = {
@@ -106,7 +106,7 @@ index 8e3cc91..f1d4d51 100644
static struct regulator_bulk_data gta02_gps_consumer_supply = {
.supply = "GPS",
};
-@@ -1332,12 +1368,17 @@ static struct platform_device* gta02_glamo_gpio_children[] = {
+@@ -1331,12 +1367,17 @@ static struct platform_device* gta02_glamo_gpio_children[] = {
static struct platform_device* gta02_pcf50633_gpio_children[] = {
&gta02_gsm_supply_device,
@@ -124,7 +124,7 @@ index 8e3cc91..f1d4d51 100644
static struct platform_device* gta02_hdq_children[] = {
&bq27000_battery_device,
};
-@@ -1364,14 +1405,19 @@ static struct gta02_device_children gta02_device_children[] = {
+@@ -1363,14 +1404,19 @@ static struct gta02_device_children gta02_device_children[] = {
},
{
.dev_name = "pcf50633-gpio",
@@ -229,5 +229,5 @@ index a68af2d..02bd7b0 100644
s3c2410_stop_hc(dev);
iounmap(hcd->regs);
--
-1.7.0.4
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0019-ar6000_delay.patch.patch b/recipes/linux/linux-openmoko-2.6.32/0004-ar6000_delay.patch.patch
index 54200d558f..104a8c8951 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0019-ar6000_delay.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0004-ar6000_delay.patch.patch
@@ -1,7 +1,7 @@
-From cf93a0f8d2d61a2e13590c261dee4c4d74412db7 Mon Sep 17 00:00:00 2001
+From c9580261d79d8d1664fbd2da52dcd2148da9ef14 Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:18:02 +0200
-Subject: [PATCH 19/22] ar6000_delay.patch
+Subject: [PATCH 04/14] ar6000_delay.patch
patch from https://docs.openmoko.org/trac/ticket/2327 - wifi is working good
(100% until now) for me with this patch.
@@ -207,5 +207,5 @@ index 386d96e..90178d0 100644
if (ret == A_OK)
return 0;
--
-1.7.0.4
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0005-Add-JBT6k74-hook-for-use-by-KMS.patch b/recipes/linux/linux-openmoko-2.6.32/0005-Add-JBT6k74-hook-for-use-by-KMS.patch
deleted file mode 100644
index 744004e7b1..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0005-Add-JBT6k74-hook-for-use-by-KMS.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 972c0a58e9e238c266adc77c88dcd8de6f123742 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Sat, 21 Nov 2009 21:42:16 +0100
-Subject: [PATCH 5/9] Add JBT6k74 hook for use by KMS
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/video/backlight/jbt6k74.c | 18 ++++++++++++++++++
- 1 files changed, 18 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
-index 8450904..95ca4cf 100644
---- a/drivers/video/backlight/jbt6k74.c
-+++ b/drivers/video/backlight/jbt6k74.c
-@@ -698,6 +698,22 @@ static int jbt6k74_get_power(struct lcd_device *ld)
- }
- }
-
-+/* This is utterly, totally horrible. I'm REALLY sorry... */
-+struct jbt_info *jbt_global;
-+void jbt6k74_action(int val)
-+{
-+ if ( !jbt_global ) {
-+ printk(KERN_CRIT "JBT not initialised!!!\n");
-+ return;
-+ }
-+ if ( val == 0 ) {
-+ jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_SLEEP);
-+ } else {
-+ jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_NORMAL);
-+ }
-+}
-+EXPORT_SYMBOL_GPL(jbt6k74_action);
-+
- struct lcd_ops jbt6k74_lcd_ops = {
- .set_power = jbt6k74_set_power,
- .get_power = jbt6k74_get_power,
-@@ -728,6 +744,8 @@ static int __devinit jbt_probe(struct spi_device *spi)
- if (!jbt)
- return -ENOMEM;
-
-+ jbt_global = jbt;
-+
- jbt->spi = spi;
-
- jbt->lcd_dev = lcd_device_register("jbt6k74-lcd", &spi->dev, jbt,
---
-1.6.6.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0020-save_regs.patch.patch b/recipes/linux/linux-openmoko-2.6.32/0005-save_regs.patch.patch
index 8fc2cea326..7873f850e4 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0020-save_regs.patch.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0005-save_regs.patch.patch
@@ -1,7 +1,7 @@
-From a9d6c115089a0a34fbca89c539de50148a2cf34e Mon Sep 17 00:00:00 2001
+From f143dfe95e9b48aebc8fad111086a25c915bf479 Mon Sep 17 00:00:00 2001
From: Radek Polak <psonek2@seznam.cz>
Date: Fri, 9 Apr 2010 09:22:23 +0200
-Subject: [PATCH 20/22] save_regs.patch
+Subject: [PATCH 05/14] save_regs.patch
With this patch wifi can survive suspend.
---
@@ -136,5 +136,5 @@ index e4898e9..b49d674 100644
extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int);
extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *,
--
-1.7.0.4
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0006-glamo-drm-use-dev_set_drvdata-instead-of-setting-dri.patch b/recipes/linux/linux-openmoko-2.6.32/0006-glamo-drm-use-dev_set_drvdata-instead-of-setting-dri.patch
deleted file mode 100644
index f685608253..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0006-glamo-drm-use-dev_set_drvdata-instead-of-setting-dri.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From be2d944c2b29b19b4cee7c64b00bd75cf7209724 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Tue, 22 Dec 2009 16:11:27 +0100
-Subject: [PATCH 6/9] glamo-drm: use dev_set_drvdata instead of setting driver_data directly
-
-* driver_data is private since 2.6.32
- http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b4028437876866aba4747a655ede00f892089e14
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- drivers/mfd/glamo/glamo-drm-drv.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c
-index f30097e..1907a47 100644
---- a/drivers/mfd/glamo/glamo-drm-drv.c
-+++ b/drivers/mfd/glamo/glamo-drm-drv.c
-@@ -347,7 +347,7 @@ out_release_regs:
- release_mem_region(gdrm->reg->start, resource_size(gdrm->reg));
- out_free:
- kfree(gdrm);
-- pdev->dev.driver_data = NULL;
-+ dev_set_drvdata(&pdev->dev, NULL);
- return rc;
- }
-
---
-1.6.6.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch b/recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch
new file mode 100644
index 0000000000..103c06c886
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.32/0006-gta02-defconfigs-enable-LEDS_S3C24XX-and-dummy-batte.patch
@@ -0,0 +1,66 @@
+From 7e4a1fee4f08ef7ccedd4706b4890afc71f37dc4 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 17 May 2010 12:41:06 +0200
+Subject: [PATCH 06/14] gta02 defconfigs, enable LEDS_S3C24XX and dummy battery driver
+
+---
+ arch/arm/configs/gta02_defconfig | 2 +-
+ arch/arm/configs/gta02_drm_defconfig | 10 +++++-----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/arch/arm/configs/gta02_defconfig b/arch/arm/configs/gta02_defconfig
+index 73d26ba..55832ac 100644
+--- a/arch/arm/configs/gta02_defconfig
++++ b/arch/arm/configs/gta02_defconfig
+@@ -1635,7 +1635,7 @@ CONFIG_LEDS_CLASS=y
+ #
+ # LED drivers
+ #
+-# CONFIG_LEDS_S3C24XX is not set
++CONFIG_LEDS_S3C24XX=y
+ # CONFIG_LEDS_PCA9532 is not set
+ CONFIG_LEDS_GPIO=y
+ CONFIG_LEDS_GPIO_PLATFORM=y
+diff --git a/arch/arm/configs/gta02_drm_defconfig b/arch/arm/configs/gta02_drm_defconfig
+index 05aa130..62c1ee4 100644
+--- a/arch/arm/configs/gta02_drm_defconfig
++++ b/arch/arm/configs/gta02_drm_defconfig
+@@ -1,7 +1,7 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.32.11
+-# Sun Apr 11 14:20:07 2010
++# Linux kernel version: 2.6.32.13
++# Mon May 17 14:13:35 2010
+ #
+ CONFIG_ARM=y
+ CONFIG_HAVE_PWM=y
+@@ -1233,7 +1233,7 @@ CONFIG_POWER_SUPPLY=y
+ CONFIG_CHARGER_PCF50633=y
+ CONFIG_BATTERY_BQ27000_HDQ=y
+ CONFIG_HDQ_GPIO_BITBANG=y
+-# CONFIG_BATTERY_PLATFORM is not set
++CONFIG_BATTERY_PLATFORM=y
+ # CONFIG_HWMON is not set
+ # CONFIG_THERMAL is not set
+ CONFIG_WATCHDOG=y
+@@ -1681,14 +1681,14 @@ CONFIG_LEDS_CLASS=y
+ #
+ # LED drivers
+ #
+-# CONFIG_LEDS_S3C24XX is not set
++CONFIG_LEDS_S3C24XX=y
+ # CONFIG_LEDS_PCA9532 is not set
+ CONFIG_LEDS_GPIO=y
+ CONFIG_LEDS_GPIO_PLATFORM=y
+ # CONFIG_LEDS_LP3944 is not set
+ # CONFIG_LEDS_PCA955X is not set
+ # CONFIG_LEDS_DAC124S085 is not set
+-# CONFIG_LEDS_PWM is not set
++CONFIG_LEDS_PWM=y
+ # CONFIG_LEDS_BD2802 is not set
+
+ #
+--
+1.7.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0002-DRM-for-platform-devices.patch b/recipes/linux/linux-openmoko-2.6.32/0007-DRM-for-platform-devices.patch
index 4e47a088d0..e16379fecf 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0002-DRM-for-platform-devices.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0007-DRM-for-platform-devices.patch
@@ -1,7 +1,7 @@
-From 660570997a5c998aaecc94798b6ea8d60b0da053 Mon Sep 17 00:00:00 2001
+From d05d2c82e2ec110720c5c714ad18d60ef676aa1d Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Tue, 20 Oct 2009 15:52:30 +0200
-Subject: [PATCH 2/9] DRM for platform devices
+Subject: [PATCH 07/14] DRM for platform devices
This modifies the DRM core in a small number of places to allow platform
devices to be used for direct rendering, alongside PCI devices.
@@ -454,5 +454,5 @@ index 7ad3faa..1d9a229 100644
extern int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
struct drm_driver *driver);
--
-1.6.6.1
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0007-glamo-drm-select-DRM_KMS_HELPER-for-crtc-functions.patch b/recipes/linux/linux-openmoko-2.6.32/0007-glamo-drm-select-DRM_KMS_HELPER-for-crtc-functions.patch
deleted file mode 100644
index 68751942a9..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0007-glamo-drm-select-DRM_KMS_HELPER-for-crtc-functions.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 8bb128ce2474ef10c71ea681fa01e574c1ec3114 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Tue, 22 Dec 2009 16:32:57 +0100
-Subject: [PATCH 7/9] glamo-drm: select DRM_KMS_HELPER for crtc functions
-
----
- drivers/mfd/glamo/Kconfig | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/mfd/glamo/Kconfig b/drivers/mfd/glamo/Kconfig
-index 214c70e..a12ebf6 100644
---- a/drivers/mfd/glamo/Kconfig
-+++ b/drivers/mfd/glamo/Kconfig
-@@ -47,6 +47,7 @@ config MFD_GLAMO_DRM
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
- select FB_CFB_IMAGEBLIT
-+ select DRM_KMS_HELPER
- help
- Direct Rendering Manager interface for the S-Media Glamo chip, as
- used in Openmoko FreeRunner (GTA02).
---
-1.6.6.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0003-Glamo-DRM-and-KMS-driver.patch b/recipes/linux/linux-openmoko-2.6.32/0008-Glamo-DRM-and-KMS-driver.patch
index 6c1cc415d9..cb680f1ed5 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0003-Glamo-DRM-and-KMS-driver.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0008-Glamo-DRM-and-KMS-driver.patch
@@ -1,30 +1,31 @@
-From eff70b6d14cc372944bbeda0dd0afe8599327f96 Mon Sep 17 00:00:00 2001
+From ee4092984dd817e3889a48c0b51c173e96c71913 Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Tue, 20 Oct 2009 16:14:55 +0200
-Subject: [PATCH 3/9] Glamo DRM and KMS driver
+Subject: [PATCH 08/14] Glamo DRM and KMS driver
-This adds the Glamo DRM and KMS driver, but not the modifications needed
+This adds the Glamo DRM and KMS driver, but note that modifications are needed
elsewhere to support it.
Signed-off-by: Thomas White <taw@bitwiz.org.uk>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
- drivers/mfd/glamo/Kconfig | 15 +
+ drivers/mfd/glamo/Kconfig | 16 +
drivers/mfd/glamo/Makefile | 5 +-
- drivers/mfd/glamo/glamo-buffer.c | 372 ++++++++++++++
- drivers/mfd/glamo/glamo-buffer.h | 60 +++
- drivers/mfd/glamo/glamo-cmdq.c | 528 ++++++++++++++++++++
+ drivers/mfd/glamo/glamo-buffer.c | 374 +++++++++++++
+ drivers/mfd/glamo/glamo-buffer.h | 60 ++
+ drivers/mfd/glamo/glamo-cmdq.c | 555 +++++++++++++++++++
drivers/mfd/glamo/glamo-cmdq.h | 49 ++
- drivers/mfd/glamo/glamo-display.c | 869 +++++++++++++++++++++++++++++++++
- drivers/mfd/glamo/glamo-display.h | 39 ++
- drivers/mfd/glamo/glamo-drm-drv.c | 444 +++++++++++++++++
- drivers/mfd/glamo/glamo-drm-private.h | 156 ++++++
- drivers/mfd/glamo/glamo-fence.c | 330 +++++++++++++
+ drivers/mfd/glamo/glamo-display.c | 975 +++++++++++++++++++++++++++++++++
+ drivers/mfd/glamo/glamo-display.h | 41 ++
+ drivers/mfd/glamo/glamo-drm-drv.c | 423 ++++++++++++++
+ drivers/mfd/glamo/glamo-drm-private.h | 166 ++++++
+ drivers/mfd/glamo/glamo-fence.c | 330 +++++++++++
drivers/mfd/glamo/glamo-fence.h | 34 ++
- drivers/mfd/glamo/glamo-kms-fb.c | 540 ++++++++++++++++++++
+ drivers/mfd/glamo/glamo-kms-fb.c | 493 +++++++++++++++++
drivers/mfd/glamo/glamo-kms-fb.h | 41 ++
include/drm/Kbuild | 1 +
- include/drm/glamo_drm.h | 153 ++++++
- 16 files changed, 3635 insertions(+), 1 deletions(-)
+ include/drm/glamo_drm.h | 153 +++++
+ 16 files changed, 3715 insertions(+), 1 deletions(-)
create mode 100644 drivers/mfd/glamo/glamo-buffer.c
create mode 100644 drivers/mfd/glamo/glamo-buffer.h
create mode 100644 drivers/mfd/glamo/glamo-cmdq.c
@@ -40,10 +41,10 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
create mode 100644 include/drm/glamo_drm.h
diff --git a/drivers/mfd/glamo/Kconfig b/drivers/mfd/glamo/Kconfig
-index 3aa4831..214c70e 100644
+index 3aa4831..a12ebf6 100644
--- a/drivers/mfd/glamo/Kconfig
+++ b/drivers/mfd/glamo/Kconfig
-@@ -40,3 +40,18 @@ config MFD_GLAMO_MCI
+@@ -40,3 +40,19 @@ config MFD_GLAMO_MCI
neo1973 GTA-02.
If unsure, say N.
@@ -54,6 +55,7 @@ index 3aa4831..214c70e 100644
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
++ select DRM_KMS_HELPER
+ help
+ Direct Rendering Manager interface for the S-Media Glamo chip, as
+ used in Openmoko FreeRunner (GTA02).
@@ -83,10 +85,10 @@ index ebf26f7..d5ebf8f 100644
+ glamo-display.o glamo-kms-fb.o glamo-fence.o
diff --git a/drivers/mfd/glamo/glamo-buffer.c b/drivers/mfd/glamo/glamo-buffer.c
new file mode 100644
-index 0000000..45500d3
+index 0000000..82ea0c0
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-buffer.c
-@@ -0,0 +1,372 @@
+@@ -0,0 +1,374 @@
+/*
+ * SMedia Glamo 336x/337x memory management
+ *
@@ -334,6 +336,8 @@ index 0000000..45500d3
+ if (!gobj->mmap_offset) {
+ ret = glamo_gem_create_mmap_offset(obj);
+ if (ret) {
++ printk(KERN_CRIT "Couldn't create mmap offset\n");
++ drm_gem_object_unreference(obj);
+ mutex_unlock(&dev->struct_mutex);
+ return ret;
+ }
@@ -527,10 +531,10 @@ index 0000000..41f18fd
+#endif /* __GLAMO_BUFFER_H */
diff --git a/drivers/mfd/glamo/glamo-cmdq.c b/drivers/mfd/glamo/glamo-cmdq.c
new file mode 100644
-index 0000000..caedc27
+index 0000000..442963c
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-cmdq.c
-@@ -0,0 +1,528 @@
+@@ -0,0 +1,555 @@
+/*
+ * SMedia Glamo 336x/337x command queue handling
+ *
@@ -592,6 +596,9 @@ index 0000000..caedc27
+#include "glamo-regs.h"
+
+
++#define GLAMO_CMDQ_SIZE (128 * 1024) /* 128k ring buffer */
++
++
+static inline void reg_write(struct glamodrm_handle *gdrm,
+ u_int16_t reg, u_int16_t val)
+{
@@ -969,7 +976,7 @@ index 0000000..caedc27
+ burst[0] = 1<<15 | cbuf->base;
+ burst[1] = data_size / 2; /* -> 2-byte words */
+ if ( burst[1] & 0x01 ) {
-+ printk(KERN_CRIT "Burst not aligned!\n");
++ printk(KERN_WARNING "[glamo-drm] Burst not aligned!\n");
+ goto cleanup;
+ }
+
@@ -988,7 +995,7 @@ index 0000000..caedc27
+}
+
+
-+int glamo_cmdq_init(struct glamodrm_handle *gdrm)
++int glamo_cmdq_setup(struct glamodrm_handle *gdrm)
+{
+ unsigned int i;
+
@@ -1008,9 +1015,9 @@ index 0000000..caedc27
+
+ /* Set up command queue location */
+ reg_write(gdrm, GLAMO_REG_CMDQ_BASE_ADDRL,
-+ GLAMO_OFFSET_CMDQ & 0xffff);
++ gdrm->cmdq_offs & 0xffff);
+ reg_write(gdrm, GLAMO_REG_CMDQ_BASE_ADDRH,
-+ (GLAMO_OFFSET_CMDQ >> 16) & 0x7f);
++ (gdrm->cmdq_offs >> 16) & 0x7f);
+
+ /* Length of command queue in 1k blocks, minus one */
+ reg_write(gdrm, GLAMO_REG_CMDQ_LEN, (GLAMO_CMDQ_SIZE >> 10)-1);
@@ -1025,6 +1032,30 @@ index 0000000..caedc27
+}
+
+
++int glamo_cmdq_init(struct glamodrm_handle *gdrm)
++{
++ struct drm_gem_object *obj;
++ struct drm_glamo_gem_object *gobj;
++ int ret = 0;
++
++ obj = glamo_gem_object_alloc(dev, GLAMO_CMDQ_SIZE, 4);
++ if ( !obj ) {
++ printk(KERN_ERR "[glamo-drm] Failed to allocate CmdQ\n");
++ ret = -ENOMEM;
++ goto out;
++ }
++ gobj = fbo->driver_private;
++ gdrm->cmdq_offs = GLAMO_OFFSET_FB + gobj->block->start;
++ gdrm->cmdq_base = ioremap(gdrm->vram->start + offs, GLAMO_CMDQ_SIZE);
++
++ /* Set up registers */
++ glamo_cmdq_setup(gdrm);
++
++out:
++ return ret;
++}
++
++
+int glamo_cmdq_shutdown(struct glamodrm_handle *gdrm)
+{
+ return 0;
@@ -1039,7 +1070,7 @@ index 0000000..caedc27
+
+void glamo_cmdq_resume(struct glamodrm_handle *gdrm)
+{
-+ glamo_cmdq_init(gdrm);
++ glamo_cmdq_setup(gdrm);
+}
+
+
@@ -1116,10 +1147,10 @@ index 0000000..510d195
+#endif /* __GLAMO_CMDQ_H */
diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
new file mode 100644
-index 0000000..34a665a
+index 0000000..75ad734
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -0,0 +1,869 @@
+@@ -0,0 +1,975 @@
+/*
+ * SMedia Glamo 336x/337x display
+ *
@@ -1174,19 +1205,18 @@ index 0000000..34a665a
+ *
+ */
+
-+#define DEBUG 1
-+
+#include <drm/drmP.h>
+#include <drm/glamo_drm.h>
+#include <drm/drm_crtc_helper.h>
+#include <drm/drm_crtc.h>
++#include <linux/glamofb.h>
++#include <linux/jbt6k74.h>
+
+#include "glamo-core.h"
+#include "glamo-drm-private.h"
+#include "glamo-regs.h"
+#include "glamo-kms-fb.h"
+#include "glamo-display.h"
-+#include <linux/glamofb.h>
+
+
+#define GLAMO_LCD_WIDTH_MASK 0x03FF
@@ -1361,14 +1391,6 @@ index 0000000..34a665a
+}
+
+
-+extern void jbt6k74_action(int val);
-+
-+/* Power on/off */
-+static void glamo_crtc_dpms(struct drm_crtc *crtc, int mode)
-+{
-+}
-+
-+
+static bool glamo_crtc_mode_fixup(struct drm_crtc *crtc,
+ struct drm_display_mode *mode,
+ struct drm_display_mode *adjusted_mode)
@@ -1397,6 +1419,12 @@ index 0000000..34a665a
+ gcrtc = to_glamo_crtc(crtc);
+ gdrm = gcrtc->gdrm; /* Here it is! */
+
++ if ( !gcrtc->pixel_clock_on ) {
++ printk(KERN_WARNING "[glamo-drm] Display is off - "
++ "enabling it before setting base.\n");
++ glamo_lcd_power(gdrm, 1);
++ }
++
+ gfb = to_glamo_framebuffer(crtc->fb);
+ obj = gfb->obj;
+ gobj = obj->driver_private;
@@ -1423,63 +1451,176 @@ index 0000000..34a665a
+ struct glamodrm_handle *gdrm;
+ struct glamo_crtc *gcrtc;
+ int retr_start, retr_end, disp_start, disp_end;
++ int rot;
+
+ /* Dig out our handle */
+ gcrtc = to_glamo_crtc(crtc);
+ gdrm = gcrtc->gdrm; /* Here it is! */
+
++ if ( !gcrtc->pixel_clock_on ) {
++ printk(KERN_WARNING "[glamo-drm] Display is off - "
++ "enabling it before setting mode.\n");
++ glamo_lcd_power(gdrm, 1);
++ msleep(500);
++ }
++
++ /* Rotate? */
++ if ( (mode->hdisplay == 640) && (mode->vdisplay == 480) ) {
++ rot = GLAMO_LCD_ROT_MODE_90;
++ } else if ( (mode->hdisplay == 480) && (mode->vdisplay == 640) ) {
++ rot = GLAMO_LCD_ROT_MODE_0;
++ } else if ( (mode->hdisplay == 320) && (mode->vdisplay == 240) ) {
++ rot = GLAMO_LCD_ROT_MODE_90;
++ } else if ( (mode->hdisplay == 240) && (mode->vdisplay == 320) ) {
++ rot = GLAMO_LCD_ROT_MODE_0;
++ } else {
++ printk(KERN_WARNING "[glamo-drm] Couldn't choose rotation.\n");
++ rot = GLAMO_LCD_ROT_MODE_0;
++ }
++
+ glamo_lcd_cmd_mode(gdrm, 1);
+
-+ glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD, mode->clock);
-+ gdrm->saved_clock = mode->clock;
++ /* Set dimensions */
++ if ( rot == GLAMO_LCD_ROT_MODE_0 ) {
++
++ glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD,
++ mode->clock);
++
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH,
++ GLAMO_LCD_WIDTH_MASK, mode->hdisplay);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HEIGHT,
++ GLAMO_LCD_HEIGHT_MASK, mode->vdisplay);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_PITCH,
++ GLAMO_LCD_PITCH_MASK, mode->hdisplay*2);
++
++ /* Set rotation */
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH,
++ GLAMO_LCD_ROT_MODE_MASK, rot);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_MODE1,
++ GLAMO_LCD_MODE1_ROTATE_EN,
++ (rot != GLAMO_LCD_ROT_MODE_0) ?
++ GLAMO_LCD_MODE1_ROTATE_EN : 0);
++
++ /* Convert "X modeline timings" into "Glamo timings" */
++ retr_start = 0;
++ retr_end = retr_start + mode->hsync_end - mode->hsync_start;
++ disp_start = mode->htotal - mode->hsync_start;
++ disp_end = disp_start + mode->hdisplay;
++
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL,
++ GLAMO_LCD_HV_TOTAL_MASK, mode->htotal);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START,
++ GLAMO_LCD_HV_RETR_START_MASK, retr_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END,
++ GLAMO_LCD_HV_RETR_END_MASK, retr_end);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START,
++ GLAMO_LCD_HV_RETR_DISP_START_MASK, disp_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END,
++ GLAMO_LCD_HV_RETR_DISP_END_MASK, disp_end);
++
++ /* The same in the vertical direction */
++ retr_start = 0;
++ retr_end = retr_start + mode->vsync_end - mode->vsync_start;
++ disp_start = mode->vtotal - mode->vsync_start;
++ disp_end = disp_start + mode->vdisplay;
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL,
++ GLAMO_LCD_HV_TOTAL_MASK, mode->vtotal);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START,
++ GLAMO_LCD_HV_RETR_START_MASK, retr_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END,
++ GLAMO_LCD_HV_RETR_END_MASK, retr_end);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START,
++ GLAMO_LCD_HV_RETR_DISP_START_MASK,
++ disp_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END,
++ GLAMO_LCD_HV_RETR_DISP_END_MASK, disp_end);
++
++ } else {
++
++ glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD,
++ mode->clock/2);
++
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH,
++ GLAMO_LCD_WIDTH_MASK, mode->vdisplay);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HEIGHT,
++ GLAMO_LCD_HEIGHT_MASK, mode->hdisplay);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_PITCH,
++ GLAMO_LCD_PITCH_MASK, mode->hdisplay*2);
++
++ /* Set rotation */
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH,
++ GLAMO_LCD_ROT_MODE_MASK, rot);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_MODE1,
++ GLAMO_LCD_MODE1_ROTATE_EN,
++ (rot != GLAMO_LCD_ROT_MODE_0) ?
++ GLAMO_LCD_MODE1_ROTATE_EN : 0);
++
++ /* Apply "vertical" numbers to the horizontal registers */
++ retr_start = 0;
++ retr_end = retr_start + mode->vsync_end - mode->vsync_start;
++ disp_start = mode->vtotal - mode->vsync_start;
++ disp_end = disp_start + mode->vdisplay;
++
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL,
++ GLAMO_LCD_HV_TOTAL_MASK, mode->vtotal);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START,
++ GLAMO_LCD_HV_RETR_START_MASK, retr_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END,
++ GLAMO_LCD_HV_RETR_END_MASK, retr_end);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START,
++ GLAMO_LCD_HV_RETR_DISP_START_MASK,
++ disp_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END,
++ GLAMO_LCD_HV_RETR_DISP_END_MASK, disp_end);
++
++ /* Apply "horizontal" numbers to the vertical registers */
++ retr_start = 0;
++ retr_end = retr_start + mode->hsync_end - mode->hsync_start;
++ disp_start = mode->htotal - mode->hsync_start;
++ disp_end = disp_start + mode->hdisplay;
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL,
++ GLAMO_LCD_HV_TOTAL_MASK, mode->htotal);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START,
++ GLAMO_LCD_HV_RETR_START_MASK, retr_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END,
++ GLAMO_LCD_HV_RETR_END_MASK, retr_end);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START,
++ GLAMO_LCD_HV_RETR_DISP_START_MASK,
++ disp_start);
++ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END,
++ GLAMO_LCD_HV_RETR_DISP_END_MASK, disp_end);
++
++ }
+
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH,
-+ GLAMO_LCD_WIDTH_MASK, mode->hdisplay);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HEIGHT,
-+ GLAMO_LCD_HEIGHT_MASK, mode->vdisplay);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_PITCH,
-+ GLAMO_LCD_PITCH_MASK, mode->hdisplay*2);
-+
-+ /* Convert "X modeline timings" into "Glamo timings" */
-+ retr_start = 0;
-+ retr_end = retr_start + mode->hsync_end - mode->hsync_start;
-+ disp_start = mode->htotal - mode->hsync_start;
-+ disp_end = disp_start + mode->hdisplay;
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL,
-+ GLAMO_LCD_HV_TOTAL_MASK, mode->htotal);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START,
-+ GLAMO_LCD_HV_RETR_START_MASK, retr_start);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END,
-+ GLAMO_LCD_HV_RETR_END_MASK, retr_end);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START,
-+ GLAMO_LCD_HV_RETR_DISP_START_MASK, disp_start);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END,
-+ GLAMO_LCD_HV_RETR_DISP_END_MASK, disp_end);
-+
-+ /* The same in the vertical direction */
-+ retr_start = 0;
-+ retr_end = retr_start + mode->vsync_end - mode->vsync_start;
-+ disp_start = mode->vtotal - mode->vsync_start;
-+ disp_end = disp_start + mode->vdisplay;
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL,
-+ GLAMO_LCD_HV_TOTAL_MASK, mode->vtotal);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START,
-+ GLAMO_LCD_HV_RETR_START_MASK, retr_start);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END,
-+ GLAMO_LCD_HV_RETR_END_MASK, retr_end);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START,
-+ GLAMO_LCD_HV_RETR_DISP_START_MASK, disp_start);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END,
-+ GLAMO_LCD_HV_RETR_DISP_END_MASK, disp_end);
++ gdrm->saved_clock = mode->clock;
+
+ glamo_lcd_cmd_mode(gdrm, 0);
+
+ glamo_crtc_mode_set_base(crtc, 0, 0, old_fb);
+
++ if ( mode->hdisplay == 240 ) {
++ jbt6k74_finish_resolutionchange(JBT_RESOLUTION_QVGA);
++ } else {
++ jbt6k74_finish_resolutionchange(JBT_RESOLUTION_VGA);
++ }
++
++ gcrtc->current_mode = *mode;
++ gcrtc->current_mode_set = 1;
++ gcrtc->current_fb = old_fb;
++
+ return 0;
+}
+
+
++/* This is not the right place to switch power on/off, because the helper
++ * stuff ends up calling this before/after setting the mode. We can't
++ * set modes with the display off (although backlight off would be OK) */
++static void glamo_crtc_dpms(struct drm_crtc *crtc, int mode)
++{
++ /* do nothing */
++}
++
++
+static void glamo_crtc_prepare(struct drm_crtc *crtc)
+{
+}
@@ -1537,43 +1678,53 @@ index 0000000..34a665a
+
+static int glamo_connector_get_modes(struct drm_connector *connector)
+{
-+ struct drm_display_mode *mode;
+ struct glamo_fb_platform_data *fb_info;
+ struct glamo_output *goutput = to_glamo_output(connector);
+ struct glamodrm_handle *gdrm = goutput->gdrm;
++ int i;
+
+ /* Dig out the record which will tell us about the hardware */
+ fb_info = gdrm->glamo_core->pdata->fb_data;
+
-+ mode = drm_mode_create(connector->dev);
-+ if (!mode)
-+ return 0;
-+ /* Fill in 'mode' here */
-+ mode->type = DRM_MODE_TYPE_DEFAULT | DRM_MODE_TYPE_PREFERRED;
++ for ( i=0; i<fb_info->num_modes; i++ ) {
++
++ struct drm_display_mode *mode;
++
++ mode = drm_mode_create(connector->dev);
++ if ( !mode ) continue;
++
++ mode->type = DRM_MODE_TYPE_DEFAULT | DRM_MODE_TYPE_PREFERRED;
++
++ /* Convert framebuffer timings into KMS timings.
++ * First: ps -> kHz */
++ mode->clock = 1000000000UL / fb_info->modes[i].pixclock;
++ mode->clock *= 1000; /* then kHz -> Hz */
++ mode->hdisplay = fb_info->modes[i].xres;
++ mode->hsync_start = fb_info->modes[i].right_margin
++ + mode->hdisplay;
++ mode->hsync_end = mode->hsync_start
++ + fb_info->modes[i].hsync_len;
++ mode->htotal = mode->hsync_end + fb_info->modes[i].left_margin;
++ mode->hskew = 0;
+
-+ /* Convert framebuffer timings into KMS timings */
-+ mode->clock = 1000000000UL / fb_info->modes[0].pixclock; /* ps -> kHz */
-+ mode->clock *= 1000; /* kHz -> Hz */
-+ mode->hdisplay = fb_info->modes[0].xres;
-+ mode->hsync_start = fb_info->modes[0].right_margin + mode->hdisplay;
-+ mode->hsync_end = mode->hsync_start + fb_info->modes[0].hsync_len;
-+ mode->htotal = mode->hsync_end + fb_info->modes[0].left_margin;
-+ mode->hskew = 0;
++ mode->vdisplay = fb_info->modes[i].yres;
++ mode->vsync_start = fb_info->modes[i].lower_margin
++ + mode->vdisplay;
++ mode->vsync_end = mode->vsync_start
++ + fb_info->modes[i].vsync_len;
++ mode->vtotal = mode->vsync_end + fb_info->modes[i].upper_margin;
++ mode->vscan = 0;
+
-+ mode->vdisplay = fb_info->modes[0].yres;
-+ mode->vsync_start = fb_info->modes[0].lower_margin + mode->vdisplay;
-+ mode->vsync_end = mode->vsync_start + fb_info->modes[0].vsync_len;
-+ mode->vtotal = mode->vsync_end + fb_info->modes[0].upper_margin;
-+ mode->vscan = 0;
++ /* Physical size */
++ mode->width_mm = fb_info->width;
++ mode->height_mm = fb_info->height;
+
-+ /* Physical size */
-+ mode->width_mm = fb_info->width;
-+ mode->height_mm = fb_info->height;
++ drm_mode_set_name(mode);
++ drm_mode_probed_add(connector, mode);
+
-+ drm_mode_set_name(mode);
-+ drm_mode_probed_add(connector, mode);
++ }
+
-+ return 1; /* one mode, for now */
++ return fb_info->num_modes;
+}
+
+
@@ -1612,6 +1763,7 @@ index 0000000..34a665a
+ struct drm_display_mode *mode,
+ struct drm_display_mode *adjusted_mode)
+{
++ if ( mode->clock == 0 ) return false;
+ return true;
+}
+
@@ -1835,8 +1987,8 @@ index 0000000..34a665a
+ drm_mode_config_init(dev);
+
+ dev->mode_config.min_width = 240;
-+ dev->mode_config.min_height = 320;
-+ dev->mode_config.max_width = 480;
++ dev->mode_config.min_height = 240;
++ dev->mode_config.max_width = 640;
+ dev->mode_config.max_height = 640;
+
+ dev->mode_config.funcs = (void *)&glamo_mode_funcs;
@@ -1847,6 +1999,8 @@ index 0000000..34a665a
+ + sizeof(struct drm_connector *), GFP_KERNEL);
+ if (glamo_crtc == NULL) return 1;
+ glamo_crtc->gdrm = gdrm;
++ gdrm->crtc = (struct drm_crtc *)glamo_crtc;
++ glamo_crtc->pixel_clock_on = 1;
+ glamo_crtc->blank_mode = DRM_MODE_DPMS_OFF;
+ drm_crtc_init(dev, &glamo_crtc->base, &glamo_crtc_funcs);
+ drm_crtc_helper_add(&glamo_crtc->base, &glamo_crtc_helper_funcs);
@@ -1864,7 +2018,7 @@ index 0000000..34a665a
+
+ /* Initialise the connector */
+ drm_connector_init(dev, connector, &glamo_connector_funcs,
-+ DRM_MODE_CONNECTOR_Unknown);
++ DRM_MODE_CONNECTOR_LVDS);
+ drm_sysfs_connector_add(connector);
+ connector->interlace_allowed = 0;
+ connector->doublescan_allowed = 0;
@@ -1928,73 +2082,56 @@ index 0000000..34a665a
+}
+
+
++void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
++{
++ struct drm_crtc *crtc = gdrm->crtc;
++ struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
++
++ if ( mode ) {
++ glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
++ gcrtc->pixel_clock_on = 1;
++ jbt6k74_setpower(JBT_POWER_MODE_NORMAL);
++ if ( gcrtc->current_mode_set ) {
++ glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
++ &gcrtc->current_mode, 0, 0,
++ gcrtc->current_fb);
++ }
++ } else {
++ jbt6k74_setpower(JBT_POWER_MODE_OFF);
++ glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
++ gcrtc->pixel_clock_on = 0;
++ }
++}
++
++
+void glamo_display_suspend(struct glamodrm_handle *gdrm)
+{
-+ gdrm->saved_width = reg_read_lcd(gdrm, GLAMO_REG_LCD_WIDTH);
-+ gdrm->saved_height = reg_read_lcd(gdrm, GLAMO_REG_LCD_HEIGHT);
-+ gdrm->saved_pitch = reg_read_lcd(gdrm, GLAMO_REG_LCD_PITCH);
-+ gdrm->saved_htotal = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL);
-+ gdrm->saved_hrtrst = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START);
-+ gdrm->saved_hrtren = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END);
-+ gdrm->saved_hdspst = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START);
-+ gdrm->saved_hdspen = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END);
-+ gdrm->saved_vtotal = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL);
-+ gdrm->saved_vrtrst = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START);
-+ gdrm->saved_vrtren = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END);
-+ gdrm->saved_vdspst = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START);
-+ gdrm->saved_vdspen = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END);
++ /* do nothing */
+}
+
+
+void glamo_display_resume(struct glamodrm_handle *gdrm)
+{
++ struct drm_crtc *crtc = gdrm->crtc;
++ struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
++
+ glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
+ glamo_engine_reset(gdrm->glamo_core, GLAMO_ENGINE_LCD);
+ glamo_run_lcd_script(gdrm, lcd_init_script,
+ ARRAY_SIZE(lcd_init_script));
+
-+ /* Restore timings */
-+ glamo_lcd_cmd_mode(gdrm, 1);
-+ glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD,
-+ gdrm->saved_clock);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH, GLAMO_LCD_WIDTH_MASK,
-+ gdrm->saved_width);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HEIGHT, GLAMO_LCD_HEIGHT_MASK,
-+ gdrm->saved_height);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_PITCH, GLAMO_LCD_PITCH_MASK,
-+ gdrm->saved_pitch);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL,
-+ GLAMO_LCD_HV_TOTAL_MASK, gdrm->saved_htotal);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START,
-+ GLAMO_LCD_HV_RETR_START_MASK, gdrm->saved_hrtrst);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END,
-+ GLAMO_LCD_HV_RETR_END_MASK, gdrm->saved_hrtren);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START,
-+ GLAMO_LCD_HV_RETR_DISP_START_MASK,
-+ gdrm->saved_hdspst);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END,
-+ GLAMO_LCD_HV_RETR_DISP_END_MASK,
-+ gdrm->saved_hdspen);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL,
-+ GLAMO_LCD_HV_TOTAL_MASK, gdrm->saved_vtotal);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START,
-+ GLAMO_LCD_HV_RETR_START_MASK, gdrm->saved_vrtrst);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END,
-+ GLAMO_LCD_HV_RETR_END_MASK, gdrm->saved_vrtren);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START,
-+ GLAMO_LCD_HV_RETR_DISP_START_MASK,
-+ gdrm->saved_vdspst);
-+ reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END,
-+ GLAMO_LCD_HV_RETR_DISP_END_MASK,
-+ gdrm->saved_vdspen);
-+ glamo_lcd_cmd_mode(gdrm, 0);
++ if ( gcrtc->current_mode_set ) {
++ glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
++ &gcrtc->current_mode, 0, 0,
++ gcrtc->current_fb);
++ }
+}
diff --git a/drivers/mfd/glamo/glamo-display.h b/drivers/mfd/glamo/glamo-display.h
new file mode 100644
-index 0000000..d6f21bc
+index 0000000..728bba5
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-display.h
-@@ -0,0 +1,39 @@
+@@ -0,0 +1,41 @@
+/* Smedia Glamo 336x/337x Display
+ *
+ * Copyright (c) 2008-2009 Thomas White <taw@bitwiz.org.uk>
@@ -2033,13 +2170,15 @@ index 0000000..d6f21bc
+extern void glamo_display_suspend(struct glamodrm_handle *gdrm);
+extern void glamo_display_resume(struct glamodrm_handle *gdrm);
+
++extern void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode);
++
+#endif /* __GLAMO_DISPLAY_H */
diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c
new file mode 100644
-index 0000000..f30097e
+index 0000000..774eaff
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-drm-drv.c
-@@ -0,0 +1,444 @@
+@@ -0,0 +1,423 @@
+/* Smedia Glamo 336x/337x Graphics Driver
+ *
+ * Copyright (C) 2009 Openmoko, Inc. Jorge Luis Zapata <turran@openmoko.com>
@@ -2195,6 +2334,8 @@ index 0000000..f30097e
+
+static struct vm_operations_struct glamodrm_gem_vm_ops = {
+ .fault = glamodrm_gem_fault,
++ .open = drm_gem_vm_open,
++ .close = drm_gem_vm_close,
+};
+
+static struct drm_driver glamodrm_drm_driver = {
@@ -2271,29 +2412,6 @@ index 0000000..f30097e
+ goto out_release_regs;
+ }
+
-+ /* Find the command queue itself */
-+ gdrm->cmdq = platform_get_resource_byname(pdev, IORESOURCE_MEM,
-+ "glamo-command-queue");
-+ if ( !gdrm->cmdq ) {
-+ dev_err(&pdev->dev, "Unable to find command queue.\n");
-+ rc = -ENOENT;
-+ goto out_unmap_regs;
-+ }
-+ gdrm->cmdq = request_mem_region(gdrm->cmdq->start,
-+ resource_size(gdrm->cmdq), pdev->name);
-+ if ( !gdrm->cmdq ) {
-+ dev_err(&pdev->dev, "failed to request command queue region\n");
-+ rc = -ENOENT;
-+ goto out_unmap_regs;
-+ }
-+ gdrm->cmdq_base = ioremap_nocache(gdrm->cmdq->start,
-+ resource_size(gdrm->cmdq));
-+ if ( !gdrm->cmdq_base ) {
-+ dev_err(&pdev->dev, "failed to ioremap() command queue\n");
-+ rc = -ENOENT;
-+ goto out_release_cmdq;
-+ }
-+
+ /* Find the VRAM */
+ gdrm->vram = platform_get_resource_byname(pdev, IORESOURCE_MEM,
+ "glamo-fb-mem");
@@ -2389,7 +2507,7 @@ index 0000000..f30097e
+ release_mem_region(gdrm->reg->start, resource_size(gdrm->reg));
+out_free:
+ kfree(gdrm);
-+ pdev->dev.driver_data = NULL;
++ dev_set_drvdata(&pdev->dev, NULL);
+ return rc;
+}
+
@@ -2486,10 +2604,10 @@ index 0000000..f30097e
+MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/glamo/glamo-drm-private.h b/drivers/mfd/glamo/glamo-drm-private.h
new file mode 100644
-index 0000000..7949a2e
+index 0000000..75f2757
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-drm-private.h
-@@ -0,0 +1,156 @@
+@@ -0,0 +1,166 @@
+/* Smedia Glamo 336x/337x DRM private bits
+ *
+ * Copyright (C) 2008-2009 Thomas White <taw@bitwiz.org.uk>
@@ -2553,8 +2671,8 @@ index 0000000..7949a2e
+ struct resource *vram;
+
+ /* Command queue region */
-+ struct resource *cmdq;
+ char __iomem *cmdq_base;
++ unsigned long cmdq_offs;
+
+ /* LCD controller registers */
+ struct resource *lcd_regs;
@@ -2598,6 +2716,9 @@ index 0000000..7949a2e
+
+ /* A scratch block */
+ struct drm_mm_node *scratch;
++
++ /* We only have one */
++ struct drm_crtc *crtc;
+};
+
+
@@ -2610,11 +2731,18 @@ index 0000000..7949a2e
+
+
+struct glamo_crtc {
++
+ struct drm_crtc base;
+ struct glamodrm_handle *gdrm;
+ /* a mode_set for fbdev users on this crtc */
+ struct drm_mode_set mode_set;
+ int blank_mode;
++
++ int pixel_clock_on;
++
++ int current_mode_set;
++ struct drm_display_mode current_mode;
++ struct drm_framebuffer *current_fb;
+};
+
+
@@ -3024,10 +3152,10 @@ index 0000000..deda995
+#endif /* __GLAMO_FENCE_H */
diff --git a/drivers/mfd/glamo/glamo-kms-fb.c b/drivers/mfd/glamo/glamo-kms-fb.c
new file mode 100644
-index 0000000..61cd605
+index 0000000..d76dd24
--- /dev/null
+++ b/drivers/mfd/glamo/glamo-kms-fb.c
-@@ -0,0 +1,540 @@
+@@ -0,0 +1,493 @@
+/*
+ * SMedia Glamo 336x/337x KMS Framebuffer
+ *
@@ -3207,37 +3335,35 @@ index 0000000..61cd605
+ struct drm_device *dev = par->dev;
+ struct fb_var_screeninfo *var = &info->var;
+ int i;
++ struct drm_crtc *crtc;
++ int ret;
+
+ DRM_DEBUG("%d %d\n", var->xres, var->pixclock);
+
+ if (var->pixclock != -1) {
++ DRM_ERROR("Warning: userspace gave me a pixel clock value (%i)"
++ "- I'm ignoring it.\n", var->pixclock);
++ }
+
-+ DRM_ERROR("PIXEL CLOCK SET\n");
-+ return -EINVAL;
-+ } else {
-+ struct drm_crtc *crtc;
-+ int ret;
-+
-+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-+ struct glamo_crtc *glamo_crtc = to_glamo_crtc(crtc);
++ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
++ struct glamo_crtc *glamo_crtc = to_glamo_crtc(crtc);
+
-+ for (i = 0; i < par->crtc_count; i++)
-+ if (crtc->base.id == par->crtc_ids[i])
-+ break;
++ for (i = 0; i < par->crtc_count; i++)
++ if (crtc->base.id == par->crtc_ids[i])
++ break;
+
-+ if (i == par->crtc_count)
-+ continue;
++ if (i == par->crtc_count)
++ continue;
+
-+ if (crtc->fb == glamo_crtc->mode_set.fb) {
-+ mutex_lock(&dev->mode_config.mutex);
-+ ret = crtc->funcs->set_config(&glamo_crtc->mode_set);
-+ mutex_unlock(&dev->mode_config.mutex);
-+ if (ret)
-+ return ret;
-+ }
++ if (crtc->fb == glamo_crtc->mode_set.fb) {
++ mutex_lock(&dev->mode_config.mutex);
++ ret = crtc->funcs->set_config(&glamo_crtc->mode_set);
++ mutex_unlock(&dev->mode_config.mutex);
++ if (ret)
++ return ret;
+ }
-+ return 0;
+ }
++ return 0;
+}
+
+static int glamofb_pan_display(struct fb_var_screeninfo *var,
@@ -3283,64 +3409,20 @@ index 0000000..61cd605
+{
+ struct glamofb_par *par = info->par;
+ struct drm_device *dev = par->dev;
-+ struct drm_crtc *crtc;
-+ struct drm_encoder *encoder;
-+ int i;
-+
-+ /*
-+ * For each CRTC in this fb, find all associated encoders
-+ * and turn them off, then turn off the CRTC.
-+ */
-+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-+ struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-+
-+ for (i = 0; i < par->crtc_count; i++)
-+ if (crtc->base.id == par->crtc_ids[i])
-+ break;
++ struct glamodrm_handle *gdrm = dev->dev_private;
+
-+ crtc_funcs->dpms(crtc, DRM_MODE_DPMS_ON);
++ gdrm = dev->dev_private;
+
-+ /* Found a CRTC on this fb, now find encoders */
-+ list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
-+ if (encoder->crtc == crtc) {
-+ struct drm_encoder_helper_funcs *encoder_funcs;
-+ encoder_funcs = encoder->helper_private;
-+ encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON);
-+ }
-+ }
-+ }
++ glamo_lcd_power(gdrm, 1);
+}
+
+static void glamofb_off(struct fb_info *info, int dpms_mode)
+{
+ struct glamofb_par *par = info->par;
+ struct drm_device *dev = par->dev;
-+ struct drm_crtc *crtc;
-+ struct drm_encoder *encoder;
-+ int i;
-+
-+ /*
-+ * For each CRTC in this fb, find all associated encoders
-+ * and turn them off, then turn off the CRTC.
-+ */
-+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-+ struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-+
-+ for (i = 0; i < par->crtc_count; i++)
-+ if (crtc->base.id == par->crtc_ids[i])
-+ break;
++ struct glamodrm_handle *gdrm = dev->dev_private;
+
-+ /* Found a CRTC on this fb, now find encoders */
-+ list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
-+ if (encoder->crtc == crtc) {
-+ struct drm_encoder_helper_funcs *encoder_funcs;
-+ encoder_funcs = encoder->helper_private;
-+ encoder_funcs->dpms(encoder, dpms_mode);
-+ }
-+ }
-+ if (dpms_mode == DRM_MODE_DPMS_OFF)
-+ crtc_funcs->dpms(crtc, dpms_mode);
-+ }
++ glamo_lcd_power(gdrm, 0);
+}
+
+static int glamofb_blank(int blank, struct fb_info *info)
@@ -3459,9 +3541,6 @@ index 0000000..61cd605
+ info->fbops = &glamofb_ops;
+
+ info->fix.line_length = fb->pitch;
-+ info->fix.smem_start = dev->mode_config.fb_base
-+ + (unsigned long) gdrm->vram->start;
-+ info->fix.smem_len = size;
+
+ info->flags = FBINFO_DEFAULT;
+
@@ -3473,6 +3552,8 @@ index 0000000..61cd605
+ ret = -ENOSPC;
+ goto out_unref;
+ }
++ info->fix.smem_start = (unsigned long)gdrm->vram->start + offs;
++ info->fix.smem_len = size;
+ info->screen_size = size;
+
+ info->pseudo_palette = fb->pseudo_palette;
@@ -3784,5 +3865,5 @@ index 0000000..4c194dc
+
+#endif
--
-1.6.6.1
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0009-A-couple-of-GEM-refcounting-fixes.patch b/recipes/linux/linux-openmoko-2.6.32/0009-A-couple-of-GEM-refcounting-fixes.patch
deleted file mode 100644
index 7fb2fa8762..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0009-A-couple-of-GEM-refcounting-fixes.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 75e660e406cd4941f253ddbdeaa45f59d107a014 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Sun, 7 Feb 2010 13:27:20 +0100
-Subject: [PATCH 9/9] A couple of GEM refcounting fixes
-
-This allows GEM objects to be freed properly, which wasn't working before.
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-buffer.c | 2 ++
- drivers/mfd/glamo/glamo-drm-drv.c | 2 ++
- 2 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-buffer.c b/drivers/mfd/glamo/glamo-buffer.c
-index 45500d3..82ea0c0 100644
---- a/drivers/mfd/glamo/glamo-buffer.c
-+++ b/drivers/mfd/glamo/glamo-buffer.c
-@@ -245,6 +245,8 @@ int glamo_ioctl_gem_mmap(struct drm_device *dev, void *data,
- if (!gobj->mmap_offset) {
- ret = glamo_gem_create_mmap_offset(obj);
- if (ret) {
-+ printk(KERN_CRIT "Couldn't create mmap offset\n");
-+ drm_gem_object_unreference(obj);
- mutex_unlock(&dev->struct_mutex);
- return ret;
- }
-diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c
-index 1907a47..e7220d5 100644
---- a/drivers/mfd/glamo/glamo-drm-drv.c
-+++ b/drivers/mfd/glamo/glamo-drm-drv.c
-@@ -153,6 +153,8 @@ static int glamodrm_unload(struct drm_device *dev)
-
- static struct vm_operations_struct glamodrm_gem_vm_ops = {
- .fault = glamodrm_gem_fault,
-+ .open = drm_gem_vm_open,
-+ .close = drm_gem_vm_close,
- };
-
- static struct drm_driver glamodrm_drm_driver = {
---
-1.6.6.1
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0004-Work-on-Glamo-core-for-DRM.patch b/recipes/linux/linux-openmoko-2.6.32/0009-Work-on-Glamo-core-for-DRM.patch
index 2bddd1758a..79b0ea4e0f 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0004-Work-on-Glamo-core-for-DRM.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0009-Work-on-Glamo-core-for-DRM.patch
@@ -1,24 +1,24 @@
-From eb0614d6a8a879bd3ac69050b3f5b012ef562b9e Mon Sep 17 00:00:00 2001
+From 8cdc10f17ecd42c9f71f7f4a657d979ab20f9e26 Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Tue, 17 Nov 2009 23:45:29 +0100
-Subject: [PATCH 4/9] Work on Glamo-core for DRM
+Subject: [PATCH 09/14] Work on Glamo-core for DRM
This adds modifications to the core of the Glamo driver to expose functionality
to support DRM and KMS.
Signed-off-by: Thomas White <taw@bitwiz.org.uk>
---
- drivers/mfd/glamo/glamo-core.c | 33 +++++++++++++++++++++++++++------
- drivers/mfd/glamo/glamo-core.h | 35 +++++++++++++++++++++++++----------
+ drivers/mfd/glamo/glamo-core.c | 27 +++++++++++++++++++++------
+ drivers/mfd/glamo/glamo-core.h | 32 ++++++++++++++++++++++----------
drivers/mfd/glamo/glamo-regs.h | 24 ++++++++++++++++++++++++
include/linux/mfd/glamo.h | 7 ++-----
- 4 files changed, 78 insertions(+), 21 deletions(-)
+ 4 files changed, 69 insertions(+), 21 deletions(-)
diff --git a/drivers/mfd/glamo/glamo-core.c b/drivers/mfd/glamo/glamo-core.c
-index 82a906a..a614d44 100644
+index 82a906a..74da668 100644
--- a/drivers/mfd/glamo/glamo-core.c
+++ b/drivers/mfd/glamo/glamo-core.c
-@@ -221,10 +221,31 @@ static struct resource glamo_fb_resources[] = {
+@@ -221,10 +221,25 @@ static struct resource glamo_fb_resources[] = {
.flags = IORESOURCE_MEM,
}, {
.name = "glamo-fb-mem",
@@ -34,12 +34,6 @@ index 82a906a..a614d44 100644
+ .end = GLAMO_REGOFS_RISC - 1,
+ .flags = IORESOURCE_MEM,
+ }, {
-+ .name = "glamo-command-queue",
-+ .start = GLAMO_MEM_BASE + GLAMO_OFFSET_CMDQ,
-+ .end = GLAMO_MEM_BASE + GLAMO_OFFSET_CMDQ +
-+ GLAMO_CMDQ_SIZE - 1,
-+ .flags = IORESOURCE_MEM,
-+ }, {
+ .name = "glamo-2d-regs",
+ .start = GLAMO_REGOFS_2D,
+ .end = GLAMO_REGOFS_3D- 1,
@@ -53,7 +47,7 @@ index 82a906a..a614d44 100644
};
static struct resource glamo_mmc_resources[] = {
-@@ -235,9 +256,9 @@ static struct resource glamo_mmc_resources[] = {
+@@ -235,9 +250,9 @@ static struct resource glamo_mmc_resources[] = {
.flags = IORESOURCE_MEM
}, {
.name = "glamo-mmc-mem",
@@ -67,10 +61,10 @@ index 82a906a..a614d44 100644
}, {
.start = GLAMO_IRQ_MMC,
diff --git a/drivers/mfd/glamo/glamo-core.h b/drivers/mfd/glamo/glamo-core.h
-index 17017b0..d21bdc4 100644
+index 17017b0..0adba96 100644
--- a/drivers/mfd/glamo/glamo-core.h
+++ b/drivers/mfd/glamo/glamo-core.h
-@@ -3,18 +3,33 @@
+@@ -3,18 +3,30 @@
#include <linux/mfd/glamo.h>
@@ -80,12 +74,10 @@ index 17017b0..d21bdc4 100644
+/* Arbitrarily determined amount for the hardware cursor */
+#define GLAMO_CURSOR_SIZE (4096)
+#define GLAMO_MMC_BUFFER_SIZE (64 * 1024) /* 64k MMC buffer */
-+#define GLAMO_CMDQ_SIZE (128 * 1024) /* 128k ring buffer */
+/* Remaining memory will be used for 2D and 3D graphics */
+#define GLAMO_FB_SIZE (GLAMO_INTERNAL_RAM_SIZE \
+ - GLAMO_CURSOR_SIZE \
-+ - GLAMO_MMC_BUFFER_SIZE \
-+ - GLAMO_CMDQ_SIZE)
++ - GLAMO_MMC_BUFFER_SIZE)
+/* A 640x480, 16bpp, double-buffered framebuffer */
+#if (GLAMO_FB_SIZE < (640 * 480 * 4)) /* == 0x12c000 */
+#error Not enough Glamo VRAM for framebuffer!
@@ -110,7 +102,6 @@ index 17017b0..d21bdc4 100644
+#define GLAMO_OFFSET_FB (0x000000)
+#define GLAMO_OFFSET_CURSOR (GLAMO_OFFSET_FB + GLAMO_FB_SIZE)
+#define GLAMO_OFFSET_MMC (GLAMO_OFFSET_CURSOR + GLAMO_CURSOR_SIZE)
-+#define GLAMO_OFFSET_CMDQ (GLAMO_OFFSET_MMC + GLAMO_MMC_BUFFER_SIZE)
enum glamo_pll {
GLAMO_PLL1,
@@ -167,5 +158,5 @@ index 529d4f0..ea91a06 100644
+
#endif
--
-1.6.6.1
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0010-JBT6k74-work-for-KMS.patch b/recipes/linux/linux-openmoko-2.6.32/0010-JBT6k74-work-for-KMS.patch
new file mode 100644
index 0000000000..2105ab60aa
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.32/0010-JBT6k74-work-for-KMS.patch
@@ -0,0 +1,540 @@
+From 5788c7777a6fa63dc56093277ae14c4dac4ee6cb Mon Sep 17 00:00:00 2001
+From: Thomas White <taw@bitwiz.org.uk>
+Date: Sat, 21 Nov 2009 21:42:16 +0100
+Subject: [PATCH 10/14] JBT6k74 work for KMS
+
+This simplifies the JBT6k74 driver, and adds hooks for the Glamo driver to cooperate
+more closely with it.
+
+Signed-off-by: Thomas White <taw@bitwiz.org.uk>
+---
+ drivers/video/backlight/jbt6k74.c | 252 ++++++++++++++++++------------------
+ include/linux/jbt6k74.h | 17 +++-
+ 2 files changed, 142 insertions(+), 127 deletions(-)
+
+diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
+index 8450904..91651e7 100644
+--- a/drivers/video/backlight/jbt6k74.c
++++ b/drivers/video/backlight/jbt6k74.c
+@@ -101,20 +101,10 @@ enum jbt_register {
+ JBT_REG_HCLOCK_QVGA = 0xed,
+ };
+
+-enum jbt_resolution {
+- JBT_RESOLUTION_VGA,
+- JBT_RESOLUTION_QVGA,
+-};
+-
+-enum jbt_power_mode {
+- JBT_POWER_MODE_DEEP_STANDBY,
+- JBT_POWER_MODE_SLEEP,
+- JBT_POWER_MODE_NORMAL,
+-};
+
+ static const char *jbt_power_mode_names[] = {
+- [JBT_POWER_MODE_DEEP_STANDBY] = "deep-standby",
+- [JBT_POWER_MODE_SLEEP] = "sleep",
++ [JBT_POWER_MODE_OFF] = "off",
++ [JBT_POWER_MODE_STANDBY] = "standby",
+ [JBT_POWER_MODE_NORMAL] = "normal",
+ };
+
+@@ -123,6 +113,7 @@ static const char *jbt_resolution_names[] = {
+ [JBT_RESOLUTION_QVGA] = "qvga",
+ };
+
++
+ struct jbt_info {
+ struct mutex lock; /* protects this structure */
+ enum jbt_resolution resolution;
+@@ -141,6 +132,8 @@ struct jbt_info {
+ uint16_t reg_cache[0xEE];
+ };
+
++struct jbt_info *jbt_global;
++
+ #define JBT_COMMAND 0x000
+ #define JBT_DATA 0x100
+
+@@ -156,6 +149,8 @@ static int jbt_reg_write_nodata(struct jbt_info *jbt, uint8_t reg)
+ else
+ dev_err(&jbt->spi->dev, "Write failed: %d\n", ret);
+
++ mdelay(1);
++
+ return ret;
+ }
+
+@@ -173,6 +168,8 @@ static int jbt_reg_write(struct jbt_info *jbt, uint8_t reg, uint8_t data)
+ else
+ dev_err(&jbt->spi->dev, "Write failed: %d\n", ret);
+
++ mdelay(1);
++
+ return ret;
+ }
+
+@@ -191,6 +188,8 @@ static int jbt_reg_write16(struct jbt_info *jbt, uint8_t reg, uint16_t data)
+ else
+ dev_err(&jbt->spi->dev, "Write failed: %d\n", ret);
+
++ mdelay(1);
++
+ return ret;
+ }
+
+@@ -218,7 +217,7 @@ static int jbt_init_regs(struct jbt_info *jbt)
+ * to avoid red / blue flicker
+ */
+ ret |= jbt_reg_write(jbt, JBT_REG_ASW_SLEW, 0x00 | (1 << 5));
+- ret |= jbt_reg_write(jbt, JBT_REG_DUMMY_DISPLAY, 0x00);
++ ret |= jbt_reg_write(jbt, JBT_REG_DUMMY_DISPLAY, 0xff);
+
+ ret |= jbt_reg_write(jbt, JBT_REG_SLEEP_OUT_FR_A, 0x11);
+ ret |= jbt_reg_write(jbt, JBT_REG_SLEEP_OUT_FR_B, 0x11);
+@@ -260,14 +259,18 @@ static int jbt_init_regs(struct jbt_info *jbt)
+ return ret ? -EIO : 0;
+ }
+
+-static int jbt_standby_to_sleep(struct jbt_info *jbt)
++
++static int jbt_off_to_normal(struct jbt_info *jbt)
+ {
+ int ret;
++
+ struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
+
+ gpio_set_value_cansleep(pdata->gpio_reset, 1);
+ ret = regulator_bulk_enable(ARRAY_SIZE(jbt->supplies), jbt->supplies);
+
++ mdelay(120);
++
+ /* three times command zero */
+ ret |= jbt_reg_write_nodata(jbt, 0x00);
+ mdelay(1);
+@@ -279,18 +282,11 @@ static int jbt_standby_to_sleep(struct jbt_info *jbt)
+ /* deep standby out */
+ ret |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x11);
+ mdelay(1);
+- ret = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x28);
++ ret |= jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x28);
+
+ /* (re)initialize register set */
+ ret |= jbt_init_regs(jbt);
+
+- return ret ? -EIO : 0;
+-}
+-
+-static int jbt_sleep_to_normal(struct jbt_info *jbt)
+-{
+- int ret;
+-
+ /* Make sure we are 120 ms after SLEEP_OUT */
+ if (time_before(jiffies, jbt->next_sleep))
+ mdelay(jiffies_to_msecs(jbt->next_sleep - jiffies));
+@@ -320,6 +316,7 @@ static int jbt_sleep_to_normal(struct jbt_info *jbt)
+
+ /* Sleep mode off */
+ ret |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT);
++
+ jbt->next_sleep = jiffies + msecs_to_jiffies(120);
+
+ /* Allow the booster and display controller to restart stably */
+@@ -328,45 +325,68 @@ static int jbt_sleep_to_normal(struct jbt_info *jbt)
+ return ret ? -EIO : 0;
+ }
+
+-static int jbt_normal_to_sleep(struct jbt_info *jbt)
++static int jbt_normal_to_off(struct jbt_info *jbt)
+ {
+ int ret;
++ struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
+
+- /* Make sure we are 120 ms after SLEEP_OUT */
+- while (time_before(jiffies, jbt->next_sleep))
+- cpu_relax();
++ /* Pull the plug! */
++ ret = regulator_bulk_disable(ARRAY_SIZE(jbt->supplies),
++ jbt->supplies);
+
++ if (!ret)
++ gpio_set_value_cansleep(pdata->gpio_reset, 0);
++
++ return ret ? -EIO : 0;
++}
++
++
++static int jbt_normal_to_standby(struct jbt_info *jbt)
++{
++ int ret;
++
++ if ( jbt->power_mode != JBT_POWER_MODE_NORMAL ) return 0;
++
++ /* Make sure we are 120 ms after SLEEP_{IN,OUT} */
++ while (time_before(jiffies, jbt->next_sleep)) cpu_relax();
++
++ /* Sleep mode on */
+ ret = jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF);
+ ret |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0x8000 | 1 << 3);
++
+ ret |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_IN);
+- jbt->next_sleep = jiffies + msecs_to_jiffies(120);
++ jbt->next_sleep = jiffies + msecs_to_jiffies(150);
+
+- /* Allow the internal circuits to stop automatically */
+- mdelay(5);
++ jbt->power_mode = JBT_POWER_MODE_STANDBY;
+
+ return ret ? -EIO : 0;
+ }
+
+-static int jbt_sleep_to_standby(struct jbt_info *jbt)
++
++static int jbt_standby_to_normal(struct jbt_info *jbt)
+ {
+ int ret;
+- struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
+
+- ret = jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x00);
++ if ( jbt->power_mode != JBT_POWER_MODE_STANDBY ) return 0;
+
+- if (!ret)
+- ret = regulator_bulk_disable(ARRAY_SIZE(jbt->supplies), jbt->supplies);
++ /* Make sure we are 120 ms after SLEEP_{IN,OUT} */
++ while (time_before(jiffies, jbt->next_sleep)) cpu_relax();
+
+- if (!ret)
+- gpio_set_value_cansleep(pdata->gpio_reset, 0);
++ ret = jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT);
++ jbt->next_sleep = jiffies + msecs_to_jiffies(150);
+
+- return ret;
++ ret |= jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_ON);
++ ret |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0xdff9);
++
++ jbt->power_mode = JBT_POWER_MODE_NORMAL;
++
++ return ret ? -EIO : 0;
+ }
+
++
+ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
+ enum jbt_power_mode new_mode)
+ {
+- struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
+ int ret = -EINVAL;
+
+ dev_dbg(&jbt->spi->dev, "entering (old_state=%s, new_state=%s)\n",
+@@ -375,49 +395,17 @@ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
+
+ mutex_lock(&jbt->lock);
+
+- if (jbt->suspended) {
+- switch (new_mode) {
+- case JBT_POWER_MODE_DEEP_STANDBY:
+- case JBT_POWER_MODE_SLEEP:
+- case JBT_POWER_MODE_NORMAL:
+- ret = 0;
+- jbt->suspend_mode = new_mode;
+- break;
+- default:
+- break;
+- }
+- } else if (new_mode == JBT_POWER_MODE_NORMAL &&
+- pdata->enable_pixel_clock) {
+- pdata->enable_pixel_clock(&jbt->spi->dev, 1);
+- }
+-
+ switch (jbt->power_mode) {
+- case JBT_POWER_MODE_DEEP_STANDBY:
++ case JBT_POWER_MODE_OFF:
+ switch (new_mode) {
+- case JBT_POWER_MODE_DEEP_STANDBY:
++ case JBT_POWER_MODE_OFF:
+ ret = 0;
+ break;
+- case JBT_POWER_MODE_SLEEP:
+- ret = jbt_standby_to_sleep(jbt);
+- break;
+ case JBT_POWER_MODE_NORMAL:
+- /* first transition into sleep */
+- ret = jbt_standby_to_sleep(jbt);
+- /* then transition into normal */
+- ret |= jbt_sleep_to_normal(jbt);
++ ret = jbt_off_to_normal(jbt);
+ break;
+- }
+- break;
+- case JBT_POWER_MODE_SLEEP:
+- switch (new_mode) {
+- case JBT_POWER_MODE_SLEEP:
+- ret = 0;
+- break;
+- case JBT_POWER_MODE_DEEP_STANDBY:
+- ret = jbt_sleep_to_standby(jbt);
+- break;
+- case JBT_POWER_MODE_NORMAL:
+- ret = jbt_sleep_to_normal(jbt);
++ case JBT_POWER_MODE_STANDBY:
++ ret = -EINVAL;
+ break;
+ }
+ break;
+@@ -426,25 +414,23 @@ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
+ case JBT_POWER_MODE_NORMAL:
+ ret = 0;
+ break;
+- case JBT_POWER_MODE_DEEP_STANDBY:
+- /* first transition into sleep */
+- ret = jbt_normal_to_sleep(jbt);
+- /* then transition into deep standby */
+- ret |= jbt_sleep_to_standby(jbt);
++ case JBT_POWER_MODE_OFF:
++ ret = jbt_normal_to_off(jbt);
+ break;
+- case JBT_POWER_MODE_SLEEP:
+- ret = jbt_normal_to_sleep(jbt);
++ case JBT_POWER_MODE_STANDBY:
++ ret = -EINVAL;
+ break;
+ }
++ break;
++ case JBT_POWER_MODE_STANDBY:
++ ret = -EINVAL;
++ break;
+ }
+
+ if (ret == 0) {
+ jbt->power_mode = new_mode;
+- if (new_mode != JBT_POWER_MODE_NORMAL &&
+- pdata->enable_pixel_clock)
+- pdata->enable_pixel_clock(&jbt->spi->dev, 0);
+ } else {
+- dev_err(&jbt->spi->dev, "Failed enter state '%s': %d\n",
++ dev_err(&jbt->spi->dev, "Failed to enter state '%s': %d\n",
+ jbt_power_mode_names[new_mode], ret);
+ }
+
+@@ -456,28 +442,46 @@ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
+ static int jbt6k74_set_resolution(struct jbt_info *jbt,
+ enum jbt_resolution new_resolution)
+ {
++ int old_resolution;
+ int ret = 0;
+- enum jbt_resolution old_resolution;
++
++ if ( !jbt ) return -1;
+
+ mutex_lock(&jbt->lock);
+
+- if (jbt->resolution == new_resolution)
+- goto out_unlock;
++ if ( jbt->resolution == new_resolution ) goto out_unlock;
++ if ( jbt->power_mode == JBT_POWER_MODE_OFF ) goto out_unlock;
+
+ old_resolution = jbt->resolution;
+ jbt->resolution = new_resolution;
+
+- if (jbt->power_mode == JBT_POWER_MODE_NORMAL) {
++ if ( jbt->power_mode == JBT_POWER_MODE_NORMAL ) {
++
++ ret = jbt_normal_to_standby(jbt);
++
++ mdelay(25);
+
+- /* first transition into sleep */
+- ret = jbt_normal_to_sleep(jbt);
+- ret |= jbt_sleep_to_normal(jbt);
++ if (jbt->resolution == JBT_RESOLUTION_VGA) {
++ /* Quad mode off */
++ ret |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x00);
++ ret = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x80);
++ } else {
++ /* Quad mode on */
++ ret |= jbt_reg_write(jbt, JBT_REG_QUAD_RATE, 0x22);
++ ret = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x81);
++ }
++
++ mdelay(25);
++
++ ret |= jbt_standby_to_normal(jbt);
+
+ if (ret) {
+ jbt->resolution = old_resolution;
+- dev_err(&jbt->spi->dev, "Failed to set resolution '%s')\n",
++ dev_err(&jbt->spi->dev,
++ "Failed to set resolution '%s')\n",
+ jbt_resolution_names[new_resolution]);
+ }
++
+ }
+
+ out_unlock:
+@@ -589,7 +593,7 @@ static ssize_t reset_write(struct device *dev, struct device_attribute *attr,
+
+ mutex_unlock(&jbt->lock);
+
+- jbt->power_mode = JBT_POWER_MODE_DEEP_STANDBY;
++ jbt->power_mode = JBT_POWER_MODE_OFF;
+ jbt6k74_enter_power_mode(jbt, old_power_mode);
+
+ return count;
+@@ -616,27 +620,6 @@ static struct attribute_group jbt_attr_group = {
+ .attrs = jbt_sysfs_entries,
+ };
+
+-/* FIXME: This in an ugly hack to delay display blanking.
+- When the jbt is in sleep mode it displays an all white screen and thus one
+- will a see a short flash.
+- By delaying the blanking we will give the backlight a chance to turn off and
+- thus avoid getting the flash */
+-static void jbt_blank_worker(struct work_struct *work)
+-{
+- struct jbt_info *jbt = container_of(work, struct jbt_info,
+- blank_work.work);
+-
+- switch (jbt->blank_mode) {
+- case FB_BLANK_NORMAL:
+- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_SLEEP);
+- break;
+- case FB_BLANK_POWERDOWN:
+- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_DEEP_STANDBY);
+- break;
+- default:
+- break;
+- }
+-}
+
+ static int jbt6k74_set_mode(struct lcd_device *ld, struct fb_videomode *m)
+ {
+@@ -649,7 +632,7 @@ static int jbt6k74_set_mode(struct lcd_device *ld, struct fb_videomode *m)
+ ret = jbt6k74_set_resolution(jbt, JBT_RESOLUTION_VGA);
+ } else {
+ dev_err(&jbt->spi->dev, "Unknown resolution.\n");
+- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_SLEEP);
++ jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
+ }
+
+ return ret;
+@@ -671,11 +654,11 @@ static int jbt6k74_set_power(struct lcd_device *ld, int power)
+ break;
+ case FB_BLANK_NORMAL:
+ dev_dbg(&jbt->spi->dev, "blank\n");
+- ret = schedule_delayed_work(&jbt->blank_work, HZ);
++ ret = jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
+ break;
+ case FB_BLANK_POWERDOWN:
+ dev_dbg(&jbt->spi->dev, "powerdown\n");
+- ret = schedule_delayed_work(&jbt->blank_work, HZ);
++ ret = jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
+ break;
+ default:
+ break;
+@@ -691,10 +674,10 @@ static int jbt6k74_get_power(struct lcd_device *ld)
+ switch (jbt->power_mode) {
+ case JBT_POWER_MODE_NORMAL:
+ return FB_BLANK_UNBLANK;
+- case JBT_POWER_MODE_SLEEP:
++ case JBT_POWER_MODE_OFF:
+ return FB_BLANK_NORMAL;
+ default:
+- return JBT_POWER_MODE_DEEP_STANDBY;
++ return JBT_POWER_MODE_OFF;
+ }
+ }
+
+@@ -728,6 +711,8 @@ static int __devinit jbt_probe(struct spi_device *spi)
+ if (!jbt)
+ return -ENOMEM;
+
++ jbt_global = jbt;
++
+ jbt->spi = spi;
+
+ jbt->lcd_dev = lcd_device_register("jbt6k74-lcd", &spi->dev, jbt,
+@@ -738,11 +723,9 @@ static int __devinit jbt_probe(struct spi_device *spi)
+ goto err_free_drvdata;
+ }
+
+- INIT_DELAYED_WORK(&jbt->blank_work, jbt_blank_worker);
+-
+ jbt->resolution = JBT_RESOLUTION_VGA;
+- jbt->power_mode = JBT_POWER_MODE_DEEP_STANDBY;
+ jbt->next_sleep = jiffies + msecs_to_jiffies(120);
++ jbt->power_mode = JBT_POWER_MODE_OFF;
+ mutex_init(&jbt->lock);
+
+ dev_set_drvdata(&spi->dev, jbt);
+@@ -831,6 +814,24 @@ static int __devexit jbt_remove(struct spi_device *spi)
+ return 0;
+ }
+
++/* Begin horrible layering violations in the interest of making stuff work */
++
++int jbt6k74_finish_resolutionchange(enum jbt_resolution new_resolution)
++{
++ if ( !jbt_global ) return 0;
++ return jbt6k74_set_resolution(jbt_global, new_resolution);
++}
++EXPORT_SYMBOL_GPL(jbt6k74_finish_resolutionchange);
++
++void jbt6k74_setpower(enum jbt_power_mode new_power)
++{
++ if ( !jbt_global ) return;
++ jbt6k74_enter_power_mode(jbt_global, new_power);
++}
++EXPORT_SYMBOL_GPL(jbt6k74_setpower);
++
++/* End horrible layering violations */
++
+ #ifdef CONFIG_PM
+ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
+ {
+@@ -838,8 +839,7 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
+
+ jbt->suspend_mode = jbt->power_mode;
+
+- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_DEEP_STANDBY);
+- jbt->suspended = 1;
++ jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
+
+ dev_info(&spi->dev, "suspended\n");
+
+diff --git a/include/linux/jbt6k74.h b/include/linux/jbt6k74.h
+index 75488c4..2010bdc 100644
+--- a/include/linux/jbt6k74.h
++++ b/include/linux/jbt6k74.h
+@@ -3,6 +3,22 @@
+
+ #include <linux/spi/spi.h>
+
++enum jbt_resolution {
++ JBT_RESOLUTION_VGA,
++ JBT_RESOLUTION_QVGA,
++};
++
++enum jbt_power_mode {
++ JBT_POWER_MODE_OFF,
++ JBT_POWER_MODE_STANDBY,
++ JBT_POWER_MODE_NORMAL,
++};
++
++extern void jbt6k74_setpower(enum jbt_power_mode new_power);
++extern int jbt6k74_prepare_resolutionchange(enum jbt_resolution new_resolution);
++extern int jbt6k74_finish_resolutionchange(enum jbt_resolution new_resolution);
++
++
+ /*
+ * struct jbt6k74_platform_data - Platform data for jbt6k74 driver
+ * @probe_completed: Callback to be called when the driver has been
+@@ -13,7 +29,6 @@
+ */
+ struct jbt6k74_platform_data {
+ void (*probe_completed)(struct device *dev);
+- void (*enable_pixel_clock)(struct device *dev, int enable);
+
+ int gpio_reset;
+ };
+--
+1.7.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0010-Simplify-the-JBT6k74-driver.patch b/recipes/linux/linux-openmoko-2.6.32/0010-Simplify-the-JBT6k74-driver.patch
deleted file mode 100644
index ca0c2af15b..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0010-Simplify-the-JBT6k74-driver.patch
+++ /dev/null
@@ -1,667 +0,0 @@
-From cb84d543b9465a8ea48b504b1dfb745c6682a50e Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Sun, 28 Feb 2010 15:20:57 +0100
-Subject: [PATCH 1/2] Simplify the JBT6k74 driver
-
-Simplify the JBT6k74 driver
-
-We don't need all the native sleep states - they just complicate things. Instead, just
-use the LDO "power switch" to send it firmly to sleep and wake it up in a virgin state
-each time.
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-display.c | 116 ++++++++++++------------
- drivers/mfd/glamo/glamo-display.h | 2 +
- drivers/mfd/glamo/glamo-drm-private.h | 10 ++
- drivers/mfd/glamo/glamo-kms-fb.c | 54 ++----------
- drivers/video/backlight/jbt6k74.c | 160 ++++++++-------------------------
- include/linux/jbt6k74.h | 1 -
- 6 files changed, 115 insertions(+), 228 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
-index 34a665a..a384c8b 100644
---- a/drivers/mfd/glamo/glamo-display.c
-+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -239,14 +239,6 @@ static int glamo_run_lcd_script(struct glamodrm_handle *gdrm,
- }
-
-
--extern void jbt6k74_action(int val);
--
--/* Power on/off */
--static void glamo_crtc_dpms(struct drm_crtc *crtc, int mode)
--{
--}
--
--
- static bool glamo_crtc_mode_fixup(struct drm_crtc *crtc,
- struct drm_display_mode *mode,
- struct drm_display_mode *adjusted_mode)
-@@ -275,6 +267,12 @@ static int glamo_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
- gcrtc = to_glamo_crtc(crtc);
- gdrm = gcrtc->gdrm; /* Here it is! */
-
-+ if ( !gcrtc->pixel_clock_on ) {
-+ printk(KERN_WARNING "[glamo-drm] Refusing to set base while "
-+ "pixel clock is off.\n");
-+ return -EBUSY;
-+ }
-+
- gfb = to_glamo_framebuffer(crtc->fb);
- obj = gfb->obj;
- gobj = obj->driver_private;
-@@ -306,6 +304,12 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
- gcrtc = to_glamo_crtc(crtc);
- gdrm = gcrtc->gdrm; /* Here it is! */
-
-+ if ( !gcrtc->pixel_clock_on ) {
-+ printk(KERN_WARNING "[glamo-drm] Refusing to set mode while "
-+ "pixel clock is off.\n");
-+ return -EBUSY;
-+ }
-+
- glamo_lcd_cmd_mode(gdrm, 1);
-
- glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD, mode->clock);
-@@ -354,10 +358,47 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
-
- glamo_crtc_mode_set_base(crtc, 0, 0, old_fb);
-
-+ gcrtc->current_mode = *mode;
-+ gcrtc->current_mode_set = 1;
-+ gcrtc->current_fb = old_fb;
-+
- return 0;
- }
-
-
-+extern void jbt6k74_action(int val);
-+
-+/* This is not the right place to switch power on/off, because the helper
-+ * stuff ends up calling this before/after setting the mode. We can't
-+ * set modes with the display off (although backlight off would be OK) */
-+static void glamo_crtc_dpms(struct drm_crtc *crtc, int mode)
-+{
-+ /* do nothing */
-+}
-+
-+
-+void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
-+{
-+ struct drm_crtc *crtc = gdrm->crtc;
-+ struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
-+
-+ if ( mode ) {
-+ glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
-+ gcrtc->pixel_clock_on = 1;
-+ jbt6k74_action(1);
-+ if ( gcrtc->current_mode_set ) {
-+ glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
-+ &gcrtc->current_mode, 0, 0,
-+ gcrtc->current_fb);
-+ }
-+ } else {
-+ jbt6k74_action(0);
-+ glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
-+ gcrtc->pixel_clock_on = 0;
-+ }
-+}
-+
-+
- static void glamo_crtc_prepare(struct drm_crtc *crtc)
- {
- }
-@@ -725,6 +766,8 @@ int glamo_display_init(struct drm_device *dev)
- + sizeof(struct drm_connector *), GFP_KERNEL);
- if (glamo_crtc == NULL) return 1;
- glamo_crtc->gdrm = gdrm;
-+ gdrm->crtc = (struct drm_crtc *)glamo_crtc;
-+ glamo_crtc->pixel_clock_on = 1;
- glamo_crtc->blank_mode = DRM_MODE_DPMS_OFF;
- drm_crtc_init(dev, &glamo_crtc->base, &glamo_crtc_funcs);
- drm_crtc_helper_add(&glamo_crtc->base, &glamo_crtc_helper_funcs);
-@@ -808,62 +851,23 @@ int glamo_display_init(struct drm_device *dev)
-
- void glamo_display_suspend(struct glamodrm_handle *gdrm)
- {
-- gdrm->saved_width = reg_read_lcd(gdrm, GLAMO_REG_LCD_WIDTH);
-- gdrm->saved_height = reg_read_lcd(gdrm, GLAMO_REG_LCD_HEIGHT);
-- gdrm->saved_pitch = reg_read_lcd(gdrm, GLAMO_REG_LCD_PITCH);
-- gdrm->saved_htotal = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL);
-- gdrm->saved_hrtrst = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START);
-- gdrm->saved_hrtren = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END);
-- gdrm->saved_hdspst = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START);
-- gdrm->saved_hdspen = reg_read_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END);
-- gdrm->saved_vtotal = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL);
-- gdrm->saved_vrtrst = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START);
-- gdrm->saved_vrtren = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END);
-- gdrm->saved_vdspst = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START);
-- gdrm->saved_vdspen = reg_read_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END);
-+ /* do nothing */
- }
-
-
- void glamo_display_resume(struct glamodrm_handle *gdrm)
- {
-+ struct drm_crtc *crtc = gdrm->crtc;
-+ struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
-+
- glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
- glamo_engine_reset(gdrm->glamo_core, GLAMO_ENGINE_LCD);
- glamo_run_lcd_script(gdrm, lcd_init_script,
- ARRAY_SIZE(lcd_init_script));
-
-- /* Restore timings */
-- glamo_lcd_cmd_mode(gdrm, 1);
-- glamo_engine_reclock(gdrm->glamo_core, GLAMO_ENGINE_LCD,
-- gdrm->saved_clock);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_WIDTH, GLAMO_LCD_WIDTH_MASK,
-- gdrm->saved_width);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HEIGHT, GLAMO_LCD_HEIGHT_MASK,
-- gdrm->saved_height);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_PITCH, GLAMO_LCD_PITCH_MASK,
-- gdrm->saved_pitch);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_TOTAL,
-- GLAMO_LCD_HV_TOTAL_MASK, gdrm->saved_htotal);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_START,
-- GLAMO_LCD_HV_RETR_START_MASK, gdrm->saved_hrtrst);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_RETR_END,
-- GLAMO_LCD_HV_RETR_END_MASK, gdrm->saved_hrtren);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_START,
-- GLAMO_LCD_HV_RETR_DISP_START_MASK,
-- gdrm->saved_hdspst);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_HORIZ_DISP_END,
-- GLAMO_LCD_HV_RETR_DISP_END_MASK,
-- gdrm->saved_hdspen);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_TOTAL,
-- GLAMO_LCD_HV_TOTAL_MASK, gdrm->saved_vtotal);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_START,
-- GLAMO_LCD_HV_RETR_START_MASK, gdrm->saved_vrtrst);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_RETR_END,
-- GLAMO_LCD_HV_RETR_END_MASK, gdrm->saved_vrtren);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_START,
-- GLAMO_LCD_HV_RETR_DISP_START_MASK,
-- gdrm->saved_vdspst);
-- reg_set_bit_mask_lcd(gdrm, GLAMO_REG_LCD_VERT_DISP_END,
-- GLAMO_LCD_HV_RETR_DISP_END_MASK,
-- gdrm->saved_vdspen);
-- glamo_lcd_cmd_mode(gdrm, 0);
-+ if ( gcrtc->current_mode_set ) {
-+ glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
-+ &gcrtc->current_mode, 0, 0,
-+ gcrtc->current_fb);
-+ }
- }
-diff --git a/drivers/mfd/glamo/glamo-display.h b/drivers/mfd/glamo/glamo-display.h
-index d6f21bc..728bba5 100644
---- a/drivers/mfd/glamo/glamo-display.h
-+++ b/drivers/mfd/glamo/glamo-display.h
-@@ -36,4 +36,6 @@ extern int glamo_framebuffer_create(struct drm_device *dev,
- extern void glamo_display_suspend(struct glamodrm_handle *gdrm);
- extern void glamo_display_resume(struct glamodrm_handle *gdrm);
-
-+extern void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode);
-+
- #endif /* __GLAMO_DISPLAY_H */
-diff --git a/drivers/mfd/glamo/glamo-drm-private.h b/drivers/mfd/glamo/glamo-drm-private.h
-index 7949a2e..4e24019 100644
---- a/drivers/mfd/glamo/glamo-drm-private.h
-+++ b/drivers/mfd/glamo/glamo-drm-private.h
-@@ -106,6 +106,9 @@ struct glamodrm_handle {
-
- /* A scratch block */
- struct drm_mm_node *scratch;
-+
-+ /* We only have one */
-+ struct drm_crtc *crtc;
- };
-
-
-@@ -118,11 +121,18 @@ struct drm_glamo_gem_object {
-
-
- struct glamo_crtc {
-+
- struct drm_crtc base;
- struct glamodrm_handle *gdrm;
- /* a mode_set for fbdev users on this crtc */
- struct drm_mode_set mode_set;
- int blank_mode;
-+
-+ int pixel_clock_on;
-+
-+ int current_mode_set;
-+ struct drm_display_mode current_mode;
-+ struct drm_framebuffer *current_fb;
- };
-
-
-diff --git a/drivers/mfd/glamo/glamo-kms-fb.c b/drivers/mfd/glamo/glamo-kms-fb.c
-index 61cd605..57680ed 100644
---- a/drivers/mfd/glamo/glamo-kms-fb.c
-+++ b/drivers/mfd/glamo/glamo-kms-fb.c
-@@ -253,64 +253,24 @@ static void glamofb_on(struct fb_info *info)
- {
- struct glamofb_par *par = info->par;
- struct drm_device *dev = par->dev;
-- struct drm_crtc *crtc;
-- struct drm_encoder *encoder;
-- int i;
-+ struct glamodrm_handle *gdrm = dev->dev_private;
-
-- /*
-- * For each CRTC in this fb, find all associated encoders
-- * and turn them off, then turn off the CRTC.
-- */
-- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-- struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-+ printk(KERN_CRIT "Turning on display...\n");
-
-- for (i = 0; i < par->crtc_count; i++)
-- if (crtc->base.id == par->crtc_ids[i])
-- break;
--
-- crtc_funcs->dpms(crtc, DRM_MODE_DPMS_ON);
-+ gdrm = dev->dev_private;
-
-- /* Found a CRTC on this fb, now find encoders */
-- list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
-- if (encoder->crtc == crtc) {
-- struct drm_encoder_helper_funcs *encoder_funcs;
-- encoder_funcs = encoder->helper_private;
-- encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON);
-- }
-- }
-- }
-+ glamo_lcd_power(gdrm, 1);
- }
-
- static void glamofb_off(struct fb_info *info, int dpms_mode)
- {
- struct glamofb_par *par = info->par;
- struct drm_device *dev = par->dev;
-- struct drm_crtc *crtc;
-- struct drm_encoder *encoder;
-- int i;
-+ struct glamodrm_handle *gdrm = dev->dev_private;
-
-- /*
-- * For each CRTC in this fb, find all associated encoders
-- * and turn them off, then turn off the CRTC.
-- */
-- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-- struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
--
-- for (i = 0; i < par->crtc_count; i++)
-- if (crtc->base.id == par->crtc_ids[i])
-- break;
-+ printk(KERN_CRIT "Turning off display...\n");
-
-- /* Found a CRTC on this fb, now find encoders */
-- list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
-- if (encoder->crtc == crtc) {
-- struct drm_encoder_helper_funcs *encoder_funcs;
-- encoder_funcs = encoder->helper_private;
-- encoder_funcs->dpms(encoder, dpms_mode);
-- }
-- }
-- if (dpms_mode == DRM_MODE_DPMS_OFF)
-- crtc_funcs->dpms(crtc, dpms_mode);
-- }
-+ glamo_lcd_power(gdrm, 0);
- }
-
- static int glamofb_blank(int blank, struct fb_info *info)
-diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
-index 95ca4cf..9554cb3 100644
---- a/drivers/video/backlight/jbt6k74.c
-+++ b/drivers/video/backlight/jbt6k74.c
-@@ -107,14 +107,12 @@ enum jbt_resolution {
- };
-
- enum jbt_power_mode {
-- JBT_POWER_MODE_DEEP_STANDBY,
-- JBT_POWER_MODE_SLEEP,
-+ JBT_POWER_MODE_OFF,
- JBT_POWER_MODE_NORMAL,
- };
-
- static const char *jbt_power_mode_names[] = {
-- [JBT_POWER_MODE_DEEP_STANDBY] = "deep-standby",
-- [JBT_POWER_MODE_SLEEP] = "sleep",
-+ [JBT_POWER_MODE_OFF] = "off",
- [JBT_POWER_MODE_NORMAL] = "normal",
- };
-
-@@ -260,14 +258,18 @@ static int jbt_init_regs(struct jbt_info *jbt)
- return ret ? -EIO : 0;
- }
-
--static int jbt_standby_to_sleep(struct jbt_info *jbt)
-+
-+static int jbt_off_to_normal(struct jbt_info *jbt)
- {
- int ret;
-+
- struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
-
- gpio_set_value_cansleep(pdata->gpio_reset, 1);
- ret = regulator_bulk_enable(ARRAY_SIZE(jbt->supplies), jbt->supplies);
-
-+ mdelay(30);
-+
- /* three times command zero */
- ret |= jbt_reg_write_nodata(jbt, 0x00);
- mdelay(1);
-@@ -279,18 +281,11 @@ static int jbt_standby_to_sleep(struct jbt_info *jbt)
- /* deep standby out */
- ret |= jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x11);
- mdelay(1);
-- ret = jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x28);
-+ ret |= jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE, 0x28);
-
- /* (re)initialize register set */
- ret |= jbt_init_regs(jbt);
-
-- return ret ? -EIO : 0;
--}
--
--static int jbt_sleep_to_normal(struct jbt_info *jbt)
--{
-- int ret;
--
- /* Make sure we are 120 ms after SLEEP_OUT */
- if (time_before(jiffies, jbt->next_sleep))
- mdelay(jiffies_to_msecs(jbt->next_sleep - jiffies));
-@@ -320,53 +315,34 @@ static int jbt_sleep_to_normal(struct jbt_info *jbt)
-
- /* Sleep mode off */
- ret |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_OUT);
-- jbt->next_sleep = jiffies + msecs_to_jiffies(120);
-
-- /* Allow the booster and display controller to restart stably */
-- mdelay(5);
--
-- return ret ? -EIO : 0;
--}
--
--static int jbt_normal_to_sleep(struct jbt_info *jbt)
--{
-- int ret;
--
-- /* Make sure we are 120 ms after SLEEP_OUT */
-- while (time_before(jiffies, jbt->next_sleep))
-- cpu_relax();
--
-- ret = jbt_reg_write_nodata(jbt, JBT_REG_DISPLAY_OFF);
-- ret |= jbt_reg_write16(jbt, JBT_REG_OUTPUT_CONTROL, 0x8000 | 1 << 3);
-- ret |= jbt_reg_write_nodata(jbt, JBT_REG_SLEEP_IN);
- jbt->next_sleep = jiffies + msecs_to_jiffies(120);
-
-- /* Allow the internal circuits to stop automatically */
-+ /* Allow the booster and display controller to restart stably */
- mdelay(5);
-
- return ret ? -EIO : 0;
- }
-
--static int jbt_sleep_to_standby(struct jbt_info *jbt)
-+static int jbt_normal_to_off(struct jbt_info *jbt)
- {
- int ret;
- struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
-
-- ret = jbt_reg_write(jbt, JBT_REG_POWER_ON_OFF, 0x00);
--
-- if (!ret)
-- ret = regulator_bulk_disable(ARRAY_SIZE(jbt->supplies), jbt->supplies);
-+ /* Pull the plug! */
-+ ret = regulator_bulk_disable(ARRAY_SIZE(jbt->supplies),
-+ jbt->supplies);
-
- if (!ret)
- gpio_set_value_cansleep(pdata->gpio_reset, 0);
-
-- return ret;
-+ return ret ? -EIO : 0;
- }
-
-+
- static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
- enum jbt_power_mode new_mode)
- {
-- struct jbt6k74_platform_data *pdata = jbt->spi->dev.platform_data;
- int ret = -EINVAL;
-
- dev_dbg(&jbt->spi->dev, "entering (old_state=%s, new_state=%s)\n",
-@@ -375,49 +351,14 @@ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
-
- mutex_lock(&jbt->lock);
-
-- if (jbt->suspended) {
-- switch (new_mode) {
-- case JBT_POWER_MODE_DEEP_STANDBY:
-- case JBT_POWER_MODE_SLEEP:
-- case JBT_POWER_MODE_NORMAL:
-- ret = 0;
-- jbt->suspend_mode = new_mode;
-- break;
-- default:
-- break;
-- }
-- } else if (new_mode == JBT_POWER_MODE_NORMAL &&
-- pdata->enable_pixel_clock) {
-- pdata->enable_pixel_clock(&jbt->spi->dev, 1);
-- }
--
- switch (jbt->power_mode) {
-- case JBT_POWER_MODE_DEEP_STANDBY:
-- switch (new_mode) {
-- case JBT_POWER_MODE_DEEP_STANDBY:
-- ret = 0;
-- break;
-- case JBT_POWER_MODE_SLEEP:
-- ret = jbt_standby_to_sleep(jbt);
-- break;
-- case JBT_POWER_MODE_NORMAL:
-- /* first transition into sleep */
-- ret = jbt_standby_to_sleep(jbt);
-- /* then transition into normal */
-- ret |= jbt_sleep_to_normal(jbt);
-- break;
-- }
-- break;
-- case JBT_POWER_MODE_SLEEP:
-+ case JBT_POWER_MODE_OFF:
- switch (new_mode) {
-- case JBT_POWER_MODE_SLEEP:
-+ case JBT_POWER_MODE_OFF:
- ret = 0;
- break;
-- case JBT_POWER_MODE_DEEP_STANDBY:
-- ret = jbt_sleep_to_standby(jbt);
-- break;
- case JBT_POWER_MODE_NORMAL:
-- ret = jbt_sleep_to_normal(jbt);
-+ ret = jbt_off_to_normal(jbt);
- break;
- }
- break;
-@@ -426,25 +367,16 @@ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
- case JBT_POWER_MODE_NORMAL:
- ret = 0;
- break;
-- case JBT_POWER_MODE_DEEP_STANDBY:
-- /* first transition into sleep */
-- ret = jbt_normal_to_sleep(jbt);
-- /* then transition into deep standby */
-- ret |= jbt_sleep_to_standby(jbt);
-- break;
-- case JBT_POWER_MODE_SLEEP:
-- ret = jbt_normal_to_sleep(jbt);
-+ case JBT_POWER_MODE_OFF:
-+ ret = jbt_normal_to_off(jbt);
- break;
- }
- }
-
- if (ret == 0) {
- jbt->power_mode = new_mode;
-- if (new_mode != JBT_POWER_MODE_NORMAL &&
-- pdata->enable_pixel_clock)
-- pdata->enable_pixel_clock(&jbt->spi->dev, 0);
- } else {
-- dev_err(&jbt->spi->dev, "Failed enter state '%s': %d\n",
-+ dev_err(&jbt->spi->dev, "Failed to enter state '%s': %d\n",
- jbt_power_mode_names[new_mode], ret);
- }
-
-@@ -470,8 +402,8 @@ static int jbt6k74_set_resolution(struct jbt_info *jbt,
- if (jbt->power_mode == JBT_POWER_MODE_NORMAL) {
-
- /* first transition into sleep */
-- ret = jbt_normal_to_sleep(jbt);
-- ret |= jbt_sleep_to_normal(jbt);
-+ ret = jbt_normal_to_off(jbt);
-+ ret |= jbt_off_to_normal(jbt);
-
- if (ret) {
- jbt->resolution = old_resolution;
-@@ -589,7 +521,7 @@ static ssize_t reset_write(struct device *dev, struct device_attribute *attr,
-
- mutex_unlock(&jbt->lock);
-
-- jbt->power_mode = JBT_POWER_MODE_DEEP_STANDBY;
-+ jbt->power_mode = JBT_POWER_MODE_OFF;
- jbt6k74_enter_power_mode(jbt, old_power_mode);
-
- return count;
-@@ -616,27 +548,6 @@ static struct attribute_group jbt_attr_group = {
- .attrs = jbt_sysfs_entries,
- };
-
--/* FIXME: This in an ugly hack to delay display blanking.
-- When the jbt is in sleep mode it displays an all white screen and thus one
-- will a see a short flash.
-- By delaying the blanking we will give the backlight a chance to turn off and
-- thus avoid getting the flash */
--static void jbt_blank_worker(struct work_struct *work)
--{
-- struct jbt_info *jbt = container_of(work, struct jbt_info,
-- blank_work.work);
--
-- switch (jbt->blank_mode) {
-- case FB_BLANK_NORMAL:
-- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_SLEEP);
-- break;
-- case FB_BLANK_POWERDOWN:
-- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_DEEP_STANDBY);
-- break;
-- default:
-- break;
-- }
--}
-
- static int jbt6k74_set_mode(struct lcd_device *ld, struct fb_videomode *m)
- {
-@@ -649,7 +560,7 @@ static int jbt6k74_set_mode(struct lcd_device *ld, struct fb_videomode *m)
- ret = jbt6k74_set_resolution(jbt, JBT_RESOLUTION_VGA);
- } else {
- dev_err(&jbt->spi->dev, "Unknown resolution.\n");
-- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_SLEEP);
-+ jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
- }
-
- return ret;
-@@ -671,11 +582,11 @@ static int jbt6k74_set_power(struct lcd_device *ld, int power)
- break;
- case FB_BLANK_NORMAL:
- dev_dbg(&jbt->spi->dev, "blank\n");
-- ret = schedule_delayed_work(&jbt->blank_work, HZ);
-+ ret = jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
- break;
- case FB_BLANK_POWERDOWN:
- dev_dbg(&jbt->spi->dev, "powerdown\n");
-- ret = schedule_delayed_work(&jbt->blank_work, HZ);
-+ ret = jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
- break;
- default:
- break;
-@@ -691,10 +602,10 @@ static int jbt6k74_get_power(struct lcd_device *ld)
- switch (jbt->power_mode) {
- case JBT_POWER_MODE_NORMAL:
- return FB_BLANK_UNBLANK;
-- case JBT_POWER_MODE_SLEEP:
-+ case JBT_POWER_MODE_OFF:
- return FB_BLANK_NORMAL;
- default:
-- return JBT_POWER_MODE_DEEP_STANDBY;
-+ return JBT_POWER_MODE_OFF;
- }
- }
-
-@@ -707,7 +618,7 @@ void jbt6k74_action(int val)
- return;
- }
- if ( val == 0 ) {
-- jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_SLEEP);
-+ jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_OFF);
- } else {
- jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_NORMAL);
- }
-@@ -756,11 +667,9 @@ static int __devinit jbt_probe(struct spi_device *spi)
- goto err_free_drvdata;
- }
-
-- INIT_DELAYED_WORK(&jbt->blank_work, jbt_blank_worker);
--
- jbt->resolution = JBT_RESOLUTION_VGA;
-- jbt->power_mode = JBT_POWER_MODE_DEEP_STANDBY;
- jbt->next_sleep = jiffies + msecs_to_jiffies(120);
-+ jbt->power_mode = JBT_POWER_MODE_OFF;
- mutex_init(&jbt->lock);
-
- dev_set_drvdata(&spi->dev, jbt);
-@@ -856,9 +765,10 @@ static int jbt_suspend(struct spi_device *spi, pm_message_t state)
-
- jbt->suspend_mode = jbt->power_mode;
-
-- jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_DEEP_STANDBY);
-- jbt->suspended = 1;
-+ printk(KERN_CRIT "[jbt] powering off for suspend\n");
-+ jbt6k74_enter_power_mode(jbt, JBT_POWER_MODE_OFF);
-
-+ printk(KERN_CRIT "[jbt] done\n");
- dev_info(&spi->dev, "suspended\n");
-
- return 0;
-@@ -869,11 +779,13 @@ int jbt6k74_resume(struct spi_device *spi)
- struct jbt_info *jbt = dev_get_drvdata(&spi->dev);
- dev_info(&spi->dev, "starting resume: %d\n", jbt->suspend_mode);
-
-+ printk(KERN_CRIT "[jbt] powering on for resume\n");
- mdelay(20);
-
- jbt->suspended = 0;
- jbt6k74_enter_power_mode(jbt, jbt->suspend_mode);
-
-+ printk(KERN_CRIT "[jbt] done\n");
- dev_info(&spi->dev, "resumed: %d\n", jbt->suspend_mode);
-
- return 0;
-diff --git a/include/linux/jbt6k74.h b/include/linux/jbt6k74.h
-index 75488c4..4cf760c 100644
---- a/include/linux/jbt6k74.h
-+++ b/include/linux/jbt6k74.h
-@@ -13,7 +13,6 @@
- */
- struct jbt6k74_platform_data {
- void (*probe_completed)(struct device *dev);
-- void (*enable_pixel_clock)(struct device *dev, int enable);
-
- int gpio_reset;
- };
---
-1.7.0
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0011-Don-t-choke-if-userspace-provides-a-pixel-clock-valu.patch b/recipes/linux/linux-openmoko-2.6.32/0011-Don-t-choke-if-userspace-provides-a-pixel-clock-valu.patch
deleted file mode 100644
index 0d47c1263f..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0011-Don-t-choke-if-userspace-provides-a-pixel-clock-valu.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 73abadc5bbbc94f4ca67effc5f5c3174c2a3ac48 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Sun, 28 Feb 2010 15:40:13 +0100
-Subject: [PATCH 2/2] Don't choke if userspace provides a pixel clock value
-
-Don't choke if userspace provides a pixel clock value
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-kms-fb.c | 46 ++++++++++++++++++-------------------
- 1 files changed, 22 insertions(+), 24 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-kms-fb.c b/drivers/mfd/glamo/glamo-kms-fb.c
-index 57680ed..6d4b9ea 100644
---- a/drivers/mfd/glamo/glamo-kms-fb.c
-+++ b/drivers/mfd/glamo/glamo-kms-fb.c
-@@ -177,37 +177,35 @@ static int glamofb_set_par(struct fb_info *info)
- struct drm_device *dev = par->dev;
- struct fb_var_screeninfo *var = &info->var;
- int i;
-+ struct drm_crtc *crtc;
-+ int ret;
-
- DRM_DEBUG("%d %d\n", var->xres, var->pixclock);
-
- if (var->pixclock != -1) {
-+ DRM_ERROR("Warning: userspace gave me a pixel clock value (%i)"
-+ "- I'm ignoring it.\n", var->pixclock);
-+ }
-
-- DRM_ERROR("PIXEL CLOCK SET\n");
-- return -EINVAL;
-- } else {
-- struct drm_crtc *crtc;
-- int ret;
--
-- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-- struct glamo_crtc *glamo_crtc = to_glamo_crtc(crtc);
--
-- for (i = 0; i < par->crtc_count; i++)
-- if (crtc->base.id == par->crtc_ids[i])
-- break;
--
-- if (i == par->crtc_count)
-- continue;
--
-- if (crtc->fb == glamo_crtc->mode_set.fb) {
-- mutex_lock(&dev->mode_config.mutex);
-- ret = crtc->funcs->set_config(&glamo_crtc->mode_set);
-- mutex_unlock(&dev->mode_config.mutex);
-- if (ret)
-- return ret;
-- }
-+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
-+ struct glamo_crtc *glamo_crtc = to_glamo_crtc(crtc);
-+
-+ for (i = 0; i < par->crtc_count; i++)
-+ if (crtc->base.id == par->crtc_ids[i])
-+ break;
-+
-+ if (i == par->crtc_count)
-+ continue;
-+
-+ if (crtc->fb == glamo_crtc->mode_set.fb) {
-+ mutex_lock(&dev->mode_config.mutex);
-+ ret = crtc->funcs->set_config(&glamo_crtc->mode_set);
-+ mutex_unlock(&dev->mode_config.mutex);
-+ if (ret)
-+ return ret;
- }
-- return 0;
- }
-+ return 0;
- }
-
- static int glamofb_pan_display(struct fb_var_screeninfo *var,
---
-1.7.0
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0008-Fix-crash-when-reading-Glamo-registers-via-sysfs.patch b/recipes/linux/linux-openmoko-2.6.32/0011-Fix-crash-when-reading-Glamo-registers-via-sysfs.patch
index f5da51ed95..0f5af99025 100644
--- a/recipes/linux/linux-openmoko-2.6.32/0008-Fix-crash-when-reading-Glamo-registers-via-sysfs.patch
+++ b/recipes/linux/linux-openmoko-2.6.32/0011-Fix-crash-when-reading-Glamo-registers-via-sysfs.patch
@@ -1,7 +1,7 @@
-From f6debba05c9f6d0337324dc0eaa8e892d2d3142b Mon Sep 17 00:00:00 2001
+From d5f07ab010afe531312874872904fe1a0348ee2b Mon Sep 17 00:00:00 2001
From: Thomas White <taw@bitwiz.org.uk>
Date: Thu, 4 Feb 2010 00:07:25 +0100
-Subject: [PATCH 8/9] Fix crash when reading Glamo registers via sysfs
+Subject: [PATCH 11/14] Fix crash when reading Glamo registers via sysfs
glamo-core didn't ioremap() some areas, so don't try to read them.
@@ -11,7 +11,7 @@ Signed-off-by: Thomas White <taw@bitwiz.org.uk>
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/mfd/glamo/glamo-core.c b/drivers/mfd/glamo/glamo-core.c
-index a614d44..faaf269 100644
+index 74da668..33a7a59 100644
--- a/drivers/mfd/glamo/glamo-core.c
+++ b/drivers/mfd/glamo/glamo-core.c
@@ -90,14 +90,14 @@ static const struct reg_range reg_range[] = {
@@ -34,5 +34,5 @@ index a614d44..faaf269 100644
};
--
-1.6.6.1
+1.7.1
diff --git a/recipes/linux/linux-openmoko-2.6.32/0012-Fix-dynamic-command-queue-allocation.patch b/recipes/linux/linux-openmoko-2.6.32/0012-Fix-dynamic-command-queue-allocation.patch
new file mode 100644
index 0000000000..68e170a588
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.32/0012-Fix-dynamic-command-queue-allocation.patch
@@ -0,0 +1,131 @@
+From 3b328bfd4aef3ffc9b0192ca512fbc899148e8f5 Mon Sep 17 00:00:00 2001
+From: Thomas White <taw@bitwiz.org.uk>
+Date: Thu, 6 May 2010 05:40:15 -0700
+Subject: [PATCH 12/14] Fix dynamic command queue allocation
+
+(Not tested...)
+
+Signed-off-by: Thomas White <taw@bitwiz.org.uk>
+---
+ drivers/mfd/glamo/glamo-cmdq.c | 10 +++++++---
+ drivers/mfd/glamo/glamo-cmdq.h | 2 +-
+ drivers/mfd/glamo/glamo-drm-drv.c | 17 +++++++----------
+ 3 files changed, 15 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/mfd/glamo/glamo-cmdq.c b/drivers/mfd/glamo/glamo-cmdq.c
+index 442963c..28c5268 100644
+--- a/drivers/mfd/glamo/glamo-cmdq.c
++++ b/drivers/mfd/glamo/glamo-cmdq.c
+@@ -57,6 +57,7 @@
+ #include "glamo-core.h"
+ #include "glamo-drm-private.h"
+ #include "glamo-regs.h"
++#include "glamo-buffer.h"
+
+
+ #define GLAMO_CMDQ_SIZE (128 * 1024) /* 128k ring buffer */
+@@ -495,10 +496,11 @@ int glamo_cmdq_setup(struct glamodrm_handle *gdrm)
+ }
+
+
+-int glamo_cmdq_init(struct glamodrm_handle *gdrm)
++int glamo_cmdq_init(struct drm_device *dev)
+ {
+ struct drm_gem_object *obj;
+ struct drm_glamo_gem_object *gobj;
++ struct glamodrm_handle *gdrm = dev->dev_private;
+ int ret = 0;
+
+ obj = glamo_gem_object_alloc(dev, GLAMO_CMDQ_SIZE, 4);
+@@ -507,9 +509,10 @@ int glamo_cmdq_init(struct glamodrm_handle *gdrm)
+ ret = -ENOMEM;
+ goto out;
+ }
+- gobj = fbo->driver_private;
++ gobj = obj->driver_private;
+ gdrm->cmdq_offs = GLAMO_OFFSET_FB + gobj->block->start;
+- gdrm->cmdq_base = ioremap(gdrm->vram->start + offs, GLAMO_CMDQ_SIZE);
++ gdrm->cmdq_base = ioremap(gdrm->vram->start + gdrm->cmdq_offs,
++ GLAMO_CMDQ_SIZE);
+
+ /* Set up registers */
+ glamo_cmdq_setup(gdrm);
+@@ -521,6 +524,7 @@ out:
+
+ int glamo_cmdq_shutdown(struct glamodrm_handle *gdrm)
+ {
++ iounmap(gdrm->cmdq_base);
+ return 0;
+ }
+
+diff --git a/drivers/mfd/glamo/glamo-cmdq.h b/drivers/mfd/glamo/glamo-cmdq.h
+index 510d195..6d7f184 100644
+--- a/drivers/mfd/glamo/glamo-cmdq.h
++++ b/drivers/mfd/glamo/glamo-cmdq.h
+@@ -38,7 +38,7 @@ extern int glamo_ioctl_cmdburst(struct drm_device *dev, void *data,
+ extern void glamo_cmdq_blank(struct glamodrm_handle *gdrm,
+ struct drm_gem_object *obj);
+
+-extern int glamo_cmdq_init(struct glamodrm_handle *gdrm);
++extern int glamo_cmdq_init(struct drm_device *de);
+ extern int glamo_cmdq_shutdown(struct glamodrm_handle *gdrm);
+ extern void glamo_cmdq_suspend(struct glamodrm_handle *gdrm);
+ extern void glamo_cmdq_resume(struct glamodrm_handle *gdrm);
+diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c
+index 774eaff..ee648c1 100644
+--- a/drivers/mfd/glamo/glamo-drm-drv.c
++++ b/drivers/mfd/glamo/glamo-drm-drv.c
+@@ -128,7 +128,7 @@ static int glamodrm_load(struct drm_device *dev, unsigned long flags)
+ gdrm = dev->dev_private;
+
+ glamo_buffer_init(gdrm);
+- glamo_cmdq_init(gdrm);
++ glamo_cmdq_init(dev);
+ glamo_fence_init(gdrm);
+ glamo_display_init(dev);
+
+@@ -237,14 +237,14 @@ static int glamodrm_probe(struct platform_device *pdev)
+ if ( !gdrm->vram ) {
+ dev_err(&pdev->dev, "Unable to find VRAM.\n");
+ rc = -ENOENT;
+- goto out_unmap_cmdq;
++ goto out_unmap_regs;
+ }
+ gdrm->vram = request_mem_region(gdrm->vram->start,
+ resource_size(gdrm->vram), pdev->name);
+ if ( !gdrm->vram ) {
+ dev_err(&pdev->dev, "failed to request VRAM region\n");
+ rc = -ENOENT;
+- goto out_unmap_cmdq;
++ goto out_unmap_regs;
+ }
+
+ /* Find the LCD controller */
+@@ -316,10 +316,6 @@ out_release_lcd:
+ resource_size(gdrm->lcd_regs));
+ out_release_vram:
+ release_mem_region(gdrm->vram->start, resource_size(gdrm->vram));
+-out_unmap_cmdq:
+- iounmap(gdrm->cmdq_base);
+-out_release_cmdq:
+- release_mem_region(gdrm->cmdq->start, resource_size(gdrm->cmdq));
+ out_unmap_regs:
+ iounmap(gdrm->reg_base);
+ out_release_regs:
+@@ -349,9 +345,10 @@ static int glamodrm_remove(struct platform_device *pdev)
+ /* Release VRAM */
+ release_mem_region(gdrm->vram->start, resource_size(gdrm->vram));
+
+- /* Release command queue */
+- iounmap(gdrm->cmdq_base);
+- release_mem_region(gdrm->cmdq->start, resource_size(gdrm->cmdq));
++ /* Release LCD registers */
++ iounmap(gdrm->lcd_base);
++ release_mem_region(gdrm->lcd_regs->start,
++ resource_size(gdrm->lcd_regs));
+
+ /* Release 2D engine */
+ iounmap(gdrm->twod_base);
+--
+1.7.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0012-Report-all-FB-modes-given-by-the-lower-levels.patch b/recipes/linux/linux-openmoko-2.6.32/0012-Report-all-FB-modes-given-by-the-lower-levels.patch
deleted file mode 100644
index ac19dbd5d2..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0012-Report-all-FB-modes-given-by-the-lower-levels.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From f8448d2b08c1e2cfd0faba0e3f3c4c58e4ecaa9f Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Mon, 1 Mar 2010 22:02:26 +0100
-Subject: [PATCH 12/13] Report all FB modes given by the lower levels
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- drivers/mfd/glamo/glamo-display.c | 70 +++++++++++++++++++++----------------
- 1 files changed, 40 insertions(+), 30 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
-index a384c8b..bc3a2ea 100644
---- a/drivers/mfd/glamo/glamo-display.c
-+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -456,43 +456,53 @@ static void glamo_connector_destroy(struct drm_connector *connector)
-
- static int glamo_connector_get_modes(struct drm_connector *connector)
- {
-- struct drm_display_mode *mode;
- struct glamo_fb_platform_data *fb_info;
- struct glamo_output *goutput = to_glamo_output(connector);
- struct glamodrm_handle *gdrm = goutput->gdrm;
-+ int i;
-
- /* Dig out the record which will tell us about the hardware */
- fb_info = gdrm->glamo_core->pdata->fb_data;
-
-- mode = drm_mode_create(connector->dev);
-- if (!mode)
-- return 0;
-- /* Fill in 'mode' here */
-- mode->type = DRM_MODE_TYPE_DEFAULT | DRM_MODE_TYPE_PREFERRED;
--
-- /* Convert framebuffer timings into KMS timings */
-- mode->clock = 1000000000UL / fb_info->modes[0].pixclock; /* ps -> kHz */
-- mode->clock *= 1000; /* kHz -> Hz */
-- mode->hdisplay = fb_info->modes[0].xres;
-- mode->hsync_start = fb_info->modes[0].right_margin + mode->hdisplay;
-- mode->hsync_end = mode->hsync_start + fb_info->modes[0].hsync_len;
-- mode->htotal = mode->hsync_end + fb_info->modes[0].left_margin;
-- mode->hskew = 0;
--
-- mode->vdisplay = fb_info->modes[0].yres;
-- mode->vsync_start = fb_info->modes[0].lower_margin + mode->vdisplay;
-- mode->vsync_end = mode->vsync_start + fb_info->modes[0].vsync_len;
-- mode->vtotal = mode->vsync_end + fb_info->modes[0].upper_margin;
-- mode->vscan = 0;
--
-- /* Physical size */
-- mode->width_mm = fb_info->width;
-- mode->height_mm = fb_info->height;
--
-- drm_mode_set_name(mode);
-- drm_mode_probed_add(connector, mode);
--
-- return 1; /* one mode, for now */
-+ for ( i=0; i<fb_info->num_modes; i++ ) {
-+
-+ struct drm_display_mode *mode;
-+
-+ mode = drm_mode_create(connector->dev);
-+ if ( !mode ) continue;
-+
-+ mode->type = DRM_MODE_TYPE_DEFAULT | DRM_MODE_TYPE_PREFERRED;
-+
-+ /* Convert framebuffer timings into KMS timings.
-+ * First: ps -> kHz */
-+ mode->clock = 1000000000UL / fb_info->modes[i].pixclock;
-+ mode->clock *= 1000; /* then kHz -> Hz */
-+ mode->hdisplay = fb_info->modes[i].xres;
-+ mode->hsync_start = fb_info->modes[i].right_margin
-+ + mode->hdisplay;
-+ mode->hsync_end = mode->hsync_start
-+ + fb_info->modes[i].hsync_len;
-+ mode->htotal = mode->hsync_end + fb_info->modes[i].left_margin;
-+ mode->hskew = 0;
-+
-+ mode->vdisplay = fb_info->modes[i].yres;
-+ mode->vsync_start = fb_info->modes[i].lower_margin
-+ + mode->vdisplay;
-+ mode->vsync_end = mode->vsync_start
-+ + fb_info->modes[i].vsync_len;
-+ mode->vtotal = mode->vsync_end + fb_info->modes[i].upper_margin;
-+ mode->vscan = 0;
-+
-+ /* Physical size */
-+ mode->width_mm = fb_info->width;
-+ mode->height_mm = fb_info->height;
-+
-+ drm_mode_set_name(mode);
-+ drm_mode_probed_add(connector, mode);
-+
-+ }
-+
-+ return fb_info->num_modes;
- }
-
-
---
-1.7.0
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0013-Change-connector-type-to-LVDS.patch b/recipes/linux/linux-openmoko-2.6.32/0013-Change-connector-type-to-LVDS.patch
deleted file mode 100644
index 1b8c653607..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0013-Change-connector-type-to-LVDS.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 3f1154d1b763f981791ad54987e61d31bde43ec7 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Mon, 1 Mar 2010 22:07:57 +0100
-Subject: [PATCH 13/13] Change connector type to LVDS
-
-Not certain that this exactly describes what it is, and too lazy to check, but for sure
-it's a better description than "Unknown".
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-display.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
-index bc3a2ea..5f04697 100644
---- a/drivers/mfd/glamo/glamo-display.c
-+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -795,7 +795,7 @@ int glamo_display_init(struct drm_device *dev)
-
- /* Initialise the connector */
- drm_connector_init(dev, connector, &glamo_connector_funcs,
-- DRM_MODE_CONNECTOR_Unknown);
-+ DRM_MODE_CONNECTOR_LVDS);
- drm_sysfs_connector_add(connector);
- connector->interlace_allowed = 0;
- connector->doublescan_allowed = 0;
---
-1.7.0
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0013-Debug-statements-for-testing.patch b/recipes/linux/linux-openmoko-2.6.32/0013-Debug-statements-for-testing.patch
new file mode 100644
index 0000000000..cc58d1629e
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.32/0013-Debug-statements-for-testing.patch
@@ -0,0 +1,78 @@
+From fa66cc905714c94bca6580c9adf7b57fa3b1da02 Mon Sep 17 00:00:00 2001
+From: Thomas White <taw@bitwiz.org.uk>
+Date: Thu, 6 May 2010 05:40:33 -0700
+Subject: [PATCH 13/14] Debug statements for testing
+
+Signed-off-by: Thomas White <taw@bitwiz.org.uk>
+---
+ drivers/mfd/glamo/glamo-display.c | 7 +++++++
+ drivers/video/backlight/jbt6k74.c | 4 +++-
+ 2 files changed, 10 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
+index 75ad734..57292ff 100644
+--- a/drivers/mfd/glamo/glamo-display.c
++++ b/drivers/mfd/glamo/glamo-display.c
+@@ -257,6 +257,8 @@ static int glamo_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
+ u32 addr;
+ u16 addr_low, addr_high;
+
++ printk(KERN_CRIT "Setting base!\n");
++
+ if (!crtc->fb) {
+ DRM_DEBUG("No FB bound\n");
+ return -EINVAL;
+@@ -311,6 +313,8 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
+ msleep(500);
+ }
+
++ printk(KERN_CRIT "Setting mode!\n");
++
+ /* Rotate? */
+ if ( (mode->hdisplay == 640) && (mode->vdisplay == 480) ) {
+ rot = GLAMO_LCD_ROT_MODE_90;
+@@ -935,15 +939,18 @@ void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
+ struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
+
+ if ( mode ) {
++ printk(KERN_CRIT "Power on sequence\n");
+ glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
+ gcrtc->pixel_clock_on = 1;
+ jbt6k74_setpower(JBT_POWER_MODE_NORMAL);
+ if ( gcrtc->current_mode_set ) {
++ printk(KERN_CRIT "Setting previous mode\n");
+ glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
+ &gcrtc->current_mode, 0, 0,
+ gcrtc->current_fb);
+ }
+ } else {
++ printk(KERN_CRIT "Power off sequence\n");
+ jbt6k74_setpower(JBT_POWER_MODE_OFF);
+ glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
+ gcrtc->pixel_clock_on = 0;
+diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
+index 91651e7..56a3e3a 100644
+--- a/drivers/video/backlight/jbt6k74.c
++++ b/drivers/video/backlight/jbt6k74.c
+@@ -389,7 +389,7 @@ static int jbt6k74_enter_power_mode(struct jbt_info *jbt,
+ {
+ int ret = -EINVAL;
+
+- dev_dbg(&jbt->spi->dev, "entering (old_state=%s, new_state=%s)\n",
++ printk(KERN_CRIT "entering (old_state=%s, new_state=%s)\n",
+ jbt_power_mode_names[jbt->power_mode],
+ jbt_power_mode_names[new_mode]);
+
+@@ -825,7 +825,9 @@ EXPORT_SYMBOL_GPL(jbt6k74_finish_resolutionchange);
+
+ void jbt6k74_setpower(enum jbt_power_mode new_power)
+ {
++ printk(KERN_CRIT "About to set power..\n");
+ if ( !jbt_global ) return;
++ printk(KERN_CRIT "Setting JBT power.. %i\n", new_power);
+ jbt6k74_enter_power_mode(jbt_global, new_power);
+ }
+ EXPORT_SYMBOL_GPL(jbt6k74_setpower);
+--
+1.7.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch b/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch
deleted file mode 100644
index 287214b677..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch
+++ /dev/null
@@ -1,223 +0,0 @@
-From 644aab63501ebff3e819fd25d23c63da6b6e1cf5 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Mon, 8 Mar 2010 23:51:09 +0100
-Subject: [PATCH 14/15] Clean up JBT hooks, and allow resolution switching
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- arch/arm/mach-s3c2442/mach-gta02.c | 2 +-
- drivers/mfd/glamo/glamo-display.c | 17 ++++++----
- drivers/video/backlight/jbt6k74.c | 57 +++++++++++++++++++----------------
- include/linux/jbt6k74.h | 14 +++++++++
- 4 files changed, 56 insertions(+), 34 deletions(-)
-
-diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
-index a969037..b580b1b 100644
---- a/arch/arm/mach-s3c2442/mach-gta02.c
-+++ b/arch/arm/mach-s3c2442/mach-gta02.c
-@@ -229,7 +229,7 @@ static struct fb_videomode gta02_glamo_modes[] = {
- .name = "240x320",
- .xres = 240,
- .yres = 320,
-- .pixclock = 40816,
-+ .pixclock = 100000,
- .left_margin = 8,
- .right_margin = 16,
- .upper_margin = 2,
-diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
-index 5f04697..e56cdb4 100644
---- a/drivers/mfd/glamo/glamo-display.c
-+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -52,19 +52,18 @@
- *
- */
-
--#define DEBUG 1
--
- #include <drm/drmP.h>
- #include <drm/glamo_drm.h>
- #include <drm/drm_crtc_helper.h>
- #include <drm/drm_crtc.h>
-+#include <linux/glamofb.h>
-+#include <linux/jbt6k74.h>
-
- #include "glamo-core.h"
- #include "glamo-drm-private.h"
- #include "glamo-regs.h"
- #include "glamo-kms-fb.h"
- #include "glamo-display.h"
--#include <linux/glamofb.h>
-
-
- #define GLAMO_LCD_WIDTH_MASK 0x03FF
-@@ -356,6 +355,12 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
-
- glamo_lcd_cmd_mode(gdrm, 0);
-
-+ if ( mode->hdisplay == 240 ) {
-+ jbt6k74_setresolution(JBT_RESOLUTION_QVGA);
-+ } else {
-+ jbt6k74_setresolution(JBT_RESOLUTION_VGA);
-+ }
-+
- glamo_crtc_mode_set_base(crtc, 0, 0, old_fb);
-
- gcrtc->current_mode = *mode;
-@@ -366,8 +371,6 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
- }
-
-
--extern void jbt6k74_action(int val);
--
- /* This is not the right place to switch power on/off, because the helper
- * stuff ends up calling this before/after setting the mode. We can't
- * set modes with the display off (although backlight off would be OK) */
-@@ -385,14 +388,14 @@ void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
- if ( mode ) {
- glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
- gcrtc->pixel_clock_on = 1;
-- jbt6k74_action(1);
-+ jbt6k74_setpower(JBT_POWER_MODE_NORMAL);
- if ( gcrtc->current_mode_set ) {
- glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
- &gcrtc->current_mode, 0, 0,
- gcrtc->current_fb);
- }
- } else {
-- jbt6k74_action(0);
-+ jbt6k74_setpower(JBT_POWER_MODE_OFF);
- glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
- gcrtc->pixel_clock_on = 0;
- }
-diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
-index 9554cb3..40c31f6 100644
---- a/drivers/video/backlight/jbt6k74.c
-+++ b/drivers/video/backlight/jbt6k74.c
-@@ -101,15 +101,6 @@ enum jbt_register {
- JBT_REG_HCLOCK_QVGA = 0xed,
- };
-
--enum jbt_resolution {
-- JBT_RESOLUTION_VGA,
-- JBT_RESOLUTION_QVGA,
--};
--
--enum jbt_power_mode {
-- JBT_POWER_MODE_OFF,
-- JBT_POWER_MODE_NORMAL,
--};
-
- static const char *jbt_power_mode_names[] = {
- [JBT_POWER_MODE_OFF] = "off",
-@@ -121,6 +112,7 @@ static const char *jbt_resolution_names[] = {
- [JBT_RESOLUTION_QVGA] = "qvga",
- };
-
-+
- struct jbt_info {
- struct mutex lock; /* protects this structure */
- enum jbt_resolution resolution;
-@@ -139,6 +131,8 @@ struct jbt_info {
- uint16_t reg_cache[0xEE];
- };
-
-+struct jbt_info *jbt_global;
-+
- #define JBT_COMMAND 0x000
- #define JBT_DATA 0x100
-
-@@ -401,8 +395,9 @@ static int jbt6k74_set_resolution(struct jbt_info *jbt,
-
- if (jbt->power_mode == JBT_POWER_MODE_NORMAL) {
-
-- /* first transition into sleep */
-+ /* "Reboot" the LCM */
- ret = jbt_normal_to_off(jbt);
-+ mdelay(1000);
- ret |= jbt_off_to_normal(jbt);
-
- if (ret) {
-@@ -609,22 +604,6 @@ static int jbt6k74_get_power(struct lcd_device *ld)
- }
- }
-
--/* This is utterly, totally horrible. I'm REALLY sorry... */
--struct jbt_info *jbt_global;
--void jbt6k74_action(int val)
--{
-- if ( !jbt_global ) {
-- printk(KERN_CRIT "JBT not initialised!!!\n");
-- return;
-- }
-- if ( val == 0 ) {
-- jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_OFF);
-- } else {
-- jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_NORMAL);
-- }
--}
--EXPORT_SYMBOL_GPL(jbt6k74_action);
--
- struct lcd_ops jbt6k74_lcd_ops = {
- .set_power = jbt6k74_set_power,
- .get_power = jbt6k74_get_power,
-@@ -758,6 +737,32 @@ static int __devexit jbt_remove(struct spi_device *spi)
- return 0;
- }
-
-+/* Begin horrible layering violations (in the interest of making stuff work) */
-+
-+int jbt6k74_setresolution(enum jbt_resolution new_resolution)
-+{
-+ if ( !jbt_global ) {
-+ printk(KERN_CRIT "JBT not initialised!!!\n");
-+ return -1;
-+ }
-+ jbt6k74_set_resolution(jbt_global, new_resolution);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(jbt6k74_setresolution);
-+
-+/* This is utterly, totally horrible. I'm REALLY sorry... */
-+void jbt6k74_setpower(enum jbt_power_mode new_power)
-+{
-+ if ( !jbt_global ) {
-+ printk(KERN_CRIT "JBT not initialised!!!\n");
-+ return;
-+ }
-+ jbt6k74_enter_power_mode(jbt_global, new_power);
-+}
-+EXPORT_SYMBOL_GPL(jbt6k74_setpower);
-+
-+/* End horrible layering violations */
-+
- #ifdef CONFIG_PM
- static int jbt_suspend(struct spi_device *spi, pm_message_t state)
- {
-diff --git a/include/linux/jbt6k74.h b/include/linux/jbt6k74.h
-index 4cf760c..f430e5a 100644
---- a/include/linux/jbt6k74.h
-+++ b/include/linux/jbt6k74.h
-@@ -3,6 +3,20 @@
-
- #include <linux/spi/spi.h>
-
-+enum jbt_resolution {
-+ JBT_RESOLUTION_VGA,
-+ JBT_RESOLUTION_QVGA,
-+};
-+
-+enum jbt_power_mode {
-+ JBT_POWER_MODE_OFF,
-+ JBT_POWER_MODE_NORMAL,
-+};
-+
-+extern void jbt6k74_setpower(enum jbt_power_mode new_power);
-+extern int jbt6k74_setresolution(enum jbt_resolution new_resolution);
-+
-+
- /*
- * struct jbt6k74_platform_data - Platform data for jbt6k74 driver
- * @probe_completed: Callback to be called when the driver has been
---
-1.7.0.2
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0014-Fix-claim-of-2D-register-resource.patch b/recipes/linux/linux-openmoko-2.6.32/0014-Fix-claim-of-2D-register-resource.patch
new file mode 100644
index 0000000000..8dbdb70ce2
--- /dev/null
+++ b/recipes/linux/linux-openmoko-2.6.32/0014-Fix-claim-of-2D-register-resource.patch
@@ -0,0 +1,27 @@
+From 8c753fc51c4954b88bacba68ee0591fb673de8fc Mon Sep 17 00:00:00 2001
+From: Thomas White <taw@bitwiz.org.uk>
+Date: Thu, 6 May 2010 08:37:04 -0700
+Subject: [PATCH 14/14] Fix claim of 2D register resource
+
+Signed-off-by: Thomas White <taw@bitwiz.org.uk>
+---
+ drivers/mfd/glamo/glamo-drm-drv.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/mfd/glamo/glamo-drm-drv.c b/drivers/mfd/glamo/glamo-drm-drv.c
+index ee648c1..4f982ad 100644
+--- a/drivers/mfd/glamo/glamo-drm-drv.c
++++ b/drivers/mfd/glamo/glamo-drm-drv.c
+@@ -272,7 +272,8 @@ static int glamodrm_probe(struct platform_device *pdev)
+ }
+
+ /* Find the 2D engine */
+- gdrm->twod_regs = platform_get_resource(pdev, IORESOURCE_MEM, 4);
++ gdrm->twod_regs = platform_get_resource_byname(pdev, IORESOURCE_MEM,
++ "glamo-2d-regs");
+ if ( !gdrm->twod_regs ) {
+ dev_err(&pdev->dev, "Unable to find 2D registers.\n");
+ rc = -ENOENT;
+--
+1.7.1
+
diff --git a/recipes/linux/linux-openmoko-2.6.32/0015-ar6000-send-userspace-an-event-on-disconnection.patch b/recipes/linux/linux-openmoko-2.6.32/0015-ar6000-send-userspace-an-event-on-disconnection.patch
deleted file mode 100644
index fb0ede68e7..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0015-ar6000-send-userspace-an-event-on-disconnection.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 505ed5ebe6b5a296c83881e91fa7e8dd0ef021aa Mon Sep 17 00:00:00 2001
-From: Paul Fertser <fercerpav@gmail.com>
-Date: Sun, 21 Feb 2010 12:52:58 +0300
-Subject: [PATCH 15/15] ar6000: send userspace an event on disconnection
-
-Without this userspace gets confused and might fail to obtain a DHCP
-lease, bring the interface up etc etc.
-
-This place is definetely not the best or most intuitive to add this code
-but when added to the real disconnect callback it messes wpa_supplicant
-completely because hardware signals disconnection right after it was
-asked to associate (and signals association the next moment).
-
-The particular problem this patch solves is lack of DISCONNECTED event
-during suspend/resume; because of it "wpa_cli -a" doesn't relaunch its
-script and the interface is not brought up automatically after resume.
-
-Signed-off-by: Paul Fertser <fercerpav@gmail.com>
----
- drivers/ar6000/ar6000/ar6000_drv.c | 6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/ar6000/ar6000/ar6000_drv.c b/drivers/ar6000/ar6000/ar6000_drv.c
-index 90533ab..4e0ae72 100644
---- a/drivers/ar6000/ar6000/ar6000_drv.c
-+++ b/drivers/ar6000/ar6000/ar6000_drv.c
-@@ -934,6 +934,12 @@ static void
- ar6000_unavail_ev(void *Instance)
- {
- AR_SOFTC_T *ar = (AR_SOFTC_T *)Instance;
-+ union iwreq_data wrqu;
-+
-+ A_MEMZERO(&wrqu, sizeof(wrqu));
-+ wrqu.ap_addr.sa_family = ARPHRD_ETHER;
-+ wireless_send_event(ar->arNetDev, SIOCGIWAP, &wrqu, NULL);
-+
- /* NULL out it's entry in the global list */
- ar6000_devices[ar->arDeviceIndex] = NULL;
- ar6000_destroy(ar->arNetDev, 1);
---
-1.7.0.2
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0016-Enable-display-before-trying-to-set-mode-or-base.patch b/recipes/linux/linux-openmoko-2.6.32/0016-Enable-display-before-trying-to-set-mode-or-base.patch
deleted file mode 100644
index 4e7a8abe10..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0016-Enable-display-before-trying-to-set-mode-or-base.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 986df52e3e02a1cdbf43eafccd483f0f86c696bd Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Sun, 21 Mar 2010 20:55:18 +0100
-Subject: [PATCH 16/16] Enable display before trying to set mode or base
-
-This makes it possible to change mode when the screen is switched off.
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-display.c | 56 ++++++++++++++++++------------------
- 1 files changed, 28 insertions(+), 28 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
-index e56cdb4..24a1a31 100644
---- a/drivers/mfd/glamo/glamo-display.c
-+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -267,9 +267,9 @@ static int glamo_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
- gdrm = gcrtc->gdrm; /* Here it is! */
-
- if ( !gcrtc->pixel_clock_on ) {
-- printk(KERN_WARNING "[glamo-drm] Refusing to set base while "
-- "pixel clock is off.\n");
-- return -EBUSY;
-+ printk(KERN_WARNING "[glamo-drm] Display is off - "
-+ "enabling it before setting base.\n");
-+ glamo_lcd_power(gdrm, 1);
- }
-
- gfb = to_glamo_framebuffer(crtc->fb);
-@@ -304,9 +304,9 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
- gdrm = gcrtc->gdrm; /* Here it is! */
-
- if ( !gcrtc->pixel_clock_on ) {
-- printk(KERN_WARNING "[glamo-drm] Refusing to set mode while "
-- "pixel clock is off.\n");
-- return -EBUSY;
-+ printk(KERN_WARNING "[glamo-drm] Display is off - "
-+ "enabling it before setting mode.\n");
-+ glamo_lcd_power(gdrm, 1);
- }
-
- glamo_lcd_cmd_mode(gdrm, 1);
-@@ -380,28 +380,6 @@ static void glamo_crtc_dpms(struct drm_crtc *crtc, int mode)
- }
-
-
--void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
--{
-- struct drm_crtc *crtc = gdrm->crtc;
-- struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
--
-- if ( mode ) {
-- glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
-- gcrtc->pixel_clock_on = 1;
-- jbt6k74_setpower(JBT_POWER_MODE_NORMAL);
-- if ( gcrtc->current_mode_set ) {
-- glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
-- &gcrtc->current_mode, 0, 0,
-- gcrtc->current_fb);
-- }
-- } else {
-- jbt6k74_setpower(JBT_POWER_MODE_OFF);
-- glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
-- gcrtc->pixel_clock_on = 0;
-- }
--}
--
--
- static void glamo_crtc_prepare(struct drm_crtc *crtc)
- {
- }
-@@ -862,6 +840,28 @@ int glamo_display_init(struct drm_device *dev)
- }
-
-
-+void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
-+{
-+ struct drm_crtc *crtc = gdrm->crtc;
-+ struct glamo_crtc *gcrtc = to_glamo_crtc(crtc);
-+
-+ if ( mode ) {
-+ glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
-+ gcrtc->pixel_clock_on = 1;
-+ jbt6k74_setpower(JBT_POWER_MODE_NORMAL);
-+ if ( gcrtc->current_mode_set ) {
-+ glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
-+ &gcrtc->current_mode, 0, 0,
-+ gcrtc->current_fb);
-+ }
-+ } else {
-+ jbt6k74_setpower(JBT_POWER_MODE_OFF);
-+ glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
-+ gcrtc->pixel_clock_on = 0;
-+ }
-+}
-+
-+
- void glamo_display_suspend(struct glamodrm_handle *gdrm)
- {
- /* do nothing */
---
-1.7.0.2
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0021-gta02_defconfig.patch b/recipes/linux/linux-openmoko-2.6.32/0021-gta02_defconfig.patch
deleted file mode 100644
index 5c78c31e90..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0021-gta02_defconfig.patch
+++ /dev/null
@@ -1,2143 +0,0 @@
-From a081bd86a59ed4520551f490534ceece886d087e Mon Sep 17 00:00:00 2001
-From: Radek Polak <psonek2@seznam.cz>
-Date: Fri, 9 Apr 2010 09:24:43 +0200
-Subject: [PATCH 21/22] gta02_defconfig
-
-config used for qtmoko-v20. It has all freerunner hardware built in - so that
-you can boot and your phone hardware is working even without /lib/modules. I
-have (hopefully) all drivers from 2.6.29 as modules (usb keyboards etc).
----
- arch/arm/configs/gta02_defconfig | 2121 ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 2121 insertions(+), 0 deletions(-)
- create mode 100644 arch/arm/configs/gta02_defconfig
-
-diff --git a/arch/arm/configs/gta02_defconfig b/arch/arm/configs/gta02_defconfig
-new file mode 100644
-index 0000000..73d26ba
---- /dev/null
-+++ b/arch/arm/configs/gta02_defconfig
-@@ -0,0 +1,2121 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.32
-+# Wed Apr 7 23:27:29 2010
-+#
-+CONFIG_ARM=y
-+CONFIG_HAVE_PWM=y
-+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-+CONFIG_GENERIC_GPIO=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_CPUFREQ=y
-+CONFIG_GENERIC_HWEIGHT=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_FIQ=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-+CONFIG_VECTORS_BASE=0xffff0000
-+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-+CONFIG_CONSTRUCTORS=y
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
-+CONFIG_LOCALVERSION="v20"
-+# CONFIG_LOCALVERSION_AUTO is not set
-+CONFIG_SWAP=y
-+CONFIG_SYSVIPC=y
-+CONFIG_SYSVIPC_SYSCTL=y
-+# CONFIG_POSIX_MQUEUE is not set
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+# CONFIG_TASKSTATS is not set
-+# CONFIG_AUDIT is not set
-+
-+#
-+# RCU Subsystem
-+#
-+CONFIG_TREE_RCU=y
-+# CONFIG_TREE_PREEMPT_RCU is not set
-+# CONFIG_RCU_TRACE is not set
-+CONFIG_RCU_FANOUT=32
-+# CONFIG_RCU_FANOUT_EXACT is not set
-+# CONFIG_TREE_RCU_TRACE is not set
-+# CONFIG_IKCONFIG is not set
-+CONFIG_LOG_BUF_SHIFT=18
-+# CONFIG_GROUP_SCHED is not set
-+# CONFIG_CGROUPS is not set
-+# CONFIG_SYSFS_DEPRECATED_V2 is not set
-+# CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# 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_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
-+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-+CONFIG_SYSCTL=y
-+CONFIG_ANON_INODES=y
-+# CONFIG_EMBEDDED is not set
-+CONFIG_UID16=y
-+CONFIG_SYSCTL_SYSCALL=y
-+CONFIG_KALLSYMS=y
-+# 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
-+
-+#
-+# Kernel Performance Events And Counters
-+#
-+CONFIG_VM_EVENT_COUNTERS=y
-+CONFIG_COMPAT_BRK=y
-+CONFIG_SLAB=y
-+# CONFIG_SLUB is not set
-+# 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
-+
-+#
-+# GCOV-based kernel profiling
-+#
-+CONFIG_SLOW_WORK=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 is not set
-+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_LBDAF is not set
-+# CONFIG_BLK_DEV_BSG is not set
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-+
-+#
-+# IO Schedulers
-+#
-+CONFIG_IOSCHED_NOOP=y
-+CONFIG_IOSCHED_AS=m
-+CONFIG_IOSCHED_DEADLINE=y
-+CONFIG_IOSCHED_CFQ=m
-+# CONFIG_DEFAULT_AS is not set
-+CONFIG_DEFAULT_DEADLINE=y
-+# CONFIG_DEFAULT_CFQ is not set
-+# CONFIG_DEFAULT_NOOP is not set
-+CONFIG_DEFAULT_IOSCHED="deadline"
-+CONFIG_FREEZER=y
-+
-+#
-+# System Type
-+#
-+CONFIG_MMU=y
-+# 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_GEMINI is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_STMP3XXX is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_NOMADIK 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_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_MMP is not set
-+# CONFIG_ARCH_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_W90X900 is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MSM 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_S5PC1XX is not set
-+# CONFIG_ARCH_SHARK is not set
-+# CONFIG_ARCH_LH7A40X is not set
-+# CONFIG_ARCH_U300 is not set
-+# CONFIG_ARCH_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_BCMRING is not set
-+CONFIG_PLAT_S3C24XX=y
-+CONFIG_S3C2410_CLOCK=y
-+CONFIG_CPU_S3C244X=y
-+CONFIG_S3C24XX_PWM=y
-+CONFIG_S3C24XX_GPIO_EXTRA=64
-+CONFIG_S3C24XX_GPIO_EXTRA64=y
-+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=2
-+CONFIG_S3C_GPIO_SPACE=0
-+CONFIG_S3C_DMA=y
-+CONFIG_S3C_DEV_USB_HOST=y
-+CONFIG_S3C_DEV_NAND=y
-+
-+#
-+# S3C2400 Machines
-+#
-+CONFIG_CPU_S3C2410_DMA=y
-+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
-+
-+#
-+# 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 is not set
-+CONFIG_CPU_S3C2442=y
-+
-+#
-+# S3C2442 Machines
-+#
-+CONFIG_MACH_NEO1973_GTA02=y
-+
-+#
-+# 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_LEGACY=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_ARM_L1_CACHE_SHIFT=5
-+
-+#
-+# 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_NONE=y
-+# CONFIG_PREEMPT_VOLUNTARY is not set
-+# CONFIG_PREEMPT is not set
-+CONFIG_HZ=200
-+CONFIG_AEABI=y
-+# CONFIG_OABI_COMPAT is not set
-+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-+# CONFIG_HIGHMEM 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_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+# CONFIG_KSM is not set
-+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-+CONFIG_ALIGNMENT_TRAP=y
-+# CONFIG_UACCESS_WITH_MEMCPY is not set
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="unused -- bootloader passes ATAG list"
-+# CONFIG_XIP_KERNEL is not set
-+# CONFIG_KEXEC is not set
-+
-+#
-+# CPU Power Management
-+#
-+# CONFIG_CPU_FREQ is not set
-+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 is not set
-+# CONFIG_BINFMT_MISC is not set
-+
-+#
-+# 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 is not set
-+# CONFIG_PM_RUNTIME is not set
-+CONFIG_ARCH_SUSPEND_POSSIBLE=y
-+CONFIG_NET=y
-+
-+#
-+# Networking options
-+#
-+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=y
-+# CONFIG_XFRM_STATISTICS is not set
-+CONFIG_XFRM_IPCOMP=m
-+CONFIG_NET_KEY=m
-+CONFIG_NET_KEY_MIGRATE=y
-+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 is not set
-+# CONFIG_IP_ROUTE_VERBOSE is not set
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+# CONFIG_IP_PNP_BOOTP is not set
-+# CONFIG_IP_PNP_RARP is not set
-+CONFIG_NET_IPIP=m
-+CONFIG_NET_IPGRE=m
-+# CONFIG_NET_IPGRE_BROADCAST is not set
-+CONFIG_IP_MROUTE=y
-+# CONFIG_IP_PIMSM_V1 is not set
-+# CONFIG_IP_PIMSM_V2 is not set
-+# CONFIG_ARPD is not set
-+CONFIG_SYN_COOKIES=y
-+CONFIG_INET_AH=m
-+CONFIG_INET_ESP=m
-+CONFIG_INET_IPCOMP=m
-+CONFIG_INET_XFRM_TUNNEL=m
-+CONFIG_INET_TUNNEL=m
-+CONFIG_INET_XFRM_MODE_TRANSPORT=m
-+CONFIG_INET_XFRM_MODE_TUNNEL=m
-+CONFIG_INET_XFRM_MODE_BEET=m
-+# CONFIG_INET_LRO is not set
-+CONFIG_INET_DIAG=y
-+CONFIG_INET_TCP_DIAG=y
-+CONFIG_TCP_CONG_ADVANCED=y
-+# CONFIG_TCP_CONG_BIC is not set
-+# CONFIG_TCP_CONG_CUBIC is not set
-+CONFIG_TCP_CONG_WESTWOOD=y
-+# CONFIG_TCP_CONG_HTCP is not set
-+# CONFIG_TCP_CONG_HSTCP is not set
-+# CONFIG_TCP_CONG_HYBLA is not set
-+# CONFIG_TCP_CONG_VEGAS is not set
-+# CONFIG_TCP_CONG_SCALABLE is not set
-+# CONFIG_TCP_CONG_LP is not set
-+# CONFIG_TCP_CONG_VENO is not set
-+# CONFIG_TCP_CONG_YEAH is not set
-+# CONFIG_TCP_CONG_ILLINOIS is not set
-+# CONFIG_DEFAULT_BIC is not set
-+# CONFIG_DEFAULT_CUBIC is not set
-+# CONFIG_DEFAULT_HTCP is not set
-+# CONFIG_DEFAULT_VEGAS is not set
-+CONFIG_DEFAULT_WESTWOOD=y
-+# CONFIG_DEFAULT_RENO is not set
-+CONFIG_DEFAULT_TCP_CONG="westwood"
-+CONFIG_TCP_MD5SIG=y
-+CONFIG_IPV6=m
-+# CONFIG_IPV6_PRIVACY is not set
-+# CONFIG_IPV6_ROUTER_PREF is not set
-+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-+CONFIG_INET6_AH=m
-+CONFIG_INET6_ESP=m
-+CONFIG_INET6_IPCOMP=m
-+# CONFIG_IPV6_MIP6 is not set
-+CONFIG_INET6_XFRM_TUNNEL=m
-+CONFIG_INET6_TUNNEL=m
-+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-+CONFIG_INET6_XFRM_MODE_TUNNEL=m
-+CONFIG_INET6_XFRM_MODE_BEET=m
-+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-+CONFIG_IPV6_SIT=m
-+CONFIG_IPV6_NDISC_NODETYPE=y
-+CONFIG_IPV6_TUNNEL=m
-+# CONFIG_IPV6_MULTIPLE_TABLES is not set
-+# CONFIG_IPV6_MROUTE 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=m
-+CONFIG_NETFILTER_NETLINK_QUEUE=m
-+CONFIG_NETFILTER_NETLINK_LOG=m
-+CONFIG_NF_CONNTRACK=m
-+CONFIG_NF_CT_ACCT=y
-+CONFIG_NF_CONNTRACK_MARK=y
-+# CONFIG_NF_CONNTRACK_EVENTS is not set
-+# CONFIG_NF_CT_PROTO_DCCP is not set
-+CONFIG_NF_CT_PROTO_GRE=m
-+CONFIG_NF_CT_PROTO_SCTP=m
-+# CONFIG_NF_CT_PROTO_UDPLITE is not set
-+# CONFIG_NF_CONNTRACK_AMANDA is not set
-+CONFIG_NF_CONNTRACK_FTP=m
-+CONFIG_NF_CONNTRACK_H323=m
-+CONFIG_NF_CONNTRACK_IRC=m
-+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-+CONFIG_NF_CONNTRACK_PPTP=m
-+CONFIG_NF_CONNTRACK_SANE=m
-+CONFIG_NF_CONNTRACK_SIP=m
-+CONFIG_NF_CONNTRACK_TFTP=m
-+CONFIG_NF_CT_NETLINK=m
-+# CONFIG_NETFILTER_TPROXY is not set
-+CONFIG_NETFILTER_XTABLES=m
-+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-+CONFIG_NETFILTER_XT_TARGET_DSCP=m
-+CONFIG_NETFILTER_XT_TARGET_HL=m
-+# CONFIG_NETFILTER_XT_TARGET_LED is not set
-+CONFIG_NETFILTER_XT_TARGET_MARK=m
-+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
-+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
-+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-+CONFIG_NETFILTER_XT_MATCH_DCCP=m
-+CONFIG_NETFILTER_XT_MATCH_DSCP=m
-+CONFIG_NETFILTER_XT_MATCH_ESP=m
-+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-+CONFIG_NETFILTER_XT_MATCH_HELPER=m
-+CONFIG_NETFILTER_XT_MATCH_HL=m
-+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-+CONFIG_NETFILTER_XT_MATCH_MAC=m
-+CONFIG_NETFILTER_XT_MATCH_MARK=m
-+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-+CONFIG_NETFILTER_XT_MATCH_POLICY=m
-+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-+CONFIG_NETFILTER_XT_MATCH_REALM=m
-+CONFIG_NETFILTER_XT_MATCH_RECENT=m
-+# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
-+CONFIG_NETFILTER_XT_MATCH_SCTP=m
-+CONFIG_NETFILTER_XT_MATCH_STATE=m
-+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-+CONFIG_NETFILTER_XT_MATCH_STRING=m
-+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-+CONFIG_NETFILTER_XT_MATCH_TIME=m
-+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-+# CONFIG_NETFILTER_XT_MATCH_OSF is not set
-+# CONFIG_IP_VS is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+CONFIG_NF_DEFRAG_IPV4=m
-+CONFIG_NF_CONNTRACK_IPV4=m
-+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-+# CONFIG_IP_NF_QUEUE is not set
-+CONFIG_IP_NF_IPTABLES=m
-+CONFIG_IP_NF_MATCH_ADDRTYPE=m
-+CONFIG_IP_NF_MATCH_AH=m
-+CONFIG_IP_NF_MATCH_ECN=m
-+CONFIG_IP_NF_MATCH_TTL=m
-+CONFIG_IP_NF_FILTER=m
-+CONFIG_IP_NF_TARGET_REJECT=m
-+CONFIG_IP_NF_TARGET_LOG=m
-+CONFIG_IP_NF_TARGET_ULOG=m
-+CONFIG_NF_NAT=m
-+CONFIG_NF_NAT_NEEDED=y
-+CONFIG_IP_NF_TARGET_MASQUERADE=m
-+CONFIG_IP_NF_TARGET_NETMAP=m
-+CONFIG_IP_NF_TARGET_REDIRECT=m
-+CONFIG_NF_NAT_SNMP_BASIC=m
-+CONFIG_NF_NAT_PROTO_GRE=m
-+CONFIG_NF_NAT_PROTO_SCTP=m
-+CONFIG_NF_NAT_FTP=m
-+CONFIG_NF_NAT_IRC=m
-+CONFIG_NF_NAT_TFTP=m
-+# CONFIG_NF_NAT_AMANDA is not set
-+CONFIG_NF_NAT_PPTP=m
-+CONFIG_NF_NAT_H323=m
-+CONFIG_NF_NAT_SIP=m
-+CONFIG_IP_NF_MANGLE=m
-+CONFIG_IP_NF_TARGET_CLUSTERIP=m
-+CONFIG_IP_NF_TARGET_ECN=m
-+CONFIG_IP_NF_TARGET_TTL=m
-+CONFIG_IP_NF_RAW=m
-+# CONFIG_IP_NF_ARPTABLES is not set
-+
-+#
-+# IPv6: Netfilter Configuration
-+#
-+CONFIG_NF_CONNTRACK_IPV6=m
-+# CONFIG_IP6_NF_QUEUE is not set
-+CONFIG_IP6_NF_IPTABLES=m
-+CONFIG_IP6_NF_MATCH_AH=m
-+CONFIG_IP6_NF_MATCH_EUI64=m
-+CONFIG_IP6_NF_MATCH_FRAG=m
-+CONFIG_IP6_NF_MATCH_OPTS=m
-+CONFIG_IP6_NF_MATCH_HL=m
-+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-+CONFIG_IP6_NF_MATCH_MH=m
-+CONFIG_IP6_NF_MATCH_RT=m
-+CONFIG_IP6_NF_TARGET_HL=m
-+CONFIG_IP6_NF_TARGET_LOG=m
-+CONFIG_IP6_NF_FILTER=m
-+CONFIG_IP6_NF_TARGET_REJECT=m
-+CONFIG_IP6_NF_MANGLE=m
-+# CONFIG_IP6_NF_RAW is not set
-+CONFIG_BRIDGE_NF_EBTABLES=m
-+CONFIG_BRIDGE_EBT_BROUTE=m
-+CONFIG_BRIDGE_EBT_T_FILTER=m
-+CONFIG_BRIDGE_EBT_T_NAT=m
-+CONFIG_BRIDGE_EBT_802_3=m
-+CONFIG_BRIDGE_EBT_AMONG=m
-+CONFIG_BRIDGE_EBT_ARP=m
-+CONFIG_BRIDGE_EBT_IP=m
-+# CONFIG_BRIDGE_EBT_IP6 is not set
-+CONFIG_BRIDGE_EBT_LIMIT=m
-+CONFIG_BRIDGE_EBT_MARK=m
-+CONFIG_BRIDGE_EBT_PKTTYPE=m
-+CONFIG_BRIDGE_EBT_STP=m
-+CONFIG_BRIDGE_EBT_VLAN=m
-+CONFIG_BRIDGE_EBT_ARPREPLY=m
-+CONFIG_BRIDGE_EBT_DNAT=m
-+CONFIG_BRIDGE_EBT_MARK_T=m
-+CONFIG_BRIDGE_EBT_REDIRECT=m
-+CONFIG_BRIDGE_EBT_SNAT=m
-+CONFIG_BRIDGE_EBT_LOG=m
-+CONFIG_BRIDGE_EBT_ULOG=m
-+# CONFIG_BRIDGE_EBT_NFLOG is not set
-+# CONFIG_IP_DCCP is not set
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_RDS is not set
-+# CONFIG_TIPC is not set
-+# CONFIG_ATM is not set
-+CONFIG_STP=y
-+CONFIG_BRIDGE=y
-+# CONFIG_NET_DSA is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_DECNET is not set
-+CONFIG_LLC=y
-+# 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_PHONET is not set
-+# CONFIG_IEEE802154 is not set
-+CONFIG_NET_SCHED=y
-+
-+#
-+# Queueing/Scheduling
-+#
-+CONFIG_NET_SCH_CBQ=m
-+CONFIG_NET_SCH_HTB=m
-+CONFIG_NET_SCH_HFSC=m
-+CONFIG_NET_SCH_PRIO=m
-+# CONFIG_NET_SCH_MULTIQ is not set
-+CONFIG_NET_SCH_RED=m
-+CONFIG_NET_SCH_SFQ=m
-+CONFIG_NET_SCH_TEQL=m
-+CONFIG_NET_SCH_TBF=m
-+CONFIG_NET_SCH_GRED=m
-+CONFIG_NET_SCH_DSMARK=m
-+CONFIG_NET_SCH_NETEM=m
-+# CONFIG_NET_SCH_DRR is not set
-+
-+#
-+# Classification
-+#
-+CONFIG_NET_CLS=y
-+CONFIG_NET_CLS_BASIC=m
-+CONFIG_NET_CLS_TCINDEX=m
-+CONFIG_NET_CLS_ROUTE4=m
-+CONFIG_NET_CLS_ROUTE=y
-+CONFIG_NET_CLS_FW=m
-+CONFIG_NET_CLS_U32=m
-+CONFIG_CLS_U32_PERF=y
-+CONFIG_CLS_U32_MARK=y
-+CONFIG_NET_CLS_RSVP=m
-+CONFIG_NET_CLS_RSVP6=m
-+# CONFIG_NET_CLS_FLOW is not set
-+# CONFIG_NET_EMATCH is not set
-+# CONFIG_NET_CLS_ACT is not set
-+# CONFIG_NET_CLS_IND is not set
-+CONFIG_NET_SCH_FIFO=y
-+# CONFIG_DCB is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+# CONFIG_HAMRADIO is not set
-+# CONFIG_CAN is not set
-+# CONFIG_IRDA is not set
-+CONFIG_BT=y
-+CONFIG_BT_L2CAP=y
-+CONFIG_BT_SCO=y
-+CONFIG_BT_RFCOMM=y
-+CONFIG_BT_RFCOMM_TTY=y
-+CONFIG_BT_BNEP=y
-+CONFIG_BT_BNEP_MC_FILTER=y
-+CONFIG_BT_BNEP_PROTO_FILTER=y
-+CONFIG_BT_HIDP=y
-+
-+#
-+# Bluetooth device drivers
-+#
-+CONFIG_BT_HCIBTUSB=y
-+# CONFIG_BT_HCIBTSDIO is not set
-+# CONFIG_BT_HCIUART is not set
-+# CONFIG_BT_HCIBCM203X is not set
-+# CONFIG_BT_HCIBPA10X is not set
-+# CONFIG_BT_HCIBFUSB is not set
-+# CONFIG_BT_HCIVHCI is not set
-+# CONFIG_BT_MRVL is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_FIB_RULES=y
-+CONFIG_WIRELESS=y
-+# CONFIG_CFG80211 is not set
-+CONFIG_CFG80211_DEFAULT_PS_VALUE=0
-+CONFIG_WIRELESS_OLD_REGULATORY=y
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+# CONFIG_LIB80211 is not set
-+
-+#
-+# CFG80211 needs to be enabled for MAC80211
-+#
-+# 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_DEVTMPFS=y
-+CONFIG_DEVTMPFS_MOUNT=y
-+CONFIG_STANDALONE=y
-+CONFIG_PREVENT_FIRMWARE_BUILD=y
-+CONFIG_FW_LOADER=y
-+# CONFIG_FIRMWARE_IN_KERNEL is not set
-+CONFIG_EXTRA_FIRMWARE=""
-+# CONFIG_SYS_HYPERVISOR is not set
-+CONFIG_CONNECTOR=m
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+# CONFIG_MTD_TESTS is not set
-+CONFIG_MTD_CONCAT=y
-+CONFIG_MTD_PARTITIONS=y
-+# 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 is not set
-+# CONFIG_NFTL is not set
-+# CONFIG_INFTL is not set
-+# CONFIG_RFD_FTL is not set
-+# CONFIG_SSFDC is not set
-+# CONFIG_MTD_OOPS is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+CONFIG_MTD_CFI=y
-+# CONFIG_MTD_JEDECPROBE is not set
-+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=y
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_CFI_STAA is not set
-+CONFIG_MTD_CFI_UTIL=y
-+# CONFIG_MTD_RAM is not set
-+CONFIG_MTD_ROM=y
-+CONFIG_MTD_ABSENT=y
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-+CONFIG_MTD_PHYSMAP=y
-+# CONFIG_MTD_PHYSMAP_COMPAT is not set
-+# CONFIG_MTD_ARM_INTEGRATOR 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_SST25L 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=y
-+# 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 is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND is not set
-+
-+#
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
-+# 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 is not set
-+CONFIG_BLK_DEV_UB=m
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_SIZE=4096
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+# CONFIG_MG_DISK is not set
-+# CONFIG_MISC_DEVICES 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=y
-+
-+#
-+# 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=m
-+# CONFIG_BLK_DEV_SR_VENDOR is not set
-+CONFIG_CHR_DEV_SG=m
-+# CONFIG_CHR_DEV_SCH is not set
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+CONFIG_SCSI_SCAN_ASYNC=y
-+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=y
-+# CONFIG_ISCSI_TCP is not set
-+# CONFIG_LIBFC is not set
-+# CONFIG_LIBFCOE is not set
-+# CONFIG_SCSI_DEBUG is not set
-+# CONFIG_SCSI_DH is not set
-+# CONFIG_SCSI_OSD_INITIATOR 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_NET_ETHERNET is not set
-+CONFIG_MII=m
-+# CONFIG_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+CONFIG_WLAN=y
-+# CONFIG_WLAN_PRE80211 is not set
-+# CONFIG_WLAN_80211 is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+CONFIG_USB_CATC=m
-+CONFIG_USB_KAWETH=m
-+CONFIG_USB_PEGASUS=m
-+CONFIG_USB_RTL8150=m
-+# CONFIG_USB_USBNET is not set
-+# CONFIG_WAN is not set
-+CONFIG_PPP=m
-+CONFIG_PPP_MULTILINK=y
-+CONFIG_PPP_FILTER=y
-+CONFIG_PPP_ASYNC=m
-+CONFIG_PPP_SYNC_TTY=m
-+CONFIG_PPP_DEFLATE=m
-+CONFIG_PPP_BSDCOMP=m
-+CONFIG_PPP_MPPE=m
-+# CONFIG_PPPOE is not set
-+# CONFIG_PPPOL2TP is not set
-+# CONFIG_SLIP is not set
-+CONFIG_SLHC=m
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# CONFIG_ISDN is not set
-+# CONFIG_PHONE is not set
-+
-+#
-+# Input device support
-+#
-+CONFIG_INPUT=y
-+# CONFIG_INPUT_FF_MEMLESS is not set
-+# CONFIG_INPUT_POLLDEV is not set
-+
-+#
-+# Userland interfaces
-+#
-+CONFIG_INPUT_MOUSEDEV=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-+CONFIG_INPUT_JOYDEV=m
-+CONFIG_INPUT_EVDEV=y
-+# CONFIG_INPUT_EVBUG is not set
-+
-+#
-+# Input Device Drivers
-+#
-+CONFIG_INPUT_KEYBOARD=y
-+# CONFIG_KEYBOARD_ADP5588 is not set
-+# CONFIG_KEYBOARD_ATKBD is not set
-+# CONFIG_QT2160 is not set
-+# CONFIG_KEYBOARD_LKKBD is not set
-+CONFIG_KEYBOARD_GPIO=y
-+# CONFIG_KEYBOARD_MATRIX is not set
-+# CONFIG_KEYBOARD_LM8323 is not set
-+# CONFIG_KEYBOARD_MAX7359 is not set
-+# CONFIG_KEYBOARD_NEWTON is not set
-+# CONFIG_KEYBOARD_OPENCORES is not set
-+CONFIG_KEYBOARD_STOWAWAY=m
-+# CONFIG_KEYBOARD_SUNKBD is not set
-+# CONFIG_KEYBOARD_XTKBD is not set
-+# CONFIG_INPUT_MOUSE 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_S3C2410=y
-+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
-+# CONFIG_TOUCHSCREEN_ADS7846 is not set
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
-+# CONFIG_TOUCHSCREEN_EETI 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_MCS5000 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_TOUCHSCREEN_W90X900 is not set
-+CONFIG_INPUT_MISC=y
-+# CONFIG_INPUT_ATI_REMOTE is not set
-+# CONFIG_INPUT_ATI_REMOTE2 is not set
-+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-+# CONFIG_INPUT_POWERMATE is not set
-+# CONFIG_INPUT_YEALINK is not set
-+# CONFIG_INPUT_CM109 is not set
-+CONFIG_INPUT_UINPUT=m
-+CONFIG_INPUT_PCF50633_PMU=y
-+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-+CONFIG_INPUT_LIS302DL=y
-+
-+#
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+# CONFIG_SERIO_SERPORT is not set
-+# CONFIG_SERIO_RAW is not set
-+# 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 is not set
-+# 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_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+# CONFIG_LEGACY_PTYS is not set
-+# CONFIG_IPMI_HANDLER is not set
-+# CONFIG_HW_RANDOM is not set
-+# 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_COMPAT is not set
-+CONFIG_I2C_CHARDEV=y
-+# CONFIG_I2C_HELPER_AUTO is not set
-+
-+#
-+# I2C Algorithms
-+#
-+# CONFIG_I2C_ALGOBIT is not set
-+# CONFIG_I2C_ALGOPCF is not set
-+# CONFIG_I2C_ALGOPCA is not set
-+
-+#
-+# I2C Hardware Bus support
-+#
-+
-+#
-+# I2C system bus drivers (mostly embedded / system-on-chip)
-+#
-+# CONFIG_I2C_DESIGNWARE is not set
-+# CONFIG_I2C_GPIO is not set
-+# CONFIG_I2C_OCORES is not set
-+CONFIG_I2C_S3C2410=y
-+# CONFIG_I2C_SIMTEC is not set
-+
-+#
-+# 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_TSL2550 is not set
-+# 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_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_BITBANG=y
-+CONFIG_SPI_GPIO=y
-+CONFIG_SPI_S3C24XX=y
-+CONFIG_SPI_S3C24XX_GPIO=y
-+
-+#
-+# SPI Protocol Masters
-+#
-+# CONFIG_SPI_SPIDEV is not set
-+# CONFIG_SPI_TLE62X0 is not set
-+
-+#
-+# PPS support
-+#
-+# CONFIG_PPS is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+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
-+CONFIG_GPIO_PCF50633=y
-+
-+#
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
-+#
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# CONFIG_GPIO_MC33880 is not set
-+
-+#
-+# AC97 GPIO expanders:
-+#
-+# CONFIG_W1 is not set
-+CONFIG_POWER_SUPPLY=y
-+# CONFIG_POWER_SUPPLY_DEBUG is not set
-+# CONFIG_PDA_POWER is not set
-+# CONFIG_BATTERY_DS2760 is not set
-+# CONFIG_BATTERY_DS2782 is not set
-+# CONFIG_BATTERY_BQ27x00 is not set
-+# CONFIG_BATTERY_MAX17040 is not set
-+CONFIG_CHARGER_PCF50633=y
-+CONFIG_BATTERY_BQ27000_HDQ=y
-+CONFIG_HDQ_GPIO_BITBANG=y
-+CONFIG_BATTERY_PLATFORM=y
-+# CONFIG_HWMON is not set
-+# CONFIG_THERMAL is not set
-+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=y
-+# 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_WM831X is not set
-+# CONFIG_MFD_WM8350_I2C is not set
-+CONFIG_MFD_PCF50633=y
-+# CONFIG_MFD_MC13783 is not set
-+CONFIG_PCF50633_ADC=y
-+# CONFIG_AB3100_CORE is not set
-+# CONFIG_EZX_PCAP is not set
-+CONFIG_MFD_GLAMO=y
-+CONFIG_MFD_GLAMO_FB=y
-+CONFIG_MFD_GLAMO_GPIO=y
-+CONFIG_MFD_GLAMO_MCI=y
-+CONFIG_REGULATOR=y
-+# CONFIG_REGULATOR_DEBUG is not set
-+CONFIG_REGULATOR_FIXED_VOLTAGE=y
-+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-+CONFIG_REGULATOR_USERSPACE_CONSUMER=y
-+# CONFIG_REGULATOR_BQ24022 is not set
-+# CONFIG_REGULATOR_MAX1586 is not set
-+CONFIG_REGULATOR_PCF50633=y
-+# CONFIG_REGULATOR_LP3971 is not set
-+# CONFIG_REGULATOR_TPS65023 is not set
-+# CONFIG_REGULATOR_TPS6507X is not set
-+# CONFIG_MEDIA_SUPPORT is not set
-+
-+#
-+# Graphics support
-+#
-+# CONFIG_VGASTATE is not set
-+CONFIG_VIDEO_OUTPUT_CONTROL=y
-+CONFIG_FB=y
-+# CONFIG_FIRMWARE_EDID is not set
-+# 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 is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+
-+#
-+# Frame buffer hardware drivers
-+#
-+# CONFIG_FB_UVESA is not set
-+# CONFIG_FB_S1D13XXX is not set
-+# CONFIG_FB_TMIO is not set
-+# CONFIG_FB_S3C2410 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+CONFIG_LCD_CLASS_DEVICE=y
-+# CONFIG_LCD_LMS283GF05 is not set
-+# 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 is not set
-+CONFIG_LCD_JBT6K74=y
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+# CONFIG_BACKLIGHT_GENERIC is not set
-+# CONFIG_BACKLIGHT_PWM is not set
-+CONFIG_BACKLIGHT_PCF50633=y
-+
-+#
-+# Display device support
-+#
-+# CONFIG_DISPLAY_SUPPORT is not set
-+
-+#
-+# Console display driver support
-+#
-+# CONFIG_VGA_CONSOLE is not set
-+CONFIG_DUMMY_CONSOLE=y
-+CONFIG_FRAMEBUFFER_CONSOLE=y
-+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-+CONFIG_FONTS=y
-+# CONFIG_FONT_8x8 is not set
-+# CONFIG_FONT_8x16 is not set
-+CONFIG_FONT_6x11=y
-+# CONFIG_FONT_7x14 is not set
-+# CONFIG_FONT_PEARL_8x8 is not set
-+# CONFIG_FONT_ACORN_8x8 is not set
-+# CONFIG_FONT_MINI_4x6 is not set
-+# 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_SOUND_OSS_CORE_PRECLAIM=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_JACK=y
-+CONFIG_SND_SEQUENCER=y
-+CONFIG_SND_SEQ_DUMMY=y
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+CONFIG_SND_SEQUENCER_OSS=y
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_RAWMIDI_SEQ is not set
-+# CONFIG_SND_OPL3_LIB_SEQ is not set
-+# CONFIG_SND_OPL4_LIB_SEQ is not set
-+# CONFIG_SND_SBAWE_SEQ is not set
-+# CONFIG_SND_EMU10K1_SEQ is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+# CONFIG_SND_SPI is not set
-+# CONFIG_SND_USB is not set
-+CONFIG_SND_SOC=y
-+CONFIG_SND_S3C24XX_SOC=y
-+CONFIG_SND_S3C24XX_SOC_I2S=y
-+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
-+# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
-+# CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X is not set
-+# CONFIG_SND_S3C24XX_SOC_SIMTEC_TLV320AIC23 is not set
-+# CONFIG_SND_S3C24XX_SOC_SIMTEC_HERMES is not set
-+CONFIG_SND_SOC_I2C_AND_SPI=y
-+# CONFIG_SND_SOC_ALL_CODECS is not set
-+CONFIG_SND_SOC_WM8753=y
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+CONFIG_USB_HID=y
-+# CONFIG_HID_PID is not set
-+# CONFIG_USB_HIDDEV is not set
-+
-+#
-+# Special HID drivers
-+#
-+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_DRAGONRISE=y
-+# CONFIG_DRAGONRISE_FF is not set
-+CONFIG_HID_EZKEY=y
-+CONFIG_HID_KYE=y
-+CONFIG_HID_GYRATION=y
-+CONFIG_HID_TWINHAN=y
-+CONFIG_HID_KENSINGTON=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_HID_GREENASIA=y
-+# CONFIG_GREENASIA_FF is not set
-+CONFIG_HID_SMARTJOYPLUS=y
-+# CONFIG_SMARTJOYPLUS_FF is not set
-+CONFIG_HID_TOPSEED=y
-+CONFIG_HID_THRUSTMASTER=y
-+# CONFIG_THRUSTMASTER_FF is not set
-+CONFIG_HID_WACOM=y
-+CONFIG_HID_ZEROPLUS=y
-+# 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=y
-+
-+#
-+# Miscellaneous USB options
-+#
-+# CONFIG_USB_DEVICEFS is not set
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+CONFIG_USB_SUSPEND=y
-+# 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_ISP1760_HCD is not set
-+# CONFIG_USB_ISP1362_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=m
-+# CONFIG_USB_WDM is not set
-+CONFIG_USB_TMC=m
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=m
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+CONFIG_USB_STORAGE_DATAFAB=m
-+CONFIG_USB_STORAGE_FREECOM=m
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+CONFIG_USB_STORAGE_USBAT=m
-+CONFIG_USB_STORAGE_SDDR09=m
-+CONFIG_USB_STORAGE_SDDR55=m
-+CONFIG_USB_STORAGE_JUMPSHOT=m
-+CONFIG_USB_STORAGE_ALAUDA=m
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+CONFIG_USB_STORAGE_KARMA=m
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# 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=y
-+CONFIG_USB_SERIAL_GENERIC=y
-+CONFIG_USB_SERIAL_AIRCABLE=m
-+CONFIG_USB_SERIAL_ARK3116=m
-+CONFIG_USB_SERIAL_BELKIN=m
-+# CONFIG_USB_SERIAL_CH341 is not set
-+CONFIG_USB_SERIAL_WHITEHEAT=m
-+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-+# CONFIG_USB_SERIAL_CP210X is not set
-+CONFIG_USB_SERIAL_CYPRESS_M8=m
-+CONFIG_USB_SERIAL_EMPEG=m
-+CONFIG_USB_SERIAL_FTDI_SIO=m
-+CONFIG_USB_SERIAL_FUNSOFT=m
-+CONFIG_USB_SERIAL_VISOR=m
-+CONFIG_USB_SERIAL_IPAQ=m
-+CONFIG_USB_SERIAL_IR=m
-+CONFIG_USB_SERIAL_EDGEPORT=m
-+CONFIG_USB_SERIAL_EDGEPORT_TI=m
-+CONFIG_USB_SERIAL_GARMIN=m
-+CONFIG_USB_SERIAL_IPW=m
-+# CONFIG_USB_SERIAL_IUU is not set
-+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-+CONFIG_USB_SERIAL_KEYSPAN=m
-+CONFIG_USB_SERIAL_KLSI=m
-+CONFIG_USB_SERIAL_KOBIL_SCT=m
-+CONFIG_USB_SERIAL_MCT_U232=m
-+CONFIG_USB_SERIAL_MOS7720=m
-+CONFIG_USB_SERIAL_MOS7840=m
-+# CONFIG_USB_SERIAL_MOTOROLA is not set
-+CONFIG_USB_SERIAL_NAVMAN=m
-+CONFIG_USB_SERIAL_PL2303=m
-+# CONFIG_USB_SERIAL_OTI6858 is not set
-+# CONFIG_USB_SERIAL_QUALCOMM is not set
-+# CONFIG_USB_SERIAL_SPCP8X5 is not set
-+CONFIG_USB_SERIAL_HP4X=m
-+CONFIG_USB_SERIAL_SAFE=m
-+CONFIG_USB_SERIAL_SAFE_PADDED=y
-+# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
-+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-+# CONFIG_USB_SERIAL_SYMBOL is not set
-+CONFIG_USB_SERIAL_TI=m
-+CONFIG_USB_SERIAL_CYBERJACK=m
-+CONFIG_USB_SERIAL_XIRCOM=m
-+CONFIG_USB_SERIAL_OPTION=m
-+CONFIG_USB_SERIAL_OMNINET=m
-+# 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=m
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM 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=m
-+CONFIG_USB_IOWARRIOR=m
-+# 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_FILES is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=500
-+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_R8A66597 is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C_HSOTG is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+CONFIG_USB_GADGET_S3C2410=y
-+CONFIG_USB_S3C2410=y
-+# CONFIG_USB_S3C2410_DEBUG 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_LANGWELL is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+# CONFIG_USB_GADGET_DUALSPEED is not set
-+# CONFIG_USB_ZERO is not set
-+# CONFIG_USB_AUDIO is not set
-+CONFIG_USB_ETH=y
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_ETH_EEM is not set
-+# CONFIG_USB_GADGETFS is not set
-+# CONFIG_USB_FILE_STORAGE is not set
-+# CONFIG_USB_G_SERIAL is not set
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+# CONFIG_USB_CDC_COMPOSITE is not set
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+CONFIG_MMC_UNSAFE_RESUME=y
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+# CONFIG_SDIO_UART is not set
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+# CONFIG_MMC_AT91 is not set
-+# CONFIG_MMC_ATMELMCI is not set
-+# CONFIG_MMC_SPI is not set
-+CONFIG_MMC_S3C=y
-+# CONFIG_MMC_S3C_HW_SDIO_IRQ is not set
-+CONFIG_MMC_S3C_PIO=y
-+# CONFIG_MMC_S3C_DMA is not set
-+# CONFIG_MMC_S3C_PIODMA is not set
-+# CONFIG_MEMSTICK is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+# CONFIG_LEDS_S3C24XX is not set
-+# CONFIG_LEDS_PCA9532 is not set
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_LP3944 is not set
-+# CONFIG_LEDS_PCA955X is not set
-+# CONFIG_LEDS_DAC124S085 is not set
-+# CONFIG_LEDS_PWM is not set
-+# CONFIG_LEDS_BD2802 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+# CONFIG_LEDS_TRIGGER_GPIO is not set
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+# CONFIG_ACCESSIBILITY is not set
-+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 is not set
-+# 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
-+# CONFIG_RTC_DRV_RX8025 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
-+# CONFIG_RTC_DRV_PCF2123 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
-+CONFIG_RTC_DRV_PCF50633=y
-+
-+#
-+# on-CPU RTC drivers
-+#
-+CONFIG_RTC_DRV_S3C=y
-+# CONFIG_DMADEVICES is not set
-+# CONFIG_AUXDISPLAY is not set
-+# CONFIG_UIO is not set
-+
-+#
-+# TI VLYNQ
-+#
-+CONFIG_STAGING=y
-+# CONFIG_STAGING_EXCLUDE_BUILD is not set
-+# CONFIG_USB_IP_COMMON is not set
-+# CONFIG_PRISM2_USB is not set
-+# CONFIG_ECHO is not set
-+# CONFIG_COMEDI is not set
-+# CONFIG_ASUS_OLED is not set
-+# CONFIG_INPUT_MIMIO is not set
-+# CONFIG_TRANZPORT is not set
-+
-+#
-+# Android
-+#
-+
-+#
-+# Qualcomm MSM Camera And Video
-+#
-+
-+#
-+# Camera Sensor Selection
-+#
-+# CONFIG_INPUT_GPIO is not set
-+# CONFIG_DST is not set
-+# CONFIG_POHMELFS is not set
-+# CONFIG_PLAN9AUTH is not set
-+# CONFIG_LINE6_USB is not set
-+# CONFIG_USB_SERIAL_QUATECH2 is not set
-+# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
-+# CONFIG_VT6656 is not set
-+# CONFIG_FB_UDL is not set
-+
-+#
-+# RAR Register Driver
-+#
-+# CONFIG_RAR_REGISTER is not set
-+# CONFIG_IIO is not set
-+CONFIG_AR6000_WLAN=y
-+# CONFIG_AR6000_WLAN_DEBUG is not set
-+# CONFIG_AR6000_WLAN_RESET is not set
-+
-+#
-+# File systems
-+#
-+CONFIG_EXT2_FS=y
-+# CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
-+CONFIG_EXT3_FS=y
-+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-+# CONFIG_EXT3_FS_XATTR is not set
-+# CONFIG_EXT4_FS is not set
-+CONFIG_JBD=y
-+CONFIG_REISERFS_FS=m
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_REISERFS_FS_XATTR is not set
-+# CONFIG_JFS_FS is not set
-+# CONFIG_FS_POSIX_ACL is not set
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+# CONFIG_NILFS2_FS is not set
-+CONFIG_FILE_LOCKING=y
-+CONFIG_FSNOTIFY=y
-+# CONFIG_DNOTIFY is not set
-+CONFIG_INOTIFY=y
-+CONFIG_INOTIFY_USER=y
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+CONFIG_AUTOFS4_FS=m
-+CONFIG_FUSE_FS=m
-+CONFIG_CUSE=m
-+
-+#
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
-+# CD-ROM/DVD Filesystems
-+#
-+CONFIG_ISO9660_FS=m
-+CONFIG_JOLIET=y
-+# CONFIG_ZISOFS is not set
-+CONFIG_UDF_FS=m
-+CONFIG_UDF_NLS=y
-+
-+#
-+# DOS/FAT/NT Filesystems
-+#
-+CONFIG_FAT_FS=y
-+# CONFIG_MSDOS_FS is not set
-+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 is not set
-+# 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_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=y
-+# 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 is not set
-+CONFIG_SQUASHFS=m
-+# CONFIG_SQUASHFS_EMBEDDED is not set
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-+# 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 is not set
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UFS_FS is not set
-+CONFIG_NETWORK_FILESYSTEMS=y
-+CONFIG_NFS_FS=m
-+CONFIG_NFS_V3=y
-+# CONFIG_NFS_V3_ACL is not set
-+# CONFIG_NFS_V4 is not set
-+CONFIG_NFSD=m
-+CONFIG_NFSD_V3=y
-+# CONFIG_NFSD_V3_ACL is not set
-+# CONFIG_NFSD_V4 is not set
-+CONFIG_LOCKD=m
-+CONFIG_LOCKD_V4=y
-+CONFIG_EXPORTFS=m
-+CONFIG_NFS_COMMON=y
-+CONFIG_SUNRPC=m
-+# CONFIG_RPCSEC_GSS_KRB5 is not set
-+# CONFIG_RPCSEC_GSS_SPKM3 is not set
-+# CONFIG_SMB_FS is not set
-+CONFIG_CIFS=m
-+# CONFIG_CIFS_STATS is not set
-+# CONFIG_CIFS_WEAK_PW_HASH is not set
-+# CONFIG_CIFS_XATTR is not set
-+# CONFIG_CIFS_DEBUG2 is not set
-+# CONFIG_CIFS_EXPERIMENTAL 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 is not set
-+# CONFIG_MINIX_SUBPARTITION is not set
-+# CONFIG_SOLARIS_X86_PARTITION is not set
-+# CONFIG_UNIXWARE_DISKLABEL is not set
-+# CONFIG_LDM_PARTITION 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 is not set
-+# CONFIG_SYSV68_PARTITION is not set
-+CONFIG_NLS=y
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+CONFIG_NLS_CODEPAGE_437=y
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+CONFIG_NLS_CODEPAGE_850=m
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+CONFIG_NLS_CODEPAGE_866=m
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+CONFIG_NLS_CODEPAGE_936=m
-+CONFIG_NLS_CODEPAGE_950=m
-+# CONFIG_NLS_CODEPAGE_932 is not set
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+# CONFIG_NLS_CODEPAGE_1250 is not set
-+CONFIG_NLS_CODEPAGE_1251=m
-+# CONFIG_NLS_ASCII is not set
-+CONFIG_NLS_ISO8859_1=y
-+# CONFIG_NLS_ISO8859_2 is not set
-+# CONFIG_NLS_ISO8859_3 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+# CONFIG_NLS_KOI8_R is not set
-+# CONFIG_NLS_KOI8_U is not set
-+CONFIG_NLS_UTF8=m
-+# CONFIG_DLM is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_PRINTK_TIME=y
-+# 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_STRIP_ASM_SYMS=y
-+# CONFIG_UNUSED_SYMBOLS is not set
-+# CONFIG_DEBUG_FS is not set
-+# CONFIG_HEADERS_CHECK is not set
-+# CONFIG_DEBUG_KERNEL is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+CONFIG_FRAME_POINTER=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+# CONFIG_FTRACE is not set
-+# CONFIG_SAMPLES is not set
-+CONFIG_HAVE_ARCH_KGDB=y
-+# CONFIG_ARM_UNWIND is not set
-+# CONFIG_DEBUG_USER is not set
-+CONFIG_DEBUG_S3C_UART=2
-+
-+#
-+# Security options
-+#
-+# CONFIG_KEYS is not set
-+# CONFIG_SECURITY is not set
-+# CONFIG_SECURITYFS is not set
-+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-+CONFIG_CRYPTO=y
-+
-+#
-+# Crypto core or helper
-+#
-+CONFIG_CRYPTO_ALGAPI=y
-+CONFIG_CRYPTO_ALGAPI2=y
-+CONFIG_CRYPTO_AEAD=m
-+CONFIG_CRYPTO_AEAD2=y
-+CONFIG_CRYPTO_BLKCIPHER=m
-+CONFIG_CRYPTO_BLKCIPHER2=y
-+CONFIG_CRYPTO_HASH=y
-+CONFIG_CRYPTO_HASH2=y
-+CONFIG_CRYPTO_RNG2=y
-+CONFIG_CRYPTO_PCOMP=y
-+CONFIG_CRYPTO_MANAGER=m
-+CONFIG_CRYPTO_MANAGER2=y
-+CONFIG_CRYPTO_GF128MUL=m
-+CONFIG_CRYPTO_NULL=m
-+CONFIG_CRYPTO_WORKQUEUE=y
-+# CONFIG_CRYPTO_CRYPTD is not set
-+CONFIG_CRYPTO_AUTHENC=m
-+CONFIG_CRYPTO_TEST=m
-+
-+#
-+# Authenticated Encryption with Associated Data
-+#
-+# CONFIG_CRYPTO_CCM is not set
-+# CONFIG_CRYPTO_GCM is not set
-+# CONFIG_CRYPTO_SEQIV is not set
-+
-+#
-+# Block modes
-+#
-+CONFIG_CRYPTO_CBC=m
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=m
-+CONFIG_CRYPTO_LRW=m
-+CONFIG_CRYPTO_PCBC=m
-+# CONFIG_CRYPTO_XTS is not set
-+
-+#
-+# Hash modes
-+#
-+CONFIG_CRYPTO_HMAC=m
-+CONFIG_CRYPTO_XCBC=m
-+# CONFIG_CRYPTO_VMAC is not set
-+
-+#
-+# Digest
-+#
-+CONFIG_CRYPTO_CRC32C=m
-+# CONFIG_CRYPTO_GHASH is not set
-+CONFIG_CRYPTO_MD4=m
-+CONFIG_CRYPTO_MD5=y
-+CONFIG_CRYPTO_MICHAEL_MIC=m
-+# CONFIG_CRYPTO_RMD128 is not set
-+# CONFIG_CRYPTO_RMD160 is not set
-+# CONFIG_CRYPTO_RMD256 is not set
-+# CONFIG_CRYPTO_RMD320 is not set
-+CONFIG_CRYPTO_SHA1=m
-+CONFIG_CRYPTO_SHA256=m
-+CONFIG_CRYPTO_SHA512=m
-+CONFIG_CRYPTO_TGR192=m
-+CONFIG_CRYPTO_WP512=m
-+
-+#
-+# Ciphers
-+#
-+# CONFIG_CRYPTO_AES is not set
-+CONFIG_CRYPTO_ANUBIS=m
-+CONFIG_CRYPTO_ARC4=m
-+CONFIG_CRYPTO_BLOWFISH=m
-+CONFIG_CRYPTO_CAMELLIA=m
-+CONFIG_CRYPTO_CAST5=m
-+CONFIG_CRYPTO_CAST6=m
-+CONFIG_CRYPTO_DES=m
-+CONFIG_CRYPTO_FCRYPT=m
-+CONFIG_CRYPTO_KHAZAD=m
-+# CONFIG_CRYPTO_SALSA20 is not set
-+# CONFIG_CRYPTO_SEED is not set
-+CONFIG_CRYPTO_SERPENT=m
-+CONFIG_CRYPTO_TEA=m
-+CONFIG_CRYPTO_TWOFISH=m
-+CONFIG_CRYPTO_TWOFISH_COMMON=m
-+
-+#
-+# Compression
-+#
-+CONFIG_CRYPTO_DEFLATE=m
-+CONFIG_CRYPTO_ZLIB=y
-+# CONFIG_CRYPTO_LZO is not set
-+
-+#
-+# Random Number Generation
-+#
-+# CONFIG_CRYPTO_ANSI_CPRNG is not set
-+# CONFIG_CRYPTO_HW is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+CONFIG_CRC_CCITT=y
-+CONFIG_CRC16=y
-+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_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
-+CONFIG_TEXTSEARCH=y
-+CONFIG_TEXTSEARCH_KMP=m
-+CONFIG_TEXTSEARCH_BM=m
-+CONFIG_TEXTSEARCH_FSM=m
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
---
-1.7.0.4
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0022-gta02_drm_defconfig.patch b/recipes/linux/linux-openmoko-2.6.32/0022-gta02_drm_defconfig.patch
deleted file mode 100644
index e722077f78..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0022-gta02_drm_defconfig.patch
+++ /dev/null
@@ -1,2169 +0,0 @@
-From 91e56b8866d0cced4f17251eb509bd212dbd00f4 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Fri, 9 Apr 2010 09:25:52 +0200
-Subject: [PATCH] gta02_drm_defconfig
-
-config used in SHR-U, KMS enabled
----
- arch/arm/configs/gta02_drm_defconfig | 2149 ++++++++++++++++++++++++++++++++++
- 1 files changed, 2149 insertions(+), 0 deletions(-)
- create mode 100644 arch/arm/configs/gta02_drm_defconfig
-
-diff --git a/arch/arm/configs/gta02_drm_defconfig b/arch/arm/configs/gta02_drm_defconfig
-new file mode 100644
-index 0000000..05aa130
---- /dev/null
-+++ b/arch/arm/configs/gta02_drm_defconfig
-@@ -0,0 +1,2149 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.32.11
-+# Sun Apr 11 14:20:07 2010
-+#
-+CONFIG_ARM=y
-+CONFIG_HAVE_PWM=y
-+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-+CONFIG_GENERIC_GPIO=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_CPUFREQ=y
-+CONFIG_GENERIC_HWEIGHT=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_FIQ=y
-+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
-+CONFIG_VECTORS_BASE=0xffff0000
-+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-+CONFIG_CONSTRUCTORS=y
-+
-+#
-+# General setup
-+#
-+CONFIG_EXPERIMENTAL=y
-+CONFIG_BROKEN_ON_SMP=y
-+CONFIG_LOCK_KERNEL=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 is not set
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+# CONFIG_TASKSTATS is not set
-+# CONFIG_AUDIT is not set
-+
-+#
-+# RCU Subsystem
-+#
-+CONFIG_TREE_RCU=y
-+# CONFIG_TREE_PREEMPT_RCU is not set
-+# CONFIG_RCU_TRACE is not set
-+CONFIG_RCU_FANOUT=32
-+# CONFIG_RCU_FANOUT_EXACT is not set
-+# CONFIG_TREE_RCU_TRACE is not set
-+CONFIG_IKCONFIG=m
-+CONFIG_IKCONFIG_PROC=y
-+CONFIG_LOG_BUF_SHIFT=18
-+# CONFIG_GROUP_SCHED is not set
-+# CONFIG_CGROUPS is not set
-+# CONFIG_SYSFS_DEPRECATED_V2 is not set
-+# CONFIG_RELAY is not set
-+CONFIG_NAMESPACES=y
-+# CONFIG_UTS_NS is not set
-+# CONFIG_IPC_NS is not set
-+# 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_RD_GZIP=y
-+CONFIG_RD_BZIP2=y
-+CONFIG_RD_LZMA=y
-+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-+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=y
-+# 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
-+
-+#
-+# Kernel Performance Events And Counters
-+#
-+CONFIG_VM_EVENT_COUNTERS=y
-+CONFIG_COMPAT_BRK=y
-+CONFIG_SLAB=y
-+# CONFIG_SLUB is not set
-+# 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
-+
-+#
-+# GCOV-based kernel profiling
-+#
-+# CONFIG_GCOV_KERNEL is not set
-+CONFIG_SLOW_WORK=y
-+# CONFIG_SLOW_WORK_DEBUG is not set
-+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-+CONFIG_SLABINFO=y
-+CONFIG_RT_MUTEXES=y
-+CONFIG_BASE_SMALL=0
-+CONFIG_MODULES=y
-+# CONFIG_MODULE_FORCE_LOAD is not set
-+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_LBDAF is not set
-+CONFIG_BLK_DEV_BSG=y
-+# CONFIG_BLK_DEV_INTEGRITY is not set
-+
-+#
-+# IO Schedulers
-+#
-+CONFIG_IOSCHED_NOOP=y
-+CONFIG_IOSCHED_AS=m
-+CONFIG_IOSCHED_DEADLINE=y
-+CONFIG_IOSCHED_CFQ=m
-+# CONFIG_DEFAULT_AS is not set
-+CONFIG_DEFAULT_DEADLINE=y
-+# CONFIG_DEFAULT_CFQ is not set
-+# CONFIG_DEFAULT_NOOP is not set
-+CONFIG_DEFAULT_IOSCHED="deadline"
-+CONFIG_FREEZER=y
-+
-+#
-+# System Type
-+#
-+CONFIG_MMU=y
-+# 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_GEMINI is not set
-+# CONFIG_ARCH_EBSA110 is not set
-+# CONFIG_ARCH_EP93XX is not set
-+# CONFIG_ARCH_FOOTBRIDGE is not set
-+# CONFIG_ARCH_MXC is not set
-+# CONFIG_ARCH_STMP3XXX is not set
-+# CONFIG_ARCH_NETX is not set
-+# CONFIG_ARCH_H720X is not set
-+# CONFIG_ARCH_NOMADIK 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_LOKI is not set
-+# CONFIG_ARCH_MV78XX0 is not set
-+# CONFIG_ARCH_ORION5X is not set
-+# CONFIG_ARCH_MMP is not set
-+# CONFIG_ARCH_KS8695 is not set
-+# CONFIG_ARCH_NS9XXX is not set
-+# CONFIG_ARCH_W90X900 is not set
-+# CONFIG_ARCH_PNX4008 is not set
-+# CONFIG_ARCH_PXA is not set
-+# CONFIG_ARCH_MSM 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_S5PC1XX is not set
-+# CONFIG_ARCH_SHARK is not set
-+# CONFIG_ARCH_LH7A40X is not set
-+# CONFIG_ARCH_U300 is not set
-+# CONFIG_ARCH_DAVINCI is not set
-+# CONFIG_ARCH_OMAP is not set
-+# CONFIG_ARCH_BCMRING is not set
-+CONFIG_PLAT_S3C24XX=y
-+CONFIG_S3C2410_CLOCK=y
-+CONFIG_CPU_S3C244X=y
-+CONFIG_S3C24XX_PWM=y
-+CONFIG_S3C24XX_GPIO_EXTRA=64
-+CONFIG_S3C24XX_GPIO_EXTRA64=y
-+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=y
-+CONFIG_S3C_BOOT_ERROR_RESET=y
-+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=2
-+CONFIG_S3C_GPIO_SPACE=0
-+CONFIG_S3C_DMA=y
-+CONFIG_S3C_DEV_USB_HOST=y
-+CONFIG_S3C_DEV_NAND=y
-+
-+#
-+# S3C2400 Machines
-+#
-+CONFIG_CPU_S3C2410_DMA=y
-+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
-+
-+#
-+# 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 is not set
-+CONFIG_CPU_S3C2442=y
-+
-+#
-+# S3C2442 Machines
-+#
-+CONFIG_MACH_NEO1973_GTA02=y
-+
-+#
-+# 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_LEGACY=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_ARM_L1_CACHE_SHIFT=5
-+
-+#
-+# 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_NONE is not set
-+# CONFIG_PREEMPT_VOLUNTARY is not set
-+CONFIG_PREEMPT=y
-+CONFIG_HZ=200
-+CONFIG_AEABI=y
-+# CONFIG_OABI_COMPAT is not set
-+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
-+# CONFIG_HIGHMEM 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_HAVE_MLOCK=y
-+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-+# CONFIG_KSM is not set
-+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-+CONFIG_ALIGNMENT_TRAP=y
-+# CONFIG_UACCESS_WITH_MEMCPY is not set
-+
-+#
-+# Boot options
-+#
-+CONFIG_ZBOOT_ROM_TEXT=0x0
-+CONFIG_ZBOOT_ROM_BSS=0x0
-+CONFIG_CMDLINE="unused -- bootloader passes ATAG list quiet "
-+# CONFIG_XIP_KERNEL is not set
-+# CONFIG_KEXEC is not set
-+
-+#
-+# CPU Power Management
-+#
-+# CONFIG_CPU_FREQ is not set
-+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 is not set
-+# CONFIG_BINFMT_MISC is not set
-+
-+#
-+# 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 is not set
-+# CONFIG_PM_RUNTIME is not set
-+CONFIG_ARCH_SUSPEND_POSSIBLE=y
-+CONFIG_NET=y
-+
-+#
-+# Networking options
-+#
-+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=y
-+# CONFIG_XFRM_STATISTICS is not set
-+CONFIG_XFRM_IPCOMP=m
-+CONFIG_NET_KEY=m
-+CONFIG_NET_KEY_MIGRATE=y
-+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 is not set
-+# CONFIG_IP_ROUTE_VERBOSE is not set
-+CONFIG_IP_PNP=y
-+# CONFIG_IP_PNP_DHCP is not set
-+# CONFIG_IP_PNP_BOOTP is not set
-+# CONFIG_IP_PNP_RARP is not set
-+CONFIG_NET_IPIP=m
-+CONFIG_NET_IPGRE=m
-+# CONFIG_NET_IPGRE_BROADCAST is not set
-+CONFIG_IP_MROUTE=y
-+# CONFIG_IP_PIMSM_V1 is not set
-+# CONFIG_IP_PIMSM_V2 is not set
-+# CONFIG_ARPD is not set
-+CONFIG_SYN_COOKIES=y
-+CONFIG_INET_AH=m
-+CONFIG_INET_ESP=m
-+CONFIG_INET_IPCOMP=m
-+CONFIG_INET_XFRM_TUNNEL=m
-+CONFIG_INET_TUNNEL=m
-+CONFIG_INET_XFRM_MODE_TRANSPORT=m
-+CONFIG_INET_XFRM_MODE_TUNNEL=m
-+CONFIG_INET_XFRM_MODE_BEET=m
-+# CONFIG_INET_LRO is not set
-+CONFIG_INET_DIAG=y
-+CONFIG_INET_TCP_DIAG=y
-+CONFIG_TCP_CONG_ADVANCED=y
-+# CONFIG_TCP_CONG_BIC is not set
-+# CONFIG_TCP_CONG_CUBIC is not set
-+CONFIG_TCP_CONG_WESTWOOD=y
-+# CONFIG_TCP_CONG_HTCP is not set
-+# CONFIG_TCP_CONG_HSTCP is not set
-+# CONFIG_TCP_CONG_HYBLA is not set
-+# CONFIG_TCP_CONG_VEGAS is not set
-+# CONFIG_TCP_CONG_SCALABLE is not set
-+# CONFIG_TCP_CONG_LP is not set
-+# CONFIG_TCP_CONG_VENO is not set
-+# CONFIG_TCP_CONG_YEAH is not set
-+# CONFIG_TCP_CONG_ILLINOIS is not set
-+# CONFIG_DEFAULT_BIC is not set
-+# CONFIG_DEFAULT_CUBIC is not set
-+# CONFIG_DEFAULT_HTCP is not set
-+# CONFIG_DEFAULT_VEGAS is not set
-+CONFIG_DEFAULT_WESTWOOD=y
-+# CONFIG_DEFAULT_RENO is not set
-+CONFIG_DEFAULT_TCP_CONG="westwood"
-+CONFIG_TCP_MD5SIG=y
-+CONFIG_IPV6=m
-+# CONFIG_IPV6_PRIVACY is not set
-+# CONFIG_IPV6_ROUTER_PREF is not set
-+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-+CONFIG_INET6_AH=m
-+CONFIG_INET6_ESP=m
-+CONFIG_INET6_IPCOMP=m
-+# CONFIG_IPV6_MIP6 is not set
-+CONFIG_INET6_XFRM_TUNNEL=m
-+CONFIG_INET6_TUNNEL=m
-+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-+CONFIG_INET6_XFRM_MODE_TUNNEL=m
-+CONFIG_INET6_XFRM_MODE_BEET=m
-+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-+CONFIG_IPV6_SIT=m
-+CONFIG_IPV6_NDISC_NODETYPE=y
-+CONFIG_IPV6_TUNNEL=m
-+# CONFIG_IPV6_MULTIPLE_TABLES is not set
-+# CONFIG_IPV6_MROUTE 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=m
-+CONFIG_NETFILTER_NETLINK_QUEUE=m
-+CONFIG_NETFILTER_NETLINK_LOG=m
-+CONFIG_NF_CONNTRACK=m
-+CONFIG_NF_CT_ACCT=y
-+CONFIG_NF_CONNTRACK_MARK=y
-+# CONFIG_NF_CONNTRACK_EVENTS is not set
-+# CONFIG_NF_CT_PROTO_DCCP is not set
-+CONFIG_NF_CT_PROTO_GRE=m
-+CONFIG_NF_CT_PROTO_SCTP=m
-+# CONFIG_NF_CT_PROTO_UDPLITE is not set
-+# CONFIG_NF_CONNTRACK_AMANDA is not set
-+CONFIG_NF_CONNTRACK_FTP=m
-+CONFIG_NF_CONNTRACK_H323=m
-+CONFIG_NF_CONNTRACK_IRC=m
-+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-+CONFIG_NF_CONNTRACK_PPTP=m
-+CONFIG_NF_CONNTRACK_SANE=m
-+CONFIG_NF_CONNTRACK_SIP=m
-+CONFIG_NF_CONNTRACK_TFTP=m
-+CONFIG_NF_CT_NETLINK=m
-+# CONFIG_NETFILTER_TPROXY is not set
-+CONFIG_NETFILTER_XTABLES=m
-+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-+CONFIG_NETFILTER_XT_TARGET_DSCP=m
-+CONFIG_NETFILTER_XT_TARGET_HL=m
-+# CONFIG_NETFILTER_XT_TARGET_LED is not set
-+CONFIG_NETFILTER_XT_TARGET_MARK=m
-+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
-+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
-+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
-+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
-+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-+CONFIG_NETFILTER_XT_MATCH_DCCP=m
-+CONFIG_NETFILTER_XT_MATCH_DSCP=m
-+CONFIG_NETFILTER_XT_MATCH_ESP=m
-+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-+CONFIG_NETFILTER_XT_MATCH_HELPER=m
-+CONFIG_NETFILTER_XT_MATCH_HL=m
-+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-+CONFIG_NETFILTER_XT_MATCH_MAC=m
-+CONFIG_NETFILTER_XT_MATCH_MARK=m
-+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
-+CONFIG_NETFILTER_XT_MATCH_POLICY=m
-+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
-+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
-+CONFIG_NETFILTER_XT_MATCH_REALM=m
-+CONFIG_NETFILTER_XT_MATCH_RECENT=m
-+# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
-+CONFIG_NETFILTER_XT_MATCH_SCTP=m
-+CONFIG_NETFILTER_XT_MATCH_STATE=m
-+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-+CONFIG_NETFILTER_XT_MATCH_STRING=m
-+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-+CONFIG_NETFILTER_XT_MATCH_TIME=m
-+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-+# CONFIG_NETFILTER_XT_MATCH_OSF is not set
-+# CONFIG_IP_VS is not set
-+
-+#
-+# IP: Netfilter Configuration
-+#
-+CONFIG_NF_DEFRAG_IPV4=m
-+CONFIG_NF_CONNTRACK_IPV4=m
-+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-+# CONFIG_IP_NF_QUEUE is not set
-+CONFIG_IP_NF_IPTABLES=m
-+CONFIG_IP_NF_MATCH_ADDRTYPE=m
-+CONFIG_IP_NF_MATCH_AH=m
-+CONFIG_IP_NF_MATCH_ECN=m
-+CONFIG_IP_NF_MATCH_TTL=m
-+CONFIG_IP_NF_FILTER=m
-+CONFIG_IP_NF_TARGET_REJECT=m
-+CONFIG_IP_NF_TARGET_LOG=m
-+CONFIG_IP_NF_TARGET_ULOG=m
-+CONFIG_NF_NAT=m
-+CONFIG_NF_NAT_NEEDED=y
-+CONFIG_IP_NF_TARGET_MASQUERADE=m
-+CONFIG_IP_NF_TARGET_NETMAP=m
-+CONFIG_IP_NF_TARGET_REDIRECT=m
-+CONFIG_NF_NAT_SNMP_BASIC=m
-+CONFIG_NF_NAT_PROTO_GRE=m
-+CONFIG_NF_NAT_PROTO_SCTP=m
-+CONFIG_NF_NAT_FTP=m
-+CONFIG_NF_NAT_IRC=m
-+CONFIG_NF_NAT_TFTP=m
-+# CONFIG_NF_NAT_AMANDA is not set
-+CONFIG_NF_NAT_PPTP=m
-+CONFIG_NF_NAT_H323=m
-+CONFIG_NF_NAT_SIP=m
-+CONFIG_IP_NF_MANGLE=m
-+CONFIG_IP_NF_TARGET_CLUSTERIP=m
-+CONFIG_IP_NF_TARGET_ECN=m
-+CONFIG_IP_NF_TARGET_TTL=m
-+CONFIG_IP_NF_RAW=m
-+# CONFIG_IP_NF_ARPTABLES is not set
-+
-+#
-+# IPv6: Netfilter Configuration
-+#
-+CONFIG_NF_CONNTRACK_IPV6=m
-+# CONFIG_IP6_NF_QUEUE is not set
-+CONFIG_IP6_NF_IPTABLES=m
-+CONFIG_IP6_NF_MATCH_AH=m
-+CONFIG_IP6_NF_MATCH_EUI64=m
-+CONFIG_IP6_NF_MATCH_FRAG=m
-+CONFIG_IP6_NF_MATCH_OPTS=m
-+CONFIG_IP6_NF_MATCH_HL=m
-+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-+CONFIG_IP6_NF_MATCH_MH=m
-+CONFIG_IP6_NF_MATCH_RT=m
-+CONFIG_IP6_NF_TARGET_HL=m
-+CONFIG_IP6_NF_TARGET_LOG=m
-+CONFIG_IP6_NF_FILTER=m
-+CONFIG_IP6_NF_TARGET_REJECT=m
-+CONFIG_IP6_NF_MANGLE=m
-+# CONFIG_IP6_NF_RAW is not set
-+CONFIG_BRIDGE_NF_EBTABLES=m
-+CONFIG_BRIDGE_EBT_BROUTE=m
-+CONFIG_BRIDGE_EBT_T_FILTER=m
-+CONFIG_BRIDGE_EBT_T_NAT=m
-+CONFIG_BRIDGE_EBT_802_3=m
-+CONFIG_BRIDGE_EBT_AMONG=m
-+CONFIG_BRIDGE_EBT_ARP=m
-+CONFIG_BRIDGE_EBT_IP=m
-+# CONFIG_BRIDGE_EBT_IP6 is not set
-+CONFIG_BRIDGE_EBT_LIMIT=m
-+CONFIG_BRIDGE_EBT_MARK=m
-+CONFIG_BRIDGE_EBT_PKTTYPE=m
-+CONFIG_BRIDGE_EBT_STP=m
-+CONFIG_BRIDGE_EBT_VLAN=m
-+CONFIG_BRIDGE_EBT_ARPREPLY=m
-+CONFIG_BRIDGE_EBT_DNAT=m
-+CONFIG_BRIDGE_EBT_MARK_T=m
-+CONFIG_BRIDGE_EBT_REDIRECT=m
-+CONFIG_BRIDGE_EBT_SNAT=m
-+CONFIG_BRIDGE_EBT_LOG=m
-+CONFIG_BRIDGE_EBT_ULOG=m
-+# CONFIG_BRIDGE_EBT_NFLOG is not set
-+# CONFIG_IP_DCCP is not set
-+# CONFIG_IP_SCTP is not set
-+# CONFIG_RDS is not set
-+# CONFIG_TIPC is not set
-+# CONFIG_ATM is not set
-+CONFIG_STP=y
-+CONFIG_BRIDGE=y
-+# CONFIG_NET_DSA is not set
-+# CONFIG_VLAN_8021Q is not set
-+# CONFIG_DECNET is not set
-+CONFIG_LLC=y
-+# 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_PHONET is not set
-+# CONFIG_IEEE802154 is not set
-+CONFIG_NET_SCHED=y
-+
-+#
-+# Queueing/Scheduling
-+#
-+CONFIG_NET_SCH_CBQ=m
-+CONFIG_NET_SCH_HTB=m
-+CONFIG_NET_SCH_HFSC=m
-+CONFIG_NET_SCH_PRIO=m
-+# CONFIG_NET_SCH_MULTIQ is not set
-+CONFIG_NET_SCH_RED=m
-+CONFIG_NET_SCH_SFQ=m
-+CONFIG_NET_SCH_TEQL=m
-+CONFIG_NET_SCH_TBF=m
-+CONFIG_NET_SCH_GRED=m
-+CONFIG_NET_SCH_DSMARK=m
-+CONFIG_NET_SCH_NETEM=m
-+# CONFIG_NET_SCH_DRR is not set
-+
-+#
-+# Classification
-+#
-+CONFIG_NET_CLS=y
-+CONFIG_NET_CLS_BASIC=m
-+CONFIG_NET_CLS_TCINDEX=m
-+CONFIG_NET_CLS_ROUTE4=m
-+CONFIG_NET_CLS_ROUTE=y
-+CONFIG_NET_CLS_FW=m
-+CONFIG_NET_CLS_U32=m
-+CONFIG_CLS_U32_PERF=y
-+CONFIG_CLS_U32_MARK=y
-+CONFIG_NET_CLS_RSVP=m
-+CONFIG_NET_CLS_RSVP6=m
-+# CONFIG_NET_CLS_FLOW is not set
-+# CONFIG_NET_EMATCH is not set
-+# CONFIG_NET_CLS_ACT is not set
-+# CONFIG_NET_CLS_IND is not set
-+CONFIG_NET_SCH_FIFO=y
-+# CONFIG_DCB is not set
-+
-+#
-+# Network testing
-+#
-+# CONFIG_NET_PKTGEN is not set
-+# CONFIG_HAMRADIO is not set
-+# CONFIG_CAN is not set
-+# CONFIG_IRDA is not set
-+CONFIG_BT=y
-+CONFIG_BT_L2CAP=y
-+CONFIG_BT_SCO=y
-+CONFIG_BT_RFCOMM=y
-+CONFIG_BT_RFCOMM_TTY=y
-+CONFIG_BT_BNEP=y
-+CONFIG_BT_BNEP_MC_FILTER=y
-+CONFIG_BT_BNEP_PROTO_FILTER=y
-+CONFIG_BT_HIDP=y
-+
-+#
-+# Bluetooth device drivers
-+#
-+CONFIG_BT_HCIBTUSB=y
-+# CONFIG_BT_HCIBTSDIO is not set
-+# CONFIG_BT_HCIUART is not set
-+# CONFIG_BT_HCIBCM203X is not set
-+# CONFIG_BT_HCIBPA10X is not set
-+# CONFIG_BT_HCIBFUSB is not set
-+# CONFIG_BT_HCIVHCI is not set
-+# CONFIG_BT_MRVL is not set
-+# CONFIG_AF_RXRPC is not set
-+CONFIG_FIB_RULES=y
-+CONFIG_WIRELESS=y
-+# CONFIG_CFG80211 is not set
-+CONFIG_CFG80211_DEFAULT_PS_VALUE=0
-+CONFIG_WIRELESS_OLD_REGULATORY=y
-+CONFIG_WIRELESS_EXT=y
-+CONFIG_WIRELESS_EXT_SYSFS=y
-+# CONFIG_LIB80211 is not set
-+
-+#
-+# CFG80211 needs to be enabled for MAC80211
-+#
-+# CONFIG_WIMAX is not set
-+CONFIG_RFKILL=y
-+CONFIG_RFKILL_LEDS=y
-+CONFIG_RFKILL_INPUT=y
-+# CONFIG_NET_9P is not set
-+
-+#
-+# Device Drivers
-+#
-+
-+#
-+# Generic Driver Options
-+#
-+CONFIG_UEVENT_HELPER_PATH=""
-+CONFIG_DEVTMPFS=y
-+CONFIG_DEVTMPFS_MOUNT=y
-+CONFIG_STANDALONE=y
-+CONFIG_PREVENT_FIRMWARE_BUILD=y
-+CONFIG_FW_LOADER=y
-+# CONFIG_FIRMWARE_IN_KERNEL is not set
-+CONFIG_EXTRA_FIRMWARE=""
-+# CONFIG_SYS_HYPERVISOR is not set
-+CONFIG_CONNECTOR=m
-+CONFIG_MTD=y
-+# CONFIG_MTD_DEBUG is not set
-+# CONFIG_MTD_TESTS is not set
-+CONFIG_MTD_CONCAT=y
-+CONFIG_MTD_PARTITIONS=y
-+# 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 is not set
-+# CONFIG_NFTL is not set
-+# CONFIG_INFTL is not set
-+# CONFIG_RFD_FTL is not set
-+# CONFIG_SSFDC is not set
-+# CONFIG_MTD_OOPS is not set
-+
-+#
-+# RAM/ROM/Flash chip drivers
-+#
-+CONFIG_MTD_CFI=y
-+# CONFIG_MTD_JEDECPROBE is not set
-+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=y
-+# CONFIG_MTD_CFI_AMDSTD is not set
-+# CONFIG_MTD_CFI_STAA is not set
-+CONFIG_MTD_CFI_UTIL=y
-+# CONFIG_MTD_RAM is not set
-+CONFIG_MTD_ROM=y
-+CONFIG_MTD_ABSENT=y
-+
-+#
-+# Mapping drivers for chip access
-+#
-+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-+CONFIG_MTD_PHYSMAP=y
-+# CONFIG_MTD_PHYSMAP_COMPAT is not set
-+# CONFIG_MTD_ARM_INTEGRATOR 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_SST25L 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=y
-+# 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 is not set
-+# CONFIG_MTD_ALAUDA is not set
-+# CONFIG_MTD_ONENAND is not set
-+
-+#
-+# LPDDR flash memory drivers
-+#
-+# CONFIG_MTD_LPDDR is not set
-+
-+#
-+# UBI - Unsorted block images
-+#
-+CONFIG_MTD_UBI=y
-+CONFIG_MTD_UBI_WL_THRESHOLD=4096
-+CONFIG_MTD_UBI_BEB_RESERVE=1
-+CONFIG_MTD_UBI_GLUEBI=y
-+
-+#
-+# UBI debugging options
-+#
-+CONFIG_MTD_UBI_DEBUG=y
-+# CONFIG_MTD_UBI_DEBUG_MSG is not set
-+# CONFIG_MTD_UBI_DEBUG_PARANOID is not set
-+CONFIG_MTD_UBI_DEBUG_DISABLE_BGT=y
-+# CONFIG_MTD_UBI_DEBUG_EMULATE_BITFLIPS is not set
-+# CONFIG_MTD_UBI_DEBUG_EMULATE_WRITE_FAILURES is not set
-+# CONFIG_MTD_UBI_DEBUG_EMULATE_ERASE_FAILURES is not set
-+
-+#
-+# Additional UBI debugging messages
-+#
-+# CONFIG_MTD_UBI_DEBUG_MSG_BLD is not set
-+# CONFIG_MTD_UBI_DEBUG_MSG_EBA is not set
-+# CONFIG_MTD_UBI_DEBUG_MSG_WL is not set
-+# CONFIG_MTD_UBI_DEBUG_MSG_IO 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 is not set
-+CONFIG_BLK_DEV_UB=m
-+CONFIG_BLK_DEV_RAM=y
-+CONFIG_BLK_DEV_RAM_COUNT=16
-+CONFIG_BLK_DEV_RAM_SIZE=4096
-+# CONFIG_BLK_DEV_XIP is not set
-+# CONFIG_CDROM_PKTCDVD is not set
-+# CONFIG_ATA_OVER_ETH is not set
-+# CONFIG_MG_DISK is not set
-+# CONFIG_MISC_DEVICES 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=y
-+
-+#
-+# 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=m
-+# CONFIG_BLK_DEV_SR_VENDOR is not set
-+CONFIG_CHR_DEV_SG=m
-+# CONFIG_CHR_DEV_SCH is not set
-+CONFIG_SCSI_MULTI_LUN=y
-+# CONFIG_SCSI_CONSTANTS is not set
-+# CONFIG_SCSI_LOGGING is not set
-+CONFIG_SCSI_SCAN_ASYNC=y
-+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_ATTRS is not set
-+# CONFIG_SCSI_SAS_LIBSAS is not set
-+# CONFIG_SCSI_SRP_ATTRS is not set
-+CONFIG_SCSI_LOWLEVEL=y
-+# CONFIG_ISCSI_TCP is not set
-+# CONFIG_LIBFC is not set
-+# CONFIG_LIBFCOE is not set
-+# CONFIG_SCSI_DEBUG is not set
-+# CONFIG_SCSI_DH is not set
-+# CONFIG_SCSI_OSD_INITIATOR 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_NET_ETHERNET is not set
-+CONFIG_MII=m
-+# CONFIG_NETDEV_1000 is not set
-+# CONFIG_NETDEV_10000 is not set
-+CONFIG_WLAN=y
-+# CONFIG_WLAN_PRE80211 is not set
-+# CONFIG_WLAN_80211 is not set
-+
-+#
-+# Enable WiMAX (Networking options) to see the WiMAX drivers
-+#
-+
-+#
-+# USB Network Adapters
-+#
-+CONFIG_USB_CATC=m
-+CONFIG_USB_KAWETH=m
-+CONFIG_USB_PEGASUS=m
-+CONFIG_USB_RTL8150=m
-+CONFIG_USB_USBNET=m
-+# CONFIG_USB_NET_AX8817X is not set
-+CONFIG_USB_NET_CDCETHER=m
-+# CONFIG_USB_NET_CDC_EEM is not set
-+# CONFIG_USB_NET_DM9601 is not set
-+# CONFIG_USB_NET_SMSC95XX is not set
-+# CONFIG_USB_NET_GL620A is not set
-+CONFIG_USB_NET_NET1080=m
-+# CONFIG_USB_NET_PLUSB is not set
-+# CONFIG_USB_NET_MCS7830 is not set
-+# CONFIG_USB_NET_RNDIS_HOST is not set
-+CONFIG_USB_NET_CDC_SUBSET=m
-+# CONFIG_USB_ALI_M5632 is not set
-+# CONFIG_USB_AN2720 is not set
-+CONFIG_USB_BELKIN=y
-+CONFIG_USB_ARMLINUX=y
-+# CONFIG_USB_EPSON2888 is not set
-+# CONFIG_USB_KC2190 is not set
-+CONFIG_USB_NET_ZAURUS=m
-+# CONFIG_USB_HSO is not set
-+# CONFIG_USB_NET_INT51X1 is not set
-+# CONFIG_WAN is not set
-+CONFIG_PPP=m
-+CONFIG_PPP_MULTILINK=y
-+CONFIG_PPP_FILTER=y
-+CONFIG_PPP_ASYNC=m
-+CONFIG_PPP_SYNC_TTY=m
-+CONFIG_PPP_DEFLATE=m
-+CONFIG_PPP_BSDCOMP=m
-+CONFIG_PPP_MPPE=m
-+# CONFIG_PPPOE is not set
-+# CONFIG_PPPOL2TP is not set
-+# CONFIG_SLIP is not set
-+CONFIG_SLHC=m
-+# CONFIG_NETCONSOLE is not set
-+# CONFIG_NETPOLL is not set
-+# CONFIG_NET_POLL_CONTROLLER is not set
-+# CONFIG_ISDN is not set
-+# CONFIG_PHONE is not set
-+
-+#
-+# Input device support
-+#
-+CONFIG_INPUT=y
-+# CONFIG_INPUT_FF_MEMLESS is not set
-+# CONFIG_INPUT_POLLDEV is not set
-+
-+#
-+# Userland interfaces
-+#
-+CONFIG_INPUT_MOUSEDEV=y
-+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-+CONFIG_INPUT_JOYDEV=m
-+CONFIG_INPUT_EVDEV=y
-+# CONFIG_INPUT_EVBUG is not set
-+
-+#
-+# Input Device Drivers
-+#
-+CONFIG_INPUT_KEYBOARD=y
-+# CONFIG_KEYBOARD_ADP5588 is not set
-+# CONFIG_KEYBOARD_ATKBD is not set
-+# CONFIG_QT2160 is not set
-+# CONFIG_KEYBOARD_LKKBD is not set
-+CONFIG_KEYBOARD_GPIO=y
-+# CONFIG_KEYBOARD_MATRIX is not set
-+# CONFIG_KEYBOARD_LM8323 is not set
-+# CONFIG_KEYBOARD_MAX7359 is not set
-+# CONFIG_KEYBOARD_NEWTON is not set
-+# CONFIG_KEYBOARD_OPENCORES is not set
-+CONFIG_KEYBOARD_STOWAWAY=m
-+# CONFIG_KEYBOARD_SUNKBD is not set
-+# CONFIG_KEYBOARD_XTKBD is not set
-+# CONFIG_INPUT_MOUSE 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_S3C2410=y
-+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
-+# CONFIG_TOUCHSCREEN_ADS7846 is not set
-+# CONFIG_TOUCHSCREEN_AD7877 is not set
-+# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
-+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
-+# CONFIG_TOUCHSCREEN_AD7879 is not set
-+# CONFIG_TOUCHSCREEN_EETI 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_MCS5000 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_TOUCHSCREEN_W90X900 is not set
-+CONFIG_INPUT_MISC=y
-+# CONFIG_INPUT_ATI_REMOTE is not set
-+# CONFIG_INPUT_ATI_REMOTE2 is not set
-+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-+# CONFIG_INPUT_POWERMATE is not set
-+# CONFIG_INPUT_YEALINK is not set
-+# CONFIG_INPUT_CM109 is not set
-+CONFIG_INPUT_UINPUT=m
-+CONFIG_INPUT_PCF50633_PMU=y
-+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-+CONFIG_INPUT_LIS302DL=y
-+
-+#
-+# Hardware I/O ports
-+#
-+CONFIG_SERIO=y
-+# CONFIG_SERIO_SERPORT is not set
-+# CONFIG_SERIO_RAW is not set
-+# 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 is not set
-+# 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_MAX3100 is not set
-+CONFIG_SERIAL_CORE=y
-+CONFIG_SERIAL_CORE_CONSOLE=y
-+CONFIG_UNIX98_PTYS=y
-+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-+# CONFIG_LEGACY_PTYS is not set
-+# CONFIG_IPMI_HANDLER is not set
-+# CONFIG_HW_RANDOM is not set
-+# 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_COMPAT=y
-+CONFIG_I2C_CHARDEV=y
-+# CONFIG_I2C_HELPER_AUTO is not set
-+
-+#
-+# I2C Algorithms
-+#
-+CONFIG_I2C_ALGOBIT=y
-+# CONFIG_I2C_ALGOPCF is not set
-+# CONFIG_I2C_ALGOPCA is not set
-+
-+#
-+# I2C Hardware Bus support
-+#
-+
-+#
-+# I2C system bus drivers (mostly embedded / system-on-chip)
-+#
-+# CONFIG_I2C_DESIGNWARE is not set
-+# CONFIG_I2C_GPIO is not set
-+# CONFIG_I2C_OCORES is not set
-+CONFIG_I2C_S3C2410=y
-+# CONFIG_I2C_SIMTEC is not set
-+
-+#
-+# 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_TSL2550 is not set
-+# 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_MASTER=y
-+
-+#
-+# SPI Master Controller Drivers
-+#
-+CONFIG_SPI_BITBANG=y
-+CONFIG_SPI_GPIO=y
-+CONFIG_SPI_S3C24XX=y
-+CONFIG_SPI_S3C24XX_GPIO=y
-+
-+#
-+# SPI Protocol Masters
-+#
-+# CONFIG_SPI_SPIDEV is not set
-+# CONFIG_SPI_TLE62X0 is not set
-+
-+#
-+# PPS support
-+#
-+# CONFIG_PPS is not set
-+CONFIG_ARCH_REQUIRE_GPIOLIB=y
-+CONFIG_GPIOLIB=y
-+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
-+CONFIG_GPIO_PCF50633=y
-+
-+#
-+# PCI GPIO expanders:
-+#
-+
-+#
-+# SPI GPIO expanders:
-+#
-+# CONFIG_GPIO_MAX7301 is not set
-+# CONFIG_GPIO_MCP23S08 is not set
-+# CONFIG_GPIO_MC33880 is not set
-+
-+#
-+# AC97 GPIO expanders:
-+#
-+# CONFIG_W1 is not set
-+CONFIG_POWER_SUPPLY=y
-+# CONFIG_POWER_SUPPLY_DEBUG is not set
-+# CONFIG_PDA_POWER is not set
-+# CONFIG_BATTERY_DS2760 is not set
-+# CONFIG_BATTERY_DS2782 is not set
-+# CONFIG_BATTERY_BQ27x00 is not set
-+# CONFIG_BATTERY_MAX17040 is not set
-+CONFIG_CHARGER_PCF50633=y
-+CONFIG_BATTERY_BQ27000_HDQ=y
-+CONFIG_HDQ_GPIO_BITBANG=y
-+# CONFIG_BATTERY_PLATFORM is not set
-+# CONFIG_HWMON is not set
-+# CONFIG_THERMAL is not set
-+CONFIG_WATCHDOG=y
-+CONFIG_WATCHDOG_NOWAYOUT=y
-+
-+#
-+# Watchdog Device Drivers
-+#
-+CONFIG_SOFT_WATCHDOG=y
-+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=y
-+# 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_WM831X is not set
-+# CONFIG_MFD_WM8350_I2C is not set
-+CONFIG_MFD_PCF50633=y
-+# CONFIG_MFD_MC13783 is not set
-+CONFIG_PCF50633_ADC=y
-+# CONFIG_AB3100_CORE is not set
-+# CONFIG_EZX_PCAP is not set
-+CONFIG_MFD_GLAMO=y
-+# CONFIG_MFD_GLAMO_FB is not set
-+CONFIG_MFD_GLAMO_GPIO=y
-+CONFIG_MFD_GLAMO_MCI=y
-+CONFIG_MFD_GLAMO_DRM=y
-+CONFIG_REGULATOR=y
-+# CONFIG_REGULATOR_DEBUG is not set
-+CONFIG_REGULATOR_FIXED_VOLTAGE=y
-+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-+# CONFIG_REGULATOR_BQ24022 is not set
-+# CONFIG_REGULATOR_MAX1586 is not set
-+CONFIG_REGULATOR_PCF50633=y
-+# CONFIG_REGULATOR_LP3971 is not set
-+# CONFIG_REGULATOR_TPS65023 is not set
-+# CONFIG_REGULATOR_TPS6507X is not set
-+# CONFIG_MEDIA_SUPPORT is not set
-+
-+#
-+# Graphics support
-+#
-+CONFIG_DRM=y
-+CONFIG_DRM_KMS_HELPER=y
-+# CONFIG_DRM_MGA is not set
-+# CONFIG_DRM_VIA is not set
-+# CONFIG_DRM_SAVAGE is not set
-+# CONFIG_VGASTATE is not set
-+CONFIG_VIDEO_OUTPUT_CONTROL=y
-+CONFIG_FB=y
-+# CONFIG_FIRMWARE_EDID is not set
-+# 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 is not set
-+# CONFIG_FB_TILEBLITTING is not set
-+
-+#
-+# Frame buffer hardware drivers
-+#
-+# CONFIG_FB_UVESA is not set
-+# CONFIG_FB_S1D13XXX is not set
-+# CONFIG_FB_TMIO is not set
-+# CONFIG_FB_S3C2410 is not set
-+# CONFIG_FB_VIRTUAL is not set
-+# CONFIG_FB_METRONOME is not set
-+# CONFIG_FB_MB862XX is not set
-+# CONFIG_FB_BROADSHEET is not set
-+CONFIG_BACKLIGHT_LCD_SUPPORT=y
-+CONFIG_LCD_CLASS_DEVICE=y
-+# CONFIG_LCD_LMS283GF05 is not set
-+# 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 is not set
-+CONFIG_LCD_JBT6K74=y
-+CONFIG_BACKLIGHT_CLASS_DEVICE=y
-+# CONFIG_BACKLIGHT_GENERIC is not set
-+CONFIG_BACKLIGHT_PWM=y
-+CONFIG_BACKLIGHT_PCF50633=y
-+
-+#
-+# Display device support
-+#
-+# CONFIG_DISPLAY_SUPPORT is not set
-+
-+#
-+# Console display driver support
-+#
-+# CONFIG_VGA_CONSOLE is not set
-+CONFIG_DUMMY_CONSOLE=y
-+CONFIG_FRAMEBUFFER_CONSOLE=y
-+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-+# CONFIG_FONTS is not set
-+CONFIG_FONT_8x8=y
-+CONFIG_FONT_8x16=y
-+# CONFIG_LOGO is not set
-+CONFIG_SOUND=y
-+CONFIG_SOUND_OSS_CORE=y
-+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-+CONFIG_SND=y
-+CONFIG_SND_TIMER=y
-+CONFIG_SND_PCM=y
-+CONFIG_SND_JACK=y
-+CONFIG_SND_SEQUENCER=y
-+CONFIG_SND_SEQ_DUMMY=y
-+CONFIG_SND_OSSEMUL=y
-+CONFIG_SND_MIXER_OSS=y
-+CONFIG_SND_PCM_OSS=y
-+CONFIG_SND_PCM_OSS_PLUGINS=y
-+CONFIG_SND_SEQUENCER_OSS=y
-+# CONFIG_SND_DYNAMIC_MINORS is not set
-+# CONFIG_SND_SUPPORT_OLD_API is not set
-+# CONFIG_SND_VERBOSE_PROCFS is not set
-+# CONFIG_SND_VERBOSE_PRINTK is not set
-+# CONFIG_SND_DEBUG is not set
-+# CONFIG_SND_RAWMIDI_SEQ is not set
-+# CONFIG_SND_OPL3_LIB_SEQ is not set
-+# CONFIG_SND_OPL4_LIB_SEQ is not set
-+# CONFIG_SND_SBAWE_SEQ is not set
-+# CONFIG_SND_EMU10K1_SEQ is not set
-+# CONFIG_SND_DRIVERS is not set
-+# CONFIG_SND_ARM is not set
-+# CONFIG_SND_SPI is not set
-+# CONFIG_SND_USB is not set
-+CONFIG_SND_SOC=y
-+CONFIG_SND_S3C24XX_SOC=y
-+CONFIG_SND_S3C24XX_SOC_I2S=y
-+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
-+# CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650 is not set
-+# CONFIG_SND_S3C24XX_SOC_S3C24XX_UDA134X is not set
-+# CONFIG_SND_S3C24XX_SOC_SIMTEC_TLV320AIC23 is not set
-+# CONFIG_SND_S3C24XX_SOC_SIMTEC_HERMES is not set
-+CONFIG_SND_SOC_I2C_AND_SPI=y
-+# CONFIG_SND_SOC_ALL_CODECS is not set
-+CONFIG_SND_SOC_WM8753=y
-+# CONFIG_SOUND_PRIME is not set
-+CONFIG_HID_SUPPORT=y
-+CONFIG_HID=y
-+# CONFIG_HIDRAW is not set
-+
-+#
-+# USB Input Devices
-+#
-+CONFIG_USB_HID=y
-+# CONFIG_HID_PID is not set
-+# CONFIG_USB_HIDDEV is not set
-+
-+#
-+# Special HID drivers
-+#
-+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_DRAGONRISE=y
-+# CONFIG_DRAGONRISE_FF is not set
-+CONFIG_HID_EZKEY=y
-+CONFIG_HID_KYE=y
-+CONFIG_HID_GYRATION=y
-+CONFIG_HID_TWINHAN=y
-+CONFIG_HID_KENSINGTON=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_HID_GREENASIA=y
-+# CONFIG_GREENASIA_FF is not set
-+CONFIG_HID_SMARTJOYPLUS=y
-+# CONFIG_SMARTJOYPLUS_FF is not set
-+CONFIG_HID_TOPSEED=y
-+CONFIG_HID_THRUSTMASTER=y
-+# CONFIG_THRUSTMASTER_FF is not set
-+CONFIG_HID_WACOM=y
-+CONFIG_HID_ZEROPLUS=y
-+# 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=y
-+
-+#
-+# Miscellaneous USB options
-+#
-+# CONFIG_USB_DEVICEFS is not set
-+# CONFIG_USB_DEVICE_CLASS is not set
-+# CONFIG_USB_DYNAMIC_MINORS is not set
-+CONFIG_USB_SUSPEND=y
-+# 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_ISP1760_HCD is not set
-+# CONFIG_USB_ISP1362_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=m
-+# CONFIG_USB_WDM is not set
-+CONFIG_USB_TMC=m
-+
-+#
-+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
-+#
-+
-+#
-+# also be needed; see USB_STORAGE Help for more info
-+#
-+CONFIG_USB_STORAGE=m
-+# CONFIG_USB_STORAGE_DEBUG is not set
-+CONFIG_USB_STORAGE_DATAFAB=m
-+CONFIG_USB_STORAGE_FREECOM=m
-+# CONFIG_USB_STORAGE_ISD200 is not set
-+CONFIG_USB_STORAGE_USBAT=m
-+CONFIG_USB_STORAGE_SDDR09=m
-+CONFIG_USB_STORAGE_SDDR55=m
-+CONFIG_USB_STORAGE_JUMPSHOT=m
-+CONFIG_USB_STORAGE_ALAUDA=m
-+# CONFIG_USB_STORAGE_ONETOUCH is not set
-+CONFIG_USB_STORAGE_KARMA=m
-+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-+# CONFIG_USB_LIBUSUAL is not set
-+
-+#
-+# 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=y
-+CONFIG_USB_SERIAL_GENERIC=y
-+CONFIG_USB_SERIAL_AIRCABLE=m
-+CONFIG_USB_SERIAL_ARK3116=m
-+CONFIG_USB_SERIAL_BELKIN=m
-+# CONFIG_USB_SERIAL_CH341 is not set
-+CONFIG_USB_SERIAL_WHITEHEAT=m
-+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-+# CONFIG_USB_SERIAL_CP210X is not set
-+CONFIG_USB_SERIAL_CYPRESS_M8=m
-+CONFIG_USB_SERIAL_EMPEG=m
-+CONFIG_USB_SERIAL_FTDI_SIO=m
-+CONFIG_USB_SERIAL_FUNSOFT=m
-+CONFIG_USB_SERIAL_VISOR=m
-+CONFIG_USB_SERIAL_IPAQ=m
-+CONFIG_USB_SERIAL_IR=m
-+CONFIG_USB_SERIAL_EDGEPORT=m
-+CONFIG_USB_SERIAL_EDGEPORT_TI=m
-+CONFIG_USB_SERIAL_GARMIN=m
-+CONFIG_USB_SERIAL_IPW=m
-+# CONFIG_USB_SERIAL_IUU is not set
-+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-+CONFIG_USB_SERIAL_KEYSPAN=m
-+CONFIG_USB_SERIAL_KLSI=m
-+CONFIG_USB_SERIAL_KOBIL_SCT=m
-+CONFIG_USB_SERIAL_MCT_U232=m
-+CONFIG_USB_SERIAL_MOS7720=m
-+CONFIG_USB_SERIAL_MOS7840=m
-+# CONFIG_USB_SERIAL_MOTOROLA is not set
-+CONFIG_USB_SERIAL_NAVMAN=m
-+CONFIG_USB_SERIAL_PL2303=m
-+# CONFIG_USB_SERIAL_OTI6858 is not set
-+# CONFIG_USB_SERIAL_QUALCOMM is not set
-+# CONFIG_USB_SERIAL_SPCP8X5 is not set
-+CONFIG_USB_SERIAL_HP4X=m
-+CONFIG_USB_SERIAL_SAFE=m
-+CONFIG_USB_SERIAL_SAFE_PADDED=y
-+# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
-+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-+# CONFIG_USB_SERIAL_SYMBOL is not set
-+CONFIG_USB_SERIAL_TI=m
-+CONFIG_USB_SERIAL_CYBERJACK=m
-+CONFIG_USB_SERIAL_XIRCOM=m
-+CONFIG_USB_SERIAL_OPTION=m
-+CONFIG_USB_SERIAL_OMNINET=m
-+# 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=m
-+# CONFIG_USB_LED is not set
-+# CONFIG_USB_CYPRESS_CY7C63 is not set
-+# CONFIG_USB_CYTHERM 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=m
-+CONFIG_USB_IOWARRIOR=m
-+# 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_FILES is not set
-+# CONFIG_USB_GADGET_DEBUG_FS is not set
-+CONFIG_USB_GADGET_VBUS_DRAW=500
-+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_R8A66597 is not set
-+# CONFIG_USB_GADGET_PXA27X is not set
-+# CONFIG_USB_GADGET_S3C_HSOTG is not set
-+# CONFIG_USB_GADGET_IMX is not set
-+CONFIG_USB_GADGET_S3C2410=y
-+CONFIG_USB_S3C2410=y
-+# CONFIG_USB_S3C2410_DEBUG 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_LANGWELL is not set
-+# CONFIG_USB_GADGET_DUMMY_HCD is not set
-+# CONFIG_USB_GADGET_DUALSPEED is not set
-+# CONFIG_USB_ZERO is not set
-+# CONFIG_USB_AUDIO is not set
-+CONFIG_USB_ETH=y
-+CONFIG_USB_ETH_RNDIS=y
-+# CONFIG_USB_ETH_EEM is not set
-+# CONFIG_USB_GADGETFS is not set
-+# CONFIG_USB_FILE_STORAGE is not set
-+# CONFIG_USB_G_SERIAL is not set
-+# CONFIG_USB_MIDI_GADGET is not set
-+# CONFIG_USB_G_PRINTER is not set
-+# CONFIG_USB_CDC_COMPOSITE is not set
-+
-+#
-+# OTG and related infrastructure
-+#
-+# CONFIG_USB_GPIO_VBUS is not set
-+# CONFIG_NOP_USB_XCEIV is not set
-+CONFIG_MMC=y
-+# CONFIG_MMC_DEBUG is not set
-+CONFIG_MMC_UNSAFE_RESUME=y
-+
-+#
-+# MMC/SD/SDIO Card Drivers
-+#
-+CONFIG_MMC_BLOCK=y
-+CONFIG_MMC_BLOCK_BOUNCE=y
-+# CONFIG_SDIO_UART is not set
-+# CONFIG_MMC_TEST is not set
-+
-+#
-+# MMC/SD/SDIO Host Controller Drivers
-+#
-+# CONFIG_MMC_SDHCI is not set
-+# CONFIG_MMC_AT91 is not set
-+# CONFIG_MMC_ATMELMCI is not set
-+# CONFIG_MMC_SPI is not set
-+CONFIG_MMC_S3C=y
-+# CONFIG_MMC_S3C_HW_SDIO_IRQ is not set
-+CONFIG_MMC_S3C_PIO=y
-+# CONFIG_MMC_S3C_DMA is not set
-+# CONFIG_MMC_S3C_PIODMA is not set
-+# CONFIG_MEMSTICK is not set
-+CONFIG_NEW_LEDS=y
-+CONFIG_LEDS_CLASS=y
-+
-+#
-+# LED drivers
-+#
-+# CONFIG_LEDS_S3C24XX is not set
-+# CONFIG_LEDS_PCA9532 is not set
-+CONFIG_LEDS_GPIO=y
-+CONFIG_LEDS_GPIO_PLATFORM=y
-+# CONFIG_LEDS_LP3944 is not set
-+# CONFIG_LEDS_PCA955X is not set
-+# CONFIG_LEDS_DAC124S085 is not set
-+# CONFIG_LEDS_PWM is not set
-+# CONFIG_LEDS_BD2802 is not set
-+
-+#
-+# LED Triggers
-+#
-+CONFIG_LEDS_TRIGGERS=y
-+CONFIG_LEDS_TRIGGER_TIMER=y
-+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
-+# CONFIG_LEDS_TRIGGER_GPIO is not set
-+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
-+
-+#
-+# iptables trigger is under Netfilter config (LED target)
-+#
-+# CONFIG_ACCESSIBILITY is not set
-+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 is not set
-+# 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
-+# CONFIG_RTC_DRV_RX8025 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
-+# CONFIG_RTC_DRV_PCF2123 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
-+CONFIG_RTC_DRV_PCF50633=y
-+
-+#
-+# on-CPU RTC drivers
-+#
-+CONFIG_RTC_DRV_S3C=y
-+# CONFIG_DMADEVICES is not set
-+# CONFIG_AUXDISPLAY is not set
-+# CONFIG_UIO is not set
-+
-+#
-+# TI VLYNQ
-+#
-+# CONFIG_STAGING is not set
-+CONFIG_AR6000_WLAN=y
-+# CONFIG_AR6000_WLAN_DEBUG is not set
-+# CONFIG_AR6000_WLAN_RESET is not set
-+
-+#
-+# File systems
-+#
-+CONFIG_EXT2_FS=y
-+# CONFIG_EXT2_FS_XATTR is not set
-+# CONFIG_EXT2_FS_XIP is not set
-+CONFIG_EXT3_FS=y
-+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
-+# CONFIG_EXT3_FS_XATTR is not set
-+# CONFIG_EXT4_FS is not set
-+CONFIG_JBD=y
-+# CONFIG_JBD_DEBUG is not set
-+CONFIG_REISERFS_FS=m
-+# CONFIG_REISERFS_CHECK is not set
-+# CONFIG_REISERFS_PROC_INFO is not set
-+# CONFIG_REISERFS_FS_XATTR is not set
-+# CONFIG_JFS_FS is not set
-+CONFIG_FS_POSIX_ACL=y
-+# CONFIG_XFS_FS is not set
-+# CONFIG_OCFS2_FS is not set
-+# CONFIG_BTRFS_FS is not set
-+# CONFIG_NILFS2_FS is not set
-+CONFIG_FILE_LOCKING=y
-+CONFIG_FSNOTIFY=y
-+# CONFIG_DNOTIFY is not set
-+CONFIG_INOTIFY=y
-+CONFIG_INOTIFY_USER=y
-+# CONFIG_QUOTA is not set
-+# CONFIG_AUTOFS_FS is not set
-+CONFIG_AUTOFS4_FS=m
-+CONFIG_FUSE_FS=m
-+CONFIG_CUSE=m
-+CONFIG_GENERIC_ACL=y
-+
-+#
-+# Caches
-+#
-+# CONFIG_FSCACHE is not set
-+
-+#
-+# CD-ROM/DVD Filesystems
-+#
-+CONFIG_ISO9660_FS=m
-+CONFIG_JOLIET=y
-+# CONFIG_ZISOFS is not set
-+CONFIG_UDF_FS=m
-+CONFIG_UDF_NLS=y
-+
-+#
-+# DOS/FAT/NT Filesystems
-+#
-+CONFIG_FAT_FS=m
-+# CONFIG_MSDOS_FS is not set
-+CONFIG_VFAT_FS=m
-+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_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=y
-+# 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_UBIFS_FS=y
-+CONFIG_UBIFS_FS_XATTR=y
-+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-+CONFIG_UBIFS_FS_LZO=y
-+CONFIG_UBIFS_FS_ZLIB=y
-+CONFIG_UBIFS_FS_DEBUG=y
-+CONFIG_UBIFS_FS_DEBUG_MSG_LVL=0
-+CONFIG_UBIFS_FS_DEBUG_CHKS=y
-+# CONFIG_CRAMFS is not set
-+CONFIG_SQUASHFS=m
-+# CONFIG_SQUASHFS_EMBEDDED is not set
-+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-+# 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 is not set
-+# CONFIG_SYSV_FS is not set
-+# CONFIG_UFS_FS is not set
-+CONFIG_NETWORK_FILESYSTEMS=y
-+CONFIG_NFS_FS=m
-+CONFIG_NFS_V3=y
-+CONFIG_NFS_V3_ACL=y
-+CONFIG_NFS_V4=y
-+# CONFIG_NFS_V4_1 is not set
-+CONFIG_NFSD=m
-+CONFIG_NFSD_V2_ACL=y
-+CONFIG_NFSD_V3=y
-+CONFIG_NFSD_V3_ACL=y
-+CONFIG_NFSD_V4=y
-+CONFIG_LOCKD=m
-+CONFIG_LOCKD_V4=y
-+CONFIG_EXPORTFS=m
-+CONFIG_NFS_ACL_SUPPORT=m
-+CONFIG_NFS_COMMON=y
-+CONFIG_SUNRPC=m
-+CONFIG_SUNRPC_GSS=m
-+CONFIG_RPCSEC_GSS_KRB5=m
-+# CONFIG_RPCSEC_GSS_SPKM3 is not set
-+# CONFIG_SMB_FS is not set
-+CONFIG_CIFS=m
-+# CONFIG_CIFS_STATS is not set
-+# CONFIG_CIFS_WEAK_PW_HASH is not set
-+# CONFIG_CIFS_XATTR is not set
-+# CONFIG_CIFS_DEBUG2 is not set
-+# CONFIG_CIFS_EXPERIMENTAL 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 is not set
-+# CONFIG_MINIX_SUBPARTITION is not set
-+# CONFIG_SOLARIS_X86_PARTITION is not set
-+# CONFIG_UNIXWARE_DISKLABEL is not set
-+# CONFIG_LDM_PARTITION 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 is not set
-+# CONFIG_SYSV68_PARTITION is not set
-+CONFIG_NLS=y
-+CONFIG_NLS_DEFAULT="iso8859-1"
-+CONFIG_NLS_CODEPAGE_437=y
-+# CONFIG_NLS_CODEPAGE_737 is not set
-+# CONFIG_NLS_CODEPAGE_775 is not set
-+CONFIG_NLS_CODEPAGE_850=m
-+# CONFIG_NLS_CODEPAGE_852 is not set
-+# CONFIG_NLS_CODEPAGE_855 is not set
-+# CONFIG_NLS_CODEPAGE_857 is not set
-+# CONFIG_NLS_CODEPAGE_860 is not set
-+# CONFIG_NLS_CODEPAGE_861 is not set
-+# CONFIG_NLS_CODEPAGE_862 is not set
-+# CONFIG_NLS_CODEPAGE_863 is not set
-+# CONFIG_NLS_CODEPAGE_864 is not set
-+# CONFIG_NLS_CODEPAGE_865 is not set
-+CONFIG_NLS_CODEPAGE_866=m
-+# CONFIG_NLS_CODEPAGE_869 is not set
-+CONFIG_NLS_CODEPAGE_936=m
-+CONFIG_NLS_CODEPAGE_950=m
-+# CONFIG_NLS_CODEPAGE_932 is not set
-+# CONFIG_NLS_CODEPAGE_949 is not set
-+# CONFIG_NLS_CODEPAGE_874 is not set
-+# CONFIG_NLS_ISO8859_8 is not set
-+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 is not set
-+# CONFIG_NLS_ISO8859_4 is not set
-+# CONFIG_NLS_ISO8859_5 is not set
-+# CONFIG_NLS_ISO8859_6 is not set
-+# CONFIG_NLS_ISO8859_7 is not set
-+# CONFIG_NLS_ISO8859_9 is not set
-+# CONFIG_NLS_ISO8859_13 is not set
-+# CONFIG_NLS_ISO8859_14 is not set
-+# CONFIG_NLS_ISO8859_15 is not set
-+# CONFIG_NLS_KOI8_R is not set
-+# CONFIG_NLS_KOI8_U is not set
-+CONFIG_NLS_UTF8=m
-+# CONFIG_DLM is not set
-+
-+#
-+# Kernel hacking
-+#
-+CONFIG_PRINTK_TIME=y
-+# 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_STRIP_ASM_SYMS=y
-+# CONFIG_UNUSED_SYMBOLS is not set
-+CONFIG_DEBUG_FS=y
-+# CONFIG_HEADERS_CHECK is not set
-+# CONFIG_DEBUG_KERNEL is not set
-+CONFIG_DEBUG_BUGVERBOSE=y
-+CONFIG_DEBUG_MEMORY_INIT=y
-+CONFIG_FRAME_POINTER=y
-+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-+# CONFIG_LATENCYTOP is not set
-+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
-+CONFIG_HAVE_FUNCTION_TRACER=y
-+CONFIG_TRACING_SUPPORT=y
-+# CONFIG_FTRACE is not set
-+# CONFIG_DYNAMIC_DEBUG is not set
-+# CONFIG_SAMPLES is not set
-+CONFIG_HAVE_ARCH_KGDB=y
-+# CONFIG_ARM_UNWIND is not set
-+# CONFIG_DEBUG_USER is not set
-+CONFIG_DEBUG_S3C_UART=2
-+
-+#
-+# Security options
-+#
-+# CONFIG_KEYS is not set
-+# CONFIG_SECURITY is not set
-+# CONFIG_SECURITYFS is not set
-+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-+CONFIG_CRYPTO=y
-+
-+#
-+# Crypto core or helper
-+#
-+CONFIG_CRYPTO_ALGAPI=y
-+CONFIG_CRYPTO_ALGAPI2=y
-+CONFIG_CRYPTO_AEAD=m
-+CONFIG_CRYPTO_AEAD2=y
-+CONFIG_CRYPTO_BLKCIPHER=m
-+CONFIG_CRYPTO_BLKCIPHER2=y
-+CONFIG_CRYPTO_HASH=y
-+CONFIG_CRYPTO_HASH2=y
-+CONFIG_CRYPTO_RNG2=y
-+CONFIG_CRYPTO_PCOMP=y
-+CONFIG_CRYPTO_MANAGER=m
-+CONFIG_CRYPTO_MANAGER2=y
-+CONFIG_CRYPTO_GF128MUL=m
-+CONFIG_CRYPTO_NULL=m
-+CONFIG_CRYPTO_WORKQUEUE=y
-+# CONFIG_CRYPTO_CRYPTD is not set
-+CONFIG_CRYPTO_AUTHENC=m
-+CONFIG_CRYPTO_TEST=m
-+
-+#
-+# Authenticated Encryption with Associated Data
-+#
-+# CONFIG_CRYPTO_CCM is not set
-+# CONFIG_CRYPTO_GCM is not set
-+# CONFIG_CRYPTO_SEQIV is not set
-+
-+#
-+# Block modes
-+#
-+CONFIG_CRYPTO_CBC=m
-+# CONFIG_CRYPTO_CTR is not set
-+# CONFIG_CRYPTO_CTS is not set
-+CONFIG_CRYPTO_ECB=m
-+CONFIG_CRYPTO_LRW=m
-+CONFIG_CRYPTO_PCBC=m
-+# CONFIG_CRYPTO_XTS is not set
-+
-+#
-+# Hash modes
-+#
-+CONFIG_CRYPTO_HMAC=m
-+CONFIG_CRYPTO_XCBC=m
-+# CONFIG_CRYPTO_VMAC is not set
-+
-+#
-+# Digest
-+#
-+CONFIG_CRYPTO_CRC32C=m
-+# CONFIG_CRYPTO_GHASH is not set
-+CONFIG_CRYPTO_MD4=m
-+CONFIG_CRYPTO_MD5=y
-+CONFIG_CRYPTO_MICHAEL_MIC=m
-+# CONFIG_CRYPTO_RMD128 is not set
-+# CONFIG_CRYPTO_RMD160 is not set
-+# CONFIG_CRYPTO_RMD256 is not set
-+# CONFIG_CRYPTO_RMD320 is not set
-+CONFIG_CRYPTO_SHA1=m
-+CONFIG_CRYPTO_SHA256=m
-+CONFIG_CRYPTO_SHA512=m
-+CONFIG_CRYPTO_TGR192=m
-+CONFIG_CRYPTO_WP512=m
-+
-+#
-+# Ciphers
-+#
-+# CONFIG_CRYPTO_AES is not set
-+CONFIG_CRYPTO_ANUBIS=m
-+CONFIG_CRYPTO_ARC4=m
-+CONFIG_CRYPTO_BLOWFISH=m
-+CONFIG_CRYPTO_CAMELLIA=m
-+CONFIG_CRYPTO_CAST5=m
-+CONFIG_CRYPTO_CAST6=m
-+CONFIG_CRYPTO_DES=m
-+CONFIG_CRYPTO_FCRYPT=m
-+CONFIG_CRYPTO_KHAZAD=m
-+# CONFIG_CRYPTO_SALSA20 is not set
-+# CONFIG_CRYPTO_SEED is not set
-+CONFIG_CRYPTO_SERPENT=m
-+CONFIG_CRYPTO_TEA=m
-+CONFIG_CRYPTO_TWOFISH=m
-+CONFIG_CRYPTO_TWOFISH_COMMON=m
-+
-+#
-+# Compression
-+#
-+CONFIG_CRYPTO_DEFLATE=y
-+CONFIG_CRYPTO_ZLIB=y
-+CONFIG_CRYPTO_LZO=y
-+
-+#
-+# Random Number Generation
-+#
-+# CONFIG_CRYPTO_ANSI_CPRNG is not set
-+# CONFIG_CRYPTO_HW is not set
-+# CONFIG_BINARY_PRINTF is not set
-+
-+#
-+# Library routines
-+#
-+CONFIG_BITREVERSE=y
-+CONFIG_GENERIC_FIND_LAST_BIT=y
-+CONFIG_CRC_CCITT=y
-+CONFIG_CRC16=y
-+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=y
-+CONFIG_LZO_DECOMPRESS=y
-+CONFIG_DECOMPRESS_GZIP=y
-+CONFIG_DECOMPRESS_BZIP2=y
-+CONFIG_DECOMPRESS_LZMA=y
-+CONFIG_TEXTSEARCH=y
-+CONFIG_TEXTSEARCH_KMP=m
-+CONFIG_TEXTSEARCH_BM=m
-+CONFIG_TEXTSEARCH_FSM=m
-+CONFIG_HAS_IOMEM=y
-+CONFIG_HAS_DMA=y
-+CONFIG_NLATTR=y
---
-1.7.0.4
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0023-Re-enable-Glamo-fence-IRQ-if-it-sticks.patch b/recipes/linux/linux-openmoko-2.6.32/0023-Re-enable-Glamo-fence-IRQ-if-it-sticks.patch
deleted file mode 100644
index a24350f8c6..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0023-Re-enable-Glamo-fence-IRQ-if-it-sticks.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 348d0334015689a22c9dbd8dd0291360c960a764 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Tue, 13 Apr 2010 22:18:41 +0200
-Subject: [PATCH 23/24] Re-enable Glamo fence IRQ if it sticks
-
-Also fix a formatting typo.
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-fence.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-fence.c b/drivers/mfd/glamo/glamo-fence.c
-index 9119675..ba3ed88 100644
---- a/drivers/mfd/glamo/glamo-fence.c
-+++ b/drivers/mfd/glamo/glamo-fence.c
-@@ -98,7 +98,7 @@ static void glamo_fence_emit(struct glamo_fence *fence)
-
- static void glamo_fence_enable(struct glamodrm_handle *gdrm)
- {
-- enable_irq( GLAMO_IRQ_2D);
-+ enable_irq(GLAMO_IRQ_2D);
- }
-
-
-@@ -168,6 +168,7 @@ static void glamo_fence_debodge(struct glamodrm_handle *gdrm)
-
- glamo_cmdq_wait(gdrm, GLAMO_ENGINE_ALL);
- glamo_engine_reset(gdrm->glamo_core, GLAMO_ENGINE_2D);
-+ glamo_fence_enable(gdrm);
-
- read_lock(&gdrm->fence_list_lock);
- list_for_each(tmp, &gdrm->fence_list) {
---
-1.7.0.4
-
diff --git a/recipes/linux/linux-openmoko-2.6.32/0024-Fix-KMS-framebuffer-physical-address.patch b/recipes/linux/linux-openmoko-2.6.32/0024-Fix-KMS-framebuffer-physical-address.patch
deleted file mode 100644
index 3ce4d59042..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0024-Fix-KMS-framebuffer-physical-address.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 1b83b6d7f2e1bf5473cd17a742737a1cfe450509 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Fri, 20 Nov 2009 22:06:30 +0100
-Subject: [PATCH 24/24] Fix KMS framebuffer physical address
-
-This allows "/dev/fb0" to work correctly with mmap().
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- drivers/mfd/glamo/glamo-kms-fb.c | 5 ++---
- 1 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-kms-fb.c b/drivers/mfd/glamo/glamo-kms-fb.c
-index 6d4b9ea..04de83b 100644
---- a/drivers/mfd/glamo/glamo-kms-fb.c
-+++ b/drivers/mfd/glamo/glamo-kms-fb.c
-@@ -387,9 +387,6 @@ int glamofb_create(struct drm_device *dev, uint32_t fb_width,
- info->fbops = &glamofb_ops;
-
- info->fix.line_length = fb->pitch;
-- info->fix.smem_start = dev->mode_config.fb_base
-- + (unsigned long) gdrm->vram->start;
-- info->fix.smem_len = size;
-
- info->flags = FBINFO_DEFAULT;
-
-@@ -401,6 +398,8 @@ int glamofb_create(struct drm_device *dev, uint32_t fb_width,
- ret = -ENOSPC;
- goto out_unref;
- }
-+ info->fix.smem_start = (unsigned long)gdrm->vram->start + offs;
-+ info->fix.smem_len = size;
- info->screen_size = size;
-
- info->pseudo_palette = fb->pseudo_palette;
---
-1.7.0.4
-