summaryrefslogtreecommitdiff
path: root/packages/linux/linux-2.6.27/boc01
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-2.6.27/boc01
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/linux/linux-2.6.27/boc01')
-rw-r--r--packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch17
-rw-r--r--packages/linux/linux-2.6.27/boc01/004-081205-usb.patch16
-rw-r--r--packages/linux/linux-2.6.27/boc01/005-090217-isl12024.patch669
-rw-r--r--packages/linux/linux-2.6.27/boc01/007-081217-lm73.patch269
-rw-r--r--packages/linux/linux-2.6.27/boc01/008-081208-spi.patch143
-rw-r--r--packages/linux/linux-2.6.27/boc01/010-090112-mii.patch503
-rw-r--r--packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch440
-rw-r--r--packages/linux/linux-2.6.27/boc01/012-090219-capsense.patch865
-rw-r--r--packages/linux/linux-2.6.27/boc01/013-090209-lcd.patch933
-rw-r--r--packages/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch195
-rw-r--r--packages/linux/linux-2.6.27/boc01/boc01.dts355
-rw-r--r--packages/linux/linux-2.6.27/boc01/defconfig1898
12 files changed, 0 insertions, 6303 deletions
diff --git a/packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch b/packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch
deleted file mode 100644
index 4bd44e25db..0000000000
--- a/packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -ur linux-2.6.27.orig/drivers/usb/host/ehci-q.c linux-2.6.27/drivers/usb/host/ehci-q.c
---- linux-2.6.27.orig/drivers/usb/host/ehci-q.c 2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/drivers/usb/host/ehci-q.c 2009-01-06 18:31:38.000000000 +0100
-@@ -799,7 +799,12 @@
- * to help them do so. So now people expect to use
- * such nonconformant devices with Linux too; sigh.
- */
-- info1 |= max_packet(maxp) << 16;
-+ struct usb_device_descriptor *desc = &urb->dev->descriptor;
-+ if (desc->idVendor == cpu_to_le16(0x148e) && desc->idProduct == cpu_to_le16(0x0900)) {
-+ info1 |= 256 << 16;
-+ } else {
-+ info1 |= max_packet(maxp) << 16;
-+ }
- info2 |= (EHCI_TUNE_MULT_HS << 30);
- } else { /* PIPE_INTERRUPT */
- info1 |= max_packet (maxp) << 16;
diff --git a/packages/linux/linux-2.6.27/boc01/004-081205-usb.patch b/packages/linux/linux-2.6.27/boc01/004-081205-usb.patch
deleted file mode 100644
index dc7eba64d0..0000000000
--- a/packages/linux/linux-2.6.27/boc01/004-081205-usb.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- linux-2.6.27.orig/arch/powerpc/platforms/83xx/usb.c 2008-12-05 14:50:43.000000000 +0100
-+++ linux-2.6.27.modif/arch/powerpc/platforms/83xx/usb.c 2008-12-05 14:51:17.000000000 +0100
-@@ -172,10 +172,10 @@
- !strcmp(prop, "utmi"))) {
- u32 refsel;
-
-- if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr"))
-+// if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr"))
- refsel = CONTROL_REFSEL_24MHZ;
-- else
-- refsel = CONTROL_REFSEL_48MHZ;
-+// else
-+// refsel = CONTROL_REFSEL_48MHZ;
- /* Set UTMI_PHY_EN and REFSEL */
- out_be32(usb_regs + FSL_USB2_CONTROL_OFFS,
- CONTROL_UTMI_PHY_EN | refsel);
diff --git a/packages/linux/linux-2.6.27/boc01/005-090217-isl12024.patch b/packages/linux/linux-2.6.27/boc01/005-090217-isl12024.patch
deleted file mode 100644
index 672e405de0..0000000000
--- a/packages/linux/linux-2.6.27/boc01/005-090217-isl12024.patch
+++ /dev/null
@@ -1,669 +0,0 @@
-Index: linux-2.6.27/drivers/rtc/Kconfig
-===================================================================
---- linux-2.6.27.orig/drivers/rtc/Kconfig
-+++ linux-2.6.27/drivers/rtc/Kconfig
-@@ -124,6 +124,12 @@ comment "I2C RTC drivers"
-
- if I2C
-
-+config RTC_DRV_ISL12024
-+ tristate "Intersil 12024 RTC/ UniqueID"
-+ help
-+ If you say yes ....
-+ This driver can also be built as a module.
-+
- config RTC_DRV_DS1307
- tristate "Dallas/Maxim DS1307/37/38/39/40, ST M41T00"
- help
-Index: linux-2.6.27/drivers/rtc/Makefile
-===================================================================
---- linux-2.6.27.orig/drivers/rtc/Makefile
-+++ linux-2.6.27/drivers/rtc/Makefile
-@@ -34,6 +34,7 @@ obj-$(CONFIG_RTC_DRV_DS1742) += rtc-ds17
- obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
- obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
- obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
-+obj-$(CONFIG_RTC_DRV_ISL12024) += rtc-isl12024.o
- obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o
- obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o
- obj-$(CONFIG_RTC_DRV_M48T59) += rtc-m48t59.o
-Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/rtc/rtc-isl12024.c
-@@ -0,0 +1,517 @@
-+/*
-+ * Intersil ISL12024 class driver
-+ *
-+ *
-+ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
-+ * Guillaume Ligneul
-+ * Guillaume.ligneul@gmail.com
-+ *
-+ * This software program is licensed subject to the GNU General Public License
-+ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/i2c.h>
-+#include <linux/bcd.h>
-+#include <linux/rtc.h>
-+#include <linux/proc_fs.h>
-+#include <linux/delay.h>
-+
-+#include "isl12024.h"
-+
-+
-+#define DBG 1
-+#undef DBG
-+
-+static u8 buf_id[ISL12024_RTC_SECTION_LEN] = { 0 ,};
-+
-+#define DRV_NAME "isl12024"
-+#define DRV_VERSION "0.1"
-+
-+/* i2c configuration */
-+
-+static const unsigned short normal_i2c[] = {
-+ ISL12024_I2C_ADDR >>1, I2C_CLIENT_END
-+};
-+I2C_CLIENT_INSMOD;
-+
-+/* Procfs management */
-+static struct proc_dir_entry * root_proc = NULL;
-+static struct proc_dir_entry * entry_proc = NULL;
-+static int read_proc (char * page, char ** start, off_t off, int count, int * eof, void * data);
-+
-+static int isl12024_get_status(struct i2c_client *client, unsigned char *sr);
-+static int isl12024_fix_osc(struct i2c_client *client);
-+
-+
-+static int isl12024_attach_adapter(struct i2c_adapter *adapter);
-+static int isl12024_detach_client(struct i2c_client *client);
-+
-+// To debug (may be add in includ/linux/i2c-id.h)
-+#define I2C_DRIVERID_ISL12024 97
-+
-+static struct i2c_driver isl12024_driver = {
-+ .driver = {
-+ .name = DRV_NAME,
-+ },
-+ .id = I2C_DRIVERID_ISL12024,
-+ .attach_adapter = &isl12024_attach_adapter,
-+ .detach_client = &isl12024_detach_client,
-+};
-+
-+int
-+isl12024_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[],
-+ unsigned len)
-+{
-+ int ret;
-+ u8 dt_addr[2];
-+
-+ struct i2c_msg msgs[2] = {
-+ {
-+ .addr = client->addr,
-+ .flags = 0,
-+ .len = 2,
-+ .buf = dt_addr,
-+ },
-+ {
-+ .addr = client->addr,
-+ .flags = I2C_M_RD,
-+ .len = len ,
-+ .buf = buf ,
-+ },
-+ };
-+
-+ dt_addr[0] = 0;
-+ dt_addr[1] = reg;
-+
-+ ret = i2c_transfer(client->adapter, msgs, 2);
-+ if ( ret < 0) {
-+ dev_err(&client->dev, "read error\n");
-+ return -EIO;
-+ }
-+ return ret;
-+}
-+
-+EXPORT_SYMBOL(isl12024_i2c_read_regs);
-+
-+
-+int
-+isl12024_i2c_set_regs(struct i2c_client *client, u8 reg, u8 const buf[],
-+ unsigned len)
-+{
-+ int ret;
-+ u8 i2c_buf[10];
-+
-+ struct i2c_msg msgs[1] = {
-+ {
-+ .addr = client->addr,
-+ .flags = 0,
-+ .len = len+2,
-+ .buf = i2c_buf,
-+ },
-+ };
-+
-+ i2c_buf[0] = 0;
-+ i2c_buf[1] = reg;
-+
-+
-+ memcpy(&i2c_buf[2], &buf[0], len );
-+
-+
-+ ret = i2c_transfer(client->adapter, msgs, 1);
-+ printk(KERN_INFO "i2c_transfer %d\n",ret);
-+ return ret;
-+}
-+
-+EXPORT_SYMBOL(isl12024_i2c_set_regs);
-+
-+static int isl12024_i2c_validate_client(struct i2c_client *client)
-+{
-+ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, };
-+ u8 zero_mask[ISL12024_RTC_SECTION_LEN] = {
-+ 0x80, 0x80, 0x40, 0xc0, 0xe0, 0x00, 0xf8, 0xc6
-+ };
-+
-+ int i;
-+ int ret;
-+
-+ ret = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN);
-+
-+ if (ret < 0)
-+ return ret;
-+
-+ for (i = 0; i < ISL12024_RTC_SECTION_LEN; ++i) {
-+ if (regs[i] & zero_mask[i]) /* check if bits are cleared */
-+ return -ENODEV;
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static int isl12024_read_time(struct i2c_client *client,
-+ struct rtc_time *tm)
-+{
-+ unsigned char sr;
-+ int err;
-+ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, };
-+
-+ printk(KERN_INFO "%s\n ",__FUNCTION__ );
-+
-+
-+ if (isl12024_get_status(client, &sr) < 0) {
-+ dev_err(&client->dev, "%s: reading SR failed\n", __func__);
-+ return -EIO;
-+ }
-+
-+ err = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN);
-+
-+#ifdef DBG
-+ int i;
-+ for(i=0; i<ISL12024_RTC_SECTION_LEN; i++)
-+ printk(KERN_INFO "0x%2X\n", regs[i]);
-+#endif
-+
-+ if (err < 0) {
-+ dev_err(&client->dev, "%s: reading RTC section failed\n",
-+ __func__);
-+ return sr;
-+ }
-+
-+ tm->tm_sec = BCD2BIN(regs[0]);
-+ tm->tm_min = BCD2BIN(regs[1]);
-+
-+ { /* HR field has a more complex interpretation */
-+ const u8 _hr = regs[2];
-+ if (_hr & ISL12024_REG_HR_MIL) /* 24h format */
-+ tm->tm_hour = BCD2BIN(_hr & 0x3f);
-+ else { // 12h format
-+ tm->tm_hour = BCD2BIN(_hr & 0x1f);
-+ if (_hr & ISL12024_REG_HR_PM) /* PM flag set */
-+ tm->tm_hour += 12;
-+ }
-+ }
-+
-+ tm->tm_mday = BCD2BIN(regs[3]);
-+ tm->tm_mon = BCD2BIN(regs[4]);
-+ tm->tm_year = BCD2BIN(regs[5]) + 100;
-+ tm->tm_wday = BCD2BIN(regs[6]);
-+
-+ return rtc_valid_tm(tm);
-+}
-+
-+static int isl12024_get_status(struct i2c_client *client, unsigned char *sr)
-+{
-+ static unsigned char sr_addr[2] = { 0, ISL12024_REG_SR };
-+
-+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 2, sr_addr }, /* setup read ptr */
-+ { client->addr, I2C_M_RD, 1, sr }, /* read status */
-+ };
-+
-+ /* read status register */
-+ if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
-+ dev_err(&client->dev, "%s: read error\n", __func__);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static int isl12024_set_datetime(struct i2c_client *client, struct rtc_time *tm,
-+ int datetoo, u8 reg_base, unsigned char alm_enable)
-+{
-+ int i, xfer, nbytes;
-+ unsigned char buf[8];
-+ unsigned char rdata[10] = { 0, reg_base };
-+
-+ static const unsigned char wel[3] = { 0, ISL12024_REG_SR,
-+ ISL12024_SR_WEL };
-+
-+ static const unsigned char rwel[3] = { 0, ISL12024_REG_SR,
-+ ISL12024_SR_WEL | ISL12024_SR_RWEL };
-+
-+ static const unsigned char diswe[3] = { 0, ISL12024_REG_SR, 0 };
-+
-+ dev_dbg(&client->dev,
-+ "%s: secs=%d, mins=%d, hours=%d\n",
-+ __func__,
-+ tm->tm_sec, tm->tm_min, tm->tm_hour);
-+
-+ buf[CCR_SEC] = BIN2BCD(tm->tm_sec);
-+ buf[CCR_MIN] = BIN2BCD(tm->tm_min);
-+
-+ /* set hour and 24hr bit */
-+ buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | ISL12024_HR_MIL;
-+
-+ /* should we also set the date? */
-+ if (datetoo) {
-+ dev_dbg(&client->dev,
-+ "%s: mday=%d, mon=%d, year=%d, wday=%d\n",
-+ __func__,
-+ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
-+
-+ buf[CCR_MDAY] = BIN2BCD(tm->tm_mday);
-+
-+ /* month, 1 - 12 */
-+ buf[CCR_MONTH] = BIN2BCD(tm->tm_mon);
-+
-+ /* year, since the rtc epoch*/
-+ buf[CCR_YEAR] = BIN2BCD(tm->tm_year % 100);
-+ buf[CCR_WDAY] = tm->tm_wday & 0x07;
-+ buf[CCR_Y2K] = BIN2BCD(tm->tm_year / 100);
-+ }
-+
-+ /* If writing alarm registers, set compare bits on registers 0-4 */
-+ if (reg_base < ISL12024_CCR_BASE)
-+ for (i = 0; i <= 4; i++)
-+ buf[i] |= 0x80;
-+
-+ /* this sequence is required to unlock the chip */
-+ if ((xfer = i2c_master_send(client, wel, 3)) != 3) {
-+ dev_err(&client->dev, "%s: wel - %d\n", __func__, xfer);
-+ return -EIO;
-+ }
-+
-+ if ((xfer = i2c_master_send(client, rwel, 3)) != 3) {
-+ dev_err(&client->dev, "%s: rwel - %d\n", __func__, xfer);
-+ return -EIO;
-+ }
-+
-+
-+ /* write register's data */
-+ if (datetoo)
-+ nbytes = 8;
-+ else
-+ nbytes = 3;
-+ for (i = 0; i < nbytes; i++)
-+ rdata[2+i] = buf[i];
-+
-+ xfer = i2c_master_send(client, rdata, nbytes+2);
-+ if (xfer != nbytes+2) {
-+ dev_err(&client->dev,
-+ "%s: result=%d addr=%02x, data=%02x\n",
-+ __func__,
-+ xfer, rdata[1], rdata[2]);
-+ return -EIO;
-+ }
-+
-+ /* If we wrote to the nonvolatile region, wait 10msec for write cycle*/
-+ if (reg_base < ISL12024_CCR_BASE) {
-+ unsigned char al0e[3] = { 0, ISL12024_REG_INT, 0 };
-+
-+ msleep(10);
-+
-+ /* ...and set or clear the AL0E bit in the INT register */
-+
-+ /* Need to set RWEL again as the write has cleared it */
-+ xfer = i2c_master_send(client, rwel, 3);
-+ if (xfer != 3) {
-+ dev_err(&client->dev,
-+ "%s: aloe rwel - %d\n",
-+ __func__,
-+ xfer);
-+ return -EIO;
-+ }
-+
-+ if (alm_enable)
-+ al0e[2] = ISL12024_INT_AL0E;
-+
-+ xfer = i2c_master_send(client, al0e, 3);
-+ if (xfer != 3) {
-+ dev_err(&client->dev,
-+ "%s: al0e - %d\n",
-+ __func__,
-+ xfer);
-+ return -EIO;
-+ }
-+
-+ /* and wait 10msec again for this write to complete */
-+ msleep(10);
-+ }
-+
-+ /* disable further writes */
-+ if ((xfer = i2c_master_send(client, diswe, 3)) != 3) {
-+ dev_err(&client->dev, "%s: diswe - %d\n", __func__, xfer);
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static int isl12024_fix_osc(struct i2c_client *client)
-+{
-+ int err;
-+ struct rtc_time tm;
-+
-+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
-+
-+ err = isl12024_set_datetime(client, &tm, 0, ISL12024_CCR_BASE, 0);
-+ if (err < 0)
-+ printk(KERN_INFO "unable to restart the oscillator\n");
-+
-+ return err;
-+}
-+
-+static int isl12024_rtc_read_time(struct device *dev, struct rtc_time *tm)
-+{
-+ return isl12024_read_time(to_i2c_client(dev), tm);
-+
-+}
-+
-+static int isl12024_rtc_set_time(struct device *dev, struct rtc_time *tm)
-+{
-+ return isl12024_set_datetime(to_i2c_client(dev),
-+ tm, 1, ISL12024_CCR_BASE, 0);
-+}
-+
-+static int
-+isl12024_rtc_proc(struct device *dev, struct seq_file *seq)
-+{
-+
-+ /* Nothing to do */
-+
-+ return 0;
-+}
-+
-+static const struct rtc_class_ops isl12024_rtc_ops = {
-+ .proc = isl12024_rtc_proc,
-+ .read_time = isl12024_rtc_read_time,
-+ .set_time = isl12024_rtc_set_time,
-+};
-+
-+static int read_proc (char * page, char ** start, off_t off, int count, int * eof, void * data)
-+{
-+ int i=0;
-+
-+ printk("id: 0x");
-+ for(i=0;i<ISL12024_RTC_SECTION_LEN;i++)
-+ printk("%02X",buf_id[i]);
-+ printk("\n");
-+ return 0;
-+}
-+
-+static int
-+isl12024_probe(struct i2c_adapter *adapter, int addr, int kind)
-+{
-+
-+ int rc = 0;
-+ int err = 0;
-+ unsigned char sr;
-+ struct i2c_client *new_client = NULL;
-+ struct rtc_device *rtc = NULL;
-+
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
-+ rc = -ENODEV;
-+ goto failout;
-+ }
-+
-+ new_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (new_client == NULL) {
-+ rc = -ENOMEM;
-+ goto failout;
-+ }
-+
-+ new_client->addr = addr;
-+ new_client->adapter = adapter;
-+ new_client->driver = &isl12024_driver;
-+ new_client->flags = 0;
-+ strcpy(new_client->name, DRV_NAME);
-+
-+ if (kind < 0) {
-+ rc = isl12024_i2c_validate_client(new_client);
-+ if (rc < 0)
-+ goto failout;
-+ }
-+
-+ rc = i2c_attach_client(new_client);
-+ if (rc < 0)
-+ goto failout;
-+
-+ rtc = rtc_device_register(isl12024_driver.driver.name,
-+ &new_client->dev,
-+ &isl12024_rtc_ops, THIS_MODULE);
-+
-+ if (IS_ERR(rtc)) {
-+ printk("Error during rtc registration\n");
-+ rc = PTR_ERR(rtc);
-+ goto failout;
-+ }
-+
-+ i2c_set_clientdata(new_client, rtc);
-+
-+ /* Check for power failures and eventualy enable the osc */
-+ if ((err = isl12024_get_status(new_client, &sr)) == 0) {
-+ if (sr & ISL12024_SR_RTCF) {
-+ printk(KERN_INFO "power failure detected, "
-+ "please set the clock\n");
-+ udelay(50);
-+ isl12024_fix_osc(new_client);
-+ }
-+ }
-+ else
-+ printk(KERN_INFO "couldn't read status\n");
-+
-+ root_proc = proc_mkdir( "isl12024", 0 );
-+ entry_proc = create_proc_entry("id", S_IFREG | S_IRUGO | S_IWUSR, root_proc);
-+
-+ if (entry_proc == NULL)
-+ return -1;
-+
-+ entry_proc->owner = THIS_MODULE;
-+ entry_proc->read_proc = read_proc;
-+
-+ /* read unique id from eeprom */
-+ isl12024_i2c_read_regs(new_client, ISL12024_REG_ID, buf_id, sizeof(buf_id));
-+
-+
-+ return 0;
-+
-+ failout:
-+ kfree(new_client);
-+ return rc;
-+}
-+
-+static int
-+isl12024_attach_adapter (struct i2c_adapter *adapter)
-+{
-+ return i2c_probe(adapter, &addr_data, isl12024_probe);
-+}
-+
-+static int
-+isl12024_detach_client(struct i2c_client *client)
-+{
-+ int rc;
-+ struct rtc_device *const rtc = i2c_get_clientdata(client);
-+
-+ if (rtc)
-+ rtc_device_unregister(rtc);
-+
-+ rc = i2c_detach_client(client);
-+ if (rc)
-+ return rc;
-+
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+/* module init/exit */
-+
-+static int __init isl12024_init(void)
-+{
-+ return i2c_add_driver(&isl12024_driver);
-+}
-+
-+static void __exit isl12024_exit(void)
-+{
-+ i2c_del_driver(&isl12024_driver);
-+}
-+
-+MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>");
-+MODULE_DESCRIPTION("Intersil ISL12024 driver");
-+MODULE_LICENSE("GPL");
-+MODULE_VERSION(DRV_VERSION);
-+
-+module_init(isl12024_init);
-+module_exit(isl12024_exit);
-Index: linux-2.6.27/drivers/i2c/chips/at24.c
-===================================================================
---- linux-2.6.27.orig/drivers/i2c/chips/at24.c
-+++ linux-2.6.27/drivers/i2c/chips/at24.c
-@@ -114,6 +114,8 @@ static const struct i2c_device_id at24_i
- { "spd", AT24_DEVICE_MAGIC(2048 / 8,
- AT24_FLAG_READONLY | AT24_FLAG_IRUGO) },
- { "24c04", AT24_DEVICE_MAGIC(4096 / 8, 0) },
-+ /* Intersil RTC/Unique-ID isl12024 eeprom handled here */
-+ { "isl12024",AT24_DEVICE_MAGIC(4096 / 8, AT24_FLAG_ADDR16) },
- /* 24rf08 quirk is handled at i2c-core */
- { "24c08", AT24_DEVICE_MAGIC(8192 / 8, 0) },
- { "24c16", AT24_DEVICE_MAGIC(16384 / 8, 0) },
-Index: linux-2.6.27/drivers/rtc/isl12024.h
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/rtc/isl12024.h
-@@ -0,0 +1,100 @@
-+/*
-+ * Intersil ISL12024 chip registers definitions
-+ *
-+ *
-+ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
-+ * Guillaume Ligneul
-+ * Guillaume.ligneul@gmail.com
-+ *
-+ * This software program is licensed subject to the GNU General Public License
-+ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+ */
-+
-+#ifndef ISL12024_H_
-+#define ISL12024_H_
-+
-+#define ISL12024_REG_SR 0x3F /* status register */
-+#define ISL12024_REG_Y2K 0x37
-+#define ISL12024_REG_DW 0x36
-+#define ISL12024_REG_YR 0x35
-+#define ISL12024_REG_MO 0x34
-+#define ISL12024_REG_DT 0x33
-+#define ISL12024_REG_HR 0x32
-+#define ISL12024_REG_MN 0x31
-+#define ISL12024_REG_SC 0x30
-+#define ISL12024_REG_DTR 0x13
-+#define ISL12024_REG_ATR 0x12
-+#define ISL12024_REG_INT 0x11
-+#define ISL12024_REG_0 0x10
-+#define ISL12024_REG_Y2K1 0x0F
-+#define ISL12024_REG_DWA1 0x0E
-+#define ISL12024_REG_YRA1 0x0D
-+#define ISL12024_REG_MOA1 0x0C
-+#define ISL12024_REG_DTA1 0x0B
-+#define ISL12024_REG_HRA1 0x0A
-+#define ISL12024_REG_MNA1 0x09
-+#define ISL12024_REG_SCA1 0x08
-+#define ISL12024_REG_Y2K0 0x07
-+#define ISL12024_REG_DWA0 0x06
-+#define ISL12024_REG_YRA0 0x05
-+#define ISL12024_REG_MOA0 0x04
-+#define ISL12024_REG_DTA0 0x03
-+#define ISL12024_REG_HRA0 0x02
-+#define ISL12024_REG_MNA0 0x01
-+#define ISL12024_REG_SCA0 0x00
-+
-+#define ISL12024_CCR_BASE 0x30 /* Base address of CCR */
-+#define ISL12024_ALM0_BASE 0x00 /* Base address of ALARM0 */
-+
-+#define ISL12024_SR_RTCF 0x01 /* Clock failure */
-+#define ISL12024_SR_WEL 0x02 /* Write Enable Latch */
-+#define ISL12024_SR_RWEL 0x04 /* Register Write Enable */
-+#define ISL12024_SR_AL0 0x20 /* Alarm 0 match */
-+
-+#define ISL12024_DTR_DTR0 0x01
-+#define ISL12024_DTR_DTR1 0x02
-+#define ISL12024_DTR_DTR2 0x04
-+
-+#define ISL12024_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */
-+
-+#define ISL12024_INT_AL0E 0x20 /* Alarm 0 enable */
-+
-+/* I2C ADDRESS */
-+#define ISL12024_I2C_ADDR 0xDE
-+#define ISL12024_I2C_EEPROM_ADDR 0x57
-+
-+/* device id section */
-+#define ISL12024_REG_ID 0x20
-+
-+/* Register map */
-+/* rtc section */
-+#define ISL12024_REG_HR_MIL (1<<7) /* 24h/12h mode */
-+#define ISL12024_REG_HR_PM (1<<5) /* PM/AM bit in 12h mode */
-+//#define ISL12024_REG_DT 0x33 /* Date */
-+//#define ISL12024_REG_MO 0x34 /* Month */
-+//#define ISL12024_REG_YR 0x35 /* Year */
-+//#define ISL12024_REG_DW 0x36
-+//#define ISL12024_REG_Y2K 0x37
-+#define ISL12024_RTC_SECTION_LEN 8
-+
-+/* control/status section */
-+//#define ISL12024_REG_SR 0x3F
-+//#define ISL12024_REG_SR_BAT (1<<7) /* battery */
-+//#define ISL12024_REG_SR_AL1 (1<<6) /* alarm 0 */
-+//#define ISL12024_REG_SR_AL0 (1<<5) /* alarm 1 */
-+//#define ISL12024_REG_SR_OSCF (1<<4) /* oscillator fail */
-+//#define ISL12024_REG_SR_RWEL (1<<2) /* register write enable latch */
-+//#define ISL12024_REG_SR_WEL (1<<1) /* write enable latch */
-+//#define ISL12024_REG_SR_RTCF (1<<0) /* rtc fail */
-+//#define ISL12024_REG_INT 0x11
-+
-+#define CCR_SEC 0
-+#define CCR_MIN 1
-+#define CCR_HOUR 2
-+#define CCR_MDAY 3
-+#define CCR_MONTH 4
-+#define CCR_YEAR 5
-+#define CCR_WDAY 6
-+#define CCR_Y2K 7
-+
-+#endif /*ISL12024_H_*/
diff --git a/packages/linux/linux-2.6.27/boc01/007-081217-lm73.patch b/packages/linux/linux-2.6.27/boc01/007-081217-lm73.patch
deleted file mode 100644
index 39af20fab3..0000000000
--- a/packages/linux/linux-2.6.27/boc01/007-081217-lm73.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-Index: linux-2.6.27/drivers/hwmon/Kconfig
-===================================================================
---- linux-2.6.27.orig/drivers/hwmon/Kconfig
-+++ linux-2.6.27/drivers/hwmon/Kconfig
-@@ -416,6 +416,15 @@ config SENSORS_LM70
- This driver can also be built as a module. If so, the module
- will be called lm70.
-
-+config SENSORS_LM73
-+ tristate "National Semiconductor LM73"
-+ depends on I2C
-+ help
-+ If you say yes here you get support for National Semiconductor LM73
-+ sensor chips
-+ This driver can also be built as a module. If so, the module
-+ will be called lm73.
-+
- config SENSORS_LM75
- tristate "National Semiconductor LM75 and compatibles"
- depends on I2C
-Index: linux-2.6.27/drivers/hwmon/lm73.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/hwmon/lm73.c
-@@ -0,0 +1,232 @@
-+ /*
-+ * LM73 Sensor driver
-+ * Based on LM75
-+ *
-+ *
-+ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
-+ * Guillaume Ligneul
-+ * Guillaume.ligneul@gmail.com
-+ *
-+ * This software program is licensed subject to the GNU General Public License
-+ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/jiffies.h>
-+#include <linux/i2c.h>
-+#include <linux/hwmon.h>
-+#include <linux/hwmon-sysfs.h>
-+#include <linux/err.h>
-+#include <linux/mutex.h>
-+
-+
-+/* Addresses to scan */
-+static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
-+ 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
-+
-+/* Insmod parameters */
-+I2C_CLIENT_INSMOD_1(lm73);
-+
-+/* LM73 registers */
-+#define LM73_REG_INPUT 0x00
-+#define LM73_REG_CONF 0x01
-+#define LM73_REG_T_HIGH 0x02
-+#define LM73_REG_T_LOW 0x03
-+
-+static const u8 LM73_REG_TEMP[3] = {
-+ LM73_REG_INPUT, /* input */
-+ LM73_REG_T_HIGH, /* max */
-+ LM73_REG_T_LOW, /* min */
-+};
-+
-+/* Each client has this additional data */
-+struct lm73_data {
-+ struct i2c_client client;
-+ struct device *hwmon_dev;
-+ struct mutex update_lock;
-+ char valid; /* !=0 if following fields are valid */
-+ unsigned long last_updated; /* In jiffies */
-+ u16 temp[3]; /* Register values,
-+ 0 = input
-+ 1 = max
-+ 2 = min */
-+};
-+
-+static int lm73_attach_adapter(struct i2c_adapter *adapter);
-+static int lm73_detect(struct i2c_adapter *adapter, int address, int kind);
-+static int lm73_detach_client(struct i2c_client *client);
-+static int lm73_read_value(struct i2c_client *client, u8 reg);
-+static int lm73_write_value(struct i2c_client *client, u8 reg, short value);
-+
-+/* This is the driver that will be inserted */
-+static struct i2c_driver lm73_driver = {
-+ .driver = {
-+ .name = "lm73",
-+ },
-+ .attach_adapter = lm73_attach_adapter,
-+ .detach_client = lm73_detach_client,
-+};
-+
-+static ssize_t show_temp(struct device *dev, struct device_attribute *da,
-+ char *buf)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct i2c_client *client = to_i2c_client(dev);
-+ int iTemp = 0;
-+
-+ iTemp = lm73_read_value(client, LM73_REG_TEMP[attr->index]);
-+
-+ return sprintf(buf, "%d\n", iTemp);
-+
-+
-+}
-+
-+static ssize_t set_temp(struct device *dev, struct device_attribute *da,
-+ const char *buf, size_t count)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct i2c_client *client = to_i2c_client(dev);
-+ int nr = attr->index;
-+
-+ long tmp = simple_strtol(buf, NULL, 10);
-+
-+ lm73_write_value(client, LM73_REG_TEMP[nr], tmp);
-+ return count;
-+}
-+
-+static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
-+ show_temp, set_temp, 1);
-+static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO,
-+ show_temp, set_temp, 2);
-+static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
-+
-+static int lm73_attach_adapter(struct i2c_adapter *adapter)
-+{
-+ if (!(adapter->class & I2C_CLASS_HWMON))
-+ return 0;
-+
-+ return i2c_probe(adapter, &addr_data, lm73_detect);
-+}
-+
-+static struct attribute *lm73_attributes[] = {
-+ &sensor_dev_attr_temp1_input.dev_attr.attr,
-+ &sensor_dev_attr_temp1_max.dev_attr.attr,
-+ &sensor_dev_attr_temp1_min.dev_attr.attr,
-+
-+ NULL
-+};
-+
-+static const struct attribute_group lm73_group = {
-+ .attrs = lm73_attributes,
-+};
-+
-+/* This function is called by i2c_probe */
-+static int lm73_detect(struct i2c_adapter *adapter, int address, int kind)
-+{
-+ struct i2c_client *new_client;
-+ struct lm73_data *data;
-+ int err = 0;
-+ const char *name = "";
-+
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
-+ I2C_FUNC_SMBUS_WORD_DATA))
-+ goto exit;
-+
-+ if (!(data = kzalloc(sizeof(struct lm73_data), GFP_KERNEL))) {
-+ err = -ENOMEM;
-+ goto exit;
-+ }
-+
-+ new_client = &data->client;
-+ i2c_set_clientdata(new_client, data);
-+ new_client->addr = address;
-+ new_client->adapter = adapter;
-+ new_client->driver = &lm73_driver;
-+ new_client->flags = 0;
-+
-+ name = "lm73";
-+
-+ /* Fill in the remaining client fields and put it into the global list */
-+ strlcpy(new_client->name, name, I2C_NAME_SIZE);
-+ data->valid = 0;
-+ mutex_init(&data->update_lock);
-+
-+ /* Tell the I2C layer a new client has arrived */
-+ if ((err = i2c_attach_client(new_client)))
-+ goto exit_free;
-+
-+ /* Register sysfs hooks */
-+ if ((err = sysfs_create_group(&new_client->dev.kobj, &lm73_group)))
-+ goto exit_detach;
-+
-+ data->hwmon_dev = hwmon_device_register(&new_client->dev);
-+ if (IS_ERR(data->hwmon_dev)) {
-+ err = PTR_ERR(data->hwmon_dev);
-+ goto exit_remove;
-+ }
-+
-+ return 0;
-+
-+exit_remove:
-+ sysfs_remove_group(&new_client->dev.kobj, &lm73_group);
-+exit_detach:
-+ i2c_detach_client(new_client);
-+exit_free:
-+ kfree(data);
-+exit:
-+ return err;
-+}
-+
-+static int lm73_detach_client(struct i2c_client *client)
-+{
-+ struct lm73_data *data = i2c_get_clientdata(client);
-+ hwmon_device_unregister(data->hwmon_dev);
-+ sysfs_remove_group(&client->dev.kobj, &lm73_group);
-+ i2c_detach_client(client);
-+ kfree(data);
-+ return 0;
-+}
-+
-+static int lm73_read_value(struct i2c_client *client, u8 reg)
-+{
-+ short sVal;
-+
-+ if (reg == LM73_REG_CONF)
-+ return i2c_smbus_read_byte_data(client, reg);
-+ else
-+ {
-+ sVal = swab16(i2c_smbus_read_word_data(client, reg));
-+ sVal = sVal >> 7;
-+ return sVal;
-+ }
-+}
-+
-+static int lm73_write_value(struct i2c_client *client, u8 reg, short value)
-+{
-+ if (reg == LM73_REG_CONF)
-+ return i2c_smbus_write_byte_data(client, reg, value);
-+ else
-+ {
-+ value = value<<7;
-+ return i2c_smbus_write_word_data(client, reg, swab16(value));
-+ }
-+}
-+
-+static int __init sensors_lm73_init(void)
-+{
-+ return i2c_add_driver(&lm73_driver);
-+}
-+
-+static void __exit sensors_lm73_exit(void)
-+{
-+ i2c_del_driver(&lm73_driver);
-+}
-+
-+MODULE_AUTHOR("Ligneul Guillaume <guillaume.ligneul@gmail.com>");
-+MODULE_DESCRIPTION("LM73 driver");
-+MODULE_LICENSE("GPL");
-+
-+module_init(sensors_lm73_init);
-+module_exit(sensors_lm73_exit);
-Index: linux-2.6.27/drivers/hwmon/Makefile
-===================================================================
---- linux-2.6.27.orig/drivers/hwmon/Makefile
-+++ linux-2.6.27/drivers/hwmon/Makefile
-@@ -49,6 +49,7 @@ obj-$(CONFIG_SENSORS_IT87) += it87.o
- obj-$(CONFIG_SENSORS_K8TEMP) += k8temp.o
- obj-$(CONFIG_SENSORS_LM63) += lm63.o
- obj-$(CONFIG_SENSORS_LM70) += lm70.o
-+obj-$(CONFIG_SENSORS_LM73) += lm73.o
- obj-$(CONFIG_SENSORS_LM75) += lm75.o
- obj-$(CONFIG_SENSORS_LM77) += lm77.o
- obj-$(CONFIG_SENSORS_LM78) += lm78.o
diff --git a/packages/linux/linux-2.6.27/boc01/008-081208-spi.patch b/packages/linux/linux-2.6.27/boc01/008-081208-spi.patch
deleted file mode 100644
index 96179f6597..0000000000
--- a/packages/linux/linux-2.6.27/boc01/008-081208-spi.patch
+++ /dev/null
@@ -1,143 +0,0 @@
---- linux-2.6.27.orig/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2008-12-12 09:45:19.000000000 +0100
-@@ -15,17 +15,87 @@
-
- #include <linux/pci.h>
- #include <linux/of_platform.h>
-+#include <linux/spi/spi.h>
-
- #include <asm/time.h>
- #include <asm/ipic.h>
- #include <asm/udbg.h>
- #include <sysdev/fsl_pci.h>
-+#include <sysdev/fsl_soc.h>
-+#include <linux/interrupt.h>
-
- #include "mpc83xx.h"
-
- /*
- * Setup the architecture
- */
-+struct gpio {
-+ __be32 gpdir;
-+ __be32 gpodr;
-+ __be32 gpdat;
-+ __be32 gpier;
-+ __be32 gpimr;
-+ __be32 gpicr;
-+} __attribute__ ((packed));
-+static struct gpio *gpio_regs;
-+
-+static void mpc83xx_spi_activate_cs(u8 cs, u8 polarity)
-+{
-+ //printk(KERN_INFO "%s %d %d\n", __func__, cs, polarity);
-+ if (polarity)
-+ setbits32(&gpio_regs->gpdat, 1 << (31 - 14));
-+ else
-+ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14));
-+}
-+
-+static void mpc83xx_spi_deactivate_cs(u8 cs, u8 polarity)
-+{
-+//printk(KERN_INFO "%s %d %d\n", __func__, cs, polarity);
-+ if (polarity)
-+ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14));
-+ else
-+ setbits32(&gpio_regs->gpdat, 1 << (31 - 14));
-+
-+}
-+
-+//static struct mmc_spi_platform_data mpc8313_mmc_pdata = {
-+// .ocr_mask = MMC_VDD_33_34,
-+//};
-+
-+static struct spi_board_info mpc8313_spi_boardinfo = {
-+ .bus_num = 0x7000,
-+ .chip_select = 0,
-+ .max_speed_hz = 50000000,
-+ .modalias = "spidev",
-+// .platform_data = &mpc8313_mmc_pdata,
-+};
-+
-+static int __init mpc8313_spi_init(void)
-+{
-+ __be32 __iomem *psicrl;
-+
-+ /* System I/O Configuration Register Low */
-+ psicrl = ioremap(get_immrbase() + MPC83XX_SICRL_OFFS, 0x4);
-+ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20);
-+ if (!psicrl || !gpio_regs)
-+ return -ENOMEM;
-+
-+ clrbits32(psicrl, 0x03F00000);
-+ setbits32(psicrl, 0x30000000);
-+ iounmap(psicrl);
-+
-+ /* set GPIO13 as output */
-+ setbits32(&gpio_regs->gpdir, 1 << (31 - 14));
-+ clrbits32(&gpio_regs->gpodr, 1 << (31 - 14));
-+ setbits32(&gpio_regs->gpdat, 1 << (31 - 14));
-+
-+ return fsl_spi_init(&mpc8313_spi_boardinfo, 1,
-+ mpc83xx_spi_activate_cs,
-+ mpc83xx_spi_deactivate_cs);
-+}
-+
-+device_initcall(mpc8313_spi_init);
-+
- static void __init mpc831x_rdb_setup_arch(void)
- {
- #ifdef CONFIG_PCI
-@@ -40,6 +110,8 @@
- mpc83xx_add_bridge(np);
- #endif
- mpc831x_usb_cfg();
-+
-+ mpc8313_spi_init();
- }
-
- void __init mpc831x_rdb_init_IRQ(void)
---- linux-2.6.27.orig/drivers/spi/spi_mpc83xx.c 2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/spi/spi_mpc83xx.c 2008-12-08 14:45:12.000000000 +0100
-@@ -280,7 +280,9 @@
- if (pm)
- pm--;
-
-- cs->hw_mode |= SPMODE_PM(pm);
-+ cs->hw_mode = 0x0F700000;
-+ mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode,cs->hw_mode);
-+
- regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode);
- if (cs->hw_mode != regval) {
- unsigned long flags;
-@@ -448,7 +450,7 @@
- cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode);
- /* mask out bits we are going to set */
- cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH
-- | SPMODE_REV | SPMODE_LOOP);
-+ | SPMODE_REV );
-
- if (spi->mode & SPI_CPHA)
- cs->hw_mode |= SPMODE_CP_BEGIN_EDGECLK;
-@@ -456,8 +458,10 @@
- cs->hw_mode |= SPMODE_CI_INACTIVEHIGH;
- if (!(spi->mode & SPI_LSB_FIRST))
- cs->hw_mode |= SPMODE_REV;
-- if (spi->mode & SPI_LOOP)
-- cs->hw_mode |= SPMODE_LOOP;
-+
-+ cs->hw_mode = 0x0F700000;
-+ mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode,cs->hw_mode);
-+ cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode);
-
- retval = mpc83xx_spi_setup_transfer(spi, NULL);
- if (retval < 0) {
-@@ -637,7 +641,7 @@
- INIT_LIST_HEAD(&mpc83xx_spi->queue);
-
- mpc83xx_spi->workqueue = create_singlethread_workqueue(
-- master->dev.parent->bus_id);
-+ dev->dev.bus_id);
- if (mpc83xx_spi->workqueue == NULL) {
- ret = -EBUSY;
- goto free_irq;
diff --git a/packages/linux/linux-2.6.27/boc01/010-090112-mii.patch b/packages/linux/linux-2.6.27/boc01/010-090112-mii.patch
deleted file mode 100644
index 33c6cb7498..0000000000
--- a/packages/linux/linux-2.6.27/boc01/010-090112-mii.patch
+++ /dev/null
@@ -1,503 +0,0 @@
-Index: linux-2.6.27/drivers/net/gianfar_ethtool.c
-===================================================================
---- linux-2.6.27.orig/drivers/net/gianfar_ethtool.c
-+++ linux-2.6.27/drivers/net/gianfar_ethtool.c
-@@ -182,13 +182,7 @@ static void gfar_gdrvinfo(struct net_dev
-
- static int gfar_ssettings(struct net_device *dev, struct ethtool_cmd *cmd)
- {
-- struct gfar_private *priv = netdev_priv(dev);
-- struct phy_device *phydev = priv->phydev;
--
-- if (NULL == phydev)
-- return -ENODEV;
--
-- return phy_ethtool_sset(phydev, cmd);
-+ return 0;
- }
-
-
-@@ -196,15 +190,11 @@ static int gfar_ssettings(struct net_dev
- static int gfar_gsettings(struct net_device *dev, struct ethtool_cmd *cmd)
- {
- struct gfar_private *priv = netdev_priv(dev);
-- struct phy_device *phydev = priv->phydev;
--
-- if (NULL == phydev)
-- return -ENODEV;
-
- cmd->maxtxpkt = priv->txcount;
- cmd->maxrxpkt = priv->rxcount;
-
-- return phy_ethtool_gset(phydev, cmd);
-+ return 0;
- }
-
- /* Return the length of the register structure */
-@@ -232,18 +222,7 @@ static unsigned int gfar_usecs2ticks(str
- unsigned int count;
-
- /* The timer is different, depending on the interface speed */
-- switch (priv->phydev->speed) {
-- case SPEED_1000:
-- count = GFAR_GBIT_TIME;
-- break;
-- case SPEED_100:
-- count = GFAR_100_TIME;
-- break;
-- case SPEED_10:
-- default:
-- count = GFAR_10_TIME;
-- break;
-- }
-+ count = GFAR_100_TIME;
-
- /* Make sure we return a number greater than 0
- * if usecs > 0 */
-@@ -256,18 +235,7 @@ static unsigned int gfar_ticks2usecs(str
- unsigned int count;
-
- /* The timer is different, depending on the interface speed */
-- switch (priv->phydev->speed) {
-- case SPEED_1000:
-- count = GFAR_GBIT_TIME;
-- break;
-- case SPEED_100:
-- count = GFAR_100_TIME;
-- break;
-- case SPEED_10:
-- default:
-- count = GFAR_10_TIME;
-- break;
-- }
-+ count = GFAR_100_TIME;
-
- /* Make sure we return a number greater than 0 */
- /* if ticks is > 0 */
-@@ -283,9 +251,6 @@ static int gfar_gcoalesce(struct net_dev
- if (!(priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_COALESCE))
- return -EOPNOTSUPP;
-
-- if (NULL == priv->phydev)
-- return -ENODEV;
--
- cvals->rx_coalesce_usecs = gfar_ticks2usecs(priv, priv->rxtime);
- cvals->rx_max_coalesced_frames = priv->rxcount;
-
-@@ -342,9 +307,6 @@ static int gfar_scoalesce(struct net_dev
- else
- priv->rxcoalescing = 1;
-
-- if (NULL == priv->phydev)
-- return -ENODEV;
--
- /* Check the bounds of the values */
- if (cvals->rx_coalesce_usecs > GFAR_MAX_COAL_USECS) {
- pr_info("Coalescing is limited to %d microseconds\n",
-Index: linux-2.6.27/drivers/net/gianfar.c
-===================================================================
---- linux-2.6.27.orig/drivers/net/gianfar.c
-+++ linux-2.6.27/drivers/net/gianfar.c
-@@ -116,7 +116,6 @@ static int gfar_change_mtu(struct net_de
- static irqreturn_t gfar_error(int irq, void *dev_id);
- static irqreturn_t gfar_transmit(int irq, void *dev_id);
- static irqreturn_t gfar_interrupt(int irq, void *dev_id);
--static void adjust_link(struct net_device *dev);
- static void init_registers(struct net_device *dev);
- static int init_phy(struct net_device *dev);
- static int gfar_probe(struct platform_device *pdev);
-@@ -124,7 +123,6 @@ static int gfar_remove(struct platform_d
- static void free_skb_resources(struct gfar_private *priv);
- static void gfar_set_multi(struct net_device *dev);
- static void gfar_set_hash_for_addr(struct net_device *dev, u8 *addr);
--static void gfar_configure_serdes(struct net_device *dev);
- static int gfar_poll(struct napi_struct *napi, int budget);
- #ifdef CONFIG_NET_POLL_CONTROLLER
- static void gfar_netpoll(struct net_device *dev);
-@@ -424,8 +422,6 @@ static int gfar_suspend(struct platform_
- tempval = gfar_read(&priv->regs->maccfg2);
- tempval |= MACCFG2_MPEN;
- gfar_write(&priv->regs->maccfg2, tempval);
-- } else {
-- phy_stop(priv->phydev);
- }
- }
-
-@@ -438,17 +434,12 @@ static int gfar_resume(struct platform_d
- struct gfar_private *priv = netdev_priv(dev);
- unsigned long flags;
- u32 tempval;
-- int magic_packet = priv->wol_en &&
-- (priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_MAGIC_PACKET);
-
- if (!netif_running(dev)) {
- netif_device_attach(dev);
- return 0;
- }
-
-- if (!magic_packet && priv->phydev)
-- phy_start(priv->phydev);
--
- /* Disable Magic Packet mode, in case something
- * else woke us up.
- */
-@@ -476,47 +467,6 @@ static int gfar_resume(struct platform_d
- #define gfar_resume NULL
- #endif
-
--/* Reads the controller's registers to determine what interface
-- * connects it to the PHY.
-- */
--static phy_interface_t gfar_get_interface(struct net_device *dev)
--{
-- struct gfar_private *priv = netdev_priv(dev);
-- u32 ecntrl = gfar_read(&priv->regs->ecntrl);
--
-- if (ecntrl & ECNTRL_SGMII_MODE)
-- return PHY_INTERFACE_MODE_SGMII;
--
-- if (ecntrl & ECNTRL_TBI_MODE) {
-- if (ecntrl & ECNTRL_REDUCED_MODE)
-- return PHY_INTERFACE_MODE_RTBI;
-- else
-- return PHY_INTERFACE_MODE_TBI;
-- }
--
-- if (ecntrl & ECNTRL_REDUCED_MODE) {
-- if (ecntrl & ECNTRL_REDUCED_MII_MODE)
-- return PHY_INTERFACE_MODE_RMII;
-- else {
-- phy_interface_t interface = priv->einfo->interface;
--
-- /*
-- * This isn't autodetected right now, so it must
-- * be set by the device tree or platform code.
-- */
-- if (interface == PHY_INTERFACE_MODE_RGMII_ID)
-- return PHY_INTERFACE_MODE_RGMII_ID;
--
-- return PHY_INTERFACE_MODE_RGMII;
-- }
-- }
--
-- if (priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT)
-- return PHY_INTERFACE_MODE_GMII;
--
-- return PHY_INTERFACE_MODE_MII;
--}
--
-
- /* Initializes driver's PHY state, and attaches to the PHY.
- * Returns 0 on success.
-@@ -524,10 +474,6 @@ static phy_interface_t gfar_get_interfac
- static int init_phy(struct net_device *dev)
- {
- struct gfar_private *priv = netdev_priv(dev);
-- uint gigabit_support =
-- priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT ?
-- SUPPORTED_1000baseT_Full : 0;
-- struct phy_device *phydev;
- char phy_id[BUS_ID_SIZE];
- phy_interface_t interface;
-
-@@ -537,54 +483,11 @@ static int init_phy(struct net_device *d
-
- snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, priv->einfo->bus_id, priv->einfo->phy_id);
-
-- interface = gfar_get_interface(dev);
--
-- phydev = phy_connect(dev, phy_id, &adjust_link, 0, interface);
--
-- if (interface == PHY_INTERFACE_MODE_SGMII)
-- gfar_configure_serdes(dev);
--
-- if (IS_ERR(phydev)) {
-- printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
-- return PTR_ERR(phydev);
-- }
--
-- /* Remove any features not supported by the controller */
-- phydev->supported &= (GFAR_SUPPORTED | gigabit_support);
-- phydev->advertising = phydev->supported;
--
-- priv->phydev = phydev;
-+ interface = PHY_INTERFACE_MODE_MII;
-
- return 0;
- }
-
--/*
-- * Initialize TBI PHY interface for communicating with the
-- * SERDES lynx PHY on the chip. We communicate with this PHY
-- * through the MDIO bus on each controller, treating it as a
-- * "normal" PHY at the address found in the TBIPA register. We assume
-- * that the TBIPA register is valid. Either the MDIO bus code will set
-- * it to a value that doesn't conflict with other PHYs on the bus, or the
-- * value doesn't matter, as there are no other PHYs on the bus.
-- */
--static void gfar_configure_serdes(struct net_device *dev)
--{
-- struct gfar_private *priv = netdev_priv(dev);
-- struct gfar_mii __iomem *regs =
-- (void __iomem *)&priv->regs->gfar_mii_regs;
-- int tbipa = gfar_read(&priv->regs->tbipa);
--
-- /* Single clk mode, mii mode off(for serdes communication) */
-- gfar_local_mdio_write(regs, tbipa, MII_TBICON, TBICON_CLK_SELECT);
--
-- gfar_local_mdio_write(regs, tbipa, MII_ADVERTISE,
-- ADVERTISE_1000XFULL | ADVERTISE_1000XPAUSE |
-- ADVERTISE_1000XPSE_ASYM);
--
-- gfar_local_mdio_write(regs, tbipa, MII_BMCR, BMCR_ANENABLE |
-- BMCR_ANRESTART | BMCR_FULLDPLX | BMCR_SPEED1000);
--}
--
- static void init_registers(struct net_device *dev)
- {
- struct gfar_private *priv = netdev_priv(dev);
-@@ -678,8 +581,6 @@ void stop_gfar(struct net_device *dev)
- struct gfar __iomem *regs = priv->regs;
- unsigned long flags;
-
-- phy_stop(priv->phydev);
--
- /* Lock it down */
- spin_lock_irqsave(&priv->txlock, flags);
- spin_lock(&priv->rxlock);
-@@ -949,7 +850,6 @@ int startup_gfar(struct net_device *dev)
- }
- }
-
-- phy_start(priv->phydev);
-
- /* Configure the coalescing support */
- if (priv->txcoalescing)
-@@ -1217,9 +1117,6 @@ static int gfar_close(struct net_device
- cancel_work_sync(&priv->reset_task);
- stop_gfar(dev);
-
-- /* Disconnect from the PHY */
-- phy_disconnect(priv->phydev);
-- priv->phydev = NULL;
-
- netif_stop_queue(dev);
-
-@@ -1777,86 +1674,6 @@ static irqreturn_t gfar_interrupt(int ir
- return IRQ_HANDLED;
- }
-
--/* Called every time the controller might need to be made
-- * aware of new link state. The PHY code conveys this
-- * information through variables in the phydev structure, and this
-- * function converts those variables into the appropriate
-- * register values, and can bring down the device if needed.
-- */
--static void adjust_link(struct net_device *dev)
--{
-- struct gfar_private *priv = netdev_priv(dev);
-- struct gfar __iomem *regs = priv->regs;
-- unsigned long flags;
-- struct phy_device *phydev = priv->phydev;
-- int new_state = 0;
--
-- spin_lock_irqsave(&priv->txlock, flags);
-- if (phydev->link) {
-- u32 tempval = gfar_read(&regs->maccfg2);
-- u32 ecntrl = gfar_read(&regs->ecntrl);
--
-- /* Now we make sure that we can be in full duplex mode.
-- * If not, we operate in half-duplex mode. */
-- if (phydev->duplex != priv->oldduplex) {
-- new_state = 1;
-- if (!(phydev->duplex))
-- tempval &= ~(MACCFG2_FULL_DUPLEX);
-- else
-- tempval |= MACCFG2_FULL_DUPLEX;
--
-- priv->oldduplex = phydev->duplex;
-- }
--
-- if (phydev->speed != priv->oldspeed) {
-- new_state = 1;
-- switch (phydev->speed) {
-- case 1000:
-- tempval =
-- ((tempval & ~(MACCFG2_IF)) | MACCFG2_GMII);
-- break;
-- case 100:
-- case 10:
-- tempval =
-- ((tempval & ~(MACCFG2_IF)) | MACCFG2_MII);
--
-- /* Reduced mode distinguishes
-- * between 10 and 100 */
-- if (phydev->speed == SPEED_100)
-- ecntrl |= ECNTRL_R100;
-- else
-- ecntrl &= ~(ECNTRL_R100);
-- break;
-- default:
-- if (netif_msg_link(priv))
-- printk(KERN_WARNING
-- "%s: Ack! Speed (%d) is not 10/100/1000!\n",
-- dev->name, phydev->speed);
-- break;
-- }
--
-- priv->oldspeed = phydev->speed;
-- }
--
-- gfar_write(&regs->maccfg2, tempval);
-- gfar_write(&regs->ecntrl, ecntrl);
--
-- if (!priv->oldlink) {
-- new_state = 1;
-- priv->oldlink = 1;
-- }
-- } else if (priv->oldlink) {
-- new_state = 1;
-- priv->oldlink = 0;
-- priv->oldspeed = 0;
-- priv->oldduplex = -1;
-- }
--
-- if (new_state && netif_msg_link(priv))
-- phy_print_status(phydev);
--
-- spin_unlock_irqrestore(&priv->txlock, flags);
--}
-
- /* Update the hash table based on the current list of multicast
- * addresses we subscribe to. Also, change the promiscuity of
-Index: linux-2.6.27/drivers/net/gianfar.h
-===================================================================
---- linux-2.6.27.orig/drivers/net/gianfar.h
-+++ linux-2.6.27/drivers/net/gianfar.h
-@@ -150,7 +150,7 @@ extern const char gfar_driver_version[];
- #define MACCFG1_SYNCD_TX_EN 0x00000002
- #define MACCFG1_TX_EN 0x00000001
-
--#define MACCFG2_INIT_SETTINGS 0x00007205
-+#define MACCFG2_INIT_SETTINGS 0x00007105
- #define MACCFG2_FULL_DUPLEX 0x00000001
- #define MACCFG2_IF 0x00000300
- #define MACCFG2_MII 0x00000100
-@@ -748,7 +748,6 @@ struct gfar_private {
- struct gianfar_platform_data *einfo;
-
- /* PHY stuff */
-- struct phy_device *phydev;
- struct mii_bus *mii_bus;
- int oldspeed;
- int oldduplex;
-Index: linux-2.6.27/drivers/net/gianfar_mii.c
-===================================================================
---- linux-2.6.27.orig/drivers/net/gianfar_mii.c
-+++ linux-2.6.27/drivers/net/gianfar_mii.c
-@@ -217,28 +217,10 @@ static int gfar_mdio_probe(struct device
- if (r)
- return r;
-
-- if (phy_id == 0xffffffff)
-- break;
-- }
--
-- /* The bus is full. We don't support using 31 PHYs, sorry */
-- if (i == 0)
-- return -EBUSY;
--
-- gfar_write(&enet_regs->tbipa, i);
--
-- err = mdiobus_register(new_bus);
--
-- if (0 != err) {
-- printk (KERN_ERR "%s: Cannot register as MDIO bus\n",
-- new_bus->name);
-- goto bus_register_fail;
- }
-
- return 0;
-
--bus_register_fail:
-- iounmap(regs);
- reg_map_fail:
- kfree(new_bus);
-
-Index: linux-2.6.27/drivers/net/gianfar_mii.h
-===================================================================
---- linux-2.6.27.orig/drivers/net/gianfar_mii.h
-+++ linux-2.6.27/drivers/net/gianfar_mii.h
-@@ -27,7 +27,6 @@
- | SUPPORTED_10baseT_Full \
- | SUPPORTED_100baseT_Half \
- | SUPPORTED_100baseT_Full \
-- | SUPPORTED_Autoneg \
- | SUPPORTED_MII)
-
- struct gfar_mii {
-Index: linux-2.6.27/drivers/net/phy/phy_device.c
-===================================================================
---- linux-2.6.27.orig/drivers/net/phy/phy_device.c
-+++ linux-2.6.27/drivers/net/phy/phy_device.c
-@@ -281,7 +281,7 @@ struct phy_device * phy_connect(struct n
- if (IS_ERR(phydev))
- return phydev;
-
-- phy_prepare_link(phydev, handler);
-+ phydev->link = 1;
-
- phy_start_machine(phydev, NULL);
-
-@@ -302,7 +302,7 @@ void phy_disconnect(struct phy_device *p
- phy_stop_interrupts(phydev);
-
- phy_stop_machine(phydev);
--
-+
- phydev->adjust_link = NULL;
-
- phy_detach(phydev);
-@@ -438,7 +438,7 @@ int genphy_config_advert(struct phy_devi
- if (adv < 0)
- return adv;
-
-- adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP |
-+ adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP |
- ADVERTISE_PAUSE_ASYM);
- if (advertise & ADVERTISED_10baseT_Half)
- adv |= ADVERTISE_10HALF;
-@@ -503,7 +503,7 @@ int genphy_setup_forced(struct phy_devic
-
- if (DUPLEX_FULL == phydev->duplex)
- ctl |= BMCR_FULLDPLX;
--
-+
- err = phy_write(phydev, MII_BMCR, ctl);
-
- if (err < 0)
-@@ -671,7 +671,7 @@ int genphy_read_status(struct phy_device
- phydev->duplex = DUPLEX_FULL;
- } else if (lpa & (LPA_100FULL | LPA_100HALF)) {
- phydev->speed = SPEED_100;
--
-+
- if (lpa & LPA_100FULL)
- phydev->duplex = DUPLEX_FULL;
- } else
-Index: linux-2.6.27/include/linux/phy.h
-===================================================================
---- linux-2.6.27.orig/include/linux/phy.h
-+++ linux-2.6.27/include/linux/phy.h
-@@ -339,6 +339,11 @@ struct phy_driver {
- u32 features;
- u32 flags;
-
-+ /* Called during discovery to test if the
-+ * device can attach to the bus, even if
-+ phy id and mask do not match */
-+ bool (*detect)(struct mii_bus *bus, int addr);
-+
- /*
- * Called to initialize the PHY,
- * including after a reset
diff --git a/packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch b/packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch
deleted file mode 100644
index 0ff389ffe7..0000000000
--- a/packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch
+++ /dev/null
@@ -1,440 +0,0 @@
-Index: linux-2.6.27/drivers/char/Kconfig
-===================================================================
---- linux-2.6.27.orig/drivers/char/Kconfig
-+++ linux-2.6.27/drivers/char/Kconfig
-@@ -1014,6 +1014,24 @@ config GPIO_VR41XX
- tristate "NEC VR4100 series General-purpose I/O Unit support"
- depends on CPU_VR41XX
-
-+config GPIO_MPC8313
-+ tristate "mpc8313e gpio"
-+ depends on PPC_MPC831x
-+ select INPUT
-+ default y
-+ help
-+ Give userspace access to the GPIO pins on the MPC8313E devices.
-+
-+config EXIO_MPC8313
-+ tristate "mpc8313e exio"
-+ depends on PPC_MPC831x
-+ select INPUT
-+ select LEDS_CLASS
-+ default y
-+ help
-+ Give userspace access to the Extenrder IO pins on the CPE board.
-+
-+
- config RAW_DRIVER
- tristate "RAW driver (/dev/raw/rawN)"
- depends on BLOCK
-Index: linux-2.6.27/drivers/char/Makefile
-===================================================================
---- linux-2.6.27.orig/drivers/char/Makefile
-+++ linux-2.6.27/drivers/char/Makefile
-@@ -109,6 +109,8 @@ obj-$(CONFIG_TCG_TPM) += tpm/
- obj-$(CONFIG_PS3_FLASH) += ps3flash.o
-
- obj-$(CONFIG_JS_RTC) += js-rtc.o
-+obj-$(CONFIG_GPIO_MPC8313) += mpc8313e_gpio.o
-+obj-$(CONFIG_EXIO_MPC8313) += mpc8313e_exio.o
- js-rtc-y = rtc.o
-
- # Files generated that shall be removed upon make clean
-Index: linux-2.6.27/drivers/char/mpc8313e_exio.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/char/mpc8313e_exio.c
-@@ -0,0 +1,240 @@
-+/*
-+* CPE Extender io driver
-+*
-+* Copyright (C) 2007, CenoSYS (www.cenosys.com).
-+*
-+* Alexandre Coffignal <alexandre.coffignal@cenosys.com>
-+* Sylvain Giroudon <sylvain.giroudon@goobie.fr>
-+*
-+* This software program is licensed subject to the GNU General Public License
-+* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+*
-+* Allows a user space process to control the EXIO pins.
-+*
-+*/
-+
-+#include <linux/fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <asm/uaccess.h>
-+#include <asm/io.h>
-+#include <linux/of_platform.h>
-+#include <sysdev/fsl_soc.h>
-+#include <linux/cdev.h>
-+#include <linux/leds.h>
-+
-+static char module_name[] = "exio";
-+
-+
-+#define NB_EXIO 8
-+#define DEFAULT_STATE 0x58
-+#define EXIO_BASE 0xfa000000
-+#define EXIO_SIZE 0x2
-+#define EXIO_LED_MASK 0x01
-+
-+static int major = 0;
-+static u8 exio_state = DEFAULT_STATE;
-+static void *exio_io = NULL;
-+static struct resource *exio_mem = NULL;
-+static struct class * exio_class = NULL;
-+
-+
-+static void
-+exio_led_set(struct led_classdev *led_cdev,
-+ enum led_brightness value)
-+{
-+ if ( value )
-+ exio_state &= ~EXIO_LED_MASK;
-+ else
-+ exio_state |= EXIO_LED_MASK;
-+
-+ iowrite8(exio_state, exio_io);
-+}
-+
-+static struct led_classdev exio_led = {
-+ .name = "boc:blue:status",
-+ .brightness_set = exio_led_set,
-+};
-+
-+static inline int
-+exio_led_init(void)
-+{
-+ return led_classdev_register(NULL, &exio_led);
-+}
-+
-+
-+static inline void
-+exio_led_exit(void)
-+{
-+ led_classdev_unregister(&exio_led);
-+}
-+
-+
-+static inline void
-+exio_led_suspend(void)
-+{
-+ led_classdev_suspend(&exio_led);
-+}
-+
-+
-+static inline void
-+exio_led_resume(void)
-+{
-+ led_classdev_resume(&exio_led);
-+}
-+
-+
-+static ssize_t exio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos)
-+{
-+ unsigned m = iminor(file->f_path.dentry->d_inode);
-+ size_t i;
-+ char mask;
-+ int err = 0;
-+
-+ for (i = 0; i < len; ++i) {
-+ char c;
-+ if (get_user(c, data + i))
-+ return -EFAULT;
-+
-+ mask=(1<<(7-m));
-+ switch (c) {
-+ case '0':
-+ /*Clear exio level */
-+ exio_state&=~mask;
-+ iowrite8(exio_state, exio_io);
-+ break;
-+ case '1':
-+ /*Set exio level */
-+ exio_state|=mask;
-+ iowrite8(exio_state, exio_io);
-+ break;
-+ default:
-+ printk(KERN_DEBUG "exio%2d bad setting: chr<0x%2x>\n",
-+ m, (int)c);
-+ err++;
-+ }
-+ }
-+ if (err)
-+ return -EINVAL;
-+
-+ return len;
-+}
-+
-+
-+static ssize_t exio_read(struct file *file, char __user * buf,
-+ size_t len, loff_t * ppos)
-+{
-+ unsigned m = iminor(file->f_path.dentry->d_inode);
-+ int value;
-+ char mask;
-+ char state=ioread8(exio_io);
-+
-+ mask=(1<<(7-m));
-+ value=state&mask;
-+ if (put_user(value ? '1' : '0', buf))
-+ return -EFAULT;
-+ return 1;
-+
-+}
-+
-+static int exio_open(struct inode *inode, struct file *file)
-+{
-+ return 0;
-+}
-+
-+static int exio_close(struct inode *inode, struct file *file)
-+{
-+ printk(KERN_DEBUG "close()\n");
-+ return 0;
-+}
-+
-+struct file_operations exio_fops =
-+{
-+ .owner = THIS_MODULE,
-+ .read = exio_read,
-+ .write = exio_write,
-+ .open = exio_open,
-+ .release = exio_close /* correspond a close */
-+};
-+
-+
-+static void exio_cleanup(void)
-+{
-+ if ( exio_mem )
-+ release_mem_region(EXIO_BASE, EXIO_SIZE);
-+ exio_mem = NULL;
-+ exio_io = NULL;
-+
-+ if ( exio_class )
-+ class_destroy(exio_class);
-+ exio_class = NULL;
-+
-+ unregister_chrdev(major, module_name);
-+}
-+
-+
-+static int __init exio_init(void)
-+{
-+ int rc, i;
-+
-+ rc = register_chrdev(major, module_name, &exio_fops);
-+ if ( rc < 0 )
-+ return rc;
-+
-+ if ( major == 0 ) {
-+ major = rc; /* accept dynamic major number */
-+ printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major);
-+ }
-+
-+ exio_class = class_create(THIS_MODULE, "exio");
-+ if ( exio_class == NULL )
-+ goto out_cleanup;
-+
-+ for (i = 0; i < NB_EXIO; i++) {
-+ device_create(exio_class, NULL, MKDEV(major, i) ,NULL, "exio%i", i);
-+ }
-+
-+ /* System I/O Configuration Register Low */
-+ exio_mem = request_mem_region(EXIO_BASE, EXIO_SIZE, "exio");
-+ if ( exio_mem == NULL )
-+ goto out_cleanup;
-+
-+ exio_io = ioremap(EXIO_BASE, EXIO_SIZE);
-+ if ( exio_io == NULL )
-+ goto out_cleanup;
-+
-+ /* Output default exio state */
-+ iowrite8(exio_state, exio_io);
-+
-+ /* Register led class entry for driving the Status led */
-+ exio_led_init();
-+
-+ return 0;
-+
-+out_cleanup:
-+ exio_cleanup();
-+ return -ENOMEM;
-+}
-+
-+static void __exit exio_exit(void)
-+{
-+ /* Unregister Status led */
-+ exio_led_exit();
-+
-+ /* Cleanup all other gears */
-+ exio_cleanup();
-+}
-+
-+
-+module_param(major, int, 0644);
-+MODULE_PARM_DESC(major, "Static major number (none = dynamic)");
-+MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>");
-+MODULE_DESCRIPTION("boc01 exio management");
-+MODULE_LICENSE("GPL");
-+
-+module_init(exio_init);
-+module_exit(exio_exit);
-+
-+
-Index: linux-2.6.27/drivers/char/mpc8313e_gpio.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/char/mpc8313e_gpio.c
-@@ -0,0 +1,148 @@
-+/*
-+* mpc8313e gpio driver
-+*
-+*
-+* Copyright (C) 2007, CenoSYS (www.cenosys.com).
-+* Alexandre Coffignal
-+* alexandre.coffignal@cenosys.com
-+*
-+* This software program is licensed subject to the GNU General Public License
-+* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+*
-+* Allows a user space process to control the GPIO pins.
-+*
-+*/
-+
-+#include <linux/fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <asm/uaccess.h>
-+#include <asm/io.h>
-+#include <linux/of_platform.h>
-+#include <sysdev/fsl_soc.h>
-+
-+static char module_name[] = "gpio";
-+#define NB_GPIO 8
-+static int major = 0;
-+struct gpio {
-+ __be32 gpdir;
-+ __be32 gpodr;
-+ __be32 gpdat;
-+ __be32 gpier;
-+ __be32 gpimr;
-+ __be32 gpicr;
-+} __attribute__ ((packed));
-+static struct gpio *gpio_regs;
-+
-+static ssize_t mpc8313e_gpio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos)
-+{
-+ unsigned m = iminor(file->f_path.dentry->d_inode);
-+ size_t i;
-+ int err = 0;
-+
-+ for (i = 0; i < len; ++i) {
-+ char c;
-+ if (get_user(c, data + i))
-+ return -EFAULT;
-+ /* set GPIO as output */
-+ setbits32(&gpio_regs->gpdir, 1 << (31 - m));
-+ clrbits32(&gpio_regs->gpodr, 1 << (31 - m));
-+ switch (c) {
-+ case '0':
-+ /*Set GPIO level */
-+ clrbits32(&gpio_regs->gpdat, 1 << (31 - m));
-+ break;
-+ case '1':
-+ /*Set GPIO level */
-+ setbits32(&gpio_regs->gpdat, 1 << (31 - m));
-+ break;
-+ default:
-+ printk(KERN_DEBUG "io%2d bad setting: chr<0x%2x>\n",
-+ m, (int)c);
-+ err++;
-+ }
-+ }
-+ if (err)
-+ return -EINVAL;
-+
-+ return len;
-+}
-+
-+static ssize_t mpc8313e_gpio_read(struct file *file, char __user * buf, size_t len, loff_t * ppos)
-+{
-+ unsigned m = iminor(file->f_path.dentry->d_inode);
-+ int value;
-+ value=in_be32(&gpio_regs->gpdat)&(1 << (31 - m));
-+ if (put_user(value ? '1' : '0', buf))
-+ return -EFAULT;
-+ return 1;
-+
-+
-+}
-+
-+
-+
-+static int mpc8313e_gpio_open(struct inode *inode, struct file *file)
-+{
-+ return 0;
-+}
-+
-+static int mpc8313e_gpio_close(struct inode *inode, struct file *file)
-+{
-+ return 0;
-+}
-+
-+struct file_operations mpc8313e_gpio_fops =
-+{
-+ .owner = THIS_MODULE,
-+ .read = mpc8313e_gpio_read,
-+ .write = mpc8313e_gpio_write,
-+ .open = mpc8313e_gpio_open,
-+ .release = mpc8313e_gpio_close
-+};
-+static struct class * gpio_class;
-+static int __init mpc8313e_gpio_init(void)
-+{
-+ int rc,i;
-+
-+ rc = register_chrdev(major, module_name, &mpc8313e_gpio_fops);
-+ if (rc < 0) {
-+ return rc;
-+ }
-+
-+ if (major == 0) {
-+ major = rc; /* accept dynamic major number */
-+ printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major);
-+
-+ }
-+ gpio_class = class_create(THIS_MODULE, "gpio");
-+
-+ for (i = 0; i < NB_GPIO; i++)
-+ {
-+ device_create(gpio_class, NULL, MKDEV(major, i) ,NULL, "gpio%d",i);
-+
-+ }
-+
-+ /* System I/O Configuration Register Low */
-+ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20);
-+ if (!gpio_regs)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+static void __exit mpc8313e_gpio_cleanup(void)
-+{
-+ unregister_chrdev(major, module_name);
-+}
-+module_param(major, int, 0644);
-+MODULE_PARM_DESC(major, "Static major number (none = dynamic)");
-+MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>");
-+MODULE_DESCRIPTION("mpc8313e GPIO");
-+MODULE_LICENSE("GPL");
-+
-+module_init(mpc8313e_gpio_init);
-+module_exit(mpc8313e_gpio_cleanup);
-+
-+
diff --git a/packages/linux/linux-2.6.27/boc01/012-090219-capsense.patch b/packages/linux/linux-2.6.27/boc01/012-090219-capsense.patch
deleted file mode 100644
index fed8218427..0000000000
--- a/packages/linux/linux-2.6.27/boc01/012-090219-capsense.patch
+++ /dev/null
@@ -1,865 +0,0 @@
-Index: linux-2.6.27/drivers/input/misc/Kconfig
-===================================================================
---- linux-2.6.27.orig/drivers/input/misc/Kconfig
-+++ linux-2.6.27/drivers/input/misc/Kconfig
-@@ -207,4 +207,13 @@ config HP_SDC_RTC
- Say Y here if you want to support the built-in real time clock
- of the HP SDC controller.
-
-+config INPUT_CAPSENSE_BTNS
-+ tristate "CAPSENSE CY8C201xx buttons interface"
-+ select INPUT_POLLDEV
-+ select LEDS_CLASS
-+ help
-+ To compile this driver as a module, choose M here:
-+ the module will be called capsense-btns.
-+ To change poll interval, invoque poll parameter in msecs.
-+
- endif
-Index: linux-2.6.27/drivers/input/misc/Makefile
-===================================================================
---- linux-2.6.27.orig/drivers/input/misc/Makefile
-+++ linux-2.6.27/drivers/input/misc/Makefile
-@@ -20,3 +20,4 @@ obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.
- obj-$(CONFIG_INPUT_UINPUT) += uinput.o
- obj-$(CONFIG_INPUT_APANEL) += apanel.o
- obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o
-+obj-$(CONFIG_INPUT_CAPSENSE_BTNS) += capsense-btns.o
-Index: linux-2.6.27/drivers/input/misc/capsense-btns.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/input/misc/capsense-btns.c
-@@ -0,0 +1,438 @@
-+/*
-+ * CAPSENSE Interface driver
-+ *
-+ *
-+ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
-+ *
-+ * Guillaume Ligneul <guillaume.ligneul@gmail.com>
-+ * Jeremy Lainé <jeremy.laine@bolloretelecom.eu>
-+ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
-+ *
-+ * This software program is licensed subject to the GNU General Public License
-+ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/input-polldev.h>
-+#include <linux/ioport.h>
-+#include <linux/module.h>
-+#include <linux/i2c.h>
-+#include <linux/leds.h>
-+
-+
-+static int capsense_attach_adapter(struct i2c_adapter *adapter);
-+static int capsense_detach_client(struct i2c_client *client);
-+#ifdef CONFIG_PM
-+static int capsense_suspend(struct i2c_client *client, pm_message_t mesg);
-+static int capsense_resume(struct i2c_client *client);
-+#endif
-+
-+#define DRIVER_NAME "capsense"
-+
-+/* i2c configuration */
-+#define CAPSENSE_I2C_ADDR 0x25
-+// To debug (may be add in include/linux/i2c-id.h)
-+#define I2C_DRIVERID_CAPSENSE 98
-+
-+#define BUTTONS_POLL_INTERVAL 30 /* msec */
-+
-+#define CAP_OUTPUT_PORT(port) (0x04+(port))
-+#define CAP_OP_SEL(port,bit) (0x1C+(25*(port))+(5*(bit)))
-+#define CAP_READ_STATUS(port) (0x88+(port))
-+
-+#define CAP_CS(command,port,bit) ((command)+(5*(port))+(bit))
-+#define CAP_CS_FINGER_TH(port,bit) CAP_CS(0x61,port,bit)
-+#define CAP_CS_IDAC(port,bit) CAP_CS(0x6B,port,bit)
-+
-+#define CAP_DEVICE_ID 0x7A
-+#define CAP_DEVICE_STATUS 0x7B
-+#define CAP_I2C_ADDR_DM 0x7C
-+
-+#define CAP_COMMAND_REG 0xA0
-+#define CAP_COMMAND_STORE_NVM 0x01
-+#define CAP_COMMAND_RESTORE_FACTORY 0x02
-+#define CAP_COMMAND_RECONFIGURE 0x06
-+#define CAP_COMMAND_NORMAL_MODE 0x07
-+#define CAP_COMMAND_SETUP_MODE 0x08
-+
-+#define CAP_NLEDS 5
-+
-+static int poll_interval = BUTTONS_POLL_INTERVAL;
-+module_param_named(poll, poll_interval, uint, 0);
-+MODULE_PARM_DESC(poll, "poll interval in msec (30=default)");
-+
-+static const unsigned short normal_i2c[] = {
-+ CAPSENSE_I2C_ADDR , I2C_CLIENT_END
-+};
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver capsense_driver = {
-+ .driver = {
-+ .name = DRIVER_NAME,
-+ },
-+ .id = I2C_DRIVERID_CAPSENSE,
-+ .attach_adapter = &capsense_attach_adapter,
-+ .detach_client = &capsense_detach_client,
-+#ifdef CONFIG_PM
-+ .suspend = &capsense_suspend,
-+ .resume = &capsense_resume,
-+#endif
-+};
-+
-+struct capsense_led {
-+ struct led_classdev cdev;
-+ struct capsense_ctx *capsense;
-+ int port;
-+ int bit;
-+};
-+
-+struct capsense_ctx {
-+ struct input_polled_dev *ipdev;
-+ struct i2c_client client;
-+ unsigned char key_state;
-+ struct capsense_led leds[CAP_NLEDS];
-+ unsigned char led_state[2];
-+ struct mutex mutex;
-+};
-+
-+static unsigned short input_keymap[] = {
-+ // GP0
-+ KEY_F1,
-+ KEY_ENTER,
-+ KEY_DOWN,
-+ KEY_BACKSPACE,
-+ // GP1
-+ KEY_UP,
-+};
-+
-+struct capsense_keymap {
-+ char *name;
-+ int port, bit;
-+};
-+
-+static struct capsense_keymap phys_keymap[] = {
-+ { "info", 0, 4 },
-+ { "ok", 0, 2 },
-+ { "down", 0, 3 },
-+ { "back", 0, 0 },
-+ { "up", 1, 4 },
-+};
-+
-+
-+struct capsense_ledmap {
-+ char *name;
-+ int port, bit;
-+};
-+
-+static struct capsense_ledmap ledmap[CAP_NLEDS] = {
-+ { "capsense:blue:back", 0, 1 },
-+ { "capsense:blue:info", 1, 0 },
-+ { "capsense:blue:down", 1, 1 },
-+ { "capsense:blue:ok", 1, 2 },
-+ { "capsense:blue:up", 1, 3 },
-+};
-+
-+
-+/*
-+ * Buttons events handling
-+ */
-+
-+static void handle_buttons(struct input_polled_dev *dev)
-+{
-+ struct capsense_ctx *capsense = dev->private;
-+ u8 port_value;
-+ u8 new_state = 0;
-+ int port;
-+ u8 changed;
-+ int i;
-+
-+ mutex_lock(&capsense->mutex);
-+
-+ // read status
-+ port = -1;
-+ port_value = 0;
-+ for (i = 0; i < ARRAY_SIZE(phys_keymap); i++) {
-+ if ( phys_keymap[i].port != port ) {
-+ port = phys_keymap[i].port;
-+ port_value = i2c_smbus_read_byte_data(&capsense->client, CAP_READ_STATUS(port));
-+ }
-+
-+ if ( port_value & (1 << phys_keymap[i].bit) )
-+ new_state |= (1 << i);
-+ }
-+
-+ mutex_unlock(&capsense->mutex);
-+
-+ // update keyboard state
-+ changed = capsense->key_state ^ new_state;
-+ for (i = 0; i < ARRAY_SIZE(input_keymap); i++)
-+ if (changed & (1 << i))
-+ input_report_key(dev->input, input_keymap[i], (new_state & (1 << i)));
-+ capsense->key_state = new_state;
-+ input_sync(dev->input);
-+}
-+
-+
-+/*
-+ * LEDs management
-+ */
-+
-+static void
-+capsense_led_set(struct led_classdev *led_cdev,
-+ enum led_brightness value)
-+{
-+ struct capsense_led *led = (struct capsense_led *) led_cdev;
-+ struct capsense_ctx *capsense = led->capsense;
-+ int port = led->port;
-+ unsigned char mask = (1 << led->bit);
-+
-+ if ( value )
-+ capsense->led_state[port] |= mask;
-+ else
-+ capsense->led_state[port] &= ~mask;
-+
-+ mutex_lock(&capsense->mutex);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_OUTPUT_PORT(port), capsense->led_state[port]);
-+ mutex_unlock(&capsense->mutex);
-+}
-+
-+static void
-+capsense_led_enable(struct capsense_led *led, int state)
-+{
-+ struct capsense_ctx *capsense = led->capsense;
-+
-+ mutex_lock(&capsense->mutex);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_OP_SEL(led->port, led->bit), state ? 0x00 : 0x80);
-+ mutex_unlock(&capsense->mutex);
-+}
-+
-+static int
-+capsense_led_init(struct capsense_ctx *capsense)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = 0; i < CAP_NLEDS; i++) {
-+ struct capsense_led *led = &(capsense->leds[i]);
-+
-+ led->cdev.name = ledmap[i].name;
-+ led->cdev.brightness_set = capsense_led_set;
-+ led->capsense = capsense;
-+ led->port = ledmap[i].port;
-+ led->bit = ledmap[i].bit;
-+
-+ ret = led_classdev_register(&capsense->ipdev->input->dev, &led->cdev);
-+ if ( ret < 0 )
-+ return -1;
-+
-+ capsense_led_enable(led, 1);
-+ }
-+
-+ /* Switch all leds off */
-+ mutex_lock(&capsense->mutex);
-+
-+ capsense->led_state[0] = 0x00;
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_OUTPUT_PORT(0), 0x00);
-+
-+ capsense->led_state[1] = 0x00;
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_OUTPUT_PORT(1), 0x00);
-+
-+ mutex_unlock(&capsense->mutex);
-+
-+ return 0;
-+}
-+
-+
-+static void
-+capsense_led_exit(struct capsense_ctx *capsense)
-+{
-+ int i;
-+
-+ for (i = 0; i < CAP_NLEDS; i++) {
-+ led_classdev_unregister(&capsense->leds[i].cdev);
-+ }
-+}
-+
-+
-+static inline void
-+capsense_led_suspend(struct capsense_ctx *capsense)
-+{
-+ int i;
-+
-+ for (i = 0; i < CAP_NLEDS; i++) {
-+ struct capsense_led *led = &(capsense->leds[i]);
-+
-+ led_classdev_suspend(&led->cdev);
-+ capsense_led_enable(led, 0);
-+ }
-+}
-+
-+
-+static inline void
-+capsense_led_resume(struct capsense_ctx *capsense)
-+{
-+ int i;
-+
-+ for (i = 0; i < CAP_NLEDS; i++) {
-+ struct capsense_led *led = &(capsense->leds[i]);
-+
-+ capsense_led_enable(led, 1);
-+ led_classdev_resume(&led->cdev);
-+ }
-+}
-+
-+
-+/*
-+ * Device configuration through procfs entries
-+ */
-+
-+#ifdef CONFIG_PROC_FS
-+#include "capsense-procfs.c"
-+#endif
-+
-+
-+/*
-+ * Device initialisation
-+ */
-+
-+static int
-+capsense_probe(struct i2c_adapter *adapter, int addr, int kind)
-+{
-+ struct capsense_ctx *capsense;
-+ struct input_polled_dev *ipdev;
-+ struct input_dev *input;
-+ int rc = 0, err = -ENOMEM, i=0;
-+
-+ capsense = kzalloc(sizeof(*capsense), GFP_KERNEL);
-+ if (!capsense)
-+ goto failout;
-+
-+ mutex_init(&capsense->mutex);
-+
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
-+ goto failout;
-+ }
-+
-+ ipdev = input_allocate_polled_device();
-+ if (!ipdev)
-+ goto failout;
-+
-+ capsense->key_state = 0;
-+ capsense->ipdev = ipdev;
-+ capsense->client.adapter = adapter;
-+ capsense->client.addr = addr;
-+ capsense->client.driver = &capsense_driver;
-+ strlcpy(capsense->client.name, DRIVER_NAME, I2C_NAME_SIZE);
-+ i2c_set_clientdata(&capsense->client, capsense);
-+
-+ rc = i2c_attach_client(&capsense->client);
-+ if (rc)
-+ goto out_attach;
-+
-+ ipdev->poll = handle_buttons;
-+ ipdev->private = capsense;
-+ ipdev->poll_interval = poll_interval;
-+
-+ input = ipdev->input;
-+ input->name = "Capsense buttons";
-+ input->phys = "capsense/input0";
-+ input->id.bustype = BUS_I2C;
-+ input->dev.parent = &capsense->client.dev;
-+
-+ input->keycode = input_keymap;
-+ input->keycodemax = ARRAY_SIZE(input_keymap);
-+ input->keycodesize = sizeof(unsigned short);
-+
-+ input_set_capability(input, EV_MSC, MSC_SCAN);
-+ set_bit(EV_KEY, ipdev->input->evbit);
-+
-+ for (i = 0; i < ARRAY_SIZE(input_keymap); i++)
-+ set_bit(input_keymap[i], ipdev->input->keybit);
-+
-+ rc = input_register_polled_device(ipdev);
-+ if(rc)
-+ goto out_polled;
-+
-+ if ( capsense_led_init(capsense) )
-+ goto out_registered;
-+
-+#ifdef CONFIG_PROC_FS
-+ /* Create /proc entries for hardware device configuration */
-+ capsense_proc_init(capsense);
-+#endif
-+
-+ return 0;
-+
-+out_registered:
-+ input_unregister_polled_device(ipdev);
-+out_polled:
-+ i2c_detach_client(&capsense->client);
-+out_attach:
-+ input_free_polled_device(ipdev);
-+failout:
-+ return err;
-+}
-+
-+static int
-+capsense_attach_adapter (struct i2c_adapter *adapter)
-+{
-+ return i2c_probe(adapter, &addr_data, capsense_probe);
-+}
-+
-+static int
-+capsense_detach_client(struct i2c_client *client)
-+{
-+ struct capsense_ctx *capsense = i2c_get_clientdata(client);
-+
-+ capsense_led_exit(capsense);
-+ input_unregister_polled_device(capsense->ipdev);
-+ i2c_detach_client(&capsense->client);
-+ input_free_polled_device(capsense->ipdev);
-+ return 0;
-+}
-+
-+
-+/*
-+ * Power management
-+ */
-+
-+#ifdef CONFIG_PM
-+static int capsense_suspend(struct i2c_client *client, pm_message_t mesg)
-+{
-+ struct capsense_ctx *capsense = i2c_get_clientdata(client);
-+
-+ capsense_led_suspend(capsense);
-+
-+ return 0;
-+}
-+
-+static int capsense_resume(struct i2c_client *client)
-+{
-+ struct capsense_ctx *capsense = i2c_get_clientdata(client);
-+
-+ capsense_led_resume(capsense);
-+
-+ return 0;
-+}
-+#endif
-+
-+
-+/*
-+ * Driver initialisation
-+ */
-+
-+static int __init capsense_buttons_init(void)
-+{
-+ return i2c_add_driver(&capsense_driver);
-+}
-+
-+static void __exit capsense_buttons_exit(void)
-+{
-+ i2c_del_driver(&capsense_driver);
-+}
-+
-+MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>");
-+MODULE_DESCRIPTION("Capsense CY8C201xx Input driver");
-+MODULE_LICENSE("GPL");
-+module_init(capsense_buttons_init);
-+module_exit(capsense_buttons_exit);
-Index: linux-2.6.27/drivers/input/misc/capsense-procfs.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/input/misc/capsense-procfs.c
-@@ -0,0 +1,390 @@
-+/*
-+ * CAPSENSE Interface driver
-+ * Device setup using procfs
-+ *
-+ * Copyright (C) 2008, Goobie (www.goobie.fr).
-+ *
-+ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
-+ *
-+ * This software program is licensed subject to the GNU General Public License
-+ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
-+ */
-+
-+#include <linux/proc_fs.h>
-+#include <linux/uaccess.h>
-+
-+
-+struct capsense_proc_data {
-+ struct capsense_ctx *capsense;
-+ struct capsense_keymap *phys;
-+ char *name;
-+ unsigned char command;
-+ unsigned char hex;
-+};
-+
-+struct capsense_proc_entry {
-+ char *name;
-+ unsigned char command;
-+ struct capsense_proc_data data[ARRAY_SIZE(phys_keymap)];
-+};
-+
-+static struct capsense_proc_entry capsense_proc_key_entries[] = {
-+ { "CS_FINGER_TH", CAP_CS_FINGER_TH(0,0) },
-+ { "CS_IDAC", CAP_CS_IDAC(0,0) },
-+};
-+
-+static struct capsense_proc_entry capsense_proc_device_entries[] = {
-+ { "DEVICE_ID", CAP_DEVICE_ID },
-+ { "DEVICE_STATUS", CAP_DEVICE_STATUS },
-+};
-+
-+struct capsense_proc_command {
-+ char *name;
-+ unsigned char command;
-+ struct capsense_ctx *capsense;
-+};
-+
-+static struct capsense_proc_command capsense_proc_commands[] = {
-+ { "store", CAP_COMMAND_STORE_NVM },
-+ //{ "factory", CAP_COMMAND_RESTORE_FACTORY },
-+ //{ "reconfigure", CAP_COMMAND_RECONFIGURE },
-+};
-+
-+
-+static int capsense_proc_read(char *page, char **start, off_t off, int count,
-+ int *eof, void *_data)
-+{
-+ struct capsense_proc_data *data = _data;
-+ struct capsense_ctx *capsense = data->capsense;
-+ u8 value;
-+ int len;
-+
-+ mutex_lock(&capsense->mutex);
-+ value = i2c_smbus_read_byte_data(&capsense->client, data->command);
-+ mutex_unlock(&capsense->mutex);
-+
-+ if ( data->hex )
-+ len = sprintf(page, "%02X\n", value);
-+ else
-+ len = sprintf(page, "%u\n", value);
-+
-+ len -= off;
-+ if ( len < count ) {
-+ *eof = 1;
-+ if ( len <= 0 )
-+ return 0;
-+ } else {
-+ len = count;
-+ }
-+
-+ *start = page + off;
-+
-+ return len;
-+}
-+
-+
-+static int capsense_proc_write(struct file *file, const char *buf,
-+ unsigned long count, void *_data)
-+{
-+ struct capsense_proc_data *data = _data;
-+ struct capsense_ctx *capsense = data->capsense;
-+ char lbuf[count+1];
-+ u8 value;
-+
-+ /* Only root can do this */
-+ if ( !capable(CAP_SYS_ADMIN) )
-+ return -EACCES;
-+
-+ memset(lbuf, 0, sizeof(lbuf));
-+
-+ if (copy_from_user(lbuf, buf, count))
-+ return -EFAULT;
-+
-+ if ( sscanf(lbuf, "%hhi", &value) == 1 ) {
-+ mutex_lock(&capsense->mutex);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_COMMAND_REG, CAP_COMMAND_SETUP_MODE);
-+ i2c_smbus_write_byte_data(&capsense->client, data->command, value);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_COMMAND_REG, CAP_COMMAND_NORMAL_MODE);
-+ mutex_unlock(&capsense->mutex);
-+ }
-+ else {
-+ printk(KERN_INFO DRIVER_NAME ": [%s/%s] Syntax error in expression\n", data->phys->name, data->name);
-+ return -EINVAL;
-+ }
-+
-+ return count;
-+}
-+
-+
-+static inline char *str_skip_blanks(char *s)
-+{
-+ while ( (*s != '\0') && (*s <= ' ') )
-+ s++;
-+ return s;
-+}
-+
-+
-+static inline char *str_skip_chars(char *s)
-+{
-+ while ( *s > ' ' )
-+ s++;
-+ return s;
-+}
-+
-+
-+static int capsense_proc_write_iic(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ struct capsense_ctx *capsense = data;
-+ char lbuf[count+1];
-+ int lnum;
-+ char *s;
-+
-+ /* Only root can do this */
-+ if ( !capable(CAP_SYS_ADMIN) )
-+ return -EACCES;
-+
-+ printk(KERN_INFO DRIVER_NAME ": Reading configuration script from /proc/" DRIVER_NAME "/iic (%lu bytes)\n", count);
-+
-+ memset(lbuf, 0, sizeof(lbuf));
-+
-+ if (copy_from_user(lbuf, buf, count))
-+ return -EFAULT;
-+
-+ s = lbuf;
-+ lnum = 0;
-+
-+ while ( *s != '\0' ) {
-+ char *line;
-+ char operation;
-+ unsigned char data[255];
-+ int size;
-+ struct i2c_msg msg;
-+ int ret;
-+
-+ lnum++;
-+
-+ /* Spot the end of the line */
-+ line = s;
-+ while ( (*s != '\0') && (*s != '\n') )
-+ s++;
-+ if ( *s != '\0' )
-+ *(s++) = '\0';
-+
-+ //printk(KERN_INFO DRIVER_NAME ": iic:%d: '%s'\n", lnum, line);
-+
-+ /* Strip leading blank characters */
-+ line = str_skip_blanks(line);
-+
-+ /* Empty or commented line: skip! */
-+ if ( (*line == '\0') || (*line == '#') )
-+ continue;
-+
-+ /* Only accept write operations 'w' */
-+ operation = *(line++);
-+ if ( operation != 'w' ) {
-+ printk(KERN_ERR DRIVER_NAME ": iic:%d: Unknown operation '%c ...' -- skipped\n", lnum, operation);
-+ continue;
-+ }
-+
-+ /* Extract data values */
-+ size = 0;
-+ while ( (*line != '\0') && (size < sizeof(data)) ) {
-+ line = str_skip_blanks(line);
-+ if ( *line != '\0' )
-+ sscanf(line, "%hhx", &data[size++]);
-+ line = str_skip_chars(line);
-+ }
-+
-+ {
-+ int i;
-+
-+ printk(KERN_DEBUG DRIVER_NAME ": iic:%d: %c", lnum, operation);
-+ for (i = 0; i < size; i++)
-+ printk(" %02X", data[i]);
-+ printk("\n");
-+ }
-+
-+ /* Do nothing if there are less than 2 data bytes (address, command) */
-+ if ( size < 3 ) {
-+ printk(KERN_ERR DRIVER_NAME ": iic:%d: Too few data for operation '%c ...' -- skipped\n", lnum, operation);
-+ continue;
-+ }
-+
-+ /* First data byte is the i2c device address:
-+ Warn if it does not match the standard i2c address */
-+ if ( data[0] != CAPSENSE_I2C_ADDR ) {
-+ printk(KERN_WARNING DRIVER_NAME ": iic:%d: WARNING - Specified i2c address (%02X) differs from standard i2c address (%02X)\n", lnum, data[0], CAPSENSE_I2C_ADDR);
-+ }
-+
-+ /* Second data byte is the capsense register:
-+ Warn if changing the device I2C address */
-+ if ( data[1] == CAP_I2C_ADDR_DM ) {
-+ printk(KERN_WARNING DRIVER_NAME ": iic:%d: WARNING - Changing i2c address to %02X (I2C_ADDR_DM=%02X)\n", lnum, data[2] & 0x7F, data[2]);
-+ }
-+
-+ /* Send command to i2c device */
-+ mutex_lock(&capsense->mutex);
-+
-+ msg.addr = data[0];
-+ msg.flags = capsense->client.flags;
-+ msg.len = size - 1;
-+ msg.buf = data + 1;
-+ //printk(KERN_INFO DRIVER_NAME ": iic:%d: i2c transfer: addr=0x%02X flags=0x%04X len=%d\n", lnum, msg.addr, msg.flags, msg.len);
-+
-+ ret = i2c_transfer(capsense->client.adapter, &msg, 1);
-+ if ( ret < 0 )
-+ printk(KERN_ERR DRIVER_NAME ": iic:%d: i2c transfer failed (%d), command rejected\n", lnum, ret);
-+
-+ mutex_unlock(&capsense->mutex);
-+ }
-+
-+ return count;
-+}
-+
-+
-+static int capsense_proc_write_command(struct file *file, const char *buf,
-+ unsigned long count, void *data)
-+{
-+ struct capsense_proc_command *command = data;
-+ struct capsense_ctx *capsense = command->capsense;
-+
-+ /* Only root can do this */
-+ if ( !capable(CAP_SYS_ADMIN) )
-+ return -EACCES;
-+
-+ printk(KERN_INFO DRIVER_NAME ": %s (%02X)\n", command->name, command->command);
-+
-+ mutex_lock(&capsense->mutex);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_COMMAND_REG, CAP_COMMAND_SETUP_MODE);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_COMMAND_REG, command->command);
-+ i2c_smbus_write_byte_data(&capsense->client, CAP_COMMAND_REG, CAP_COMMAND_NORMAL_MODE);
-+ mutex_unlock(&capsense->mutex);
-+
-+ return count;
-+}
-+
-+
-+static int capsense_proc_init(struct capsense_ctx *capsense)
-+{
-+ struct proc_dir_entry *root;
-+ struct proc_dir_entry *dir;
-+ struct proc_dir_entry *ent;
-+ int i;
-+
-+ /* Create capsense proc directory */
-+ printk(KERN_INFO DRIVER_NAME ": Creating setup entries in /proc/" DRIVER_NAME "/\n");
-+
-+ root = proc_mkdir(DRIVER_NAME, NULL);
-+ if ( root == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "\n");
-+ return -1;
-+ }
-+
-+ root->owner = THIS_MODULE;
-+
-+ /* Create iic config file dump entry */
-+ ent = create_proc_entry("iic", S_IFREG|S_IWUSR, root);
-+ if ( ent == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/iic\n");
-+ return -1;
-+ }
-+
-+ ent->owner = THIS_MODULE;
-+ ent->data = capsense;
-+ ent->write_proc = capsense_proc_write_iic;
-+
-+ /* Create commands directory */
-+ dir = proc_mkdir("commands", root);
-+ if ( dir == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/commands\n");
-+ return -1;
-+ }
-+
-+ dir->owner = THIS_MODULE;
-+
-+ /* Create command entries */
-+ for (i = 0; i < ARRAY_SIZE(capsense_proc_commands); i++) {
-+ struct capsense_proc_command *command = &capsense_proc_commands[i];
-+
-+ command->capsense = capsense;
-+
-+ ent = create_proc_entry(command->name, S_IFREG|S_IWUSR, dir);
-+ if ( ent == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/commands/%s\n", command->name);
-+ return -1;
-+ }
-+
-+ ent->owner = THIS_MODULE;
-+ ent->data = command;
-+ ent->write_proc = capsense_proc_write_command;
-+ }
-+
-+ /* Create device status read entries */
-+ for (i = 0; i < ARRAY_SIZE(capsense_proc_device_entries); i++) {
-+ struct capsense_proc_entry *entry = &(capsense_proc_device_entries[i]);
-+ struct capsense_proc_data *data = &(entry->data[i]);
-+
-+ data->capsense = capsense;
-+ data->phys = NULL;
-+ data->name = entry->name;
-+ data->command = entry->command;
-+ data->hex = 1;
-+
-+ ent = create_proc_entry(entry->name, S_IFREG|S_IRUSR, root);
-+ if ( ent == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/%s\n", entry->name);
-+ continue;
-+ }
-+
-+ ent->owner = THIS_MODULE;
-+ ent->data = data;
-+ ent->read_proc = capsense_proc_read;
-+ }
-+
-+ /* Create keys management directory */
-+ dir = proc_mkdir("keys", root);
-+ if ( dir == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/keys\n");
-+ return -1;
-+ }
-+
-+ dir->owner = THIS_MODULE;
-+
-+ /* Create keys sensitivity adjustment entries */
-+ for (i = 0; i < ARRAY_SIZE(phys_keymap); i++) {
-+ struct capsense_keymap *phys = &phys_keymap[i];
-+ struct proc_dir_entry *subdir;
-+ int ientry;
-+
-+ subdir = proc_mkdir(phys->name, dir);
-+ if ( subdir == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/keys/%s\n", phys->name);
-+ continue;
-+ }
-+
-+ for (ientry = 0; ientry < ARRAY_SIZE(capsense_proc_key_entries); ientry++) {
-+ struct capsense_proc_entry *entry = &(capsense_proc_key_entries[ientry]);
-+ struct capsense_proc_data *data = &(entry->data[i]);
-+
-+ data->capsense = capsense;
-+ data->phys = phys;
-+ data->name = entry->name;
-+ data->command = CAP_CS(entry->command, phys->port, phys->bit);
-+ data->hex = 0;
-+
-+ ent = create_proc_entry(entry->name, S_IFREG|S_IRUSR|S_IWUSR, subdir);
-+ if ( ent == NULL ) {
-+ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/keys/%s/%s\n", phys->name, entry->name);
-+ continue;
-+ }
-+
-+ ent->owner = THIS_MODULE;
-+ ent->data = data;
-+ ent->read_proc = capsense_proc_read;
-+ ent->write_proc = capsense_proc_write;
-+ }
-+ }
-+
-+ return 0;
-+}
diff --git a/packages/linux/linux-2.6.27/boc01/013-090209-lcd.patch b/packages/linux/linux-2.6.27/boc01/013-090209-lcd.patch
deleted file mode 100644
index c867e2cf3a..0000000000
--- a/packages/linux/linux-2.6.27/boc01/013-090209-lcd.patch
+++ /dev/null
@@ -1,933 +0,0 @@
-Index: linux-2.6.27/drivers/video/Kconfig
-===================================================================
---- linux-2.6.27.orig/drivers/video/Kconfig
-+++ linux-2.6.27/drivers/video/Kconfig
-@@ -480,6 +480,28 @@ config FB_ARC
- this driver, say Y or M; otherwise say N. You must specify the
- GPIO IO address to be used for setting control and data.
-
-+config FB_NT7506
-+ tristate "Novatek 7506 LCD board support"
-+ depends on FB
-+ select FB_SYS_FILLRECT
-+ select FB_SYS_COPYAREA
-+ select FB_SYS_IMAGEBLIT
-+ select FB_SYS_FOPS
-+ select FB_BACKLIGHT
-+ select LCD_CLASS_DEVICE
-+ help
-+ This is the frame buffer device driver for the Novatek 7506 Monochrome/Grayscale LCD board.
-+ The board is based on the NT7506 LCD controller.
-+
-+config FB_NT7506_GRAYSCALE
-+ bool "Novatek 7506 Grayscale mode"
-+ depends on FB_NT7506
-+ default y
-+ help
-+ This option switches the Monochrome/Grayscale mode for the Novatek 7506 LCD board.
-+ Say Y to enable 4-levels Grayscale mode (2 bpp).
-+ Say N to enable Monochrome mode (1 bpp).
-+
- config FB_ATARI
- bool "Atari native chipset support"
- depends on (FB = y) && ATARI
-Index: linux-2.6.27/drivers/video/Makefile
-===================================================================
---- linux-2.6.27.orig/drivers/video/Makefile
-+++ linux-2.6.27/drivers/video/Makefile
-@@ -31,6 +31,7 @@ obj-$(CONFIG_FB_DEFERRED_IO) += fb_def
- obj-$(CONFIG_FB_AMIGA) += amifb.o c2p.o
- obj-$(CONFIG_FB_AM200EPD) += am200epd.o
- obj-$(CONFIG_FB_ARC) += arcfb.o
-+obj-$(CONFIG_FB_NT7506) += nt7506fb.o
- obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o
- obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o
- obj-$(CONFIG_FB_PM2) += pm2fb.o
-Index: linux-2.6.27/drivers/video/nt7506fb.c
-===================================================================
---- /dev/null
-+++ linux-2.6.27/drivers/video/nt7506fb.c
-@@ -0,0 +1,847 @@
-+/*
-+ * linux/drivers/video/nt7506fb.c -- FB driver for NT7506 monochrome LCD board
-+ *
-+ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
-+ *
-+ * Alexandre Coffignal <alexandre.coffignal@cenosys.com>
-+ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
-+ * Jeremy Laine <jeremy.laine@bolloretelecom.eu>
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ *
-+ * Layout is based on arcfb.c by Jaya Kumar
-+ *
-+ * This driver was written to be used with the Novatek NT7506 LCD board.
-+ *
-+ * Novatek uses a set of NT7506 chips that control individual 128x128 LCD
-+ * matrices. The interface between the board and the host is TTL based GPIO.
-+ *
-+ * General notes:
-+ * - User must set tuhold. It's in microseconds. According to the 108 spec,
-+ * the hold time is supposed to be at least 1 microsecond.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/vmalloc.h>
-+#include <linux/delay.h>
-+#include <linux/timer.h>
-+#include <linux/fb.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/backlight.h>
-+#include <linux/lcd.h>
-+#include <linux/nt7506fb.h>
-+
-+#include <linux/uaccess.h>
-+
-+#define DRIVER_NAME "nt7506fb"
-+
-+//NT7506 Hardware
-+#define LCD_RST 0x08
-+#define LCD_RSTN 0x00
-+#define LCD_BCKLIGH 0x04
-+#define LCD_BCKLIGHN 0x00
-+#define LCD_RS 0x02
-+#define LCD_RSN 0x00
-+#define LCD_ERD 0x01
-+#define LCD_ERDN 0x00
-+
-+//Base address
-+#define LCD_BASE 0xf0000000
-+#define LCD_SIZE 0x2
-+
-+//NT7506 Instructions
-+#define NT_ICON 0xA2
-+#define NT_PAGE_ADDR 0xB0
-+#define NT_COL_MSB 0x10
-+#define NT_COL_LSB 0x00
-+#define NT_DISP 0xAE
-+#define NT_START_LINE 0x40
-+#define NT_COM0 0x44
-+#define NT_DUTY 0x48
-+#define DUTY_1_128 0x80
-+#define NT_REV_DISP 0xA6
-+#define NT_POWER 0x28
-+#define VC 0x04
-+#define VR 0x02
-+#define VF 0x01
-+#define NT_DCDC 0x64
-+#define TIME6 0x03
-+#define NT_REG_RES 0x20
-+#define RES_7_2 0x07
-+#define NT_ELEC_VOL 0x81
-+#define NT_BIAS 0x50
-+#define BIAS_1_11 0x06
-+#define NT_ADC_NOR 0xA0
-+#define NT_ADC_REV 0xA1
-+#define NT_SHL_NOR 0xC0
-+#define NT_SHL_REV 0xC8
-+#define NT_SET_PWRSAVE 0xA8
-+#define NT_OSC 0xAB
-+#define NT_RLS_PWRSAVE 0xE1
-+#define NT_RESET 0xE2
-+#define NT_DATA_DIR 0xe8
-+#define NT_FRC_PWM 0x90
-+#define PWM15 0x03
-+
-+#define ON 0x01
-+#define OFF 0x00
-+
-+#define NT_GRAY_SCALE 0x88
-+#define GRAY_WHITE_AB 0
-+#define GRAY_WHITE_CD 1
-+#define GRAY_LIGHT_AB 2
-+#define GRAY_LIGHT_CD 3
-+#define GRAY_DARK_AB 4
-+#define GRAY_DARK_CD 5
-+#define GRAY_BLACK_AB 6
-+#define GRAY_BLACK_CD 7
-+
-+// Geometric settings
-+#define LCD_WIDTH 128
-+#define LCD_HEIGHT 128
-+#define LCD_NPAGES (LCD_HEIGHT/8) /* LCD pages of 8 vertical pixels */
-+
-+#define DEFAULT_CONTRAST 20
-+#define DEFAULT_FPS 10
-+
-+static struct resource *lcd_mem = NULL;
-+static void * _lcd_io = NULL;
-+static unsigned long tuhold;
-+struct fb_info *info;
-+static struct timer_list fb_timer;
-+static char _fps = DEFAULT_FPS;
-+static char _backlight = 1;
-+
-+struct nt7506fb_par {
-+ atomic_t ref_count;
-+ struct fb_info *info;
-+ spinlock_t lock;
-+ struct lcd_device *lcd_dev;
-+ int power;
-+ int contrast;
-+};
-+
-+static struct fb_fix_screeninfo nt7506fb_fix __initdata = {
-+ .id = DRIVER_NAME,
-+ .type = FB_TYPE_PACKED_PIXELS,
-+#ifdef CONFIG_FB_NT7506_GRAYSCALE
-+ .visual = FB_VISUAL_STATIC_PSEUDOCOLOR,
-+ .line_length = LCD_WIDTH / 4,
-+#else
-+ .visual = FB_VISUAL_MONO01,
-+ .line_length = LCD_WIDTH / 8,
-+#endif
-+ .xpanstep = 1,
-+ .ypanstep = 1,
-+ .ywrapstep = 0,
-+ .accel = FB_ACCEL_NONE,
-+};
-+
-+static struct fb_var_screeninfo nt7506fb_var __initdata = {
-+ .xres = LCD_WIDTH,
-+ .yres = LCD_HEIGHT,
-+ .xres_virtual = LCD_WIDTH,
-+ .yres_virtual = LCD_HEIGHT,
-+ .nonstd = 1,
-+#ifdef CONFIG_FB_NT7506_GRAYSCALE
-+ .bits_per_pixel = 2,
-+ .grayscale = 1,
-+ .red = { 0, 2, 0 },
-+ .green = { 0, 2, 0 },
-+ .blue = { 0, 2, 0 },
-+ .transp = { 0, 0, 0 },
-+#else
-+ .bits_per_pixel = 1,
-+#endif
-+};
-+
-+
-+/*
-+ * Low-level i/o primitives
-+ */
-+
-+static void NT7506_init_lcd(char ael);
-+
-+static void NT7506_writeb_ctl(unsigned char value)
-+{
-+ unsigned short svalue;
-+ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN;
-+
-+ svalue=value<<8 | LCD_RSN | LCD_RST | LCD_ERDN | bl;
-+ iowrite16(svalue, _lcd_io);
-+ udelay(tuhold);
-+ //The data on DB0/7 are latched at the falling edge of the E_RD signal
-+ svalue=value<<8 | LCD_RSN | LCD_RST | LCD_ERD | bl;
-+ iowrite16(svalue, _lcd_io);
-+ udelay(tuhold);
-+}
-+
-+static void NT7506_writeb_data(unsigned char value)
-+{
-+ unsigned short svalue;
-+ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN;
-+
-+ svalue=value<<8|LCD_RS |LCD_RST | LCD_ERD | bl ;
-+ iowrite16(svalue, _lcd_io);
-+ udelay(tuhold);
-+ //The data on DB0/7 are latched at the falling edge of the E_RD signal
-+ svalue=value<<8|LCD_RS |LCD_RST | LCD_ERDN | bl;
-+ iowrite16(svalue, _lcd_io);
-+ udelay(tuhold);
-+}
-+
-+static void NT7506_set_start_line(unsigned char y)
-+{
-+ NT7506_writeb_ctl(NT_START_LINE);
-+ NT7506_writeb_ctl(y);
-+}
-+
-+static void NT7506_set_yaddr(unsigned char y)
-+{
-+ NT7506_writeb_ctl(NT_PAGE_ADDR+y);
-+}
-+
-+static void NT7506_set_xaddr(unsigned char x)
-+{
-+ NT7506_writeb_ctl(NT_COL_MSB | (x >> 0x04)); //Send high nibble
-+ NT7506_writeb_ctl(NT_COL_LSB | (x & 0x0F) ); //Send low nibble
-+}
-+
-+
-+/*
-+ * LCD device management
-+ */
-+
-+static int
-+nt7506fb_lcd_get_contrast(struct lcd_device *lcd_dev)
-+{
-+ struct nt7506fb_par *par = lcd_get_data(lcd_dev);
-+ return par->contrast;
-+}
-+
-+static int
-+nt7506fb_lcd_set_contrast(struct lcd_device *lcd_dev, int contrast)
-+{
-+ struct nt7506fb_par *par = lcd_get_data(lcd_dev);
-+
-+ par->contrast = contrast;
-+ NT7506_writeb_ctl(NT_ELEC_VOL); NT7506_writeb_ctl(par->contrast);
-+
-+ //printk(KERN_INFO DRIVER_NAME": contrast = %d\n", par->contrast);
-+ return 0;
-+}
-+
-+static struct lcd_ops nt7506fb_lcd_ops = {
-+ .get_contrast = nt7506fb_lcd_get_contrast,
-+ .set_contrast = nt7506fb_lcd_set_contrast,
-+};
-+
-+static void
-+nt7506fb_lcd_init(struct nt7506fb_par *par)
-+{
-+ struct fb_info *info = par->info;
-+ struct lcd_device *lcd_dev;
-+
-+ lcd_dev = lcd_device_register(DRIVER_NAME, info->dev, par, &nt7506fb_lcd_ops);
-+ if (IS_ERR(lcd_dev)) {
-+ par->lcd_dev = NULL;
-+ printk(KERN_WARNING DRIVER_NAME ": LCD device registration failed\n");
-+ return;
-+ }
-+
-+ par->lcd_dev = lcd_dev;
-+ lcd_dev->props.max_contrast = 255;
-+ par->contrast = DEFAULT_CONTRAST;
-+ printk(KERN_INFO DRIVER_NAME ": LCD contrast management initialized\n");
-+}
-+
-+static void
-+nt7506fb_lcd_exit(struct nt7506fb_par *par)
-+{
-+ if ( par->lcd_dev ) {
-+ lcd_device_unregister(par->lcd_dev);
-+ par->lcd_dev = NULL;
-+ }
-+}
-+
-+
-+/*
-+ * Backlight device management
-+ */
-+static void nt7506fb_start_timer(void);
-+
-+static int
-+nt7506fb_bl_update_status(struct backlight_device *bd)
-+{
-+ struct nt7506fb_par *par = bl_get_data(bd);
-+ int power_on = (bd->props.power != FB_BLANK_POWERDOWN);
-+
-+ _backlight = bd->props.brightness & power_on;
-+
-+ printk(KERN_INFO DRIVER_NAME ": backlight=%d power_on=%d\n", _backlight, power_on);
-+
-+ if ( bd->props.power != par->power ) {
-+ par->power = bd->props.power;
-+
-+ if ( power_on ) {
-+ /* Power LCD device on */
-+ NT7506_writeb_ctl(NT_SET_PWRSAVE|OFF);
-+ NT7506_writeb_ctl(NT_RLS_PWRSAVE);
-+
-+ /* Restart refresh timer */
-+ if ( ! timer_pending(&fb_timer) )
-+ nt7506fb_start_timer();
-+ }
-+ else {
-+ /* Throttle refresh timer */
-+ del_timer(&fb_timer);
-+
-+ /* Put LCD device in power save mode */
-+ NT7506_writeb_ctl(NT_SET_PWRSAVE|ON);
-+ NT7506_writeb_ctl(NT_RLS_PWRSAVE);
-+ }
-+ }
-+
-+ //printk(KERN_INFO DRIVER_NAME": backlight = %d\n", _backlight);
-+ return 0;
-+}
-+
-+static int
-+nt7506fb_bl_get_brightness(struct backlight_device *bd)
-+{
-+ return bd->props.brightness;
-+}
-+
-+static struct backlight_ops nt7506fb_bl_ops = {
-+ .get_brightness = nt7506fb_bl_get_brightness,
-+ .update_status = nt7506fb_bl_update_status,
-+};
-+
-+
-+static void
-+nt7506fb_bl_init(struct nt7506fb_par *par)
-+{
-+ struct fb_info *info = par->info;
-+ struct backlight_device *bd;
-+
-+ bd = backlight_device_register(DRIVER_NAME, info->dev, par, &nt7506fb_bl_ops);
-+ if (IS_ERR(bd)) {
-+ info->bl_dev = NULL;
-+ printk(KERN_WARNING DRIVER_NAME ": Backlight device registration failed\n");
-+ return;
-+ }
-+
-+ info->bl_dev = bd;
-+ bd->props.max_brightness = 1;
-+ bd->props.power = FB_BLANK_UNBLANK;
-+ bd->props.brightness = 1;
-+ par->power = bd->props.power;
-+
-+ nt7506fb_bl_update_status(bd);
-+
-+ printk(KERN_INFO DRIVER_NAME ": Backlight control initialized\n");
-+}
-+
-+static void
-+nt7506fb_bl_exit(struct fb_info *info)
-+{
-+ if ( info->bl_dev ) {
-+ backlight_device_unregister(info->bl_dev);
-+ info->bl_dev = NULL;
-+ }
-+}
-+
-+
-+/*
-+ * Main frame buffer operations
-+ */
-+
-+static int nt7506fb_open(struct fb_info *info, int user)
-+{
-+ struct nt7506fb_par *par = info->par;
-+ atomic_inc(&par->ref_count);
-+ return 0;
-+}
-+
-+static int nt7506fb_release(struct fb_info *info, int user)
-+{
-+ struct nt7506fb_par *par = info->par;
-+ int count = atomic_read(&par->ref_count);
-+ if (!count)
-+ return -EINVAL;
-+ atomic_dec(&par->ref_count);
-+ return 0;
-+}
-+
-+static int nt7506fb_pan_display(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ if ( (var->vmode & FB_VMODE_YWRAP) &&
-+ (var->yoffset < LCD_HEIGHT) &&
-+ (info->var.yres <= LCD_HEIGHT) ) {
-+ NT7506_set_start_line(var->yoffset);
-+ info->var.yoffset = var->yoffset;
-+ return 0;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static void nt7506fb_lcd_update(struct nt7506fb_par *par)
-+{
-+ unsigned char *src = (unsigned char __force *) par->info->screen_base;
-+ int line_length = par->info->fix.line_length;
-+ int page, x, bit;
-+ unsigned char plane1, plane2;
-+ unsigned char *ptr;
-+ unsigned char xshift;
-+
-+ if ( info->var.bits_per_pixel == 1 ) {
-+
-+ for (page = 0; page < LCD_NPAGES; page++) {
-+ NT7506_set_yaddr(page);
-+ NT7506_set_xaddr(0);
-+ for (x = 0; x < LCD_WIDTH; x++) {
-+ xshift = 7 - (x % 8);
-+ plane1 = plane2 = 0;
-+ ptr = src + (page * 8 * line_length + x / 8);
-+ for (bit = 0; bit < 8; ptr += line_length, bit++) {
-+ plane1 |= (((*ptr) >> xshift) & 1) << bit;
-+ }
-+ NT7506_writeb_data(plane1);
-+ NT7506_writeb_data(plane2);
-+ }
-+ NT7506_writeb_data((unsigned char)0);
-+ }
-+
-+ } else {
-+
-+ for (page = 0; page < LCD_NPAGES; page++) {
-+ NT7506_set_yaddr(page);
-+ NT7506_set_xaddr(0);
-+ for (x = 0; x < LCD_WIDTH; x++) {
-+ xshift = (3 - (x % 4)) << 1;
-+ plane1 = plane2 = 0;
-+ ptr = src + (page * 8 * line_length + x / 4);
-+ for (bit = 0; bit < 8; ptr += line_length, bit++) {
-+ plane1 |= (((*ptr) >> (xshift + 1)) & 1) << bit;
-+ plane2 |= (((*ptr) >> xshift) & 1) << bit;
-+ }
-+ NT7506_writeb_data(plane1);
-+ NT7506_writeb_data(plane2);
-+ }
-+ NT7506_writeb_data((unsigned char)0);
-+ }
-+
-+ }
-+}
-+
-+static void nt7506fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
-+{
-+ sys_fillrect(info, rect);
-+}
-+
-+
-+
-+static void nt7506fb_copyarea(struct fb_info *info,
-+ const struct fb_copyarea *area)
-+{
-+ sys_copyarea(info, area);
-+}
-+
-+
-+static void nt7506fb_imageblit(struct fb_info *info, const struct fb_image *image)
-+{
-+ sys_imageblit(info, image);
-+}
-+
-+
-+/*
-+ * this is the access path from userspace. they can seek and write to
-+ * the fb. it's inefficient for them to do anything less than 128*8
-+ * writes since we update the lcd in each write() anyway.
-+ */
-+static ssize_t nt7506fb_write(struct fb_info *info, const char __user *buf,
-+ size_t count, loff_t *ppos)
-+{
-+ unsigned long p = *ppos;
-+ unsigned int fbmemlength;
-+ int err = 0;
-+
-+ fbmemlength = (info->var.xres * info->var.yres)/8;
-+
-+ if ( p > fbmemlength ) {
-+ return -EFBIG;
-+ }
-+
-+ if ( (count + p) > fbmemlength ) {
-+ count = fbmemlength - p;
-+ err = -ENOSPC;
-+ }
-+
-+ if ( count ) {
-+ char *base_addr = (char __force *) info->screen_base;
-+ if ( copy_from_user(base_addr + p, buf, count) )
-+ err = -EFAULT;
-+ }
-+
-+ if ( !err )
-+ *ppos += count;
-+
-+ return err ? err : count;
-+}
-+
-+
-+static int nt7506fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
-+{
-+ unsigned long off;
-+ unsigned long start;
-+ u32 len;
-+
-+ if (vma->vm_end - vma->vm_start == 0)
-+ return 0;
-+ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
-+ return -EINVAL;
-+ off = vma->vm_pgoff << PAGE_SHIFT;
-+ start = info->fix.smem_start;
-+ len = info->fix.smem_len;
-+ if (off >= len)
-+ {
-+ return -EINVAL;
-+
-+ }
-+ if ((vma->vm_end - vma->vm_start + off) > len)
-+ {
-+ return -EINVAL;
-+ }
-+ off += start;
-+ vma->vm_pgoff = off >> PAGE_SHIFT;
-+ if (remap_pfn_range(vma, vma->vm_start, virt_to_phys((void *)info->fix.smem_start) >> PAGE_SHIFT,
-+ info->fix.smem_len, vma->vm_page_prot))
-+
-+ {
-+ return -EAGAIN;
-+ }
-+ return 0;
-+
-+}
-+
-+
-+static int nt7506fb_ioctl(struct fb_info *info,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ unsigned char frame_rate;
-+
-+ switch ( cmd ) {
-+ case FBIO_FRAMERATE:
-+ if (get_user(frame_rate, (unsigned char *)arg))
-+ return -EFAULT;
-+ printk(KERN_INFO "fb%d: framerate=%d Hz\n", info->node, frame_rate);
-+ _fps = frame_rate;
-+ return 0;
-+
-+ default:
-+ return -EINVAL;
-+ }
-+}
-+
-+
-+static struct fb_ops nt7506fb_ops = {
-+ .owner = THIS_MODULE,
-+ .fb_open = nt7506fb_open,
-+ .fb_read = fb_sys_read,
-+ .fb_write = nt7506fb_write,
-+ .fb_release = nt7506fb_release,
-+ .fb_pan_display = nt7506fb_pan_display,
-+ .fb_fillrect = nt7506fb_fillrect,
-+ .fb_copyarea = nt7506fb_copyarea,
-+ .fb_imageblit = nt7506fb_imageblit,
-+ .fb_ioctl = nt7506fb_ioctl,
-+ .fb_mmap = nt7506fb_mmap,
-+};
-+
-+
-+static void
-+nt7506fb_start_timer(void)
-+{
-+ fb_timer.expires = jiffies + (HZ/_fps);
-+ add_timer(&fb_timer);
-+}
-+
-+static void
-+nt7506fb_refresh(unsigned long data)
-+{
-+ nt7506fb_lcd_update(info->par);
-+ nt7506fb_start_timer();
-+}
-+
-+static int __init
-+nt7506fb_probe(struct platform_device *dev)
-+{
-+ int retval = -ENOMEM;
-+ struct nt7506fb_par *par;
-+ static unsigned char *videomemory;
-+ static int videomemorysize;
-+ int i;
-+
-+ NT7506_init_lcd(DEFAULT_CONTRAST);
-+
-+ videomemorysize = LCD_WIDTH * LCD_HEIGHT / 4;
-+
-+ if (!(videomemory = kmalloc(videomemorysize,GFP_ATOMIC)))
-+ goto failout;
-+ memset(videomemory, 0, videomemorysize);
-+
-+ info = framebuffer_alloc(sizeof(struct nt7506fb_par), &dev->dev);
-+
-+ if (!info)
-+ goto out_alloc;
-+ info->screen_base = (char __iomem *)videomemory;
-+ info->fbops = &nt7506fb_ops;
-+
-+ info->var = nt7506fb_var;
-+ info->fix = nt7506fb_fix;
-+ info->fix.smem_start = (unsigned long)videomemory;
-+ info->fix.smem_len = videomemorysize;
-+
-+ par = info->par;
-+ par->info = info;
-+
-+ info->flags = FBINFO_FLAG_DEFAULT;
-+ spin_lock_init(&par->lock);
-+ platform_set_drvdata(dev, info);
-+
-+#ifdef CONFIG_FB_NT7506_GRAYSCALE
-+ /* Allocate cmap */
-+ retval = fb_alloc_cmap(&info->cmap, 4, 0);
-+ if (retval < 0) {
-+ printk(KERN_ERR "fb%d: Failed to allocate colormap\n", info->node);
-+ goto out_register;
-+ }
-+
-+ /* Set cmap */
-+ for (i = 0; i < 4; i++)
-+ info->cmap.red[i] = (((4*i)+1)*(0xFFFF))/16;
-+ memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*4);
-+ memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*4);
-+#endif
-+
-+ /* Register framebuffer */
-+ retval = register_framebuffer(info);
-+ if (retval < 0)
-+ goto out_register;
-+
-+ setup_timer(&fb_timer, nt7506fb_refresh, (unsigned long) par);
-+
-+ printk(KERN_INFO
-+ "fb%d: nt7506 frame buffer device, using %dK of video memory\n",
-+ info->node, videomemorysize >> 10);
-+
-+ /* Initialize backlight and contrast control (do not abort driver if it fails) */
-+ nt7506fb_bl_init(par);
-+ nt7506fb_lcd_init(par);
-+
-+ nt7506fb_start_timer();
-+
-+ return 0;
-+
-+out_register:
-+ framebuffer_release(info);
-+out_alloc:
-+ vfree(videomemory);
-+failout:
-+ return retval;
-+}
-+
-+static int nt7506fb_remove(struct platform_device *dev)
-+{
-+ struct fb_info *info = platform_get_drvdata(dev);
-+
-+ del_timer(&fb_timer);
-+
-+ if (info) {
-+ nt7506fb_lcd_exit(info->par);
-+ nt7506fb_bl_exit(info);
-+ unregister_framebuffer(info);
-+ vfree((void __force *)info->screen_base);
-+ framebuffer_release(info);
-+ }
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int nt7506fb_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ struct fb_info *info = platform_get_drvdata(dev);
-+
-+ printk(KERN_INFO DRIVER_NAME ": Switching to Power Save mode\n");
-+
-+ info->bl_dev->props.power = FB_BLANK_POWERDOWN;
-+ nt7506fb_bl_update_status(info->bl_dev);
-+
-+ return 0;
-+}
-+
-+static int nt7506fb_resume(struct platform_device *dev)
-+{
-+ struct fb_info *info = platform_get_drvdata(dev);
-+
-+ info->bl_dev->props.power = FB_BLANK_UNBLANK;
-+ nt7506fb_bl_update_status(info->bl_dev);
-+
-+ return 0;
-+}
-+#else
-+#define nt7506fb_suspend NULL
-+#define nt7506fb_resume NULL
-+#endif
-+
-+
-+static struct platform_driver nt7506fb_driver = {
-+ .probe = nt7506fb_probe,
-+ .remove = nt7506fb_remove,
-+ .suspend = nt7506fb_suspend,
-+ .resume = nt7506fb_resume,
-+ .driver = {
-+ .name = DRIVER_NAME,
-+ },
-+};
-+
-+static struct platform_device *nt7506fb_device;
-+
-+static int __init nt7506fb_init(void)
-+{
-+ int ret;
-+
-+
-+ if (!(lcd_mem = request_mem_region(LCD_BASE, LCD_SIZE, "mpc8313-lcd")))
-+ return -ENOMEM;
-+
-+ if (!(_lcd_io = ioremap(LCD_BASE, LCD_SIZE)))
-+ {
-+ release_mem_region(LCD_BASE, LCD_SIZE);
-+ lcd_mem = NULL;
-+ return -ENOMEM;
-+ }
-+ ret = platform_driver_register(&nt7506fb_driver);
-+
-+ if (!ret) {
-+ nt7506fb_device = platform_device_alloc(DRIVER_NAME, 0);
-+ if (nt7506fb_device)
-+ {
-+ ret = platform_device_add(nt7506fb_device);
-+ }
-+ else
-+ {
-+ ret = -ENOMEM;
-+ }
-+ if (ret)
-+ {
-+ platform_device_put(nt7506fb_device);
-+ platform_driver_unregister(&nt7506fb_driver);
-+ }
-+
-+ }
-+
-+
-+ return ret;
-+
-+}
-+
-+
-+static void NT7506_init_lcd(char ael)
-+{
-+ /* this resets the lcd*/
-+ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN;
-+
-+ iowrite16(LCD_RSTN | LCD_ERD | bl, _lcd_io);
-+ udelay(100);
-+ iowrite16(LCD_RST| LCD_ERD | bl, _lcd_io);
-+ udelay(200);
-+ /* Soft reset*/
-+ NT7506_writeb_ctl(NT_RESET);
-+ /* Disable ICON display*/
-+ NT7506_writeb_ctl(NT_ICON|OFF);
-+ /* Sets the duty ratio 1/128*/
-+ NT7506_writeb_ctl(NT_DUTY); NT7506_writeb_ctl(DUTY_1_128);
-+ /* Sets reverse direction between RAM column address and segment driver*/
-+ NT7506_writeb_ctl(NT_ADC_REV);
-+ NT7506_writeb_ctl(NT_SHL_NOR);
-+ /* Enales the built in Oscillator circuit.*/
-+ NT7506_writeb_ctl(NT_OSC);
-+ /* Set Initial row to 0*/
-+ NT7506_writeb_ctl(NT_COM0); NT7506_writeb_ctl(0);
-+ /* Sets DC-DC*/
-+ NT7506_writeb_ctl(NT_DCDC|TIME6);
-+ /* Selects resistance ratio of the internal resistor*/
-+ NT7506_writeb_ctl(NT_REG_RES|RES_7_2);
-+ /* set Reference Voltage mode*/
-+ NT7506_writeb_ctl(NT_ELEC_VOL); NT7506_writeb_ctl(ael);
-+ /* Selects LCD bias ratio*/
-+ NT7506_writeb_ctl(NT_BIAS|BIAS_1_11);
-+
-+ NT7506_writeb_ctl(NT_DATA_DIR); NT7506_writeb_ctl(0);
-+ NT7506_writeb_ctl(NT_FRC_PWM|PWM15);
-+
-+#ifdef CONFIG_FB_NT7506_GRAYSCALE
-+ /* Feed grayscale palette */
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_WHITE_AB);
-+ NT7506_writeb_ctl(0x00);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_WHITE_CD);
-+ NT7506_writeb_ctl(0x00);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_LIGHT_AB);
-+ NT7506_writeb_ctl(0x55);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_LIGHT_CD);
-+ NT7506_writeb_ctl(0x55);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_DARK_AB);
-+ NT7506_writeb_ctl(0xAA);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_DARK_CD);
-+ NT7506_writeb_ctl(0xAA);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_BLACK_AB);
-+ NT7506_writeb_ctl(0xFF);
-+ NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_BLACK_CD);
-+ NT7506_writeb_ctl(0xFF);
-+#endif
-+
-+ /* Select power circuit functions */
-+ NT7506_writeb_ctl(NT_POWER|VC);
-+ udelay(5000);
-+ NT7506_writeb_ctl(NT_POWER|VC|VR);
-+ udelay(5000);
-+ NT7506_writeb_ctl(NT_POWER|VC|VR|VF);
-+ udelay(5000);
-+ /* Reverses the display status on LCD panel */
-+ NT7506_writeb_ctl(NT_REV_DISP|OFF);
-+ /* Forces the whole LCD points to be turned on regardless of the contents of the display data RAM*/
-+ NT7506_writeb_ctl(NT_DISP|ON);
-+ /* Set Initial Start Line Address */
-+ NT7506_writeb_ctl(NT_START_LINE); NT7506_writeb_ctl(0x00);
-+}
-+
-+static void __exit nt7506fb_exit(void)
-+{
-+ if (lcd_mem)
-+ release_mem_region(LCD_BASE, LCD_SIZE);
-+ lcd_mem = NULL;
-+ platform_device_unregister(nt7506fb_device);
-+ platform_driver_unregister(&nt7506fb_driver);
-+}
-+
-+module_param(tuhold, ulong, 0);
-+MODULE_PARM_DESC(tuhold, "Time to hold between strobing data to NT7506 board");
-+
-+module_init(nt7506fb_init);
-+module_exit(nt7506fb_exit);
-+
-+MODULE_DESCRIPTION("fbdev driver for Novatek NT7506 monochrome LCD board");
-+MODULE_AUTHOR("Alexandre Coffignal");
-+MODULE_LICENSE("GPL");
-+
-Index: linux-2.6.27/include/linux/nt7506fb.h
-===================================================================
---- /dev/null
-+++ linux-2.6.27/include/linux/nt7506fb.h
-@@ -0,0 +1,31 @@
-+
-+/*
-+ * (C) Copyright 2008
-+ * Alexandre Coffignal, CénoSYS, alexandre.coffignal@cenosys.com
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ *
-+ */
-+
-+#ifndef __LINUX_NT7506FB_H__
-+#define __LINUX_NT7506FB_H__
-+
-+#define FBIO_FRAMERATE _IOR('f', 1, char)
-+
-+#endif
diff --git a/packages/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch b/packages/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch
deleted file mode 100644
index 3acbf40c32..0000000000
--- a/packages/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-Index: linux-2.6.27/arch/powerpc/platforms/83xx/Kconfig
-===================================================================
---- linux-2.6.27.orig/arch/powerpc/platforms/83xx/Kconfig 2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/arch/powerpc/platforms/83xx/Kconfig 2009-01-23 10:54:03.000000000 +0100
-@@ -104,6 +104,13 @@
-
- endif
-
-+
-+config WAKEUP_IT
-+ tristate "83xx interrupt for PM wakeup"
-+ help
-+ This enables a driver to be used as a wakeup source .
-+
-+
- # used for usb
- config PPC_MPC831x
- bool
-Index: linux-2.6.27/arch/powerpc/platforms/83xx/Makefile
-===================================================================
---- linux-2.6.27.orig/arch/powerpc/platforms/83xx/Makefile 2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/arch/powerpc/platforms/83xx/Makefile 2009-01-23 10:54:03.000000000 +0100
-@@ -14,3 +14,4 @@
- obj-$(CONFIG_SBC834x) += sbc834x.o
- obj-$(CONFIG_MPC837x_RDB) += mpc837x_rdb.o
- obj-$(CONFIG_ASP834x) += asp834x.o
-+obj-$(CONFIG_WAKEUP_IT) += wakeup-it.o
-Index: linux-2.6.27/arch/powerpc/platforms/83xx/wakeup-it.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.27/arch/powerpc/platforms/83xx/wakeup-it.c 2009-01-23 10:49:09.000000000 +0100
-@@ -0,0 +1,163 @@
-+/*
-+ * This support a driver to be used as a wakeup source on the MPC8313.
-+ *
-+ * Copyright (c) 2008 Cenosys
-+ *
-+ * Alexandre Coffignal <alexandre.coffignal@censoys.com>
-+ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published
-+ * by the Free Software Foundation.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/of_platform.h>
-+#include <linux/reboot.h>
-+#include <linux/irq.h>
-+
-+#include <sysdev/fsl_soc.h>
-+
-+#define DRIVER_NAME "wakeup-it"
-+
-+char suspend = 0;
-+
-+static char *wakeup_irq_ids[] = {
-+ "capsense",
-+ "rfid",
-+};
-+
-+struct wakeup_priv {
-+ int nirq;
-+ int irq[ARRAY_SIZE(wakeup_irq_ids)];
-+ spinlock_t lock;
-+};
-+
-+struct wakeup_irq_desc {
-+ char *name;
-+ int index;
-+};
-+
-+static irqreturn_t wakeup(int irq, void *dev_id)
-+{
-+ //printk(KERN_INFO "===== WAKEUP INTERRUPT %d !!\n", irq);
-+
-+// if ( suspend )
-+// kernel_restart(NULL);
-+ return IRQ_HANDLED ;
-+}
-+
-+
-+static void wakeup_free(struct wakeup_priv *priv)
-+{
-+ int i;
-+
-+ for (i = 0; i < priv->nirq; i++) {
-+ free_irq(priv->irq[i], priv);
-+ }
-+
-+ kfree(priv);
-+}
-+
-+
-+static int __devinit wakeup_probe(struct of_device *dev, const struct of_device_id *match)
-+{
-+ struct device_node *np = dev->node;
-+ struct resource res;
-+ int ret = 0;
-+ struct wakeup_priv *priv;
-+ int i;
-+
-+ priv = kmalloc(sizeof(struct wakeup_priv), GFP_KERNEL);
-+ if (!priv)
-+ return -ENOMEM;
-+
-+ priv->nirq = 0;
-+ spin_lock_init(&priv->lock);
-+ dev_set_drvdata(&dev->dev, priv);
-+
-+ ret = of_address_to_resource(np, 0, &res);
-+ if (ret)
-+ goto out;
-+
-+ for (i = 0; i < ARRAY_SIZE(wakeup_irq_ids); i++) {
-+ char *id = wakeup_irq_ids[i];
-+ char it_name[32];
-+ int it_num;
-+
-+ it_num = irq_of_parse_and_map(np, i);
-+ if ( it_num == NO_IRQ ) {
-+ dev_err(&dev->dev, DRIVER_NAME ": interrupt #%d (%s) does not exist in device tree.\n", i, id);
-+ ret = -ENODEV;
-+ goto out;
-+ }
-+
-+ set_irq_type(it_num, IRQ_TYPE_EDGE_FALLING);
-+
-+ snprintf(it_name, sizeof(it_name), DRIVER_NAME ":%s", id);
-+
-+ ret = request_irq(it_num, wakeup, 0, it_name, priv);
-+ if ( ret ) {
-+ printk(KERN_WARNING DRIVER_NAME ": cannot request interrupt %d (%s)\n", it_num, id);
-+ goto out;
-+ }
-+
-+ printk(KERN_INFO DRIVER_NAME ": accepting wakeup event from %s (%d)\n", id, it_num);
-+
-+ priv->irq[priv->nirq++] = it_num;
-+ }
-+
-+ return 0;
-+
-+out:
-+ wakeup_free(priv);
-+ return ret;
-+}
-+
-+static int __devexit wakeup_remove(struct of_device *dev)
-+{
-+ struct wakeup_priv *priv = dev_get_drvdata(&dev->dev);
-+ wakeup_free(priv);
-+ return 0;
-+}
-+
-+static struct of_device_id wakeup_match[] = {
-+ {
-+ .compatible = "fsl,wakeup-it",
-+ },
-+ {},
-+};
-+
-+static int wakeup_suspend(struct of_device * dev, pm_message_t state)
-+{
-+ int ret = 0;
-+ printk(KERN_INFO DRIVER_NAME ": suspend\n");
-+ suspend=1;
-+ return ret;
-+}
-+
-+
-+static struct of_platform_driver wakeup_driver = {
-+ .name = DRIVER_NAME,
-+ .match_table = wakeup_match,
-+ .probe = wakeup_probe,
-+ .suspend = wakeup_suspend,
-+ .remove = __devexit_p(wakeup_remove)
-+
-+};
-+
-+static int __init wakeup_init(void)
-+{
-+ return of_register_platform_driver(&wakeup_driver);
-+}
-+
-+static void __exit wakeup_exit(void)
-+{
-+ of_unregister_platform_driver(&wakeup_driver);
-+}
-+
-+module_init(wakeup_init);
-+module_exit(wakeup_exit);
diff --git a/packages/linux/linux-2.6.27/boc01/boc01.dts b/packages/linux/linux-2.6.27/boc01/boc01.dts
deleted file mode 100644
index ffc27abb31..0000000000
--- a/packages/linux/linux-2.6.27/boc01/boc01.dts
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * Bolloré telecom CPE v01 Device Tree Source
- *
- * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc.
- * Copyright 2008 Bolloré telecom.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-/dts-v1/;
-
-/ {
- model = "MPC8313ERDB";
- compatible = "MPC8313ERDB", "MPC831xRDB", "MPC83xxRDB";
- #address-cells = <1>;
- #size-cells = <1>;
-
- aliases {
- ethernet1 = &enet1;
- serial0 = &serial0;
- pci0 = &pci0;
- };
-
- cpus {
- #address-cells = <1>;
- #size-cells = <0>;
-
- PowerPC,8313@0 {
- device_type = "cpu";
- reg = <0x0>;
- d-cache-line-size = <32>;
- i-cache-line-size = <32>;
- d-cache-size = <16384>;
- i-cache-size = <16384>;
- timebase-frequency = <0>; // from bootloader
- bus-frequency = <0>; // from bootloader
- clock-frequency = <0>; // from bootloader
- };
- };
-
- memory {
- device_type = "memory";
- reg = <0x00000000 0x08000000>; // 128MB at 0
- };
-
- localbus@e0005000 {
- #address-cells = <2>;
- #size-cells = <1>;
- compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
- reg = <0xe0005000 0x1000>;
- interrupts = <77 0x8>;
- interrupt-parent = <&ipic>;
-
- // CS0 and CS1 are swapped when
- // booting from nand, but the
- // addresses are the same.
- ranges = <0x0 0x0 0xfe000000 0x00800000
- 0x1 0x0 0xe2800000 0x00008000
- 0x2 0x0 0xf0000000 0x00020000
- 0x3 0x0 0xfa000000 0x00008000>;
-
- flash@0,0 {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "cfi-flash";
- reg = <0x0 0x0 0x800000>;
- bank-width = <2>;
- device-width = <1>;
- };
-
- nand@1,0 {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "fsl,mpc8313-fcm-nand",
- "fsl,elbc-fcm-nand";
- reg = <0x1 0x0 0x2000>;
-
- kernel@0 {
- reg = <0x0 0x400000>;
- read-only;
- };
-
- fs@400000 {
- reg = <0x400000 0x4000000>;
- };
-
- appli@4400000 {
- reg = <0x4400000 0x3c00000>;
- };
- };
- };
-
- soc8313@e0000000 {
- #address-cells = <1>;
- #size-cells = <1>;
- device_type = "soc";
- compatible = "simple-bus";
- ranges = <0x0 0xe0000000 0x00100000>;
- reg = <0xe0000000 0x00000200>;
- bus-frequency = <0>;
-
- wdt@200 {
- device_type = "watchdog";
- compatible = "mpc83xx_wdt";
- reg = <0x200 0x100>;
- };
-
- sleep-nexus {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "simple-bus";
- sleep = <&pmc 0x03000000>;
- ranges;
-
- i2c@3000 {
- #address-cells = <1>;
- #size-cells = <0>;
- cell-index = <0>;
- compatible = "fsl-i2c";
- reg = <0x3000 0x100>;
- interrupts = <14 0x8>;
- interrupt-parent = <&ipic>;
- dfsrr;
- rtc@6f {
- compatible = "isl12024";
- reg = <0x6f>;
- };
- at24@50 {
- compatible = "at24,24c32";
- reg = <0x50>;
- };
- at24@57 {
- compatible = "at24,isl12024";
- reg = <0x57>;
- };
- };
-
- crypto@30000 {
- compatible = "fsl,sec2.2", "fsl,sec2.1",
- "fsl,sec2.0";
- reg = <0x30000 0x10000>;
- interrupts = <11 0x8>;
- interrupt-parent = <&ipic>;
- fsl,num-channels = <1>;
- fsl,channel-fifo-len = <24>;
- fsl,exec-units-mask = <0x4c>;
- fsl,descriptor-types-mask = <0x0122003f>;
- };
- };
-
- i2c@3100 {
- #address-cells = <1>;
- #size-cells = <0>;
- cell-index = <1>;
- compatible = "fsl-i2c";
- reg = <0x3100 0x100>;
- interrupts = <15 0x8>;
- interrupt-parent = <&ipic>;
- dfsrr;
- };
-
- spi@7000 {
- cell-index = <0>;
- compatible = "fsl,spi";
- reg = <0x7000 0x1000>;
- interrupts = <16 0x8>;
- interrupt-parent = <&ipic>;
- mode = "cpu";
- };
-
-
- /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
- usb@23000 {
- compatible = "fsl-usb2-dr";
- reg = <0x23000 0x1000>;
- #address-cells = <1>;
- #size-cells = <0>;
- interrupt-parent = <&ipic>;
- interrupts = <38 0x8>;
- phy_type = "utmi_wide";
- sleep = <&pmc 0x00300000>;
- };
-
-
- mdio@24520 {
- #address-cells = <1>;
- #size-cells = <0>;
- reg = <0x24520 0x20>;
- phy4: ethernet-phy@4 {
- interrupt-parent = <&ipic>;
- interrupts = <20 0x8>;
- reg = <0x4>;
- device_type = "ethernet-phy";
- };
- };
-
-
- enet1: ethernet@25000 {
- cell-index = <1>;
- device_type = "network";
- model = "eTSEC";
- compatible = "gianfar";
- reg = <0x25000 0x1000>;
- local-mac-address = [ 00 00 00 00 00 00 ];
- interrupts = <34 0x8 33 0x8 32 0x8>;
- interrupt-parent = <&ipic>;
- phy-handle = < &phy4 >;
- sleep = <&pmc 0x10000000>;
- fsl,magic-packet;
- };
-
- serial0: serial@4600 {
- cell-index = <0>;
- device_type = "serial";
- compatible = "ns16550";
- reg = <0x4600 0x100>;
- clock-frequency = <0>;
- interrupts = <10 0x8>;
- interrupt-parent = <&ipic>;
- };
-
- /* IPIC
- * interrupts cell = <intr #, sense>
- * sense values match linux IORESOURCE_IRQ_* defines:
- * sense == 8: Level, low assertion
- * sense == 2: Edge, high-to-low change
- */
- ipic: pic@700 {
- interrupt-controller;
- #address-cells = <0>;
- #interrupt-cells = <2>;
- reg = <0x700 0x100>;
- device_type = "ipic";
- };
-
- pmc: power@b00 {
- compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc";
- reg = <0xb00 0x100 0xa00 0x100>;
- interrupts = <80 8>;
- interrupt-parent = <&ipic>;
- fsl,mpc8313-wakeup-timer = <&gtm1>;
-
- /* Remove this (or change to "okay") if you have
- * a REVA3 or later board, if you apply one of the
- * workarounds listed in section 8.5 of the board
- * manual, or if you are adapting this device tree
- * to a different board.
- */
- status = "okay";
- };
-
- gtm1: timer@500 {
- compatible = "fsl,mpc8313-gtm", "fsl,gtm";
- reg = <0x500 0x100>;
- interrupts = <72 8 78 8 84 8 90 8>;
- interrupt-parent = <&ipic>;
- };
-
- timer@600 {
- compatible = "fsl,mpc8313-gtm", "fsl,gtm";
- reg = <0x600 0x100>;
- interrupts = <91 8 79 8 85 8 73 8>;
- interrupt-parent = <&ipic>;
- };
-
- wakeup@27000 {
- compatible = "fsl,wakeup-it", "fsl,gtm";
- reg = <0x27000 0x100>;
- interrupts = <17 8 19 8>;
- interrupt-parent = <&ipic>;
- };
-
- };
-
- sleep-nexus {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "simple-bus";
- sleep = <&pmc 0x00010000>;
- ranges;
-
- pci0: pci@e0008500 {
- cell-index = <1>;
- interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
- interrupt-map = <
- /* IDSEL 0x0F - PCI slot */
- 0x7800 0x0 0x0 0x1 &ipic 48 0x8
- 0x7800 0x0 0x0 0x2 &ipic 48 0x8
- 0x7800 0x0 0x0 0x3 &ipic 48 0x8
- 0x7800 0x0 0x0 0x4 &ipic 48 0x8>;
- interrupt-parent = <&ipic>;
- interrupts = <66 0x8>;
- bus-range = <0x0 0x0>;
- ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
- 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
- 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
- clock-frequency = <66666666>;
- #interrupt-cells = <1>;
- #size-cells = <2>;
- #address-cells = <3>;
- reg = <0xe0008500 0x100>;
- compatible = "fsl,mpc8349-pci";
- device_type = "pci";
- };
-
- dma@82a8 {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "fsl,mpc8313-dma", "fsl,elo-dma";
- reg = <0xe00082a8 4>;
- ranges = <0 0xe0008100 0x1a8>;
- interrupt-parent = <&ipic>;
- interrupts = <71 8>;
-
- dma-channel@0 {
- compatible = "fsl,mpc8313-dma-channel",
- "fsl,elo-dma-channel";
- reg = <0 0x28>;
- interrupt-parent = <&ipic>;
- interrupts = <71 8>;
- cell-index = <0>;
- };
-
- dma-channel@80 {
- compatible = "fsl,mpc8313-dma-channel",
- "fsl,elo-dma-channel";
- reg = <0x80 0x28>;
- interrupt-parent = <&ipic>;
- interrupts = <71 8>;
- cell-index = <1>;
- };
-
- dma-channel@100 {
- compatible = "fsl,mpc8313-dma-channel",
- "fsl,elo-dma-channel";
- reg = <0x100 0x28>;
- interrupt-parent = <&ipic>;
- interrupts = <71 8>;
- cell-index = <2>;
- };
-
- dma-channel@180 {
- compatible = "fsl,mpc8313-dma-channel",
- "fsl,elo-dma-channel";
- reg = <0x180 0x28>;
- interrupt-parent = <&ipic>;
- interrupts = <71 8>;
- cell-index = <3>;
- };
- };
- };
-};
diff --git a/packages/linux/linux-2.6.27/boc01/defconfig b/packages/linux/linux-2.6.27/boc01/defconfig
deleted file mode 100644
index bb667bcd10..0000000000
--- a/packages/linux/linux-2.6.27/boc01/defconfig
+++ /dev/null
@@ -1,1898 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.27
-# Thu Feb 26 12:59:36 2009
-#
-# CONFIG_PPC64 is not set
-
-#
-# Processor support
-#
-CONFIG_6xx=y
-# CONFIG_PPC_85xx is not set
-# CONFIG_PPC_8xx is not set
-# CONFIG_40x is not set
-# CONFIG_44x is not set
-# CONFIG_E200 is not set
-CONFIG_PPC_FPU=y
-# CONFIG_FSL_EMB_PERFMON is not set
-# CONFIG_ALTIVEC is not set
-CONFIG_PPC_STD_MMU=y
-CONFIG_PPC_STD_MMU_32=y
-# CONFIG_PPC_MM_SLICES is not set
-# CONFIG_SMP is not set
-CONFIG_PPC32=y
-CONFIG_WORD_SIZE=32
-CONFIG_PPC_MERGE=y
-CONFIG_MMU=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_TIME=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_HARDIRQS=y
-# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
-CONFIG_IRQ_PER_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_ILOG2_U32=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
-CONFIG_PPC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_GENERIC_NVRAM=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_PPC_OF=y
-CONFIG_OF=y
-CONFIG_PPC_UDBG_16550=y
-# CONFIG_GENERIC_TBSYNC is not set
-CONFIG_AUDIT_ARCH=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFAULT_UIMAGE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_PPC_DCR_NATIVE is not set
-# CONFIG_PPC_DCR_MMIO is not set
-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=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CGROUPS is not set
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-CONFIG_USER_SCHED=y
-# CONFIG_CGROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# 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_SYSCTL_SYSCALL=y
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_COMPAT_BRK=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-# CONFIG_EPOLL is not set
-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=y
-# CONFIG_MARKERS is not set
-# CONFIG_OPROFILE is not set
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-# CONFIG_HAVE_DMA_ATTRS is not set
-# CONFIG_USE_GENERIC_SMP_HELPERS is not set
-# CONFIG_HAVE_CLK is not set
-CONFIG_PROC_PAGE_MONITOR=y
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-# CONFIG_MODULE_FORCE_LOAD is not set
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-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
-# CONFIG_BLK_DEV_INTEGRITY is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-CONFIG_CLASSIC_RCU=y
-
-#
-# Platform support
-#
-CONFIG_PPC_MULTIPLATFORM=y
-CONFIG_CLASSIC32=y
-# CONFIG_PPC_CHRP is not set
-# CONFIG_MPC5121_ADS is not set
-# CONFIG_MPC5121_GENERIC is not set
-# CONFIG_PPC_MPC52xx is not set
-# CONFIG_PPC_PMAC is not set
-# CONFIG_PPC_CELL is not set
-# CONFIG_PPC_CELL_NATIVE is not set
-# CONFIG_PPC_82xx is not set
-# CONFIG_PQ2ADS is not set
-CONFIG_PPC_83xx=y
-CONFIG_MPC831x_RDB=y
-# CONFIG_MPC832x_MDS is not set
-# CONFIG_MPC832x_RDB is not set
-# CONFIG_MPC834x_MDS is not set
-# CONFIG_MPC834x_ITX is not set
-# CONFIG_MPC836x_MDS is not set
-# CONFIG_MPC836x_RDK is not set
-# CONFIG_MPC837x_MDS is not set
-# CONFIG_MPC837x_RDB is not set
-# CONFIG_SBC834x is not set
-# CONFIG_ASP834x is not set
-CONFIG_WAKEUP_IT=y
-CONFIG_PPC_MPC831x=y
-# CONFIG_PPC_86xx is not set
-# CONFIG_EMBEDDED6xx is not set
-CONFIG_IPIC=y
-# CONFIG_MPIC is not set
-# CONFIG_MPIC_WEIRD is not set
-# CONFIG_PPC_I8259 is not set
-# CONFIG_PPC_RTAS is not set
-# CONFIG_MMIO_NVRAM is not set
-# CONFIG_PPC_MPC106 is not set
-# CONFIG_PPC_970_NAP is not set
-# CONFIG_PPC_INDIRECT_IO is not set
-# CONFIG_GENERIC_IOMAP is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_TAU is not set
-# CONFIG_FSL_ULI1575 is not set
-
-#
-# Kernel options
-#
-# CONFIG_HIGHMEM is not set
-# CONFIG_TICK_ONESHOT is not set
-# CONFIG_NO_HZ is not set
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_SCHED_HRTICK is not set
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-CONFIG_ARCH_HAS_WALK_MEMORY=y
-CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
-# CONFIG_KEXEC is not set
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_MIGRATION=y
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_FORCE_MAX_ZONEORDER=11
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_CMDLINE_BOOL is not set
-CONFIG_EXTRA_TARGETS=""
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-CONFIG_PM_VERBOSE=y
-CONFIG_CAN_PM_TRACE=y
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND=y
-# CONFIG_PM_TEST_SUSPEND is not set
-CONFIG_SUSPEND_FREEZER=y
-CONFIG_SECCOMP=y
-CONFIG_ISA_DMA_API=y
-
-#
-# Bus options
-#
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_PPC_INDIRECT_PCI=y
-CONFIG_FSL_SOC=y
-CONFIG_FSL_PCI=y
-CONFIG_PPC_PCI_CHOICE=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_SYSCALL=y
-# CONFIG_PCIEPORTBUS is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-# CONFIG_PCI_MSI is not set
-CONFIG_PCI_LEGACY=y
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-# CONFIG_HAS_RAPIDIO is not set
-
-#
-# Advanced setup
-#
-# CONFIG_ADVANCED_OPTIONS is not set
-
-#
-# Default settings for advanced configuration options are used
-#
-CONFIG_LOWMEM_SIZE=0x30000000
-CONFIG_PAGE_OFFSET=0xc0000000
-CONFIG_KERNEL_START=0xc0000000
-CONFIG_PHYSICAL_START=0x00000000
-CONFIG_TASK_SIZE=0xc0000000
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=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=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=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-# CONFIG_NF_CT_PROTO_DCCP is not set
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=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=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_RATEEST=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-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_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=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_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_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
-#
-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
-
-#
-# 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_IP6=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 is not set
-# CONFIG_BRIDGE_EBT_NFLOG is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC 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_STP=m
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_VLAN_8021Q_GVRP is not set
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=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
-CONFIG_NET_SCH_INGRESS=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=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_CLS_IND=y
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-
-#
-# Wireless
-#
-CONFIG_CFG80211=y
-CONFIG_NL80211=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_WIRELESS_EXT_SYSFS=y
-CONFIG_MAC80211=m
-
-#
-# Rate control algorithm selection
-#
-CONFIG_MAC80211_RC_PID=y
-CONFIG_MAC80211_RC_DEFAULT_PID=y
-CONFIG_MAC80211_RC_DEFAULT="pid"
-# CONFIG_MAC80211_MESH is not set
-CONFIG_MAC80211_LEDS=y
-# CONFIG_MAC80211_DEBUG_MENU 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_RFKILL is not set
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_EXTRA_FIRMWARE=""
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR 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=y
-# CONFIG_MTD_OF_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CFI_AMDSTD=y
-# 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
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_START=0xfe000000
-CONFIG_MTD_PHYSMAP_LEN=0x0800000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-# CONFIG_MTD_PHYSMAP_OF is not set
-# CONFIG_MTD_INTEL_VR_NOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_CAFE is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
-CONFIG_MTD_NAND_FSL_ELBC=y
-# CONFIG_MTD_ONENAND is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-CONFIG_OF_DEVICE=y
-CONFIG_OF_I2C=y
-CONFIG_OF_SPI=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=32768
-# CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_ENCLOSURE_SERVICES is not set
-# CONFIG_HP_ILO is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_SRP_ATTRS is not set
-# CONFIG_SCSI_LOWLEVEL is not set
-# CONFIG_SCSI_DH is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# Enable only one of the two stacks, unless you know what you are doing
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_VETH is not set
-# CONFIG_ARCNET is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=y
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-# CONFIG_CICADA_PHY is not set
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_REALTEK_PHY is not set
-CONFIG_FIXED_PHY=y
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_NET_ETHERNET is not set
-CONFIG_MII=y
-CONFIG_NETDEV_1000=y
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_E1000E is not set
-# CONFIG_IP1000 is not set
-# CONFIG_IGB is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-CONFIG_GIANFAR=y
-# CONFIG_MV643XX_ETH is not set
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-# CONFIG_ATL1E is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-CONFIG_WLAN_PRE80211=y
-# CONFIG_STRIP is not set
-CONFIG_WLAN_80211=y
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_LIBERTAS is not set
-# CONFIG_AIRO is not set
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-# CONFIG_PRISM54 is not set
-# CONFIG_USB_ZD1201 is not set
-# CONFIG_USB_NET_RNDIS_WLAN is not set
-# CONFIG_RTL8180 is not set
-# CONFIG_RTL8187 is not set
-# CONFIG_ADM8211 is not set
-# CONFIG_MAC80211_HWSIM is not set
-# CONFIG_P54_COMMON is not set
-CONFIG_ATH5K=m
-# CONFIG_ATH5K_DEBUG is not set
-CONFIG_ATH9K=m
-# CONFIG_IWLCORE is not set
-# CONFIG_IWLWIFI_LEDS is not set
-# CONFIG_IWLAGN is not set
-# CONFIG_IWL3945 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-# CONFIG_B43 is not set
-# CONFIG_B43LEGACY is not set
-# CONFIG_ZD1211RW is not set
-# CONFIG_RT2X00 is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-CONFIG_USB_USBNET=y
-# CONFIG_USB_NET_AX8817X is not set
-CONFIG_USB_NET_CDCETHER=y
-# CONFIG_USB_NET_DM9601 is not set
-# CONFIG_USB_NET_GL620A is not set
-# CONFIG_USB_NET_NET1080 is not set
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-CONFIG_USB_NET_CDC_SUBSET=y
-# CONFIG_USB_ALI_M5632 is not set
-# CONFIG_USB_AN2720 is not set
-CONFIG_USB_BELKIN=y
-# CONFIG_USB_ARMLINUX is not set
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_ISDN is not set
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-CONFIG_INPUT_POLLDEV=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=y
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD 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=y
-# CONFIG_INPUT_ATI_REMOTE is not set
-# CONFIG_INPUT_ATI_REMOTE2 is not set
-# CONFIG_INPUT_KEYSPAN_REMOTE is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_UINPUT is not set
-CONFIG_INPUT_CAPSENSE_BTNS=y
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-CONFIG_DEVKMEM=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_NOZOMI is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_PCI is not set
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_UARTLITE is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-# CONFIG_SERIAL_OF_PLATFORM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-CONFIG_GPIO_MPC8313=y
-CONFIG_EXIO_MPC8313=y
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_DEVPORT=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_HELPER_AUTO=y
-
-#
-# I2C Hardware Bus support
-#
-
-#
-# PC SMBus host controller drivers
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_ISCH is not set
-# CONFIG_I2C_PIIX4 is not set
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-
-#
-# I2C system bus drivers (mostly embedded / system-on-chip)
-#
-CONFIG_I2C_MPC=y
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_SIMTEC is not set
-
-#
-# External I2C/SMBus adapter drivers
-#
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_TINY_USB is not set
-
-#
-# Graphics adapter I2C/DDC channel drivers
-#
-# CONFIG_I2C_VOODOO3 is not set
-
-#
-# Other I2C/SMBus bus drivers
-#
-# CONFIG_I2C_PCA_PLATFORM is not set
-# CONFIG_I2C_STUB is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_DS1682 is not set
-CONFIG_AT24=y
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_PCF8575 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_MPC83xx=y
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-CONFIG_SPI_SPIDEV=y
-# CONFIG_SPI_TLE62X0 is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_GPIOLIB is not set
-# CONFIG_W1 is not set
-CONFIG_POWER_SUPPLY=y
-CONFIG_POWER_SUPPLY_DEBUG=y
-# CONFIG_PDA_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_AD7414 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADCXX is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7473 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_I5K_AMB is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_F71882FG is not set
-# CONFIG_SENSORS_F75375S is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-CONFIG_SENSORS_LM73=y
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_ADS7828 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83L786NG is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-CONFIG_THERMAL=y
-# CONFIG_THERMAL_HWMON is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-# CONFIG_ALIM7101_WDT is not set
-CONFIG_8xxx_WDT=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-
-#
-# Sonics Silicon Backplane
-#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_CORE is not set
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_PASIC3 is not set
-# CONFIG_MFD_TMIO is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-# CONFIG_VIDEO_MEDIA is not set
-
-#
-# Multimedia drivers
-#
-# CONFIG_DAB is not set
-
-#
-# Graphics support
-#
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-# 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 is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_BACKLIGHT=y
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-CONFIG_FB_NT7506=y
-CONFIG_FB_NT7506_GRAYSCALE=y
-# CONFIG_FB_OF is not set
-# CONFIG_FB_CT65550 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_VT8623 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_ARK is not set
-# CONFIG_FB_PM3 is not set
-# CONFIG_FB_CARMINE is not set
-# CONFIG_FB_FSL_DIU is not set
-# CONFIG_FB_IBM_GXT4500 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_ILI9320 is not set
-# CONFIG_LCD_VGG2432A4 is not set
-# CONFIG_LCD_PLATFORM is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
-# CONFIG_LOGO is not set
-CONFIG_SOUND=m
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=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
-# CONFIG_SND_DRIVERS is not set
-# CONFIG_SND_PCI is not set
-# CONFIG_SND_PPC is not set
-# CONFIG_SND_SPI is not set
-CONFIG_SND_USB=y
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_USX2Y=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-# CONFIG_SND_SOC is not set
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-CONFIG_USB_MON=y
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_C67X00_HCD is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-CONFIG_USB_EHCI_FSL=y
-CONFIG_USB_EHCI_HCD_PPC_OF=y
-# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1760_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_HCD_PPC_OF=y
-CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
-# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
-CONFIG_USB_OHCI_HCD_PCI=y
-CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
-CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_WDM is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_ONETOUCH is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB port drivers
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-# CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_ATM is not set
-# CONFIG_USB_GADGET is not set
-# CONFIG_MMC is not set
-# CONFIG_MEMSTICK is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_PCA955X is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-# CONFIG_ACCESSIBILITY is not set
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_ISL12024=y
-# 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_M41T94 is not set
-# CONFIG_RTC_DRV_DS1305 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_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
-
-#
-# on-CPU RTC drivers
-#
-# CONFIG_RTC_DRV_PPC is not set
-# CONFIG_DMADEVICES is not set
-# CONFIG_UIO is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-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=y
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-CONFIG_DNOTIFY=y
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=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_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_OMFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-15"
-CONFIG_NLS_CODEPAGE_437=m
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-CONFIG_NLS_CODEPAGE_850=m
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-CONFIG_NLS_ISO8859_15=m
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=m
-# CONFIG_DLM is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-# CONFIG_GENERIC_FIND_FIRST_BIT is not set
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-# CONFIG_CRC_T10DIF is not set
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC32=y
-CONFIG_CRC7=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-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
-CONFIG_HAS_DMA=y
-CONFIG_HAVE_LMB=y
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-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_DEBUG_MEMORY_INIT is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_SYSCTL_SYSCALL_CHECK=y
-CONFIG_HAVE_FTRACE=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-# CONFIG_FTRACE is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_IRQSTACKS is not set
-# CONFIG_BOOTX_TEXT is not set
-# CONFIG_PPC_EARLY_DEBUG is not set
-
-#
-# Security options
-#
-# CONFIG_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=y
-CONFIG_CRYPTO_AEAD=m
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_AUTHENC=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Authenticated Encryption with Associated Data
-#
-# CONFIG_CRYPTO_CCM is not set
-# CONFIG_CRYPTO_GCM is not set
-# CONFIG_CRYPTO_SEQIV is not set
-
-#
-# Block modes
-#
-CONFIG_CRYPTO_CBC=y
-# CONFIG_CRYPTO_CTR is not set
-# CONFIG_CRYPTO_CTS is not set
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_XTS is not set
-
-#
-# Hash modes
-#
-CONFIG_CRYPTO_HMAC=m
-CONFIG_CRYPTO_XCBC=m
-
-#
-# Digest
-#
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_MICHAEL_MIC=m
-# CONFIG_CRYPTO_RMD128 is not set
-# CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_WP512=m
-
-#
-# Ciphers
-#
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_KHAZAD=m
-# CONFIG_CRYPTO_SALSA20 is not set
-# CONFIG_CRYPTO_SEED is not set
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-
-#
-# Compression
-#
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_HIFN_795X is not set
-# CONFIG_CRYPTO_DEV_TALITOS is not set
-# CONFIG_PPC_CLOCK is not set
-# CONFIG_VIRTUALIZATION is not set