aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-handheld-4.0/poodle
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-handheld-4.0/poodle')
-rw-r--r--recipes-kernel/linux/linux-handheld-4.0/poodle/0001-ARM-pxa-add-gpio-charger-configuration-on-poodle.patch59
-rw-r--r--recipes-kernel/linux/linux-handheld-4.0/poodle/0002-ARM-pxa-poodle-add-gpio-keys-configuration.patch76
-rw-r--r--recipes-kernel/linux/linux-handheld-4.0/poodle/0003-ARM-pxa-declare-battery-device-on-poodle.patch39
-rw-r--r--recipes-kernel/linux/linux-handheld-4.0/poodle/0004-power-add-poodle-battery-driver.patch307
-rw-r--r--recipes-kernel/linux/linux-handheld-4.0/poodle/defconfig375
5 files changed, 856 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-handheld-4.0/poodle/0001-ARM-pxa-add-gpio-charger-configuration-on-poodle.patch b/recipes-kernel/linux/linux-handheld-4.0/poodle/0001-ARM-pxa-add-gpio-charger-configuration-on-poodle.patch
new file mode 100644
index 0000000..0733967
--- /dev/null
+++ b/recipes-kernel/linux/linux-handheld-4.0/poodle/0001-ARM-pxa-add-gpio-charger-configuration-on-poodle.patch
@@ -0,0 +1,59 @@
+From 326abbbaca8943824dd72a8db3e9ed907a7fca5f Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Tue, 2 Dec 2014 20:20:40 +0300
+Subject: [PATCH 01/04] ARM: pxa: add gpio-charger configuration on poodle
+
+Add declration of gpio-charger device for Sharp SL-5600 poodle device.
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+---
+ arch/arm/mach-pxa/poodle.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
+index 6002112..4dd29a7 100644
+--- a/arch/arm/mach-pxa/poodle.c
++++ b/arch/arm/mach-pxa/poodle.c
+@@ -31,6 +31,7 @@
+ #include <linux/spi/ads7846.h>
+ #include <linux/spi/pxa2xx_spi.h>
+ #include <linux/mtd/sharpsl.h>
++#include <linux/power/gpio-charger.h>
+ #include <linux/memblock.h>
+ #include <linux/iio/machine.h>
+ #include <linux/mfd/locomo.h>
+@@ -413,12 +414,31 @@ static struct platform_device sharpsl_rom_device = {
+ .dev.platform_data = &sharpsl_rom_data,
+ };
+
++static char *poodle_ac_supplied_to[] = {
++ "main-battery",
++};
++
++static struct gpio_charger_platform_data poodle_power_data = {
++ .name = "charger",
++ .type = POWER_SUPPLY_TYPE_MAINS,
++ .gpio = POODLE_GPIO_AC_IN,
++ .supplied_to = poodle_ac_supplied_to,
++ .num_supplicants = ARRAY_SIZE(poodle_ac_supplied_to),
++};
++
++static struct platform_device poodle_power_device = {
++ .name = "gpio-charger",
++ .id = -1,
++ .dev.platform_data = &poodle_power_data,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &poodle_locomo_device,
+ &poodle_scoop_device,
+ &poodle_audio_device,
+ &sharpsl_nand_device,
+ &sharpsl_rom_device,
++ &poodle_power_device,
+ };
+
+ static struct i2c_board_info __initdata poodle_i2c_devices[] = {
+--
+1.9.1
+
diff --git a/recipes-kernel/linux/linux-handheld-4.0/poodle/0002-ARM-pxa-poodle-add-gpio-keys-configuration.patch b/recipes-kernel/linux/linux-handheld-4.0/poodle/0002-ARM-pxa-poodle-add-gpio-keys-configuration.patch
new file mode 100644
index 0000000..6d67268
--- /dev/null
+++ b/recipes-kernel/linux/linux-handheld-4.0/poodle/0002-ARM-pxa-poodle-add-gpio-keys-configuration.patch
@@ -0,0 +1,76 @@
+From 0939a5b7a9711457895655467dfb6f0fe6933834 Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Wed, 24 Dec 2014 01:42:55 +0300
+Subject: [PATCH 02/04] ARM: pxa: poodle: add gpio-keys configuration
+
+Support setting wakeup sources through the two gpio keys - On button and
+'Sync' key present on cradle.
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+---
+ arch/arm/mach-pxa/poodle.c | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
+index 4dd29a7..596e756 100644
+--- a/arch/arm/mach-pxa/poodle.c
++++ b/arch/arm/mach-pxa/poodle.c
+@@ -35,6 +35,8 @@
+ #include <linux/memblock.h>
+ #include <linux/iio/machine.h>
+ #include <linux/mfd/locomo.h>
++#include <linux/gpio_keys.h>
++#include <linux/input.h>
+
+ #include <mach/hardware.h>
+ #include <asm/mach-types.h>
+@@ -161,6 +163,38 @@ static struct scoop_pcmcia_config poodle_pcmcia_config = {
+
+ EXPORT_SYMBOL(poodle_scoop_device);
+
++static struct gpio_keys_button poodle_gpio_keys[] = {
++ {
++ .type = EV_PWR,
++ .code = KEY_RESERVED,
++ .gpio = POODLE_GPIO_ON_KEY,
++ .desc = "On key",
++ .wakeup = 1,
++ .active_low = 1,
++ },
++ {
++ .type = EV_PWR,
++ .code = KEY_WAKEUP,
++ .gpio = POODLE_GPIO_WAKEUP,
++ .desc = "Sync",
++ .wakeup = 1,
++ .active_low = 1,
++ },
++};
++
++static struct gpio_keys_platform_data poodle_gpio_keys_data = {
++ .buttons = poodle_gpio_keys,
++ .nbuttons = ARRAY_SIZE(poodle_gpio_keys),
++};
++
++static struct platform_device poodle_gpio_keys_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &poodle_gpio_keys_data,
++ },
++};
++
+
+ static struct platform_device poodle_audio_device = {
+ .name = "poodle-audio",
+@@ -436,6 +470,7 @@ static struct platform_device *devices[] __initdata = {
+ &poodle_locomo_device,
+ &poodle_scoop_device,
+ &poodle_audio_device,
++ &poodle_gpio_keys_device,
+ &sharpsl_nand_device,
+ &sharpsl_rom_device,
+ &poodle_power_device,
+--
+1.9.1
+
diff --git a/recipes-kernel/linux/linux-handheld-4.0/poodle/0003-ARM-pxa-declare-battery-device-on-poodle.patch b/recipes-kernel/linux/linux-handheld-4.0/poodle/0003-ARM-pxa-declare-battery-device-on-poodle.patch
new file mode 100644
index 0000000..f75c72c
--- /dev/null
+++ b/recipes-kernel/linux/linux-handheld-4.0/poodle/0003-ARM-pxa-declare-battery-device-on-poodle.patch
@@ -0,0 +1,39 @@
+From 334353f837455e036445880d106415d3d4432b01 Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Tue, 2 Dec 2014 20:34:50 +0300
+Subject: [PATCH 03/04] ARM: pxa: declare battery device on poodle
+
+Declare a battery platform device for SL-5600 (poodle) platform.
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+---
+ arch/arm/mach-pxa/poodle.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
+index 596e756..90d679a 100644
+--- a/arch/arm/mach-pxa/poodle.c
++++ b/arch/arm/mach-pxa/poodle.c
+@@ -466,6 +466,11 @@ static struct platform_device poodle_power_device = {
+ .dev.platform_data = &poodle_power_data,
+ };
+
++static struct platform_device poodle_battery_device = {
++ .name = "poodle-battery",
++ .id = -1,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &poodle_locomo_device,
+ &poodle_scoop_device,
+@@ -474,6 +479,7 @@ static struct platform_device *devices[] __initdata = {
+ &sharpsl_nand_device,
+ &sharpsl_rom_device,
+ &poodle_power_device,
++ &poodle_battery_device,
+ };
+
+ static struct i2c_board_info __initdata poodle_i2c_devices[] = {
+--
+1.9.1
+
diff --git a/recipes-kernel/linux/linux-handheld-4.0/poodle/0004-power-add-poodle-battery-driver.patch b/recipes-kernel/linux/linux-handheld-4.0/poodle/0004-power-add-poodle-battery-driver.patch
new file mode 100644
index 0000000..1268dc8
--- /dev/null
+++ b/recipes-kernel/linux/linux-handheld-4.0/poodle/0004-power-add-poodle-battery-driver.patch
@@ -0,0 +1,307 @@
+From da5b9945a361dd6dfc060cbca45fffff6889d992 Mon Sep 17 00:00:00 2001
+From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Date: Wed, 3 Dec 2014 02:56:33 +0300
+Subject: [PATCH 04/04] power: add poodle battery driver
+
+Add a driver supporting battery charging on Sharp SL-5600 (poodle).
+Voltage and temperature readings are provided through add7846 hwmon
+interface. Battery voltage is in1_input (mV) and temp in in0_input
+(values unknown, but should be less than 2441).
+
+Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+---
+ drivers/power/Kconfig | 7 ++
+ drivers/power/Makefile | 1 +
+ drivers/power/poodle_battery.c | 250 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 258 insertions(+)
+ create mode 100644 drivers/power/poodle_battery.c
+
+diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
+index 27b751b..678f23e 100644
+--- a/drivers/power/Kconfig
++++ b/drivers/power/Kconfig
+@@ -137,6 +137,13 @@ config BATTERY_COLLIE
+ Say Y to enable support for the battery on the Sharp Zaurus
+ SL-5500 (collie) models.
+
++config BATTERY_POODLE
++ tristate "Sharp SL-5600 (poodle) battery"
++ depends on MACH_POODLE
++ help
++ Say Y to enable support for the battery on the Sharp Zaurus
++ SL-5600 (poodle) models.
++
+ config BATTERY_IPAQ_MICRO
+ tristate "iPAQ Atmel Micro ASIC battery driver"
+ depends on MFD_IPAQ_MICRO
+diff --git a/drivers/power/Makefile b/drivers/power/Makefile
+index 36f9e0d..ff3e793 100644
+--- a/drivers/power/Makefile
++++ b/drivers/power/Makefile
+@@ -26,6 +26,7 @@ obj-$(CONFIG_BATTERY_PMU) += pmu_battery.o
+ obj-$(CONFIG_BATTERY_OLPC) += olpc_battery.o
+ obj-$(CONFIG_BATTERY_TOSA) += tosa_battery.o
+ obj-$(CONFIG_BATTERY_COLLIE) += collie_battery.o
++obj-$(CONFIG_BATTERY_POODLE) += poodle_battery.o
+ obj-$(CONFIG_BATTERY_IPAQ_MICRO) += ipaq_micro_battery.o
+ obj-$(CONFIG_BATTERY_WM97XX) += wm97xx_battery.o
+ obj-$(CONFIG_BATTERY_SBS) += sbs-battery.o
+diff --git a/drivers/power/poodle_battery.c b/drivers/power/poodle_battery.c
+new file mode 100644
+index 0000000..ad96e13
+--- /dev/null
++++ b/drivers/power/poodle_battery.c
+@@ -0,0 +1,250 @@
++/*
++ * Battery handler for Sharp SL-5600 Poodle device
++ *
++ * Copyright (c) 2014 Dmitry Eremin-Solenikov
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++#include <linux/delay.h>
++#include <linux/gpio.h>
++#include <linux/interrupt.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/power_supply.h>
++
++#include <mach/poodle.h>
++
++struct poodle_bat {
++ int status;
++ struct power_supply psy;
++
++ struct mutex work_lock; /* protects data */
++
++ bool (*is_present)(struct poodle_bat *bat);
++ int technology;
++};
++
++static DEFINE_MUTEX(bat_lock); /* protects gpio pins */
++static struct work_struct bat_work;
++
++static struct poodle_bat poodle_bat_main;
++
++static int poodle_bat_get_property(struct power_supply *psy,
++ enum power_supply_property psp,
++ union power_supply_propval *val)
++{
++ int ret = 0;
++ struct poodle_bat *bat = container_of(psy, struct poodle_bat, psy);
++
++ if (bat->is_present && !bat->is_present(bat)
++ && psp != POWER_SUPPLY_PROP_PRESENT) {
++ return -ENODEV;
++ }
++
++ switch (psp) {
++ case POWER_SUPPLY_PROP_STATUS:
++ val->intval = bat->status;
++ break;
++ case POWER_SUPPLY_PROP_TECHNOLOGY:
++ val->intval = bat->technology;
++ break;
++ case POWER_SUPPLY_PROP_PRESENT:
++ val->intval = bat->is_present ? bat->is_present(bat) : 1;
++ break;
++ default:
++ ret = -EINVAL;
++ break;
++ }
++ return ret;
++}
++
++static bool poodle_bat_is_present(struct poodle_bat *bat)
++{
++ return gpio_get_value(POODLE_GPIO_BAT_COVER);
++}
++
++static void poodle_bat_external_power_changed(struct power_supply *psy)
++{
++ schedule_work(&bat_work);
++}
++
++static irqreturn_t poodle_bat_gpio_isr(int irq, void *data)
++{
++ pr_info("poodle_bat_gpio irq\n");
++ schedule_work(&bat_work);
++ return IRQ_HANDLED;
++}
++
++static void poodle_bat_update(struct poodle_bat *bat)
++{
++ int old;
++ struct power_supply *psy = &bat->psy;
++
++ mutex_lock(&bat->work_lock);
++
++ old = bat->status;
++
++ if (bat->is_present && !bat->is_present(bat)) {
++ pr_info("%s not present\n", psy->name);
++ bat->status = POWER_SUPPLY_STATUS_UNKNOWN;
++ gpio_set_value(POODLE_GPIO_JK_B, 0);
++ gpio_set_value(POODLE_GPIO_CHRG_ON, 0);
++ } else if (power_supply_am_i_supplied(psy)) {
++ gpio_set_value(POODLE_GPIO_JK_B, 1);
++ if (bat->status == POWER_SUPPLY_STATUS_DISCHARGING) {
++ gpio_set_value(POODLE_GPIO_CHRG_ON, 1);
++ msleep(20);
++ }
++
++ if (gpio_get_value(POODLE_GPIO_CHRG_FULL)) {
++ gpio_set_value(POODLE_GPIO_CHRG_ON, 0);
++ bat->status = POWER_SUPPLY_STATUS_FULL;
++ } else {
++ gpio_set_value(POODLE_GPIO_CHRG_ON, 1);
++ bat->status = POWER_SUPPLY_STATUS_CHARGING;
++ }
++ } else {
++ gpio_set_value(POODLE_GPIO_JK_B, 0);
++ gpio_set_value(POODLE_GPIO_CHRG_ON, 0);
++ bat->status = POWER_SUPPLY_STATUS_DISCHARGING;
++ }
++
++ if (old != bat->status)
++ power_supply_changed(psy);
++
++ mutex_unlock(&bat->work_lock);
++}
++
++static void poodle_bat_work(struct work_struct *work)
++{
++ poodle_bat_update(&poodle_bat_main);
++}
++
++static enum power_supply_property poodle_bat_main_props[] = {
++ POWER_SUPPLY_PROP_STATUS,
++ POWER_SUPPLY_PROP_TECHNOLOGY,
++ POWER_SUPPLY_PROP_PRESENT,
++};
++
++static struct poodle_bat poodle_bat_main = {
++ .status = POWER_SUPPLY_STATUS_DISCHARGING,
++ .psy = {
++ .name = "main-battery",
++ .type = POWER_SUPPLY_TYPE_BATTERY,
++ .properties = poodle_bat_main_props,
++ .num_properties = ARRAY_SIZE(poodle_bat_main_props),
++ .get_property = poodle_bat_get_property,
++ .external_power_changed = poodle_bat_external_power_changed,
++ .use_for_apm = 1,
++ },
++
++ .is_present = poodle_bat_is_present,
++
++ .technology = POWER_SUPPLY_TECHNOLOGY_LIPO,
++};
++
++static struct gpio poodle_batt_gpios[] = {
++ { POODLE_GPIO_BAT_COVER, GPIOF_IN, "main battery cover" },
++ { POODLE_GPIO_CHRG_FULL, GPIOF_IN, "main battery full" },
++ { POODLE_GPIO_JK_B, GPIOF_OUT_INIT_LOW, "main charge on" },
++ { POODLE_GPIO_CHRG_ON, GPIOF_OUT_INIT_LOW, "main charge on" },
++ { POODLE_GPIO_BYPASS_ON, GPIOF_OUT_INIT_LOW, "main charge bypass" },
++ /* on for now */
++ { POODLE_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_HIGH, "main battery temp" },
++};
++
++#ifdef CONFIG_PM
++static int poodle_battery_suspend(struct device *dev)
++{
++ /* flush all pending status updates */
++ flush_work(&bat_work);
++ return 0;
++}
++
++static int poodle_battery_resume(struct device *dev)
++{
++ /* things may have changed while we were away */
++ schedule_work(&bat_work);
++ return 0;
++}
++
++static SIMPLE_DEV_PM_OPS(poodle_battery_pm,
++ poodle_battery_suspend,
++ poodle_battery_resume);
++
++#define POODLE_BATTERY_PM (&poodle_battery_pm)
++
++#else
++#define POODLE_BATTERY_PM NULL
++#endif
++
++static int poodle_battery_probe(struct platform_device *dev)
++{
++ int ret;
++
++ ret = gpio_request_array(poodle_batt_gpios,
++ ARRAY_SIZE(poodle_batt_gpios));
++ if (ret)
++ return ret;
++
++ mutex_init(&poodle_bat_main.work_lock);
++
++ INIT_WORK(&bat_work, poodle_bat_work);
++
++ ret = power_supply_register(&dev->dev, &poodle_bat_main.psy);
++ if (ret)
++ goto err_psy_reg_main;
++
++ ret = devm_request_irq(&dev->dev, gpio_to_irq(POODLE_GPIO_CHRG_FULL),
++ poodle_bat_gpio_isr,
++ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
++ "main full", NULL);
++ if (ret)
++ goto err_psy_irq;
++
++ ret = devm_request_irq(&dev->dev, gpio_to_irq(POODLE_GPIO_BAT_COVER),
++ poodle_bat_gpio_isr,
++ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
++ "battery cover", NULL);
++ if (ret)
++ goto err_psy_irq;
++
++ return 0;
++
++err_psy_irq:
++ power_supply_unregister(&poodle_bat_main.psy);
++
++ cancel_work_sync(&bat_work);
++err_psy_reg_main:
++ gpio_free_array(poodle_batt_gpios, ARRAY_SIZE(poodle_batt_gpios));
++
++ return ret;
++}
++
++static int poodle_battery_remove(struct platform_device *dev)
++{
++ power_supply_unregister(&poodle_bat_main.psy);
++
++ cancel_work_sync(&bat_work);
++
++ gpio_free_array(poodle_batt_gpios, ARRAY_SIZE(poodle_batt_gpios));
++
++ return 0;
++}
++
++static struct platform_driver poodle_battery_driver = {
++ .driver.name = "poodle-battery",
++ .probe = poodle_battery_probe,
++ .remove = poodle_battery_remove,
++ .driver.pm = POODLE_BATTERY_PM,
++};
++
++module_platform_driver(poodle_battery_driver);
++
++MODULE_LICENSE("GPL v2");
++MODULE_AUTHOR("Dmitry Eremin-Solenikov");
++MODULE_DESCRIPTION("Poodle battery driver");
++MODULE_ALIAS("platform:poodle-battery");
+--
+1.9.1
+
diff --git a/recipes-kernel/linux/linux-handheld-4.0/poodle/defconfig b/recipes-kernel/linux/linux-handheld-4.0/poodle/defconfig
new file mode 100644
index 0000000..3e48411
--- /dev/null
+++ b/recipes-kernel/linux/linux-handheld-4.0/poodle/defconfig
@@ -0,0 +1,375 @@
+CONFIG_LOCALVERSION="-yocto-standard"
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_KERNEL_LZMA=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_FHANDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_DEBUG=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_KMEM=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+CONFIG_NAMESPACES=y
+CONFIG_USER_NS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_PERF_EVENTS=y
+CONFIG_SLAB=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_EFI_PARTITION is not set
+CONFIG_ARCH_PXA=y
+CONFIG_PXA_SHARPSL=y
+CONFIG_MACH_POODLE=y
+CONFIG_PCCARD=y
+CONFIG_PCMCIA_PXA2XX=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 fbcon=rotate:1 loglevel=3"
+CONFIG_KEXEC=y
+CONFIG_BINFMT_MISC=m
+CONFIG_APM_EMULATION=y
+CONFIG_NET=y
+CONFIG_PACKET=m
+CONFIG_UNIX=y
+CONFIG_XFRM_USER=m
+CONFIG_XFRM_SUB_POLICY=y
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPVTI=m
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=m
+CONFIG_INET_DIAG=m
+CONFIG_INET_UDP_DIAG=m
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_ADVANCED is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NF_CONNTRACK is not set
+# CONFIG_NETFILTER_XT_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_LOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+CONFIG_IP_NF_RAW=m
+# CONFIG_IP6_NF_TARGET_REJECT is not set
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP_SCTP=m
+CONFIG_TIPC=m
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+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_CODEL=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_CLS_BASIC=y
+CONFIG_NET_CLS_U32=y
+CONFIG_NET_CLS_CGROUP=y
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_PKTGEN=m
+CONFIG_IRDA=m
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_PXA_FICP=m
+CONFIG_BT=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_CFG80211=m
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=m
+CONFIG_RFKILL=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_ROM=y
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_SHARPSL=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_ATA=y
+CONFIG_PATA_PXA=y
+CONFIG_PATA_PCMCIA=y
+CONFIG_NETDEVICES=y
+CONFIG_BONDING=m
+CONFIG_DUMMY=m
+CONFIG_NETCONSOLE=y
+CONFIG_TUN=m
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_AMD is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_FUJITSU is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+# CONFIG_NET_VENDOR_XIRCOM is not set
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOE=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+CONFIG_AIRO_CS=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_CS=m
+CONFIG_RT2X00=m
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_APMPOWER=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_LOCOMO=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+CONFIG_SERIAL_8250=m
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_I2C=y
+CONFIG_I2C_LOCOMO=y
+CONFIG_I2C_PXA=y
+CONFIG_SPI=y
+CONFIG_SPI_PXA2XX=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_LOCOMO=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_APM_POWER=y
+CONFIG_BATTERY_POODLE=y
+CONFIG_CHARGER_GPIO=y
+CONFIG_SENSORS_MAX1111=y
+CONFIG_WATCHDOG=y
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_MFD_LOCOMO=y
+CONFIG_FB=y
+CONFIG_FB_PXA=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_LOCOMO=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_LOGO=y
+CONFIG_SOUND=m
+CONFIG_SND=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_PXA2XX_AC97=m
+CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_POODLE=m
+CONFIG_HID=m
+CONFIG_NOP_USB_XCEIV=m
+CONFIG_USB_GPIO_VBUS=m
+CONFIG_USB_ULPI=y
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_DEBUG_FILES=y
+CONFIG_USB_GADGET_DEBUG_FS=y
+CONFIG_USB_PXA25X=m
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_MULTI=m
+CONFIG_USB_G_MULTI_CDC=y
+CONFIG_MMC=y
+CONFIG_MMC_PXA=y
+CONFIG_MMC_SPI=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_LOCOMO=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_SA1100=y
+CONFIG_M62332=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_LZO=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_CRAMFS=y
+CONFIG_MINIX_FS=m
+CONFIG_ROMFS_FS=m
+CONFIG_NFS_FS=m
+CONFIG_NFS_V4=m
+CONFIG_NFSD=m
+CONFIG_NFSD_V4=y
+CONFIG_CIFS=m
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_SECURITY=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRC_CCITT=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y