linux-rp_2.6.24: -fix build
authorThomas Kunze <thommycheck@gmx.de>
Thu, 24 Jul 2008 23:25:35 +0000 (23:25 +0000)
committerThomas Kunze <thommycheck@gmx.de>
Thu, 24 Jul 2008 23:25:35 +0000 (23:25 +0000)
linux-rp_2.6.26: -update patches for collie.The kernel won't build atm
because of too fat defconfig. But this is intended because kernel
will be in rootfs in the future.
linux-rp.inc:    -change commandline for collie to root on mmc

packages/linux/linux-rp-2.6.26/collie.patch [new file with mode: 0644]
packages/linux/linux-rp-2.6.26/collie_keymap.patch [new file with mode: 0644]
packages/linux/linux-rp-2.6.26/defconfig-collie
packages/linux/linux-rp-2.6.26/initramfs-config-collie [new file with mode: 0644]
packages/linux/linux-rp.inc
packages/linux/linux-rp_2.6.24.bb
packages/linux/linux-rp_2.6.26.bb

diff --git a/packages/linux/linux-rp-2.6.26/collie.patch b/packages/linux/linux-rp-2.6.26/collie.patch
new file mode 100644 (file)
index 0000000..00b7d88
--- /dev/null
@@ -0,0 +1,1883 @@
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index c7ad324..daa2e0a 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -998,7 +998,7 @@ config CPU_FREQ_SA1100
+ config CPU_FREQ_SA1110
+       bool
+-      depends on CPU_FREQ && (SA1100_ASSABET || SA1100_CERF || SA1100_PT_SYSTEM3)
++      depends on CPU_FREQ && (SA1100_ASSABET || SA1100_CERF || SA1100_PT_SYSTEM3 || SA1100_COLLIE)
+       default y
+ config CPU_FREQ_INTEGRATOR
+diff --git a/arch/arm/mach-sa1100/dma.c b/arch/arm/mach-sa1100/dma.c
+index e508028..36f726c 100644
+--- a/arch/arm/mach-sa1100/dma.c
++++ b/arch/arm/mach-sa1100/dma.c
+@@ -39,7 +39,7 @@ typedef struct {
+ static sa1100_dma_t dma_chan[SA1100_DMA_CHANNELS];
+-static spinlock_t dma_list_lock;
++static  DEFINE_SPINLOCK(dma_list_lock);
+ static irqreturn_t dma_irq_handler(int irq, void *dev_id)
+diff --git a/drivers/input/keyboard/locomokbd.c b/drivers/input/keyboard/locomokbd.c
+index 9caed30..79e19bf 100644
+--- a/drivers/input/keyboard/locomokbd.c
++++ b/drivers/input/keyboard/locomokbd.c
+@@ -265,6 +265,7 @@ static int __devinit locomokbd_probe(struct locomo_dev *dev)
+       for (i = 0; i < LOCOMOKBD_NUMKEYS; i++)
+               set_bit(locomokbd->keycode[i], input_dev->keybit);
+       clear_bit(0, input_dev->keybit);
++      locomo_writel(0, locomokbd->base + LOCOMO_KSC);
+       /* attempt to get the interrupt */
+       err = request_irq(dev->irq[0], locomokbd_interrupt, 0, "locomokbd", locomokbd);
+diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
+index 9f93c29..33fc5d6 100644
+--- a/drivers/mfd/Kconfig
++++ b/drivers/mfd/Kconfig
+@@ -72,4 +72,10 @@ config MCP_UCB1200_TS
+       tristate "Touchscreen interface support"
+       depends on MCP_UCB1200 && INPUT
++config MCP_COLLIE_TS
++      tristate "Touchscreen collie support"
++      depends on MCP_UCB1200 && INPUT && !MCP_UCB1200_TS
++       ---help---
++        Driver for touchscreen on collie - sharp sl-5500.
++
+ endmenu
+diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
+index 33daa2f..0885ccd 100644
+--- a/drivers/mfd/Makefile
++++ b/drivers/mfd/Makefile
+@@ -16,7 +16,7 @@ obj-$(CONFIG_MCP)            += mcp-core.o
+ obj-$(CONFIG_MCP_SA11X0)      += mcp-sa11x0.o
+ obj-$(CONFIG_MCP_UCB1200)     += ucb1x00-core.o
+ obj-$(CONFIG_MCP_UCB1200_TS)  += ucb1x00-ts.o
+-
++obj-$(CONFIG_MCP_COLLIE_TS)     += collie-ts.o
+ ifeq ($(CONFIG_SA1100_ASSABET),y)
+ obj-$(CONFIG_MCP_UCB1200)     += ucb1x00-assabet.o
+ endif
+diff --git a/drivers/mfd/collie-ts.c b/drivers/mfd/collie-ts.c
+new file mode 100644
+index 0000000..ddde5fc
+--- /dev/null
++++ b/drivers/mfd/collie-ts.c
+@@ -0,0 +1,449 @@
++/*
++ *  Touchscreen driver for UCB1x00-based touchscreens
++ *
++ *  Copyright (C) 2001 Russell King, All Rights Reserved.
++ *  Copyright (C) 2005 Pavel Machek
++ *
++ * 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.
++ *
++ * 21-Jan-2002 <jco@ict.es> :
++ *
++ * Added support for synchronous A/D mode. This mode is useful to
++ * avoid noise induced in the touchpanel by the LCD, provided that
++ * the UCB1x00 has a valid LCD sync signal routed to its ADCSYNC pin.
++ * It is important to note that the signal connected to the ADCSYNC
++ * pin should provide pulses even when the LCD is blanked, otherwise
++ * a pen touch needed to unblank the LCD will never be read.
++ */
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/smp.h>
++#include <linux/smp_lock.h>
++#include <linux/sched.h>
++#include <linux/completion.h>
++#include <linux/delay.h>
++#include <linux/string.h>
++#include <linux/input.h>
++#include <linux/device.h>
++#include <linux/freezer.h>
++#include <linux/slab.h>
++#include <linux/kthread.h>
++
++#include <asm/dma.h>
++#include <asm/semaphore.h>
++#include <asm/arch/collie.h>
++#include <asm/mach-types.h>
++
++#include "ucb1x00.h"
++
++struct ucb1x00_ts {
++      struct input_dev        *idev;
++      struct ucb1x00          *ucb;
++
++      wait_queue_head_t       irq_wait;
++      struct task_struct      *rtask;
++      u16                     x_res;
++      u16                     y_res;
++
++      unsigned int            adcsync:1;
++};
++
++static int adcsync;
++
++/**********************************
++
++     ................
++     .              . = 340
++     .              .
++     .             ^.
++     .             ^.
++     .             ^.
++     .             ^.
++     .              .
++     .             X. = 10
++     .  <<<<<<<<  Y .
++     ................
++     .   Sharp    =200
++     .              .
++     .  -   O    -  .
++     .              .
++     ................
++
++**********************************/
++
++
++static inline void ucb1x00_ts_evt_add(struct ucb1x00_ts *ts, u16 pressure, u16 x, u16 y)
++{
++      struct input_dev *idev = ts->idev;
++
++      input_report_abs(idev, ABS_X, x);
++      input_report_abs(idev, ABS_Y, y);
++      input_report_abs(idev, ABS_PRESSURE, pressure);
++        input_report_key(idev, BTN_TOUCH, 1);
++      input_sync(idev);
++}
++
++static inline void ucb1x00_ts_event_release(struct ucb1x00_ts *ts)
++{
++      struct input_dev *idev = ts->idev;
++
++      input_report_abs(idev, ABS_PRESSURE, 0);
++        input_report_key(idev, BTN_TOUCH, 0);
++      input_sync(idev);
++}
++
++/*
++ * Switch to interrupt mode. This set touchscreen to interrupt 
++ * mode, so that chip is able to send interrupt.
++ */
++static inline void ucb1x00_ts_mode_int(struct ucb1x00_ts *ts)
++{
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR,
++                      UCB_TS_CR_TSMX_POW | UCB_TS_CR_TSPX_POW |
++                      UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_GND |
++                      UCB_TS_CR_MODE_INT);
++}
++
++/*
++ * Switch to pressure mode, and read pressure.  We don't need to wait
++ * here, since both plates are being driven.
++ *
++ * set_read_pressure() in sharp code
++ */
++static inline void ucb1x00_ts_read_pressure(struct ucb1x00_ts *ts)
++{
++      ucb1x00_io_write(ts->ucb, COLLIE_TC35143_GPIO_TBL_CHK, 0);
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR,
++                        UCB_TS_CR_TSPX_POW | UCB_TS_CR_TSMX_POW |
++                        UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA);
++
++      ucb1x00_reg_write(ts->ucb, UCB_ADC_CR, ts->ucb->adc_cr | 
++                        UCB_ADC_INP_AD2 | 
++                        UCB_ADC_SYNC_ENA);
++      udelay(100);
++      ucb1x00_reg_write(ts->ucb, UCB_ADC_CR, ts->ucb->adc_cr | 
++                        UCB_ADC_INP_AD2 | 
++                        UCB_ADC_SYNC_ENA | UCB_ADC_START);
++}
++
++/*
++ * Switch to X position mode and measure Y plate.  We switch the plate
++ * configuration in pressure mode, then switch to position mode.  This
++ * gives a faster response time.  Even so, we need to wait about 55us
++ * for things to stabilise.
++ */
++static inline void ucb1x00_ts_read_xpos(struct ucb1x00_ts *ts)
++{
++      ucb1x00_io_write(ts->ucb, 0, COLLIE_TC35143_GPIO_TBL_CHK);
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR,
++                      UCB_TS_CR_TSMX_GND | UCB_TS_CR_TSPX_POW |
++                      UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA);
++
++
++      ucb1x00_reg_write(ts->ucb, UCB_ADC_CR, ts->ucb->adc_cr | 
++                        UCB_ADC_INP_TSPY | UCB_ADC_SYNC_ENA);
++      udelay(100);
++      ucb1x00_reg_write(ts->ucb, UCB_ADC_CR, ts->ucb->adc_cr | 
++                        UCB_ADC_INP_TSPY | UCB_ADC_SYNC_ENA | 
++                        UCB_ADC_START);
++}
++
++/*
++ * Switch to Y position mode and measure X plate.  We switch the plate
++ * configuration in pressure mode, then switch to position mode.  This
++ * gives a faster response time.  Even so, we need to wait about 55us
++ * for things to stabilise.
++ */
++static inline void ucb1x00_ts_read_ypos(struct ucb1x00_ts *ts)
++{
++      ucb1x00_io_write(ts->ucb, 0, COLLIE_TC35143_GPIO_TBL_CHK);
++
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR,
++                      UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_POW |
++                      UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA);
++
++
++      ucb1x00_reg_write(ts->ucb, UCB_ADC_CR, ts->ucb->adc_cr | 
++                        UCB_ADC_INP_TSPX | UCB_ADC_SYNC_ENA);
++      udelay(100);
++      ucb1x00_reg_write(ts->ucb, UCB_ADC_CR, ts->ucb->adc_cr |
++                        UCB_ADC_INP_TSPX | UCB_ADC_SYNC_ENA | 
++                        UCB_ADC_START);
++}
++
++/*
++ * Switch to X plate resistance mode.  Set MX to ground, PX to
++ * supply.  Measure current.
++ */
++static inline unsigned int ucb1x00_ts_read_xres(struct ucb1x00_ts *ts)
++{
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR,
++                      UCB_TS_CR_TSMX_GND | UCB_TS_CR_TSPX_POW |
++                      UCB_TS_CR_MODE_PRES | UCB_TS_CR_BIAS_ENA);
++      return ucb1x00_adc_read(ts->ucb, 0, ts->adcsync);
++}
++
++/*
++ * Switch to Y plate resistance mode.  Set MY to ground, PY to
++ * supply.  Measure current.
++ */
++static inline unsigned int ucb1x00_ts_read_yres(struct ucb1x00_ts *ts)
++{
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR,
++                      UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_POW |
++                      UCB_TS_CR_MODE_PRES | UCB_TS_CR_BIAS_ENA);
++      return ucb1x00_adc_read(ts->ucb, 0, ts->adcsync);
++}
++
++/*
++ * This is a RT kernel thread that handles the ADC accesses
++ * (mainly so we can use semaphores in the UCB1200 core code
++ * to serialise accesses to the ADC).
++ */
++static int ucb1x00_thread(void *_ts)
++{
++      struct ucb1x00_ts *ts = _ts;
++      struct task_struct *tsk = current;
++      DECLARE_WAITQUEUE(wait, tsk);
++      int state;
++
++      /*
++       * We could run as a real-time thread.  However, thus far
++       * this doesn't seem to be necessary.
++       */
++
++      add_wait_queue(&ts->irq_wait, &wait);   
++
++      while (!kthread_should_stop()) {
++              unsigned int data[3];
++                      
++              for (state=0; state<3; state++) {
++                      
++                      ucb1x00_adc_enable(ts->ucb);
++                      ucb1x00_enable_irq(ts->ucb, UCB_IRQ_ADC, UCB_FALLING);
++                      switch (state) {
++                      /* Order matters here; last measurement seems to be more noisy then the
++                         rest, and we care about pressure least */
++                              case 2: ucb1x00_ts_read_pressure(ts);
++                                      break;
++                              case 0: ucb1x00_ts_read_ypos(ts);
++                                      break;
++                              case 1: ucb1x00_ts_read_xpos(ts);
++                                      break;
++                      }
++                      /* wait for adc */
++                      try_to_freeze();
++                      schedule_timeout(1000 * HZ);
++                      ucb1x00_disable_irq(ts->ucb, UCB_IRQ_ADC, UCB_FALLING);
++                      data[state] = UCB_ADC_DAT(ucb1x00_reg_read(ts->ucb, UCB_ADC_DATA));
++                      ucb1x00_adc_disable(ts->ucb);
++              }       
++              
++              /* If not pressed any more, try to sleep! */
++              if (data[2] < 300) {
++                      set_task_state(tsk, TASK_INTERRUPTIBLE);
++                      ucb1x00_enable_irq(ts->ucb, UCB_IRQ_TSPX, UCB_RISING);
++                      ucb1x00_ts_mode_int(ts);
++                      ucb1x00_disable(ts->ucb);
++                      ucb1x00_ts_event_release(ts);
++                      try_to_freeze();
++                      schedule_timeout(1000 * HZ);
++                      ucb1x00_disable_irq(ts->ucb, UCB_IRQ_TSPX, UCB_RISING);
++                      ucb1x00_enable(ts->ucb);
++              } else {        
++                      ucb1x00_ts_evt_add(ts, data[2], data[1], data[0]);
++              }
++              ucb1x00_disable(ts->ucb);
++              msleep(20);
++              ucb1x00_enable(ts->ucb);
++      }
++
++      remove_wait_queue(&ts->irq_wait, &wait);
++
++      ts->rtask = NULL;
++      return 0;
++}
++
++/*
++ * We only detect touch screen _touches_ with this interrupt
++ * handler, and even then we just schedule our task.
++ */
++static void ucb1x00_ts_irq(int idx, void *id)
++{
++      struct ucb1x00_ts *ts = id;
++      wake_up(&ts->irq_wait);
++}
++
++static void ucb1x00_adc_irq(int idx, void *id)
++{
++      struct ucb1x00_ts *ts = id;
++      wake_up(&ts->irq_wait);
++}
++
++static int ucb1x00_ts_open(struct input_dev *idev)
++{
++      struct ucb1x00_ts *ts = input_get_drvdata(idev);
++      int ret = 0;
++
++      BUG_ON(ts->rtask);
++
++      init_waitqueue_head(&ts->irq_wait);
++      
++      ret = ucb1x00_hook_irq(ts->ucb, UCB_IRQ_TSPX, ucb1x00_ts_irq, ts);
++      if (ret < 0)
++              return ret;
++      
++      ret = ucb1x00_hook_irq(ts->ucb, UCB_IRQ_ADC, ucb1x00_adc_irq, ts);
++      if (ret < 0) {
++              ucb1x00_free_irq(ts->ucb, UCB_IRQ_TSPX, ts);
++              return ret;
++      }
++
++      ucb1x00_enable_irq(ts->ucb, UCB_IRQ_TSPX, UCB_RISING);
++      
++      /*
++       * If we do this at all, we should allow the user to
++       * measure and read the X and Y resistance at any time.
++       */
++      ucb1x00_adc_enable(ts->ucb);
++      ts->x_res = ucb1x00_ts_read_xres(ts);
++      ts->y_res = ucb1x00_ts_read_yres(ts);
++      ucb1x00_adc_disable(ts->ucb);
++
++      if (machine_is_collie()) {
++              ucb1x00_io_set_dir(ts->ucb, 0, COLLIE_TC35143_GPIO_TBL_CHK);
++      }
++
++      ts->rtask = kthread_run(ucb1x00_thread, ts, "ktsd");
++      if (!IS_ERR(ts->rtask)) {
++              ret = 0;
++      } else {
++              ucb1x00_free_irq(ts->ucb, UCB_IRQ_TSPX, ts);
++              ts->rtask = NULL;
++              ret = -EFAULT;
++      }
++      
++      return ret;
++}
++
++/*
++ * Release touchscreen resources.  Disable IRQs.
++ */
++static void ucb1x00_ts_close(struct input_dev *idev)
++{
++      struct ucb1x00_ts *ts = input_get_drvdata(idev);
++
++      if (ts->rtask)
++              kthread_stop(ts->rtask);
++
++      ucb1x00_enable(ts->ucb);
++      ucb1x00_free_irq(ts->ucb, UCB_IRQ_TSPX, ts);
++      ucb1x00_free_irq(ts->ucb, UCB_IRQ_ADC, ts);
++      ucb1x00_reg_write(ts->ucb, UCB_TS_CR, 0);
++      ucb1x00_disable(ts->ucb);
++}
++
++#ifdef CONFIG_PM
++static int ucb1x00_ts_resume(struct ucb1x00_dev *dev)
++{
++      struct ucb1x00_ts *ts = dev->priv;
++
++      if (ts->rtask != NULL) {
++              /*
++               * Restart the TS thread to ensure the
++               * TS interrupt mode is set up again
++               * after sleep.
++               */
++              wake_up(&ts->irq_wait);
++      }
++      return 0;
++}
++#else
++#define ucb1x00_ts_resume NULL
++#endif
++
++
++/*
++ * Initialisation.
++ */
++static int ucb1x00_ts_add(struct ucb1x00_dev *dev)
++{
++      struct ucb1x00_ts *ts;
++      struct input_dev *idev;
++      int err;
++
++      ts = kzalloc(sizeof(struct ucb1x00_ts), GFP_KERNEL);
++      idev = input_allocate_device();
++      if (!ts || !idev) {
++              err = -ENOMEM;
++              goto fail;
++      }
++
++      ts->ucb = dev->ucb;
++      ts->idev = idev;
++      ts->adcsync = adcsync ? UCB_SYNC : UCB_NOSYNC;
++
++      input_set_drvdata(idev, ts);
++      idev->name       = "Touchscreen panel";
++      idev->id.product = ts->ucb->id;
++      idev->open       = ucb1x00_ts_open;
++      idev->close      = ucb1x00_ts_close;
++
++      __set_bit(EV_ABS, idev->evbit);
++      __set_bit(ABS_X, idev->absbit);
++      __set_bit(ABS_Y, idev->absbit);
++      __set_bit(ABS_PRESSURE, idev->absbit);
++
++        input_set_abs_params(ts->idev, ABS_X, 0, 450, 0, 0);
++        input_set_abs_params(ts->idev, ABS_Y, 200, 800, 0, 0);
++        input_set_abs_params(ts->idev, ABS_PRESSURE, 400, 800, 0, 0);
++
++
++      err = input_register_device(idev);
++      if (err)
++              goto fail;
++
++      dev->priv = ts;
++
++      return 0;
++
++ fail:
++      input_free_device(idev);
++      kfree(ts);
++      return err;
++}
++
++static void ucb1x00_ts_remove(struct ucb1x00_dev *dev)
++{
++      struct ucb1x00_ts *ts = dev->priv;
++
++      input_unregister_device(ts->idev);
++      kfree(ts);
++}
++
++static struct ucb1x00_driver ucb1x00_ts_driver = {
++      .add            = ucb1x00_ts_add,
++      .remove         = ucb1x00_ts_remove,
++      .resume         = ucb1x00_ts_resume,
++};
++
++static int __init ucb1x00_ts_init(void)
++{
++      return ucb1x00_register_driver(&ucb1x00_ts_driver);
++}
++
++static void __exit ucb1x00_ts_exit(void)
++{
++      ucb1x00_unregister_driver(&ucb1x00_ts_driver);
++}
++
++module_param(adcsync, int, 0444);
++module_init(ucb1x00_ts_init);
++module_exit(ucb1x00_ts_exit);
++
++MODULE_AUTHOR("Russell King <rmk@arm.linux.org.uk>");
++MODULE_DESCRIPTION("UCB1x00 touchscreen driver");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/mfd/ucb1x00.h b/drivers/mfd/ucb1x00.h
+index a8ad8a0..137b043 100644
+--- a/drivers/mfd/ucb1x00.h
++++ b/drivers/mfd/ucb1x00.h
+@@ -34,7 +34,10 @@
+ #define UCB_IE_TCLIP          (1 << 14)
+ #define UCB_IE_ACLIP          (1 << 15)
++/* UCB1200 irqs */
++#define UCB_IRQ_ADC           11
+ #define UCB_IRQ_TSPX          12
++#define UCB_IRQ_TSMX          13
+ #define UCB_TC_A      0x05
+ #define UCB_TC_A_LOOP         (1 << 7)        /* UCB1200 */
+diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
+index 3b4e55c..0ae741d 100644
+--- a/drivers/net/wireless/hostap/hostap_cs.c
++++ b/drivers/net/wireless/hostap/hostap_cs.c
+@@ -35,7 +35,7 @@ static int ignore_cis_vcc;
+ module_param(ignore_cis_vcc, int, 0444);
+ MODULE_PARM_DESC(ignore_cis_vcc, "Ignore broken CIS VCC entry");
+-
++int activar=0;
+ /* struct local_info::hw_priv */
+ struct hostap_cs_priv {
+       dev_node_t node;
+@@ -499,11 +499,13 @@ static int hostap_cs_probe(struct pcmcia_device *p_dev)
+       PDEBUG(DEBUG_HW, "%s: setting Vcc=33 (constant)\n", dev_info);
+       p_dev->conf.IntType = INT_MEMORY_AND_IO;
+-
++      
++      activar=0;
+       ret = prism2_config(p_dev);
+       if (ret) {
+               PDEBUG(DEBUG_EXTRA, "prism2_config() failed\n");
+       }
++      activar=1;
+       return ret;
+ }
+diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
+index 13d5882..6f24d66 100644
+--- a/drivers/net/wireless/hostap/hostap_hw.c
++++ b/drivers/net/wireless/hostap/hostap_hw.c
+@@ -54,6 +54,7 @@
+ #include "hostap.h"
+ #include "hostap_ap.h"
++extern int activar;
+ /* #define final_version */
+@@ -1497,6 +1498,8 @@ static int prism2_hw_config(struct net_device *dev, int initial)
+       if (local->hw_downloading)
+               return 1;
++      activar=1;
++
+       if (prism2_hw_init(dev, initial)) {
+               return local->no_pri ? 0 : 1;
+       }
+@@ -2628,8 +2631,15 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id)
+       int events = 0;
+       u16 ev;
+-      iface = netdev_priv(dev);
+-      local = iface->local;
++
++      // Todos los parametros de entrada son correctos (no son nulos). De momento esta es la unica forma que conozco de detectar el problema.
++      if (!activar) {
++              printk("hostap_hw.c: INTERRUPT BEFORE DEVICE INIT!\n");
++              return IRQ_HANDLED;
++      }
++
++      iface = netdev_priv(dev);
++      local = iface->local;
+       prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0);
+diff --git a/drivers/net/wireless/hostap/hostap_pci.c b/drivers/net/wireless/hostap/hostap_pci.c
+index 3a874fc..df58aa3 100644
+--- a/drivers/net/wireless/hostap/hostap_pci.c
++++ b/drivers/net/wireless/hostap/hostap_pci.c
+@@ -19,6 +19,7 @@
+ #include "hostap_wlan.h"
++int activar=1;
+ static char *dev_info = "hostap_pci";
+diff --git a/drivers/net/wireless/hostap/hostap_plx.c b/drivers/net/wireless/hostap/hostap_plx.c
+index cbf15d7..4475174 100644
+--- a/drivers/net/wireless/hostap/hostap_plx.c
++++ b/drivers/net/wireless/hostap/hostap_plx.c
+@@ -21,7 +21,7 @@
+ #include <asm/io.h>
+ #include "hostap_wlan.h"
+-
++int activar=1;
+ static char *dev_info = "hostap_plx";
+diff --git a/drivers/pcmcia/sa1100_generic.c b/drivers/pcmcia/sa1100_generic.c
+index c5b2a44..eecbe8c 100644
+--- a/drivers/pcmcia/sa1100_generic.c
++++ b/drivers/pcmcia/sa1100_generic.c
+@@ -81,13 +81,14 @@ static int sa11x0_drv_pcmcia_probe(struct device *dev)
+       return ret;
+ }
+-static struct device_driver sa11x0_pcmcia_driver = {
+-      .probe          = sa11x0_drv_pcmcia_probe,
+-      .remove         = soc_common_drv_pcmcia_remove,
+-      .name           = "sa11x0-pcmcia",
+-      .bus            = &platform_bus_type,
+-      .suspend        = pcmcia_socket_dev_suspend,
+-      .resume         = pcmcia_socket_dev_resume,
++static struct platform_driver sa11x0_pcmcia_driver = {
++      .driver         = {
++              .name   = "sa11x0-pcmcia",
++              .probe  = sa11x0_drv_pcmcia_probe,
++              .remove = soc_common_drv_pcmcia_remove,
++              .suspend= pcmcia_socket_dev_suspend,
++              .resume = pcmcia_socket_dev_resume,
++      },
+ };
+ /* sa11x0_pcmcia_init()
+@@ -100,7 +101,7 @@ static struct device_driver sa11x0_pcmcia_driver = {
+  */
+ static int __init sa11x0_pcmcia_init(void)
+ {
+-      return driver_register(&sa11x0_pcmcia_driver);
++      return platform_driver_register(&sa11x0_pcmcia_driver);
+ }
+ /* sa11x0_pcmcia_exit()
+@@ -110,7 +111,7 @@ static int __init sa11x0_pcmcia_init(void)
+  */
+ static void __exit sa11x0_pcmcia_exit(void)
+ {
+-      driver_unregister(&sa11x0_pcmcia_driver);
++      platform_driver_unregister(&sa11x0_pcmcia_driver);
+ }
+ MODULE_AUTHOR("John Dorsey <john+@cs.cmu.edu>");
+diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
+index 66ec5d8..aba38d7 100644
+--- a/drivers/spi/Kconfig
++++ b/drivers/spi/Kconfig
+@@ -123,6 +123,10 @@ config SPI_MPC52xx_PSC
+         This enables using the Freescale MPC52xx Programmable Serial
+         Controller in master SPI mode.
++config SPI_LOCOMO
++      tristate "Locomo SPI master"
++      depends on SPI_MASTER && SHARP_LOCOMO && EXPERIMENTAL
++
+ config SPI_MPC83xx
+       tristate "Freescale MPC83xx/QUICC Engine SPI controller"
+       depends on SPI_MASTER && (PPC_83xx || QUICC_ENGINE) && EXPERIMENTAL
+diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
+index 7fca043..b89992b 100644
+--- a/drivers/spi/Makefile
++++ b/drivers/spi/Makefile
+@@ -28,6 +28,7 @@ obj-$(CONFIG_SPI_S3C24XX)            += spi_s3c24xx.o
+ obj-$(CONFIG_SPI_TXX9)                        += spi_txx9.o
+ obj-$(CONFIG_SPI_XILINX)              += xilinx_spi.o
+ obj-$(CONFIG_SPI_SH_SCI)              += spi_sh_sci.o
++obj-$(CONFIG_SPI_LOCOMO)                += locomo_spi.o
+ #     ... add above this line ...
+ # SPI protocol drivers (device/link on bus)
+diff --git a/drivers/spi/locomo_spi.c b/drivers/spi/locomo_spi.c
+new file mode 100644
+index 0000000..d3a4bd9
+--- /dev/null
++++ b/drivers/spi/locomo_spi.c
+@@ -0,0 +1,1097 @@
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/stat.h>
++#include <linux/delay.h>
++#include <linux/wait.h>
++#include <linux/interrupt.h>
++#include <asm/hardware/locomo.h>
++#include <asm/errno.h>
++#include <linux/mmc/host.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/mmc_spi.h>
++#include <linux/workqueue.h>
++#include <linux/spinlock.h>
++#include <linux/list.h>
++#include "locomo_spi.h"
++static struct locomospi_dev * spidev;
++static struct work_struct transfer_wq;
++int  delay;
++
++char* transtxbuf=(char*)NULL;
++char* transrxbuf=(char*)NULL;
++int transfercount=0, transfersize=0;
++static DECLARE_WAIT_QUEUE_HEAD(transferqueue);
++/* MMC_SPI functions *********************************************************/
++
++static int locomommcspi_init(struct device *dev, irqreturn_t (*isr)(int, void*), void *mmc)
++{
++      int result;
++      result=request_irq(IRQ_LOCOMO_CARDDETECT, isr, IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, "locomo-spi",  mmc);
++      return result;
++}
++
++static void locomommcspi_exit(struct device *dev, void* mmc)
++{
++      free_irq(IRQ_LOCOMO_CARDDETECT, mmc);
++}
++
++static int locomommcspi_getro(struct device *dev)
++{
++      return locomo_gpio_read_level(spidev->ldev->dev.parent,LOCOMO_GPIO_WRITE_PROT) > 0 ? 1 : 0;
++}
++
++static void locomommcspi_setpower(struct device *dev, unsigned int mask)
++{
++      if(!mask && spidev->card_power)
++              locomospi_power(0);
++      else if( !spidev->card_power )
++              locomospi_power(1);
++
++}
++
++
++static struct mmc_spi_platform_data colliemmc ={
++      .init           = locomommcspi_init,
++      .exit           = locomommcspi_exit,
++      .detect_delay   = 200,
++      .get_ro         = locomommcspi_getro,
++      .ocr_mask       = MMC_VDD_32_33 | MMC_VDD_33_34,
++      .setpower       = locomommcspi_setpower,
++      .powerup_msecs  = 200,
++};
++
++/* Utility function **********************************************************/
++
++static void locomospi_power(int on)
++{
++      locomo_gpio_write(spidev->ldev->dev.parent, LOCOMO_GPIO_CARD_POWER, on);
++      spidev->card_power=on;
++      printk(KERN_DEBUG "locomospi: power %d\n",on);
++}
++
++static void locomospi_setclock(unsigned int div, unsigned int clock)
++{
++      u16 r = ioread16(spidev->base+LOCOMO_SPIMD);
++      div &= 0x7;
++      clock &= 0x3;
++      if(clock != spidev->clock_base || div != spidev->clock_div){
++              r &= ~(LOCOMO_SPI_XSEL  | LOCOMO_SPI_CLKSEL | LOCOMO_SPI_XEN);
++              iowrite16(r,spidev->base+LOCOMO_SPIMD);
++              r |=  (div | (clock <<3) | LOCOMO_SPI_XEN);
++              iowrite16(r,spidev->base+LOCOMO_SPIMD);
++              spidev->clock_div = div;
++              spidev->clock_base = clock;
++              udelay(300);
++      }
++
++}
++// returns 1 if card ist present, 0 otherwise
++static int locomospi_carddetect()
++{
++      return (locomo_gpio_read_level(spidev->ldev->dev.parent,LOCOMO_GPIO_CARD_DETECT)>0)?0:1;
++}
++
++static void locomospi_setcs(int high)
++{
++      u16 r;
++      printk(KERN_DEBUG "locomospi: cs %d\n",high);
++      r = ioread16(spidev->base + LOCOMO_SPICT);
++      if(high)
++              r |= LOCOMO_SPI_CS;
++      else
++              r &= ~LOCOMO_SPI_CS;
++      iowrite16(r, spidev->base + LOCOMO_SPICT);
++}
++
++static void locomospi_reg_open()
++{
++      u16 r;
++      spidev->clock_div = DIV_64;
++      spidev->clock_base = CLOCK_18MHZ;
++      locomospi_power(1);
++      msleep(100);
++//    iowrite16( 0xec00 | (CLOCK_18MHZ <<3)|DIV_64, spidev->base+LOCOMO_SPIMD);
++      iowrite16( LOCOMO_SPI_MSB1ST | LOCOMO_SPI_DOSTAT | LOCOMO_SPI_RCPOL | LOCOMO_SPI_TCPOL 
++                      |(CLOCK_18MHZ <<3) | DIV_64, spidev->base+LOCOMO_SPIMD);
++//    if(locomospi_carddetect()){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16( r, spidev->base+LOCOMO_SPIMD);
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XEN;
++              iowrite16( r, spidev->base+LOCOMO_SPIMD);
++//    }
++      iowrite16( LOCOMO_SPI_CS, spidev->base+LOCOMO_SPICT);
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r |= (LOCOMO_SPI_CEN | LOCOMO_SPI_RXUEN | LOCOMO_SPI_ALIGNEN);
++      iowrite16( r, spidev->base+LOCOMO_SPICT);
++      udelay(200);
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r &= ~LOCOMO_SPI_CS;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++}
++
++static void locomospi_reg_release()
++{
++      u16 r;
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r &= ~LOCOMO_SPI_CEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      r = ioread16(spidev->base+LOCOMO_SPIMD);
++      r &= ~LOCOMO_SPI_XEN;
++      iowrite16(r, spidev->base+LOCOMO_SPIMD);
++      r = ioread16(spidev->base+LOCOMO_SPIMD);
++      r &= ~LOCOMO_SPI_XON;
++      iowrite16(r, spidev->base+LOCOMO_SPIMD);
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r |= LOCOMO_SPI_XEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      locomospi_power(0);
++}
++#if 0
++static int txrx(const char* txbuffer, char* rxbuffer, int size)
++{
++      u16 r = ioread16(spidev->base+LOCOMO_SPICT);
++      r |= LOCOMO_SPI_ALIGNEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      printk(KERN_DEBUG "locomospi: %d bytes to prozess\n",size);
++      /* initialize global vars for isr */
++      transfercount=0; transfersize=size; 
++      transtxbuf=txbuffer; transrxbuf=rxbuffer;
++
++      /* start transmit and go sleep  isr will wake us*/
++      enable_irq(IRQ_LOCOMO_SPI_TEND);
++      iowrite8(txbuffer[0], spidev->base+LOCOMO_SPITD);
++      wait_event(transferqueue, transfercount >= transfersize);
++      disable_irq(IRQ_LOCOMO_SPI_TEND);
++      transrxbuf=NULL; transtxbuf=NULL;
++      
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r &= ~LOCOMO_SPI_ALIGNEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      int i;
++      for(i=0; i< size; i++)
++              printk(KERN_DEBUG "locomospi: sent: %x  received: %x \n",txbuffer[i], rxbuffer[i]);
++      
++      
++      return size;
++}
++
++
++static int tx(const char* txbuffer, int size)
++{
++      printk(KERN_DEBUG "locomospi: %d bytes to send\n",size);
++      /* initialize global vars for isr */
++      transfercount=0; transfersize=size; 
++      transtxbuf=txbuffer; 
++
++      /* start transmit and go sleep  isr will wake us*/
++      enable_irq(IRQ_LOCOMO_SPI_RFW);
++      iowrite8(txbuffer[0], spidev->base+LOCOMO_SPITD);
++      wait_event(transferqueue, transfercount >= transfersize);
++      disable_irq(IRQ_LOCOMO_SPI_RFW);
++      transtxbuf=NULL;
++      
++      int i;
++      for(i=0; i< size; i++)
++              printk(KERN_DEBUG "locomospi: sent: %x\n",txbuffer[i]);
++      
++      
++      return size;
++}
++
++static int rx(char* rxbuffer, int size)
++{
++      printk(KERN_DEBUG "locomospi: %d bytes to read\n",size);
++      /* initialize global vars for isr */
++      transfercount=0; transfersize=size; 
++      transrxbuf=rxbuffer;
++
++      /* start transmit and go sleep  isr will wake us*/
++      enable_irq(IRQ_LOCOMO_SPI_RFR);
++      rxbuffer[0]=ioread8(spidev->base+LOCOMO_SPIRD);
++      wait_event(transferqueue, transfercount >= transfersize);
++      disable_irq(IRQ_LOCOMO_SPI_RFR);
++      transrxbuf=NULL;
++      
++      int i;
++      for(i=0; i< size; i++)
++              printk(KERN_DEBUG "locomospi: received: %x \n", rxbuffer[i]);
++      
++      
++      return size;
++}
++
++#else
++static int txrx(const char* txbuffer, char* rxbuffer, int size)
++{
++      int i=0,j=0;
++      int wait;
++      u16 r;
++/*    char * txback = kmalloc(size * sizeof(char), GFP_KERNEL);
++      memcpy(txback, txbuffer, size); 
++*/    
++      if(spidev->clock_div == 4)
++              wait = 0x10000;
++      else
++              wait = 8;
++      
++//    printk(KERN_DEBUG "locomospi: txrx %d bytes to prozess\n",size);
++      
++//    r = ioread16(spidev->base+LOCOMO_SPICT);
++//    r |= LOCOMO_SPI_ALIGNEN;
++//    iowrite16(r, spidev->base+LOCOMO_SPICT);
++      //discard first bogus byte
++
++      ioread8(spidev->base+LOCOMO_SPIRD);
++      for(i=0; i<size; i++){
++              for(j=0; j <= wait; j++){
++                      if(ioread16(spidev->base+LOCOMO_SPIST) & LOCOMO_SPI_RFW)
++                              break;
++              }
++              iowrite8(txbuffer[i], spidev->base+LOCOMO_SPITD);
++              ndelay(delay);
++              
++              for(j=0; j <= wait; j++){
++                      if(ioread16(spidev->base+LOCOMO_SPIST) & LOCOMO_SPI_RFR)
++                              break;
++              }
++              rxbuffer[i] = ioread8(spidev->base+LOCOMO_SPIRD);
++              ndelay(delay);
++      }
++//    r = ioread16(spidev->base+LOCOMO_SPICT);
++//    r &= ~LOCOMO_SPI_ALIGNEN;
++//    iowrite16(r, spidev->base+LOCOMO_SPICT);
++      
++/*    for(j=0; j< size; j++)
++              printk(KERN_DEBUG "locomospi: sent: %x  received: %x \n",txback[j], rxbuffer[j]);
++      
++      kfree(txback);  
++*/    return i;
++}
++
++static int tx(const char* buffer, int size)
++{
++      int i=0,j=0;
++      int wait;
++      u16 r;
++      if(spidev->clock_div == 4)
++              wait = 0x10000;
++      else
++              wait = 8;
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r &= ~LOCOMO_SPI_ALIGNEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++
++//    printk(KERN_DEBUG "locomospi: tx %d bytes to transmit\n",size);
++      for(i=0; i<size; i++){
++              for(j=0; j <= wait; j++){
++                      if(ioread16(spidev->base+LOCOMO_SPIST) & LOCOMO_SPI_RFW)
++                              break;
++              }
++              iowrite8(buffer[i], spidev->base+LOCOMO_SPITD);
++              ndelay(delay);
++      }
++
++      for(j=0; j <= wait; j++){
++              if(ioread16(spidev->base+LOCOMO_SPIST) & LOCOMO_SPI_TEND)
++                      break;
++      }
++      
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r |= LOCOMO_SPI_ALIGNEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      
++//    for(j=0; j< size; j++)
++//            printk(KERN_DEBUG "locomospi: sent: %x \n", buffer[j]);
++//    printk(KERN_DEBUG "locomospi: tx %d bytes transmitted\n",i);
++      return i;
++}
++
++static int rx(char* buffer, int size)
++{
++      int i,j;
++      int wait;
++      u16 r;  
++      printk(KERN_DEBUG "locomospi: rx %d bytes to receive\n",size);
++      if(spidev->clock_div == 4)
++              wait = 0x10000;
++      else
++              wait = 8;
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r &= ~LOCOMO_SPI_ALIGNEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++
++      for(i=0; i<size; i++){
++
++              for(j=0; j <= wait; j++){
++                      if(ioread16(spidev->base+LOCOMO_SPIST) & LOCOMO_SPI_RFR)
++                              break;
++              }
++              buffer[i]= ioread8(spidev->base+LOCOMO_SPIRD);
++              ndelay(delay);
++      }
++      
++      r = ioread16(spidev->base+LOCOMO_SPICT);
++      r |= LOCOMO_SPI_ALIGNEN;
++      iowrite16(r, spidev->base+LOCOMO_SPICT);
++      
++      for(j=0; j< size; j++)
++              printk(KERN_DEBUG "locomospi: received: %x \n", buffer[j]);
++      printk(KERN_DEBUG "locomospi: rx %d bytes received\n",i);
++      return i;
++}
++#endif
++/*
++static irqreturn_t locomospi_rwready(int irq, void *dev_id)
++{
++      struct locomospi_dev* dev=(struct locomospi_dev*) dev_id;
++//    dev_dbg(&spidev->sdev->dev, "IRQ: %d\n", irq);
++//    printk(KERN_DEBUG "locomospi: IRQ: %d\n", irq);
++      wake_up_interruptible(&dev->waitqueue);
++      return IRQ_HANDLED;
++}
++*/
++static irqreturn_t locomospi_testisr(int irq, void *dev_id)
++{
++      char *buf="";
++      switch(irq){
++              case IRQ_LOCOMO_SPI_RFR: buf="RFR";
++                                       break;
++              case IRQ_LOCOMO_SPI_RFW: buf="RFW";
++                                       break;
++              case IRQ_LOCOMO_SPI_REND:buf="REND";
++                                       break;
++              case IRQ_LOCOMO_SPI_TEND:buf="TEND";
++                                       break;
++              case IRQ_LOCOMO_CARDDETECT:
++                                       buf="CARD_DETECT";
++                                       break;
++              default:                return IRQ_NONE;
++      }
++      printk(KERN_DEBUG "locomospi: IRQ: %s\n",buf);
++//    dev_dbg(&spidev->sdev->dev, "IRQ: %s\n",buf);
++      return IRQ_HANDLED;
++}
++static irqreturn_t locomospi_txrxisr(int irq, void *dev_id)
++{
++      if(transfercount < transfersize){
++              transrxbuf[transfercount++] = ioread8(spidev->base+LOCOMO_SPIRD);
++              iowrite8(transtxbuf[transfercount], spidev->base+LOCOMO_SPITD);                 
++      }
++      else{
++              /* transfer complete. wake up txrx */
++              wake_up(&transferqueue);
++      }
++      return IRQ_HANDLED;     
++}     
++
++static irqreturn_t locomospi_txisr(int irq, void *dev_id)
++{
++      if(transfercount < transfersize){
++              iowrite8(transtxbuf[transfercount++], spidev->base+LOCOMO_SPITD);               
++      }
++      else{
++              /* transfer complete. wake up txrx */
++              wake_up(&transferqueue);
++      }
++      return IRQ_HANDLED;     
++}     
++
++static irqreturn_t locomospi_rxisr(int irq, void *dev_id)
++{
++      if(transfercount < transfersize){
++              transrxbuf[transfercount++] = ioread8(spidev->base+LOCOMO_SPIRD);
++      }
++      else{
++              /* transfer complete. wake up txrx */
++              wake_up(&transferqueue);
++      }
++      return IRQ_HANDLED;     
++}     
++
++static void locomospi_clock(unsigned int Hz)
++{
++      u16 r;
++      printk(KERN_DEBUG "locomospi: changing clock to: %d\n", Hz);
++      if(Hz == 0){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r &= ~LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++      }
++      else if(Hz >= 24576000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_1, CLOCK_25MHZ);
++              delay=41;
++      }
++      else if(Hz >= 22579200){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_1, CLOCK_22MHZ);
++              delay=45;
++      }
++      else if(Hz >= 18432000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_1, CLOCK_18MHZ);
++              delay=55;
++      }
++      else if(Hz >= 12288000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_2, CLOCK_25MHZ);
++              delay=82;
++      }
++      else if(Hz >= 11289600){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_2, CLOCK_22MHZ);
++              delay=89;
++      }
++      else if(Hz >= 9216000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_2, CLOCK_18MHZ);
++              delay=110;
++      }
++      else if(Hz >= 6144000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_4, CLOCK_25MHZ);
++              delay=164;
++      }
++      else if(Hz >= 5644800){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_4, CLOCK_22MHZ);
++              delay=178;
++      }
++      else if(Hz >= 4608000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_4, CLOCK_18MHZ);
++              delay=218;
++      }
++      else if(Hz >= 3072000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_8, CLOCK_25MHZ);
++              delay=327;
++      }
++      else if(Hz >= 2822400){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_8, CLOCK_22MHZ);
++              delay=355;
++      }
++      else if(Hz >= 2304000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_8, CLOCK_18MHZ);
++              delay=435;
++      }
++      else if(Hz >= 384000){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_64, CLOCK_25MHZ);
++              delay=2605;
++      }
++      else if(Hz >= 352800){
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_64, CLOCK_22MHZ);
++              delay=2834;
++      }
++      else{ /* set to 288 KHz */
++              r = ioread16(spidev->base+LOCOMO_SPIMD);
++              r |= LOCOMO_SPI_XON;
++              iowrite16(r, spidev->base+LOCOMO_SPIMD);
++              locomospi_setclock(DIV_64, CLOCK_18MHZ);
++              delay=3473;
++      }
++      spidev->clock = Hz;
++}
++
++/* sysfs attributes used for debug *******************************************/
++
++/* SPI registers */
++ssize_t locomospi_showspimd(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPIMD));
++}
++
++ssize_t locomospi_storespimd(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPIMD);
++      return count;
++}
++static DRIVER_ATTR(spimd, S_IWUSR | S_IRUGO, locomospi_showspimd, locomospi_storespimd);
++
++ssize_t locomospi_showspict(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPICT));
++}
++
++ssize_t locomospi_storespict(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPICT);
++      return count;
++}
++static DRIVER_ATTR(spict, S_IWUSR | S_IRUGO, locomospi_showspict, locomospi_storespict);
++
++ssize_t locomospi_showspist(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPIST));
++}
++
++ssize_t locomospi_storespist(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPIST);
++      return count;
++}
++static DRIVER_ATTR(spist, S_IWUSR | S_IRUGO, locomospi_showspist, locomospi_storespist);
++
++ssize_t locomospi_showspitd(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPITD));
++}
++
++ssize_t locomospi_storespitd(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPITD);
++      return count;
++}
++static DRIVER_ATTR(spitd, S_IWUSR | S_IRUGO, locomospi_showspitd, locomospi_storespitd);
++
++ssize_t locomospi_showspird(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPIRD));
++}
++
++ssize_t locomospi_storespird(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPIRD);
++      return count;
++}
++static DRIVER_ATTR(spird, S_IWUSR | S_IRUGO, locomospi_showspird, locomospi_storespird);
++
++ssize_t locomospi_showspits(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPITS));
++}
++
++ssize_t locomospi_storespits(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPITS);
++      return count;
++}
++static DRIVER_ATTR(spits, S_IWUSR | S_IRUGO, locomospi_showspits, locomospi_storespits);
++
++ssize_t locomospi_showspirs(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "0x%x\n", ioread16(spidev->base+LOCOMO_SPIRS));
++}
++
++ssize_t locomospi_storespirs(struct device_driver *drv, const char *buf, size_t count)
++{
++      iowrite16(simple_strtoul(buf, NULL, 16), spidev->base+LOCOMO_SPIRS);
++      return count;
++}
++static DRIVER_ATTR(spirs, S_IWUSR | S_IRUGO, locomospi_showspirs, locomospi_storespirs);
++
++/* MMC Card status */
++
++ssize_t locomospi_showpower(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "%d\n", spidev->card_power);
++}
++
++ssize_t locomospi_storepower(struct device_driver *drv, const char *buf, size_t count)
++{
++      locomospi_power(simple_strtoul(buf, NULL, 10));
++      return count;
++}
++static DRIVER_ATTR(cardpower, S_IWUSR | S_IRUGO, locomospi_showpower, locomospi_storepower);
++
++ssize_t locomospi_detectcard(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "%d\n",(locomo_gpio_read_level(spidev->ldev->dev.parent,LOCOMO_GPIO_CARD_DETECT)>0)?0:1);
++}
++static DRIVER_ATTR(carddetect, S_IRUGO, locomospi_detectcard, NULL);
++
++ssize_t locomospi_writeprotect(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "%d\n",(locomo_gpio_read_level(spidev->ldev->dev.parent,LOCOMO_GPIO_WRITE_PROT)>0)?1:0);
++}
++static DRIVER_ATTR(cardwriteprotect, S_IRUGO, locomospi_writeprotect, NULL);
++
++
++ssize_t locomospi_showclock(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "%d\n", spidev->clock);
++}
++
++ssize_t locomospi_storeclock(struct device_driver *drv, const char *buf, size_t count)
++{
++      locomospi_clock(simple_strtoul(buf, NULL, 10));
++      return count;
++}
++static DRIVER_ATTR(clock, S_IWUSR | S_IRUGO, locomospi_showclock, locomospi_storeclock);
++
++/* debug */
++ssize_t locomospi_showdelay(struct device_driver *drv, char *buf)
++{
++      return sprintf(buf, "%d\n", delay);
++}
++
++ssize_t locomospi_storedelay(struct device_driver *drv, const char *buf, size_t count)
++{
++      delay=simple_strtoul(buf,NULL,10);
++      return count;
++}
++static DRIVER_ATTR(delay, S_IWUSR | S_IRUGO, locomospi_showdelay, locomospi_storedelay);
++
++ssize_t locomospi_reset(struct device_driver *drv, const char *buf, size_t count)
++{
++      int choice = simple_strtoul(buf, NULL, 10);
++      char   buff[100];
++      u16 r; 
++      switch(choice){
++              case 0: locomospi_reg_release();
++                      schedule_timeout(2*HZ);
++                      locomospi_reg_open();
++                      break;
++              case 1: {
++                              char b1[] = "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
++                              char b2[] = "\xff\x40\x00\x00\x00\x00\x95\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
++                              locomospi_setcs(1);
++                              txrx(b1,b1,17);
++                              locomospi_setcs(0);
++                              txrx(b2,b2,18);
++
++                      }
++                      break;
++              case 2: locomospi_setcs(1);
++                      txrx("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",buff,18);
++                      locomospi_setcs(0);
++                      txrx("\xff\x40\x00\x00\x00\x00\x95\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",buff,17);
++                      break;
++              case 3: 
++                      r = ioread16(spidev->base+LOCOMO_SPIMD);
++                      r |= LOCOMO_SPI_LOOPBACK;
++                      iowrite16(r, spidev->base+LOCOMO_SPIMD);
++                      txrx("X",buff,1);
++                      txrx("abcdefghijklmnopqrstuvwxyz1234567890",buff,36);
++                      txrx("Y",buff,1);
++                      udelay(100);
++                      txrx("Z",buff,1);
++                      schedule_timeout(HZ);   
++                      txrx("abcdefghijklmnopqrstuvwxyz1234567890",buff,36);
++                      
++                      r = ioread16(spidev->base+LOCOMO_SPIMD);
++                      r &= ~LOCOMO_SPI_LOOPBACK;
++                      iowrite16(r, spidev->base+LOCOMO_SPIMD);
++                      break;
++              default: /* do nothing */;
++      }
++      return count;
++}
++static DRIVER_ATTR(reset, S_IWUSR, NULL, locomospi_reset);
++
++typedef struct locomo_reg_entry {
++        u32 addr;
++        char* name;
++} locomo_reg_entry_t;
++#define LCM     (sizeof(locomo_regs)/sizeof(locomo_reg_entry_t))
++static locomo_reg_entry_t locomo_regs[] =
++{
++/*      { addr,    name,     description } */
++        { 0x00, "VER" },
++        { 0x04, "ST" },
++        { 0x08, "C32K" },
++        { 0x0C, "ICR" },
++        { 0x10, "MCSX0" },
++        { 0x14, "MCSX1" },
++        { 0x18, "MCSX2" },
++        { 0x1C, "MCSX3" },
++        { 0x20, "ASD" },
++        { 0x28, "HSD" },
++        { 0x2C, "HSC" },
++        { 0x30, "TADC" },
++        { 0x38, "TC" },
++        { 0x3C, "CPSD" },
++        { 0x40, "KIB" },
++        { 0x44, "KSC" },
++        { 0x48, "KCMD" },
++        { 0x4C, "KIC" },
++        { 0x54, "ACC" },
++        { 0x60, "SPIMD" },
++        { 0x64, "SPICT" },
++        { 0x68, "SPIST" },
++        { 0x70, "SPIIS" },
++        { 0x74, "SPIWE" },
++        { 0x78, "SPIIE" },
++        { 0x7C, "SPIIR" },
++        { 0x80, "SPITD" },
++        { 0x84, "SPIRD" },
++        { 0x88, "SPITS" },
++        { 0x8C, "SPIRS" },
++        { 0x90, "GPD" },
++        { 0x94, "GPE" },
++        { 0x98, "GPL" },
++        { 0x9C, "GPO" },
++        { 0xa0, "GRIE" },
++        { 0xa4, "GFIE" },
++        { 0xa8, "GIS" },
++        { 0xac, "GWE" },
++        { 0xb0, "GIE" },
++        { 0xb4, "GIR" },
++        { 0xc8, "ALC" },
++        { 0xcc, "ALR" },
++        { 0xd0, "PAIF" },
++        { 0xd8, "LTC" },
++        { 0xdc, "LTINT" },
++        { 0xe0, "DAC" },
++        { 0xe8, "LPT0" },
++        { 0xec, "LPT1" },
++        { 0xfc, "TCR" },
++};
++
++static ssize_t lcm_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++      int base = spidev->base - LOCOMO_SPI; 
++      char b[4000]="";
++      char c[30];
++      int i;
++      for(i=0; i<LCM; i++){
++              sprintf(c,"%s:\t\t 0x%x\n",locomo_regs[i].name, ioread16(base + locomo_regs[i].addr));
++              strcat(b,c);
++      }
++      return sprintf(buf,"%s",b);
++}
++
++static DRIVER_ATTR(regs, 0444, lcm_show, NULL);
++
++
++/* SPI functions *************************************************************/
++
++static void locomospi_do_transfer(struct work_struct *wrk)
++{
++      struct list_head *mptr, *tptr, *mptr2;
++      struct spi_transfer *entry;
++      struct spi_message *msg;
++
++      list_for_each_safe(mptr, mptr2, &spidev->message_list){
++              msg = list_entry(mptr, struct spi_message, queue);
++
++              msg->status = 0;
++              msg->actual_length = 0;
++              list_for_each(tptr, &msg->transfers){
++                      entry = list_entry(tptr, struct spi_transfer, transfer_list);
++                      if(entry->tx_buf && entry->rx_buf){ //duplex
++                              txrx((char*) entry->tx_buf, (char*) entry->rx_buf, entry->len);                         
++                              msg->actual_length += entry->len;
++                      } else if(entry->tx_buf && !entry->rx_buf){ //write
++                              tx((char*) entry->tx_buf, entry->len);
++                              msg->actual_length += entry->len;
++                      } else if(!entry->tx_buf && entry->rx_buf){ //read
++                              rx((char*) entry->rx_buf, entry->len);
++                              msg->actual_length += entry->len;
++                      } else if(!entry->tx_buf && !entry->rx_buf){ //error
++                              dev_err(&spidev->sdev->dev, "do_transfer: no buffers allocated\n");
++                              msg->status = -EFAULT;
++                      }
++              }
++              spin_lock(&spidev->message_lock);
++              list_del(mptr);
++              spin_unlock(&spidev->message_lock);
++              msg->complete(msg->context);
++      }
++}
++
++static int locomospi_setup(struct spi_device *spi)
++{
++      if((spi->mode & SPI_CS_HIGH) != (spidev->spimode & SPI_CS_HIGH)) 
++              locomospi_setcs(spi->mode & SPI_CS_HIGH ? 1 : 0 );
++      if(spidev->clock != spi->max_speed_hz){
++              locomospi_clock(spi->max_speed_hz);
++      }
++      spidev->spimode = spi->mode;
++
++      return 0;
++}
++
++static int locomospi_transfer(struct spi_device *spi, struct spi_message *msg)
++{
++
++      spin_lock(&spidev->message_lock);
++      list_add_tail(&msg->queue, &spidev->message_list);
++      spin_unlock(&spidev->message_lock);
++      schedule_work(&transfer_wq);
++      return 0;
++}
++
++static struct locomo_driver locomo_spi_driver = {
++      .drv = {
++              .name = "locomo-spi",
++      },
++      .devid  = LOCOMO_DEVID_SPI,
++      .probe  = locomospi_probe,
++      .remove = locomospi_remove,
++#ifdef CONFIG_PM
++      .suspend = locomospi_suspend,
++      .resume = locomospi_resume,
++#endif
++};
++
++static struct spi_board_info board = {
++      .modalias       = "mmc_spi",
++      .platform_data  = (void*) &colliemmc,
++      .controller_data= NULL,
++      .irq            = 0,
++      .max_speed_hz   = 25000000,
++      .bus_num        = 0,
++      .chip_select    = 0,
++      .mode           = 0,
++};
++
++#ifdef CONFIG_PM
++static int locomospi_suspend(struct locomo_dev *dev, pm_message_t state)
++{
++      disable_irq(IRQ_LOCOMO_CARDDETECT);
++      return 0;
++}
++
++static int locomospi_resume(struct locomo_dev *dev)
++{
++      enable_irq(IRQ_LOCOMO_CARDDETECT);
++      return 0;
++}
++#endif
++
++static int locomospi_probe(struct locomo_dev *dev)
++{
++      int result=0;
++      printk(KERN_DEBUG "Collie MMC over SPI Driver\n");
++      spidev=kmalloc(sizeof(struct locomospi_dev),GFP_KERNEL);
++      if(!spidev){
++              return -ENOMEM;
++      }
++      spidev->ldev = dev;
++      spidev->card_power = 1;
++      spidev->spimode = 0;
++
++      if(!request_mem_region((unsigned long) dev->mapbase, dev->length, LOCOMO_DRIVER_NAME(dev))) {
++              dev_err(&dev->dev, " Can't aquire access to io memory\n");
++              return -EBUSY;
++      }
++      spidev->base=(unsigned long) dev->mapbase;
++      locomospi_reg_open();
++
++      locomo_gpio_set_dir(dev->dev.parent, LOCOMO_GPIO_CARD_POWER, 0);
++      locomo_gpio_set_dir(dev->dev.parent, LOCOMO_GPIO_CARD_DETECT, 1);
++      locomo_gpio_set_dir(dev->dev.parent, LOCOMO_GPIO_WRITE_PROT, 1);
++
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_cardpower);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_carddetect);
++      if(result){
++              dev_err(&dev->dev,"error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_cardwriteprotect);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spimd);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spict);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spist);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spitd);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spird);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spits);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_spirs);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_clock);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_delay);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_reset);
++      if(result){
++              dev_err(&dev->dev, "error creating driver attribute\n");
++              goto region;
++      }
++      result=driver_create_file(&locomo_spi_driver.drv, &driver_attr_regs);
++        if(result){
++                dev_err(&dev->dev, "error creating driver attribute\n");
++                goto region;
++        }
++      INIT_WORK(&transfer_wq, locomospi_do_transfer);
++      INIT_LIST_HEAD(&spidev->message_list);
++      spin_lock_init(&spidev->message_lock);
++      init_waitqueue_head(&spidev->waitqueue);
++      spidev->master=spi_alloc_master(&dev->dev,0);
++      if(!spidev->master){
++              result=-ENOMEM;
++              goto region;
++      }
++      spidev->master->bus_num = 0;
++      spidev->master->num_chipselect = 1;
++      spidev->master->setup = locomospi_setup;
++      spidev->master->transfer = locomospi_transfer;
++      spidev->sdev = spi_new_device(spidev->master, &board);
++      if(!spidev->sdev){
++              dev_err(&dev->dev, "failed to register spi device\n");
++              result = -EINVAL;
++              goto master;
++      }
++/*    result=request_irq(IRQ_LOCOMO_SPI_RFR, locomospi_testisr, IRQF_SHARED, "locomo-spi", (void*) spidev);
++      if(result) {
++              dev_err(&dev->dev, "Could not get IRQ: RFR\n");
++              goto regdev;
++      }
++      //disable_irq(IRQ_LOCOMO_SPI_RFR);
++*//*  result=request_irq(IRQ_LOCOMO_SPI_RFW, locomospi_testisr, IRQF_SHARED, "locomo-spi", (void*) spidev);
++      if(result) {
++              dev_err(&dev->dev, "Could not get IRQ: RFW\n");
++              goto irq1;
++      }
++      //disable_irq(IRQ_LOCOMO_SPI_RFW);
++*//*  result=request_irq(IRQ_LOCOMO_SPI_REND, locomospi_testisr, IRQF_SHARED, "locomo-spi", (void*) spidev);
++      if(result) {
++              dev_err(&dev->dev, "Could not get IRQ: REND\n");
++              goto irq2;
++      }
++*//*  result=request_irq(IRQ_LOCOMO_SPI_TEND, locomospi_testisr, IRQF_SHARED, "locomo-spi", (void*) spidev);
++      if(result) {
++              dev_err(&dev->dev, "Could not get IRQ: TEND\n");
++              goto irq3;
++      }
++      //disable_irq(IRQ_LOCOMO_SPI_TEND);     
++*/    spidev->workqueue = create_singlethread_workqueue("locomo-spi");
++      if(!spidev->workqueue){
++              dev_err(&dev->dev, "failed to create workqueue\n");
++              goto irq4;
++      }
++      result=spi_register_master(spidev->master);
++      if(result){
++              dev_err(&dev->dev, "failed to register spimaster\n");
++              goto wq;
++      }
++      return 0;
++wq:
++      destroy_workqueue(spidev->workqueue);
++irq4:
++//    free_irq(IRQ_LOCOMO_SPI_TEND, (void*) spidev);
++irq3:
++//    free_irq(IRQ_LOCOMO_SPI_REND, (void*) spidev);
++irq2:
++//    free_irq(IRQ_LOCOMO_SPI_RFW, (void*) spidev);
++irq1:
++//    free_irq(IRQ_LOCOMO_SPI_RFR, (void*) spidev);
++regdev:
++      spi_unregister_device(spidev->sdev);
++master:
++      spi_master_put(spidev->master);
++region:
++      release_mem_region((unsigned long) dev->mapbase, dev->length);
++      kfree(spidev);
++      return result;
++
++}
++
++static int locomospi_remove(struct locomo_dev *dev)
++{
++      spi_unregister_device(spidev->sdev);
++      spi_unregister_master(spidev->master);
++      destroy_workqueue(spidev->workqueue);
++      locomospi_reg_release();
++//    free_irq(IRQ_LOCOMO_SPI_TEND, (void*) spidev);
++//    free_irq(IRQ_LOCOMO_SPI_REND, (void*) spidev);
++//    free_irq(IRQ_LOCOMO_SPI_RFW, (void*) spidev);
++//    free_irq(IRQ_LOCOMO_SPI_RFR, (void*) spidev);
++      spi_master_put(spidev->master);
++      release_mem_region((unsigned long) dev->mapbase, dev->length);
++      kfree(spidev);
++      return 0;
++}
++
++
++
++static int __init locomospi_init(void)
++{
++      int ret = locomo_driver_register(&locomo_spi_driver);
++      if (ret)
++              return ret;
++
++
++      return 0;
++}
++
++static void __exit locomospi_exit(void)
++{
++      locomo_driver_unregister(&locomo_spi_driver);
++}
++
++module_init(locomospi_init);
++module_exit(locomospi_exit);
++
++MODULE_AUTHOR("Thomas Kunze thommy@tabao.de");
++MODULE_DESCRIPTION("Collie mmc driver");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/spi/locomo_spi.h b/drivers/spi/locomo_spi.h
+new file mode 100644
+index 0000000..7e1c0ce
+--- /dev/null
++++ b/drivers/spi/locomo_spi.h
+@@ -0,0 +1,75 @@
++#include <asm/hardware/locomo.h>
++#ifndef __LOCOMO_SPI_H__
++#define __LOCOMO_SPI_H__
++
++/* locomo-spi status register LOCOMO_SPIST */
++#define LOCOMO_SPI_TEND (1 << 3)        /* Transfer end bit */
++#define LOCOMO_SPI_REND (1 << 2)        /* Receive end bit */
++#define LOCOMO_SPI_RFW  (1 << 1)        /* write buffer bit */
++#define LOCOMO_SPI_RFR  (1)             /* read buffer bit */
++
++/* locomo-spi mode register LOCOMO_SPIMD */
++#define LOCOMO_SPI_LOOPBACK (1 << 15) /* loopback tx to rx    */
++#define LOCOMO_SPI_MSB1ST   (1 << 14) /* send MSB first       */
++#define LOCOMO_SPI_DOSTAT   (1 << 13) /* transmit line is idle high */
++#define LOCOMO_SPI_TCPOL    (1 << 11)         /* transmit CPOL (maybe affects CPHA too) */
++#define LOCOMO_SPI_RCPOL    (1 << 10) /* receive CPOL (maybe affects CPHA too) */
++#define       LOCOMO_SPI_TDINV    (1 << 9)    /* invert transmit line */
++#define LOCOMO_SPI_RDINV    (1 << 8)  /* invert receive line */
++#define LOCOMO_SPI_XON            (1 << 7)    /* enable spi controller clock */
++#define LOCOMO_SPI_XEN            (1 << 6)    /* clock bit write enable xon must be off, wait 300 us before xon->1 */ 
++#define LOCOMO_SPI_XSEL           0x0018      /* clock select                 */
++#define CLOCK_18MHZ       0           /* 18,432 MHz clock     */
++#define CLOCK_22MHZ       1           /* 22,5792 MHz clock    */
++#define CLOCK_25MHZ       2           /* 24,576 MHz clock     */
++#define LOCOMO_SPI_CLKSEL   0x7       
++#define DIV_1             0           /* don't divide clock   */
++#define DIV_2             1           /* divide clock by two  */
++#define DIV_4             2           /* divide clock by four */
++#define DIV_8             3           /* divide clock by eight*/
++#define DIV_64                    4           /* divide clock by 64 */
++
++/* locomo-spi control register LOCOMO_SPICT */
++#define LOCOMO_SPI_CRC16_7_B  (1 << 15)       /* 0: crc16 1: crc7 */
++#define LOCOMO_SPI_CRCRX_TX_B (1 << 14)
++#define LOCOMO_SPI_CRCRESET_B (1 << 13)
++#define LOCOMO_SPI_CEN                (1 << 7)        /* ?? enable */
++#define LOCOMO_SPI_CS         (1 << 6)        /* chip select */
++#define LOCOMO_SPI_UNIT16     (1 << 5)        /* 0: 8 bit units, 1: 16 bit unit */
++#define LOCOMO_SPI_ALIGNEN    (1 << 2)        /* align transfer enable */
++#define LOCOMO_SPI_RXWEN      (1 << 1)        /* continous receive */
++#define LOCOMO_SPI_RXUEN      (1 << 0)        /* aligned receive */
++
++#define IRQ_LOCOMO_CARDDETECT IRQ_LOCOMO_GPIO13
++
++
++struct locomospi_dev {
++      struct locomo_dev *ldev;
++      struct spi_master *master;
++      struct spi_device *sdev;
++      int card_power;
++      int clock_base;
++      int clock_div;
++      int clock;
++      unsigned long base;
++      u8 spimode;
++      wait_queue_head_t waitqueue;
++      struct workqueue_struct *workqueue;
++      struct list_head message_list;
++      spinlock_t message_lock;
++};
++
++
++static irqreturn_t    locomospi_cardisr(int, void*);
++static int    locomospi_probe(struct locomo_dev*);
++static int    locomospi_remove(struct locomo_dev*);
++static int    locomospi_carddetect(void);
++static void   locomospi_reg_open(void);
++static void   locomospi_reg_release(void);
++static int    tx(const char*, int);
++static int    rx(char *, int);
++static void   locomospi_power(int on);
++static int locomospi_suspend(struct locomo_dev *dev, pm_message_t state);
++static int locomospi_resume(struct locomo_dev *dev);
++static void locomospi_setcs(int high);
++#endif
diff --git a/packages/linux/linux-rp-2.6.26/collie_keymap.patch b/packages/linux/linux-rp-2.6.26/collie_keymap.patch
new file mode 100644 (file)
index 0000000..648821f
--- /dev/null
@@ -0,0 +1,420 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: linux-2.6.26/drivers/char/defkeymap.map
+===================================================================
+--- linux-2.6.26.orig/drivers/char/defkeymap.map       2008-07-13 23:51:29.000000000 +0200
++++ linux-2.6.26/drivers/char/defkeymap.map    2008-07-24 22:09:38.663284352 +0200
+@@ -1,264 +1,170 @@
+-# Default kernel keymap. This uses 7 modifier combinations.
+-keymaps 0-2,4-5,8,12
+-# Change the above line into
+-#     keymaps 0-2,4-6,8,12
+-# in case you want the entries
+-#     altgr   control keycode  83 = Boot            
+-#     altgr   control keycode 111 = Boot            
+-# below.
+-#
+-# In fact AltGr is used very little, and one more keymap can
+-# be saved by mapping AltGr to Alt (and adapting a few entries):
+-# keycode 100 = Alt
+-#
+-keycode   1 = Escape           Escape          
+-      alt     keycode   1 = Meta_Escape     
+-keycode   2 = one              exclam          
+-      alt     keycode   2 = Meta_one        
+-keycode   3 = two              at               at              
+-      control keycode   3 = nul             
+-      shift   control keycode   3 = nul             
+-      alt     keycode   3 = Meta_two        
+-keycode   4 = three            numbersign      
+-      control keycode   4 = Escape          
+-      alt     keycode   4 = Meta_three      
+-keycode   5 = four             dollar           dollar          
+-      control keycode   5 = Control_backslash
+-      alt     keycode   5 = Meta_four       
+-keycode   6 = five             percent         
+-      control keycode   6 = Control_bracketright
+-      alt     keycode   6 = Meta_five       
+-keycode   7 = six              asciicircum     
+-      control keycode   7 = Control_asciicircum
+-      alt     keycode   7 = Meta_six        
+-keycode   8 = seven            ampersand        braceleft       
+-      control keycode   8 = Control_underscore
+-      alt     keycode   8 = Meta_seven      
+-keycode   9 = eight            asterisk         bracketleft     
+-      control keycode   9 = Delete          
+-      alt     keycode   9 = Meta_eight      
+-keycode  10 = nine             parenleft        bracketright    
+-      alt     keycode  10 = Meta_nine       
+-keycode  11 = zero             parenright       braceright      
+-      alt     keycode  11 = Meta_zero       
+-keycode  12 = minus            underscore       backslash       
+-      control keycode  12 = Control_underscore
+-      shift   control keycode  12 = Control_underscore
+-      alt     keycode  12 = Meta_minus      
+-keycode  13 = equal            plus            
+-      alt     keycode  13 = Meta_equal      
+-keycode  14 = Delete           Delete          
+-      control keycode  14 = BackSpace
+-      alt     keycode  14 = Meta_Delete     
++# Note:
++# The way in which the modifiers are handled are quite different
++# than how they were handled in the 2.4.6-rmk1-np2-embedix kernel.
++# 
++# Here, we simply pass up Fn as Control, and the german accent key
++# as Altgr, and simply use a proper keymap.  Said keymap is as
++# follows.
++# keymaps 0-2,4-5,8,12,20
++keycode  14 = BackSpace
++      shift   keycode  14 = BackSpace
++      control keycode  14 = Delete
++      shiftl  control keycode  14 = bracketleft
++      control shiftr  keycode  14 = bracketleft
+ keycode  15 = Tab              Tab             
+-      alt     keycode  15 = Meta_Tab        
++      shift   keycode  15 = backslash
++      control keycode  15 = Caps_Lock
++      shiftl  control keycode  15 = Caps_Lock
++      control shiftr  keycode  15 = Caps_Lock
+ keycode  16 = q               
++      control keycode  16 = one             
++      shiftl  control keycode  16 = Control_q       
++      control shiftr  keycode  16 = Meta_q       
+ keycode  17 = w               
+-keycode  18 = e
+-      altgr   keycode  18 = Hex_E   
++      control keycode  17 = two       
++      shiftl  control keycode  17 = Control_w       
++      control shiftr  keycode  17 = Meta_w       
++keycode  18 = e               
++      control keycode  18 = three       
++      shiftl  control keycode  18 = Control_e       
++      control shiftr  keycode  18 = Meta_e       
+ keycode  19 = r               
++      control keycode  19 = four       
++      shiftr  control keycode  19 = Control_r       
++      control shiftl  keycode  19 = Meta_r       
+ keycode  20 = t               
++      control keycode  20 = five       
++      shiftl  control keycode  20 = Control_t       
++      control shiftr  keycode  20 = Meta_t       
+ keycode  21 = y               
++      control keycode  21 = six       
++      shiftl  control keycode  21 = Control_y       
++      control shiftr  keycode  21 = Meta_y       
+ keycode  22 = u               
++      control keycode  22 = seven       
++      shiftl  control keycode  22 = Control_u       
++      control shiftr  keycode  22 = Meta_u       
+ keycode  23 = i               
++      control keycode  23 = eight             
++      shiftl  control keycode  23 = Control_i             
++      control shiftr  keycode  23 = Meta_i             
+ keycode  24 = o               
++      control keycode  24 = nine       
++      shiftl  control keycode  24 = Control_o       
++      control shiftr  keycode  24 = Meta_o       
+ keycode  25 = p               
+-keycode  26 = bracketleft      braceleft       
+-      control keycode  26 = Escape          
+-      alt     keycode  26 = Meta_bracketleft
+-keycode  27 = bracketright     braceright       asciitilde      
+-      control keycode  27 = Control_bracketright
+-      alt     keycode  27 = Meta_bracketright
++      control keycode  25 = zero       
++      shiftl  control keycode  25 = Control_p       
++      control shiftr  keycode  25 = Meta_p       
+ keycode  28 = Return          
+-      alt     keycode  28 = Meta_Control_m  
++      control keycode  28 = greater
++      shiftl  control keycode  28 = braceright
++      control shiftr  keycode  28 = braceright
+ keycode  29 = Control         
+-keycode  30 = a
+-      altgr   keycode  30 = Hex_A
++keycode  30 = a               
++      control keycode  30 = exclam       
++      shiftl  control keycode  30 = Control_a       
++      control shiftr  keycode  30 = Meta_a       
+ keycode  31 = s               
+-keycode  32 = d
+-      altgr   keycode  32 = Hex_D   
+-keycode  33 = f
+-      altgr   keycode  33 = Hex_F               
++      control keycode  31 = at       
++      shiftl  control keycode  31 = Control_s       
++      control shiftr  keycode  31 = Meta_s       
++keycode  32 = d               
++      control keycode  32 = numbersign
++      shiftl  control keycode  32 = Control_d       
++      control shiftr  keycode  32 = Meta_d       
++keycode  33 = f               
++      control keycode  33 = dollar       
++      shiftl  control keycode  33 = Control_f       
++      control shiftr  keycode  33 = Meta_f       
+ keycode  34 = g               
++      control keycode  34 = percent       
++      shiftl  control keycode  34 = Control_g       
++      control shiftr  keycode  34 = Meta_g       
+ keycode  35 = h               
++      control keycode  35 = underscore       
++      shiftl  control keycode  35 = BackSpace       
++      control shiftr  keycode  35 = BackSpace       
+ keycode  36 = j               
++      control keycode  36 = ampersand        
++      shiftl  control keycode  36 = Linefeed        
++      control shiftr  keycode  36 = Linefeed        
+ keycode  37 = k               
++      control keycode  37 = asterisk       
++      shiftl  control keycode  37 = Control_k       
++      control shiftr  keycode  37 = Meta_k       
+ keycode  38 = l               
+-keycode  39 = semicolon        colon           
+-      alt     keycode  39 = Meta_semicolon  
+-keycode  40 = apostrophe       quotedbl        
+-      control keycode  40 = Control_g       
+-      alt     keycode  40 = Meta_apostrophe 
+-keycode  41 = grave            asciitilde      
+-      control keycode  41 = nul             
+-      alt     keycode  41 = Meta_grave      
++      control keycode  38 = bracketleft       
++      shiftl  control keycode  51 = parenleft
++      control shiftr  keycode  51 = parenleft
++keycode  40 = apostrophe       quotedbl
++      control keycode  40 = asciitilde       
++      shiftl  control keycode  40 = asciicircum
++      control shiftr  keycode  40 = asciicircum       
+ keycode  42 = Shift           
+-keycode  43 = backslash        bar             
+-      control keycode  43 = Control_backslash
+-      alt     keycode  43 = Meta_backslash  
+ keycode  44 = z               
++      control keycode  44 = Control_z       
++      shiftl  control keycode  44 = Control_z       
++      control shiftr  keycode  44 = Meta_z       
+ keycode  45 = x               
+-keycode  46 = c
+-      altgr   keycode  46 = Hex_C   
++      control keycode  45 = Control_x       
++      shiftl  control keycode  45 = Control_x       
++      control shiftr  keycode  45 = Meta_x       
++keycode  46 = c               
++      control keycode  46 = Control_c       
++      shiftl  control keycode  46 = Control_c       
++      control shiftr  keycode  46 = Meta_c       
+ keycode  47 = v               
+-keycode  48 = b
+-      altgr   keycode  48 = Hex_B
++      control keycode  47 = Control_v       
++      shiftl  control keycode  47 = Control_v       
++      control shiftr  keycode  47 = Meta_v       
++## current location ##
++keycode  48 = b               
++      control keycode  48 = minus       
++      shiftl  control keycode  48 = Control_b       
++      control shiftr  keycode  48 = Meta_b       
+ keycode  49 = n               
++      control keycode  49 = plus       
++      shiftl  control keycode  49 = Control_n       
++      control shiftr  keycode  49 = Meta_n       
+ keycode  50 = m               
+-keycode  51 = comma            less            
+-      alt     keycode  51 = Meta_comma      
+-keycode  52 = period           greater         
+-      control keycode  52 = Compose         
+-      alt     keycode  52 = Meta_period     
+-keycode  53 = slash            question        
+-      control keycode  53 = Delete          
+-      alt     keycode  53 = Meta_slash      
+-keycode  54 = Shift           
++      control keycode  50 = equal       
++      shiftl  control keycode  50 = Control_m       
++      control shiftr  keycode  50 = Meta_m       
++keycode  51 = comma
++      shift   keycode  51 = semicolon
++      control keycode  51 = bracketright
++      shiftl  control keycode  51 = parenright
++      control shiftr  keycode  51 = parenright
++keycode  52 = period
++      shift   keycode  52 = colon
++      control keycode  52 = less
++      shiftl  control keycode  52 = braceleft
++      control shiftr  keycode  52 = braceleft
++keycode  53 = slash
++      shift   keycode  53 = question
++      control keycode  53 = Num_Lock
++      shiftl  control keycode  53 = Num_Lock
++      control shiftr  keycode  53 = Num_Lock
++keycode  54 = AltGr
+ keycode  55 = KP_Multiply     
+ keycode  56 = Alt             
+-keycode  57 = space            space           
+-      control keycode  57 = nul             
+-      alt     keycode  57 = Meta_space      
+-keycode  58 = Caps_Lock       
+-keycode  59 = F1               F11              Console_13      
+-      control keycode  59 = F1              
+-      alt     keycode  59 = Console_1       
+-      control alt     keycode  59 = Console_1       
+-keycode  60 = F2               F12              Console_14      
+-      control keycode  60 = F2              
+-      alt     keycode  60 = Console_2       
+-      control alt     keycode  60 = Console_2       
+-keycode  61 = F3               F13              Console_15      
+-      control keycode  61 = F3              
+-      alt     keycode  61 = Console_3       
+-      control alt     keycode  61 = Console_3       
+-keycode  62 = F4               F14              Console_16      
+-      control keycode  62 = F4              
+-      alt     keycode  62 = Console_4       
+-      control alt     keycode  62 = Console_4       
+-keycode  63 = F5               F15              Console_17      
+-      control keycode  63 = F5              
+-      alt     keycode  63 = Console_5       
+-      control alt     keycode  63 = Console_5       
+-keycode  64 = F6               F16              Console_18      
+-      control keycode  64 = F6              
+-      alt     keycode  64 = Console_6       
+-      control alt     keycode  64 = Console_6       
+-keycode  65 = F7               F17              Console_19      
+-      control keycode  65 = F7              
+-      alt     keycode  65 = Console_7       
+-      control alt     keycode  65 = Console_7       
+-keycode  66 = F8               F18              Console_20      
+-      control keycode  66 = F8              
+-      alt     keycode  66 = Console_8       
+-      control alt     keycode  66 = Console_8       
+-keycode  67 = F9               F19              Console_21      
+-      control keycode  67 = F9              
+-      alt     keycode  67 = Console_9       
+-      control alt     keycode  67 = Console_9       
+-keycode  68 = F10              F20              Console_22      
+-      control keycode  68 = F10             
+-      alt     keycode  68 = Console_10      
+-      control alt     keycode  68 = Console_10      
+-keycode  69 = Num_Lock
+-      shift   keycode  69 = Bare_Num_Lock
+-keycode  70 = Scroll_Lock      Show_Memory      Show_Registers  
+-      control keycode  70 = Show_State      
+-      alt     keycode  70 = Scroll_Lock     
+-keycode  71 = KP_7            
+-      alt     keycode  71 = Ascii_7         
+-      altgr   keycode  71 = Hex_7         
+-keycode  72 = KP_8            
+-      alt     keycode  72 = Ascii_8         
+-      altgr   keycode  72 = Hex_8         
+-keycode  73 = KP_9            
+-      alt     keycode  73 = Ascii_9         
+-      altgr   keycode  73 = Hex_9         
+-keycode  74 = KP_Subtract     
+-keycode  75 = KP_4            
+-      alt     keycode  75 = Ascii_4         
+-      altgr   keycode  75 = Hex_4         
+-keycode  76 = KP_5            
+-      alt     keycode  76 = Ascii_5         
+-      altgr   keycode  76 = Hex_5         
+-keycode  77 = KP_6            
+-      alt     keycode  77 = Ascii_6         
+-      altgr   keycode  77 = Hex_6         
+-keycode  78 = KP_Add          
+-keycode  79 = KP_1            
+-      alt     keycode  79 = Ascii_1         
+-      altgr   keycode  79 = Hex_1         
+-keycode  80 = KP_2            
+-      alt     keycode  80 = Ascii_2         
+-      altgr   keycode  80 = Hex_2         
+-keycode  81 = KP_3            
+-      alt     keycode  81 = Ascii_3         
+-      altgr   keycode  81 = Hex_3         
+-keycode  82 = KP_0            
+-      alt     keycode  82 = Ascii_0         
+-      altgr   keycode  82 = Hex_0         
+-keycode  83 = KP_Period       
+-#     altgr   control keycode  83 = Boot            
+-      control alt     keycode  83 = Boot            
+-keycode  84 = Last_Console    
+-keycode  85 =
+-keycode  86 = less             greater          bar             
+-      alt     keycode  86 = Meta_less       
+-keycode  87 = F11              F11              Console_23      
+-      control keycode  87 = F11             
+-      alt     keycode  87 = Console_11      
+-      control alt     keycode  87 = Console_11      
+-keycode  88 = F12              F12              Console_24      
+-      control keycode  88 = F12             
+-      alt     keycode  88 = Console_12      
+-      control alt     keycode  88 = Console_12      
+-keycode  89 =
+-keycode  90 =
+-keycode  91 =
+-keycode  92 =
+-keycode  93 =
+-keycode  94 =
+-keycode  95 =
+-keycode  96 = KP_Enter        
+-keycode  97 = Control         
+-keycode  98 = KP_Divide       
++keycode  57 = space
++      shift   keycode  57 = bar
++      control keycode  57 = nul
++      shiftl  control keycode  57 = grave
++      control shiftr  keycode  57 = grave
++keycode  67 = Control
++keycode  87 = Return
+ keycode  99 = Control_backslash
+       control keycode  99 = Control_backslash
+-      alt     keycode  99 = Control_backslash
+ keycode 100 = AltGr           
+-keycode 101 = Break           
+-keycode 102 = Find            
+ keycode 103 = Up              
+-keycode 104 = Prior           
+-      shift   keycode 104 = Scroll_Backward 
+ keycode 105 = Left            
+-      alt     keycode 105 = Decr_Console
+ keycode 106 = Right           
+-      alt     keycode 106 = Incr_Console
+ keycode 107 = Select          
+ keycode 108 = Down            
+-keycode 109 = Next            
+-      shift   keycode 109 = Scroll_Forward  
+-keycode 110 = Insert          
+-keycode 111 = Remove          
+-#     altgr   control keycode 111 = Boot            
+-      control alt     keycode 111 = Boot            
+-keycode 112 = Macro           
+-keycode 113 = F13             
+-keycode 114 = F14             
+-keycode 115 = Help            
+-keycode 116 = Do              
+-keycode 117 = F17             
+-keycode 118 = KP_MinPlus      
+-keycode 119 = Pause           
+-keycode 120 =
+-keycode 121 =
+-keycode 122 =
+-keycode 123 =
+-keycode 124 =
+-keycode 125 =
+-keycode 126 =
+-keycode 127 =
++keycode 116  = Escape          
+ string F1 = "\033[[A"
+ string F2 = "\033[[B"
+ string F3 = "\033[[C"
+Index: linux-2.6.26/drivers/char/Makefile
+===================================================================
+--- linux-2.6.26.orig/drivers/char/Makefile    2008-07-13 23:51:29.000000000 +0200
++++ linux-2.6.26/drivers/char/Makefile 2008-07-24 21:57:12.744280423 +0200
+@@ -127,7 +127,7 @@
+ # Uncomment if you're changing the keymap and have an appropriate
+ # loadkeys version for the map. By default, we'll use the shipped
+ # versions.
+-# GENERATE_KEYMAP := 1
++ GENERATE_KEYMAP := 1
+ ifdef GENERATE_KEYMAP
index 271bfd5..9e3e962 100644 (file)
@@ -1,13 +1,13 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc8
-# Mon Jan 21 22:14:20 2008
+# Linux kernel version: 2.6.26
+# Fri Jul 25 00:01:53 2008
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_TIME is not set
-# CONFIG_GENERIC_CLOCKEVENTS is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_MMU=y
 # CONFIG_NO_IOPORT is not set
 CONFIG_GENERIC_HARDIRQS=y
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
 CONFIG_ZONE_DMA=y
 CONFIG_ARCH_MTD_XIP=y
 CONFIG_VECTORS_BASE=0xffff0000
@@ -42,23 +43,22 @@ CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT_V3=y
 # CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_PID_NS is not set
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=14
 # CONFIG_CGROUPS is not set
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
-# CONFIG_FAIR_CGROUP_SCHED is not set
-# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
 # CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 CONFIG_EMBEDDED=y
 CONFIG_UID16=y
 CONFIG_SYSCTL_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL_CHECK=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -66,27 +66,37 @@ CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 # CONFIG_ELF_CORE is not set
+CONFIG_COMPAT_BRK=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_ANON_INODES=y
 CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLAB=y
 # CONFIG_SLUB is not set
 # CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+# CONFIG_HAVE_DMA_ATTRS is not set
+CONFIG_PROC_PAGE_MONITOR=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+# CONFIG_MODULE_UNLOAD is not set
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
+# CONFIG_KMOD is not set
 CONFIG_BLOCK=y
 # CONFIG_LBD is not set
 # CONFIG_BLK_DEV_IO_TRACE is not set
@@ -105,6 +115,7 @@ CONFIG_DEFAULT_AS=y
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_CLASSIC_RCU=y
 
 #
 # System Type
@@ -133,6 +144,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_RPC is not set
@@ -142,6 +154,7 @@ CONFIG_ARCH_SA1100=y
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_MSM7X00A is not set
 
 #
 # SA11x0 Implementations
@@ -176,6 +189,7 @@ CONFIG_CPU_32=y
 CONFIG_CPU_SA1100=y
 CONFIG_CPU_32v4=y
 CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_PABRT_NOIFAR=y
 CONFIG_CPU_CACHE_V4WB=y
 CONFIG_CPU_CACHE_VIVT=y
 CONFIG_CPU_TLB_V4WB=y
@@ -190,7 +204,6 @@ CONFIG_CPU_CP15_MMU=y
 # CONFIG_OUTER_CACHE is not set
 CONFIG_SHARP_LOCOMO=y
 CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
 CONFIG_SHARP_SCOOP=y
 
 #
@@ -199,9 +212,9 @@ CONFIG_SHARP_SCOOP=y
 CONFIG_ISA=y
 # CONFIG_PCI_SYSCALL is not set
 # CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_PCCARD=m
+CONFIG_PCCARD=y
 # CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
+CONFIG_PCMCIA=y
 CONFIG_PCMCIA_LOAD_CIS=y
 CONFIG_PCMCIA_IOCTL=y
 
@@ -210,18 +223,21 @@ CONFIG_PCMCIA_IOCTL=y
 #
 # CONFIG_I82365 is not set
 # CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=m
+CONFIG_PCMCIA_SA1100=y
 
 #
 # Kernel Features
 #
-# CONFIG_TICK_ONESHOT is not set
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
 CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
+# CONFIG_AEABI is not set
 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_NODES_SHIFT=2
 CONFIG_SELECT_MEMORY_MODEL=y
 # CONFIG_FLATMEM_MANUAL is not set
@@ -232,6 +248,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_NEED_MULTIPLE_NODES=y
 # CONFIG_SPARSEMEM_STATIC is not set
 # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4096
 # CONFIG_RESOURCES_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=1
@@ -245,7 +262,7 @@ CONFIG_ALIGNMENT_TRAP=y
 #
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttySA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable debug"
+CONFIG_CMDLINE="console=ttySA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=64M fbcon=rotate:1 dyntick=enable debug"
 # CONFIG_XIP_KERNEL is not set
 CONFIG_KEXEC=y
 CONFIG_ATAGS_PROC=y
@@ -262,9 +279,8 @@ CONFIG_ATAGS_PROC=y
 #
 # At least one emulation must be selected
 #
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
 
 #
 # Userspace binary formats
@@ -272,18 +288,13 @@ CONFIG_FPE_NWFPE=y
 CONFIG_BINFMT_ELF=y
 CONFIG_BINFMT_AOUT=m
 CONFIG_BINFMT_MISC=m
+CONFIG_ARTHUR=m
 
 #
 # Power management options
 #
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=m
-CONFIG_INPUT_APMPOWER=m
+# CONFIG_PM is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
 
 #
 # Networking
@@ -293,34 +304,36 @@ CONFIG_NET=y
 #
 # Networking options
 #
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=m
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
 CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
+# CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_XFRM_MIGRATE is not set
-# CONFIG_NET_KEY is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_ADVANCED_ROUTER is not set
 CONFIG_IP_FIB_HASH=y
 # CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
 # CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_SYN_COOKIES is not set
+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=m
-CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_LRO=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
 # CONFIG_TCP_CONG_ADVANCED is not set
 CONFIG_TCP_CONG_CUBIC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -333,114 +346,288 @@ CONFIG_IPV6=m
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
+CONFIG_IPV6_MIP6=m
 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_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
 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 is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
+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=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+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_XTABLES=m
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
 # CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
-# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
 # CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
-# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
-# CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
-# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_MATCH_TIME is not set
-# CONFIG_NETFILTER_XT_MATCH_U32 is not set
-# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+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_HELPER=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_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+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=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 
 #
 # IP: Netfilter Configuration
 #
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
 CONFIG_IP_NF_QUEUE=m
 CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
 CONFIG_IP_NF_MATCH_RECENT=m
 CONFIG_IP_NF_MATCH_ECN=m
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
 CONFIG_IP_NF_MATCH_ADDRTYPE=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_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=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=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
 CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_RAW=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
 
 #
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# 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
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# DECnet: Netfilter Configuration
+#
+CONFIG_DECNET_NF_GRABULATOR=m
+
+#
+# Bridge: Netfilter Configuration
+#
+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_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=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+CONFIG_IP_DCCP_ACKVEC=y
+
+#
+# DCCP CCIDs Configuration (EXPERIMENTAL)
+#
+CONFIG_IP_DCCP_CCID2=m
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+CONFIG_IP_DCCP_CCID3=m
+# CONFIG_IP_DCCP_CCID3_DEBUG is not set
+CONFIG_IP_DCCP_CCID3_RTO=100
+CONFIG_IP_DCCP_TFRC_LIB=m
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+CONFIG_DECNET=m
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_COPS=m
+# CONFIG_COPS_DAYNA is not set
+# CONFIG_COPS_TANGENT is not set
+CONFIG_IPDDP=m
+# CONFIG_IPDDP_ENCAP is not set
+# CONFIG_IPDDP_DECAP is not set
+CONFIG_X25=m
+CONFIG_LAPB=m
 # CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_SCHED is not set
+CONFIG_WAN_ROUTER=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=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
+
+#
+# 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 is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+# 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
 
 #
 # Network testing
 #
-# CONFIG_NET_PKTGEN is not set
+CONFIG_NET_PKTGEN=m
 # CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
 CONFIG_IRDA=m
 
 #
 # IrDA protocols
 #
 CONFIG_IRLAN=m
-CONFIG_IRNET=m
+# CONFIG_IRNET is not set
 CONFIG_IRCOMM=m
 # CONFIG_IRDA_ULTRA is not set
 
@@ -466,15 +653,6 @@ CONFIG_IRTTY_SIR=m
 # CONFIG_DONGLE is not set
 
 #
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
 # FIR device drivers
 #
 CONFIG_SA1100_FIR=m
@@ -482,41 +660,64 @@ CONFIG_BT=m
 CONFIG_BT_L2CAP=m
 CONFIG_BT_SCO=m
 CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
+# CONFIG_BT_RFCOMM_TTY is not set
 CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_BNEP_MC_FILTER is not set
+# CONFIG_BT_BNEP_PROTO_FILTER is not set
 CONFIG_BT_HIDP=m
 
 #
 # Bluetooth device drivers
 #
-# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_H4 is not set
+# CONFIG_BT_HCIUART_BCSP is not set
 # CONFIG_BT_HCIUART_LL is not set
 CONFIG_BT_HCIDTL1=m
 CONFIG_BT_HCIBT3C=m
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+# CONFIG_RXKAD is not set
 
 #
 # Wireless
 #
-# CONFIG_CFG80211 is not set
+CONFIG_CFG80211=m
+CONFIG_NL80211=y
 CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
+CONFIG_MAC80211=m
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+# CONFIG_MAC80211_RC_DEFAULT_NONE is not set
+
+#
+# Selecting 'y' for an algorithm will
+#
+
+#
+# build the algorithm into mac80211.
+#
+CONFIG_MAC80211_RC_DEFAULT="pid"
+CONFIG_MAC80211_RC_PID=y
+# CONFIG_MAC80211_MESH is not set
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
+# CONFIG_MAC80211_DEBUG is not set
 CONFIG_IEEE80211=m
 # CONFIG_IEEE80211_DEBUG is not set
 CONFIG_IEEE80211_CRYPT_WEP=m
 CONFIG_IEEE80211_CRYPT_CCMP=m
 CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
 # CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
+CONFIG_NET_9P=m
+# CONFIG_NET_9P_DEBUG is not set
 
 #
 # Device Drivers
@@ -527,38 +728,39 @@ CONFIG_IEEE80211_CRYPT_TKIP=m
 #
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
 CONFIG_FW_LOADER=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_SYS_HYPERVISOR is not set
 # CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
+CONFIG_MTD=m
 # CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_CONCAT=m
+# CONFIG_MTD_PARTITIONS is not set
 
 #
 # User Modules And Translation Layers
 #
 CONFIG_MTD_CHAR=m
-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
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+# CONFIG_NFTL_RW is not set
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+CONFIG_MTD_OOPS=m
 
 #
 # RAM/ROM/Flash chip drivers
 #
-# CONFIG_MTD_CFI is not set
+CONFIG_MTD_CFI=m
 # CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
+# 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
@@ -569,27 +771,37 @@ 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_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_SHARP=y
+CONFIG_MTD_CFI_INTELEXT=m
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+# CONFIG_MTD_XIP is not set
 
 #
 # Mapping drivers for chip access
 #
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SA1100=y
-# CONFIG_MTD_PLATRAM is not set
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_PLATRAM=m
 
 #
 # Self-contained MTD device drivers
 #
 # CONFIG_MTD_DATAFLASH is not set
 # CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_PHRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
 
 #
 # Disk-On-Chip Device Drivers
@@ -603,58 +815,56 @@ CONFIG_MTD_SA1100=y
 #
 # UBI - Unsorted block images
 #
-# CONFIG_MTD_UBI is not set
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+# CONFIG_MTD_UBI_GLUEBI is not set
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_DEBUG is not set
 # CONFIG_PARPORT is not set
 # CONFIG_PNP 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_RAM is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
 # CONFIG_MISC_DEVICES is not set
+CONFIG_HAVE_IDE=y
 CONFIG_IDE=m
 CONFIG_IDE_MAX_HWIFS=4
 CONFIG_BLK_DEV_IDE=m
 
 #
-# Please see Documentation/ide.txt for help/info on IDE drives
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
 #
 # CONFIG_BLK_DEV_IDE_SATA is not set
 CONFIG_BLK_DEV_IDEDISK=m
 # CONFIG_IDEDISK_MULTI_MODE is not set
 CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
+CONFIG_BLK_DEV_IDECD=m
+# CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS is not set
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+CONFIG_BLK_DEV_IDESCSI=m
 # CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_PROC_FS=y
 
 #
 # IDE chipset support/bugfixes
 #
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_BLK_DEV_PLATFORM is not set
-# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
+CONFIG_BLK_DEV_PLATFORM=m
 # CONFIG_BLK_DEV_IDEDMA is not set
-CONFIG_IDE_ARCH_OBSOLETE_INIT=y
 # CONFIG_BLK_DEV_HD is not set
 
 #
@@ -663,8 +873,8 @@ CONFIG_IDE_ARCH_OBSOLETE_INIT=y
 # 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_TGT=m
+CONFIG_SCSI_NETLINK=y
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -676,12 +886,12 @@ CONFIG_CHR_DEV_OSST=m
 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_CHR_DEV_SCH=m
 
 #
 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
 #
-CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_MULTI_LUN is not set
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
 # CONFIG_SCSI_SCAN_ASYNC is not set
@@ -690,30 +900,34 @@ 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_SCSI_AHA152X is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
-# CONFIG_ATA is not set
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+# CONFIG_SCSI_FC_TGT_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+# CONFIG_SCSI_SAS_ATA is not set
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
+CONFIG_SCSI_SRP_ATTRS=m
+# CONFIG_SCSI_SRP_TGT_ATTRS is not set
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_SCSI_LOWLEVEL_PCMCIA=y
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+CONFIG_PCMCIA_QLOGIC=m
+CONFIG_PCMCIA_SYM53C500=m
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_SATA_PMP=y
+CONFIG_ATA_SFF=y
+# CONFIG_SATA_MV is not set
+# CONFIG_PATA_LEGACY is not set
+CONFIG_PATA_PCMCIA=m
+# CONFIG_PATA_QDI is not set
+# CONFIG_PATA_WINBOND_VLB is not set
+# CONFIG_PATA_PLATFORM is not set
 # CONFIG_MD is not set
 CONFIG_NETDEVICES=y
 # CONFIG_NETDEVICES_MULTIQUEUE is not set
@@ -722,29 +936,12 @@ CONFIG_NETDEVICES=y
 # CONFIG_MACVLAN is not set
 # CONFIG_EQUALIZER is not set
 CONFIG_TUN=m
-# CONFIG_VETH is not set
+CONFIG_VETH=m
 # CONFIG_ARCNET is not set
-# CONFIG_PHYLIB is not set
-CONFIG_NET_ETHERNET=y
+# CONFIG_NET_ETHERNET is not set
 CONFIG_MII=m
-# CONFIG_AX88796 is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_B44 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NETDEV_10000=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
 # CONFIG_TR is not set
 
 #
@@ -764,36 +961,56 @@ CONFIG_ATMEL=m
 CONFIG_PCMCIA_ATMEL=m
 CONFIG_AIRO_CS=m
 CONFIG_PCMCIA_WL3501=m
+CONFIG_P54_COMMON=m
+# CONFIG_IWLWIFI_LEDS is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
 CONFIG_HOSTAP_CS=m
+CONFIG_B43=m
+CONFIG_B43_PCMCIA=y
+CONFIG_B43_PIO=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_DEBUG=y
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_RT2X00=m
 CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
 CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
 # CONFIG_WAN is not set
+# CONFIG_ATM_DRIVERS is not set
 CONFIG_PPP=m
 # CONFIG_PPP_MULTILINK is not set
 # CONFIG_PPP_FILTER is not set
 CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_SYNC_TTY=m
 CONFIG_PPP_DEFLATE=m
 CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOATM is not set
 # CONFIG_PPPOL2TP is not set
-# CONFIG_SLIP is not set
+CONFIG_SLIP=m
+# CONFIG_SLIP_COMPRESSED is not set
 CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_NETCONSOLE=m
+# CONFIG_NETCONSOLE_DYNAMIC is not set
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
 # CONFIG_ISDN is not set
 
 #
@@ -806,14 +1023,10 @@ CONFIG_INPUT=y
 #
 # Userland interfaces
 #
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+CONFIG_INPUT_JOYDEV=m
 CONFIG_INPUT_EVDEV=m
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=m
+CONFIG_INPUT_EVBUG=m
 
 #
 # Input Device Drivers
@@ -822,7 +1035,7 @@ CONFIG_INPUT_KEYBOARD=y
 # CONFIG_KEYBOARD_ATKBD is not set
 # CONFIG_KEYBOARD_SUNKBD is not set
 # CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=m
+CONFIG_KEYBOARD_LOCOMO=y
 # CONFIG_KEYBOARD_XTKBD is not set
 # CONFIG_KEYBOARD_NEWTON is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
@@ -830,8 +1043,19 @@ CONFIG_KEYBOARD_LOCOMO=m
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH 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_UCB1400 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
 
 #
 # Hardware I/O ports
@@ -846,13 +1070,14 @@ CONFIG_VT=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
 # CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
 # CONFIG_SERIAL_NONSTANDARD is not set
 
 #
 # Serial drivers
 #
 CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_CS is not set
 CONFIG_SERIAL_8250_NR_UARTS=4
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
 # CONFIG_SERIAL_8250_EXTENDED is not set
@@ -875,17 +1100,46 @@ CONFIG_HW_RANDOM=m
 #
 # PCMCIA character devices
 #
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
+CONFIG_SYNCLINK_CS=m
+CONFIG_CARDMAN_4000=m
+CONFIG_CARDMAN_4040=m
+CONFIG_IPWIRELESS=m
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_TCG_TPM is not set
 CONFIG_DEVPORT=y
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_ALGOBIT=m
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELEKTOR is not set
+CONFIG_I2C_GPIO=m
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_MAX6875 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_DEBUG is not set
 CONFIG_SPI_MASTER=y
@@ -894,6 +1148,7 @@ CONFIG_SPI_MASTER=y
 # SPI Master Controller Drivers
 #
 # CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_LOCOMO=y
 
 #
 # SPI Protocol Masters
@@ -901,21 +1156,66 @@ CONFIG_SPI_MASTER=y
 # CONFIG_SPI_AT25 is not set
 # CONFIG_SPI_SPIDEV is not set
 # CONFIG_SPI_TLE62X0 is not set
+CONFIG_HAVE_GPIO_LIB=y
+
+#
+# GPIO Support
+#
+# CONFIG_DEBUG_GPIO is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MCP23S08 is not set
 # CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
+CONFIG_POWER_SUPPLY=m
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_PDA_POWER=m
+# CONFIG_BATTERY_DS2760 is not set
 # CONFIG_HWMON is not set
-# CONFIG_WATCHDOG is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SA1100_WATCHDOG=m
+
+#
+# ISA-based Watchdog Cards
+#
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_WDT is not set
 
 #
 # Sonics Silicon Backplane
 #
 CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
+CONFIG_SSB_PCMCIAHOST=y
+# CONFIG_SSB_SILENT is not set
+# CONFIG_SSB_DEBUG is not set
 
 #
 # Multifunction device drivers
 #
 # 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_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
 
 #
 # Multimedia Capabilities Port drivers
@@ -923,22 +1223,49 @@ CONFIG_SSB_POSSIBLE=y
 CONFIG_MCP=y
 CONFIG_MCP_SA11X0=y
 CONFIG_MCP_UCB1200=y
-CONFIG_MCP_UCB1200_TS=m
-# CONFIG_MCP_COLLIE_TS is not set
+# CONFIG_MCP_UCB1200_TS is not set
+CONFIG_MCP_COLLIE_TS=y
 
 #
 # Multimedia devices
 #
+
+#
+# Multimedia core support
+#
 CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
 CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
 CONFIG_VIDEO_CAPTURE_DRIVERS=y
 # CONFIG_VIDEO_ADV_DEBUG is not set
 CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
 # CONFIG_VIDEO_VIVI is not set
 # CONFIG_VIDEO_PMS is not set
 # CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_SOC_CAMERA is not set
 CONFIG_RADIO_ADAPTERS=y
 # CONFIG_RADIO_CADET is not set
 # CONFIG_RADIO_RTRACK is not set
@@ -951,7 +1278,6 @@ CONFIG_RADIO_ADAPTERS=y
 # CONFIG_RADIO_TRUST is not set
 # CONFIG_RADIO_TYPHOON is not set
 # CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_DVB_CORE is not set
 CONFIG_DAB=y
 
 #
@@ -969,8 +1295,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y
 # 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_DEFERRED_IO is not set
 # CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
 # CONFIG_FB_BACKLIGHT is not set
@@ -1020,87 +1346,33 @@ CONFIG_FONT_8x8=y
 #
 # Sound
 #
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# SPI devices
-#
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
+# CONFIG_SOUND is not set
+# CONFIG_HID_SUPPORT is not set
 CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
 # CONFIG_USB_SUPPORT is not set
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_UNSAFE_RESUME=y
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
 
 #
 # MMC/SD Card Drivers
 #
-CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK=y
 CONFIG_MMC_BLOCK_BOUNCE=y
 # CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
 
 #
 # MMC/SD Host Controller Drivers
 #
-CONFIG_MMC_SPI=m
+CONFIG_MMC_SPI=y
 CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
+CONFIG_LEDS_CLASS=y
 
 #
 # LED drivers
 #
-CONFIG_LEDS_LOCOMO=m
+CONFIG_LEDS_LOCOMO=y
 # CONFIG_LEDS_GPIO is not set
 
 #
@@ -1108,10 +1380,14 @@ CONFIG_LEDS_LOCOMO=m
 #
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=m
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
 
 #
 # RTC interfaces
@@ -1119,22 +1395,40 @@ CONFIG_RTC_CLASS=m
 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_INTF_DEV_UIE_EMUL=y
 # CONFIG_RTC_DRV_TEST is not set
 
 #
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+
+#
 # SPI RTC drivers
 #
-# CONFIG_RTC_DRV_RS5C348 is not set
 # CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
 
 #
 # Platform RTC drivers
 #
 # CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1511 is not set
 # CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 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_M48T59 is not set
 # CONFIG_RTC_DRV_V3020 is not set
@@ -1142,33 +1436,50 @@ CONFIG_RTC_INTF_DEV=y
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_SA1100=m
+CONFIG_RTC_DRV_SA1100=y
+CONFIG_UIO=m
+CONFIG_UIO_SMX=m
 
 #
 # File systems
 #
-CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS=y
 # CONFIG_EXT2_FS_XATTR is not set
 # CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS=y
 CONFIG_EXT3_FS_XATTR=y
 # CONFIG_EXT3_FS_POSIX_ACL is not set
 # CONFIG_EXT3_FS_SECURITY is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-CONFIG_FS_MBCACHE=m
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
+CONFIG_EXT4DEV_FS=m
+CONFIG_EXT4DEV_FS_XATTR=y
+# CONFIG_EXT4DEV_FS_POSIX_ACL is not set
+# CONFIG_EXT4DEV_FS_SECURITY is not set
+CONFIG_JBD=y
+CONFIG_JBD2=m
+CONFIG_FS_MBCACHE=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=m
+# CONFIG_JFS_POSIX_ACL is not set
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+CONFIG_OCFS2_FS=m
+CONFIG_OCFS2_FS_O2CB=m
+CONFIG_OCFS2_DEBUG_MASKLOG=y
+# CONFIG_OCFS2_DEBUG_FS is not set
+CONFIG_DNOTIFY=y
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
 # CONFIG_AUTOFS4_FS is not set
 CONFIG_FUSE_FS=m
@@ -1176,8 +1487,11 @@ CONFIG_FUSE_FS=m
 #
 # CD-ROM/DVD Filesystems
 #
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
+CONFIG_ISO9660_FS=m
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
 
 #
 # DOS/FAT/NT Filesystems
@@ -1187,7 +1501,9 @@ CONFIG_MSDOS_FS=m
 CONFIG_VFAT_FS=m
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
 
 #
 # Pseudo filesystems
@@ -1198,66 +1514,89 @@ CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 # CONFIG_TMPFS_POSIX_ACL is not set
 # CONFIG_HUGETLB_PAGE is not set
-# CONFIG_CONFIGFS_FS is not set
+CONFIG_CONFIGFS_FS=m
 
 #
 # Miscellaneous filesystems
 #
-# 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_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+# CONFIG_ECRYPT_FS is not set
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=m
 CONFIG_JFFS2_FS_DEBUG=0
 CONFIG_JFFS2_FS_WRITEBUFFER=y
 # CONFIG_JFFS2_FS_WBUF_VERIFY is not set
 # CONFIG_JFFS2_SUMMARY is not set
 # CONFIG_JFFS2_FS_XATTR is not set
 # CONFIG_JFFS2_SYSFS is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
 CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_LZO=y
 CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+# CONFIG_JFFS2_CMODE_PRIORITY is not set
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_JFFS2_CMODE_FAVOURLZO=y
 CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
+CONFIG_VXFS_FS=m
+CONFIG_MINIX_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_ROMFS_FS=m
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD 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_SUNRPC_BIND34 is not set
+CONFIG_SUNRPC_BIND34=y
 CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_RPCSEC_GSS_SPKM3=m
 CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
+# CONFIG_SMB_NLS_DEFAULT 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
+CONFIG_NCP_FS=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG is not set
+CONFIG_9P_FS=m
 
 #
 # Partition Types
@@ -1281,7 +1620,7 @@ CONFIG_MSDOS_PARTITION=y
 # CONFIG_EFI_PARTITION is not set
 # CONFIG_SYSV68_PARTITION is not set
 CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_DEFAULT="iso8859-1"
 CONFIG_NLS_CODEPAGE_437=m
 CONFIG_NLS_CODEPAGE_737=m
 CONFIG_NLS_CODEPAGE_775=m
@@ -1321,9 +1660,6 @@ CONFIG_NLS_KOI8_R=m
 CONFIG_NLS_KOI8_U=m
 CONFIG_NLS_UTF8=m
 # CONFIG_DLM is not set
-CONFIG_INSTRUMENTATION=y
-# CONFIG_PROFILING is not set
-# CONFIG_MARKERS is not set
 
 #
 # Kernel hacking
@@ -1331,6 +1667,7 @@ CONFIG_INSTRUMENTATION=y
 # CONFIG_PRINTK_TIME is not set
 CONFIG_ENABLE_WARN_DEPRECATED=y
 CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
 CONFIG_MAGIC_SYSRQ=y
 # CONFIG_UNUSED_SYMBOLS is not set
 # CONFIG_DEBUG_FS is not set
@@ -1341,6 +1678,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
 CONFIG_SCHED_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_PREEMPT is not set
 # CONFIG_DEBUG_RT_MUTEXES is not set
@@ -1356,81 +1694,127 @@ CONFIG_SCHED_DEBUG=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
 # CONFIG_DEBUG_LIST is not set
 # CONFIG_DEBUG_SG is not set
 CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
 # CONFIG_BOOT_PRINTK_DELAY is not set
 # CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_FAULT_INJECTION is not set
 # CONFIG_SAMPLES is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_LL is not set
 
 #
 # Security options
 #
-# CONFIG_KEYS is not set
+CONFIG_KEYS=y
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITY_FILE_CAPABILITIES is not set
 CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
 CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_AEAD=m
 CONFIG_CRYPTO_BLKCIPHER=m
 CONFIG_CRYPTO_HASH=m
 CONFIG_CRYPTO_MANAGER=m
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
+CONFIG_CRYPTO_GF128MUL=m
 CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=m
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XTS=m
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_SHA1=m
 CONFIG_CRYPTO_SHA256=m
 CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_PCBC is not set
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
+
+#
+# Ciphers
+#
 CONFIG_CRYPTO_AES=m
+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_TEA=m
-CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
 CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_CAMELLIA is not set
-CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_LZO=m
 # CONFIG_CRYPTO_HW is not set
 
 #
 # Library routines
 #
 CONFIG_BITREVERSE=y
+# CONFIG_GENERIC_FIND_FIRST_BIT is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
 CONFIG_CRC_CCITT=m
 CONFIG_CRC16=m
-CONFIG_CRC_ITU_T=m
+CONFIG_CRC_ITU_T=y
 CONFIG_CRC32=y
-CONFIG_CRC7=m
+CONFIG_CRC7=y
 CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_DECOMPRESS=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
 CONFIG_PLIST=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-rp-2.6.26/initramfs-config-collie b/packages/linux/linux-rp-2.6.26/initramfs-config-collie
new file mode 100644 (file)
index 0000000..925d498
--- /dev/null
@@ -0,0 +1,810 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.26
+# Thu Jul 24 23:13:04 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_ELF_CORE is not set
+CONFIG_COMPAT_BRK=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+# CONFIG_HAVE_DMA_ATTRS is not set
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_MODULES is not set
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_CLASSIC_RCU=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_MSM7X00A is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+CONFIG_SA1100_COLLIE=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+# CONFIG_PCMCIA_LOAD_CIS is not set
+# CONFIG_PCMCIA_IOCTL is not set
+
+#
+# PC-card bridges
+#
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_SA1100=y
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_NODES_SHIFT=2
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttySA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=64M fbcon=rotate:1 dyntick=enable debug"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+
+#
+# Networking
+#
+# CONFIG_NET is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_CHAR is not set
+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_CFI_NOSWAP is not set
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP 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 is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+# CONFIG_PNP is not set
+# CONFIG_BLK_DEV is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_HAVE_IDE=y
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_IDEDISK is not set
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+# CONFIG_IDE_PROC_FS is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_PLATFORM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD 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 is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_LOCOMO=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# 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_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+# CONFIG_I2C is not set
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_LOCOMO=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_HAVE_GPIO_LIB=y
+
+#
+# GPIO Support
+#
+
+#
+# I2C GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# 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_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP_SA11X0 is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_VIDEO_MEDIA is not set
+
+#
+# Multimedia drivers
+#
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC 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_SA1100=y
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+# CONFIG_HID_SUPPORT is not set
+# CONFIG_USB_SUPPORT is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD 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 Host Controller Drivers
+#
+CONFIG_MMC_SPI=y
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_UIO 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# 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 is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+# CONFIG_JFFS2_CMODE_PRIORITY is not set
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_JFFS2_CMODE_FAVOURLZO=y
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_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
+
+#
+# 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 is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+CONFIG_FRAME_WARN=1024
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_GENERIC_FIND_FIRST_BIT is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
index 2309235..28f3d0d 100644 (file)
@@ -24,6 +24,7 @@ CMDLINE_CON_collie = "console=ttySA0,115200n8 console=tty1 noinitrd"
 CMDLINE_CON_qemuarm = "console=ttyAMA0,115200n8 console=tty1 noinitrd"
 CMDLINE_CON_zylonite = "console=ttyS0,38400"
 CMDLINE_ROOT ?= "root=/dev/mtdblock2 rootfstype=jffs2"
+CMDLINE_ROOT_collie = "root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=3 rw"
 CMDLINE_ROOT_spitz ?= "root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw"
 #CMDLINE_ROOT_spitz = "root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=3 rw"
 CMDLINE_OTHER = "dyntick=enable"
index 8c5d2f8..ca249ef 100644 (file)
@@ -102,12 +102,10 @@ SRC_URI_append_collie = "\
        ${TKSRC}/pcmcia_suspend.patch;patch=1 \
        ${TKSRC}/locomo_spi-6.patch;patch=1 \
        ${TKSRC}/config.patch;patch=1 \
-       ${TKSRC}/locomokeyb-2.patch;patch=1 \
        ${TKSRC}/mmc-spi.patch;patch=1 \
        ${TKSRC}/linux-2.6.24-SIMpad-rtc-sa1100.patch;patch=1 \
        ${TKSRC}/sa1100_spinlock.patch;patch=1 \
        ${TKSRC}/sa1100-dma.patch;patch=1 \
-       ${TKSRC}/sa1100_udc_g_ether-2.patch;patch=1 \
 "
 
 SRC_URI_append_poodle = "\
index 74ed592..6284f05 100644 (file)
@@ -6,6 +6,7 @@ DEFAULT_PREFERENCE = "-1"
 DEFAULT_PREFERENCE_qemuarm = "-1"
 DEFAULT_PREFERENCE_qemux86 = "-1"
 DEFAULT_PREFERENCE_spitz = "1"
+DEFAULT_PREFERENCE_collie = "1"
 
 # Handy URLs
 # git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
@@ -59,10 +60,11 @@ SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 \
            file://defconfig-qemux86 \
            file://defconfig-bootcdx86 \
            file://defconfig-htcuniversal \
+           file://defconfig-collie \
+           file://initramfs-config-collie \
            file://defconfig-zylonite"
 # Disabled until the patchset is updated:
 #           file://defconfig-tosa
-#           file://defconfig-collie
 #           file://defconfig-poodle
 
 
@@ -78,23 +80,8 @@ SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 \
 
 
 SRC_URI_append_collie = "\
-       ${TKSRC}/mtd-sharp-flash-hack-r4.patch;patch=1 \
-       ${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
-       ${TKSRC}/locomo-r1.patch;patch=1 \
-       ${TKSRC}/collie-kexec-r1.patch;patch=1 \
-       ${TKSRC}/sharpsl_pm-4.patch;patch=1 \
-       ${TKSRC}/collie_pm-3.patch;patch=1 \
-       ${TKSRC}/ucb1x00_suspend.patch;patch=1 \
-       ${TKSRC}/collie-ts.patch;patch=1 \
-       ${TKSRC}/pcmcia_suspend.patch;patch=1 \
-       ${TKSRC}/locomo_spi-6.patch;patch=1 \
-       ${TKSRC}/config.patch;patch=1 \
-       ${TKSRC}/locomokeyb-2.patch;patch=1 \
-       ${TKSRC}/mmc-spi.patch;patch=1 \
-       ${TKSRC}/linux-2.6.24-SIMpad-rtc-sa1100.patch;patch=1 \
-       ${TKSRC}/sa1100_spinlock.patch;patch=1 \
-       ${TKSRC}/sa1100-dma.patch;patch=1 \
-       ${TKSRC}/sa1100_udc_g_ether-2.patch;patch=1 \
+       file://collie.patch;patch=1 \
+       file://collie_keymap.patch;patch=1 \
 "
 
 SRC_URI_append_poodle = "\