diff options
author | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
---|---|---|
committer | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
commit | 709c4d66e0b107ca606941b988bad717c0b45d9b (patch) | |
tree | 37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-2.6.27/boc01 | |
parent | fa6cd5a3b993f16c27de4ff82b42684516d433ba (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.patch | 17 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/004-081205-usb.patch | 16 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/005-090217-isl12024.patch | 669 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/007-081217-lm73.patch | 269 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/008-081208-spi.patch | 143 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/010-090112-mii.patch | 503 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch | 440 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/012-090219-capsense.patch | 865 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/013-090209-lcd.patch | 933 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch | 195 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/boc01.dts | 355 | ||||
-rw-r--r-- | packages/linux/linux-2.6.27/boc01/defconfig | 1898 |
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(®s->maccfg2); -- u32 ecntrl = gfar_read(®s->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(®s->maccfg2, tempval); -- gfar_write(®s->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 = <>m1>; - - /* 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 |