summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-03-24 18:23:22 +0100
committerKoen Kooi <koen@openembedded.org>2009-03-24 18:23:22 +0100
commit362512f7d3db15d729ecee055c9f9aa2ba68ec4b (patch)
tree78da10fecc32f9a7c2e4fbefbd4abc04713451b0 /recipes
parentff2318d29d3f848dc8e7ab8030ab1f6fc9972fc9 (diff)
parentd14a90c12878fbe3edfe32266ca94304938a5f1c (diff)
Merge branch 'org.openembedded.dev' of git@git.openembedded.net:openembedded into org.openembedded.dev
Diffstat (limited to 'recipes')
-rw-r--r--recipes/linux/linux-2.6.27/boc01/005-090226-isl12024.patch (renamed from recipes/linux/linux-2.6.27/boc01/005-090217-isl12024.patch)356
-rw-r--r--recipes/linux/linux-2.6.27/boc01/012-090219-capsense.patch20
-rw-r--r--recipes/linux/linux-2.6.27/boc01/013-090306-lcd.patch (renamed from recipes/linux/linux-2.6.27/boc01/013-090209-lcd.patch)199
-rw-r--r--recipes/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch195
-rw-r--r--recipes/linux/linux-2.6.27/boc01/defconfig31
-rw-r--r--recipes/linux/linux_2.6.27.bb7
6 files changed, 418 insertions, 390 deletions
diff --git a/recipes/linux/linux-2.6.27/boc01/005-090217-isl12024.patch b/recipes/linux/linux-2.6.27/boc01/005-090226-isl12024.patch
index 672e405de0..0c29cdc3de 100644
--- a/recipes/linux/linux-2.6.27/boc01/005-090217-isl12024.patch
+++ b/recipes/linux/linux-2.6.27/boc01/005-090226-isl12024.patch
@@ -1,3 +1,16 @@
+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/Kconfig
===================================================================
--- linux-2.6.27.orig/drivers/rtc/Kconfig
@@ -27,18 +40,124 @@ Index: linux-2.6.27/drivers/rtc/Makefile
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/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_*/
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 @@
+@@ -0,0 +1,541 @@
+/*
+ * Intersil ISL12024 class driver
+ *
+ *
+ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
-+ * Guillaume Ligneul
-+ * Guillaume.ligneul@gmail.com
++ *
++ * Guillaume Ligneul <guillaume.ligneul@gmail.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
@@ -57,33 +176,30 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+#define DBG 1
+#undef DBG
+
-+static u8 buf_id[ISL12024_RTC_SECTION_LEN] = { 0 ,};
-+
+#define DRV_NAME "isl12024"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.2"
+
+/* 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)
++
++/* Bufer to store unique identifier in */
++static u8 buf_id[ISL12024_RTC_SECTION_LEN] = { 0 };
++
++
++// To debug (may be added in include/linux/i2c-id.h)
+#define I2C_DRIVERID_ISL12024 97
+
++
+static struct i2c_driver isl12024_driver = {
+ .driver = {
+ .name = DRV_NAME,
@@ -93,6 +209,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ .detach_client = &isl12024_detach_client,
+};
+
++
+int
+isl12024_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[],
+ unsigned len)
@@ -151,14 +268,16 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+
+ memcpy(&i2c_buf[2], &buf[0], len );
+
-+
+ ret = i2c_transfer(client->adapter, msgs, 1);
-+ printk(KERN_INFO "i2c_transfer %d\n",ret);
++ if ( ret < 0 )
++ printk(KERN_ERR DRV_NAME ": i2c_transfer failed (%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, };
@@ -183,6 +302,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ return 0;
+}
+
++
+static int isl12024_read_time(struct i2c_client *client,
+ struct rtc_time *tm)
+{
@@ -190,8 +310,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ int err;
+ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, };
+
-+ printk(KERN_INFO "%s\n ",__FUNCTION__ );
-+
++ //printk(KERN_INFO DRV_NAME "%s\n ",__FUNCTION__ );
+
+ if (isl12024_get_status(client, &sr) < 0) {
+ dev_err(&client->dev, "%s: reading SR failed\n", __func__);
@@ -203,7 +322,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+#ifdef DBG
+ int i;
+ for(i=0; i<ISL12024_RTC_SECTION_LEN; i++)
-+ printk(KERN_INFO "0x%2X\n", regs[i]);
++ printk(KERN_INFO DRV_NAME "0x%2X\n", regs[i]);
+#endif
+
+ if (err < 0) {
@@ -234,6 +353,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ 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 };
@@ -252,6 +372,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ return 0;
+}
+
++
+static int isl12024_set_datetime(struct i2c_client *client, struct rtc_time *tm,
+ int datetoo, u8 reg_base, unsigned char alm_enable)
+{
@@ -373,6 +494,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ return 0;
+}
+
++
+static int isl12024_fix_osc(struct i2c_client *client)
+{
+ int err;
@@ -381,24 +503,27 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ 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");
++ if ( err < 0 )
++ printk(KERN_ERR DRV_NAME ": Unable to restart the oscillator (%d)\n", err);
+
+ 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)
+{
@@ -408,32 +533,48 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ 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)
++static int
++read_proc(char * page, char ** start, off_t off, int count, int * eof, void * data)
+{
-+ int i=0;
++ int len = 0;
++ int i;
+
-+ printk("id: 0x");
-+ for(i=0;i<ISL12024_RTC_SECTION_LEN;i++)
-+ printk("%02X",buf_id[i]);
-+ printk("\n");
-+ return 0;
++ for (i = 0; i < ISL12024_RTC_SECTION_LEN; i++)
++ len += sprintf(page+len, "%02X", buf_id[i]);
++ len += sprintf(page+len, "\n");
++
++ len -= off;
++ if ( len < count ) {
++ *eof = 1;
++ if ( len <= 0 )
++ return 0;
++ } else {
++ len = count;
++ }
++
++ *start = page + off;
++
++ return len;
+}
+
++
+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;
++ struct proc_dir_entry *proc_root;
++ struct proc_dir_entry *proc_entry;
+
+ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
+ rc = -ENODEV;
@@ -467,7 +608,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ &isl12024_rtc_ops, THIS_MODULE);
+
+ if (IS_ERR(rtc)) {
-+ printk("Error during rtc registration\n");
++ printk(KERN_ERR DRV_NAME ": Error during rtc registration\n");
+ rc = PTR_ERR(rtc);
+ goto failout;
+ }
@@ -475,30 +616,28 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ 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);
-+ }
++ if ((err = isl12024_get_status(new_client, &sr)) == 0) {
++ if (sr & ISL12024_SR_RTCF) {
++ printk(KERN_INFO DRV_NAME ": 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);
++ }
++ else {
++ printk(KERN_ERR DRV_NAME ": Couldn't read status\n");
++ }
+
-+ if (entry_proc == NULL)
-+ return -1;
++ proc_root = proc_mkdir(DRV_NAME, 0);
++ proc_entry = create_proc_entry("id", S_IFREG | S_IRUGO, proc_root);
++ if (proc_entry == NULL)
++ return -1;
+
-+ entry_proc->owner = THIS_MODULE;
-+ entry_proc->read_proc = read_proc;
++ proc_entry->owner = THIS_MODULE;
++ proc_entry->read_proc = read_proc;
+
-+ /* read unique id from eeprom */
++ /* Read unique id from eeprom */
+ isl12024_i2c_read_regs(new_client, ISL12024_REG_ID, buf_id, sizeof(buf_id));
+
-+
+ return 0;
+
+ failout:
@@ -506,12 +645,14 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ 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)
+{
@@ -530,6 +671,7 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+ return 0;
+}
+
++
+/* module init/exit */
+
+static int __init isl12024_init(void)
@@ -549,121 +691,3 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
+
+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/recipes/linux/linux-2.6.27/boc01/012-090219-capsense.patch b/recipes/linux/linux-2.6.27/boc01/012-090219-capsense.patch
index fed8218427..c70339defa 100644
--- a/recipes/linux/linux-2.6.27/boc01/012-090219-capsense.patch
+++ b/recipes/linux/linux-2.6.27/boc01/012-090219-capsense.patch
@@ -29,7 +29,7 @@ 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 @@
+@@ -0,0 +1,456 @@
+/*
+ * CAPSENSE Interface driver
+ *
@@ -68,7 +68,21 @@ Index: linux-2.6.27/drivers/input/misc/capsense-btns.c
+
+#define BUTTONS_POLL_INTERVAL 30 /* msec */
+
++#define CAP_INPUT_PORT(port) (0x00+(port))
++#define CAP_STATUS_PORT(port) (0x02+(port))
+#define CAP_OUTPUT_PORT(port) (0x04+(port))
++#define CAP_CS_ENABLE(port) (0x06+(port))
++#define CAP_GPIO_ENABLE(port) (0x08+(port))
++#define CAP_INVERSION_MASK(port) (0x0A+(port))
++#define CAP_INT_MASK(port) (0x0C+(port))
++#define CAP_STATUS_HOLD_MSK(port) (0x0E+(port))
++#define CAP_DM_PULL_UP(port) (0x10+(4*(port)))
++#define CAP_DM_STRONG(port) (0x11+(4*(port)))
++#define CAP_DM_HIGHZ(port) (0x12+(4*(port)))
++#define CAP_OD_LOW(port) (0x13+(4*(port)))
++#define CAP_PWM_ENABLE(port) (0x18+(port))
++#define CAP_PWM_MODE_DC 0x1A
++#define CAP_PWM_DELAY 0x1B
+#define CAP_OP_SEL(port,bit) (0x1C+(25*(port))+(5*(bit)))
+#define CAP_READ_STATUS(port) (0x88+(port))
+
@@ -433,6 +447,8 @@ Index: linux-2.6.27/drivers/input/misc/capsense-btns.c
+{
+ struct capsense_ctx *capsense = i2c_get_clientdata(client);
+
++ printk(KERN_INFO DRIVER_NAME ": suspend\n");
++
+ capsense_led_suspend(capsense);
+
+ return 0;
@@ -442,6 +458,8 @@ Index: linux-2.6.27/drivers/input/misc/capsense-btns.c
+{
+ struct capsense_ctx *capsense = i2c_get_clientdata(client);
+
++ printk(KERN_INFO DRIVER_NAME ": resume\n");
++
+ capsense_led_resume(capsense);
+
+ return 0;
diff --git a/recipes/linux/linux-2.6.27/boc01/013-090209-lcd.patch b/recipes/linux/linux-2.6.27/boc01/013-090306-lcd.patch
index c867e2cf3a..cc53fe45f7 100644
--- a/recipes/linux/linux-2.6.27/boc01/013-090209-lcd.patch
+++ b/recipes/linux/linux-2.6.27/boc01/013-090306-lcd.patch
@@ -47,7 +47,7 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
===================================================================
--- /dev/null
+++ linux-2.6.27/drivers/video/nt7506fb.c
-@@ -0,0 +1,847 @@
+@@ -0,0 +1,880 @@
+/*
+ * linux/drivers/video/nt7506fb.c -- FB driver for NT7506 monochrome LCD board
+ *
@@ -154,6 +154,19 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+#define GRAY_BLACK_AB 6
+#define GRAY_BLACK_CD 7
+
++#define GRAY_INDEX_WHITE GRAY_WHITE_AB
++#define GRAY_INDEX_LIGHT GRAY_LIGHT_AB
++#define GRAY_INDEX_DARK GRAY_DARK_AB
++#define GRAY_INDEX_BLACK GRAY_BLACK_AB
++
++#define GRAY_LEVEL_WHITE 0
++#define GRAY_LEVEL_LIGHT 5
++#define GRAY_LEVEL_DARK 10
++#define GRAY_LEVEL_BLACK 15
++#define GRAY_LEVEL_MAX 15
++
++#define GRAY_VALUE(level) (((level)<<4)+(level))
++
+// Geometric settings
+#define LCD_WIDTH 128
+#define LCD_HEIGHT 128
@@ -469,7 +482,6 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+ NT7506_writeb_data(plane1);
+ NT7506_writeb_data(plane2);
+ }
-+ NT7506_writeb_data((unsigned char)0);
+ }
+
+ } else {
@@ -488,7 +500,6 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+ NT7506_writeb_data(plane1);
+ NT7506_writeb_data(plane2);
+ }
-+ NT7506_writeb_data((unsigned char)0);
+ }
+
+ }
@@ -526,7 +537,7 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+ unsigned int fbmemlength;
+ int err = 0;
+
-+ fbmemlength = (info->var.xres * info->var.yres)/8;
++ fbmemlength = (info->var.xres * info->var.yres) / (8 / info->var.bits_per_pixel);
+
+ if ( p > fbmemlength ) {
+ return -EFBIG;
@@ -633,6 +644,31 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+ nt7506fb_start_timer();
+}
+
++/*
++ * Grayscale levels adjustment
++ */
++
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++
++static void nt7506fb_set_gray_level(unsigned char index, unsigned char level)
++{
++ NT7506_writeb_ctl(NT_GRAY_SCALE | index);
++ NT7506_writeb_ctl(GRAY_VALUE(level));
++ NT7506_writeb_ctl(NT_GRAY_SCALE | (index+1));
++ NT7506_writeb_ctl(GRAY_VALUE(level));
++}
++
++#ifdef CONFIG_PROC_FS
++#include "nt7506fb-procfs.c"
++#endif
++
++#endif
++
++
++/*
++ * Device driver intialisation
++ */
++
+static int __init
+nt7506fb_probe(struct platform_device *dev)
+{
@@ -695,6 +731,13 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+ "fb%d: nt7506 frame buffer device, using %dK of video memory\n",
+ info->node, videomemorysize >> 10);
+
++ /* Create procfs entries for grayscale levels adjustment */
++#ifdef CONFIG_PROC_FS
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++ nt7506fb_proc_init(par);
++#endif
++#endif
++
+ /* Initialize backlight and contrast control (do not abort driver if it fails) */
+ nt7506fb_bl_init(par);
+ nt7506fb_lcd_init(par);
@@ -732,7 +775,7 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+{
+ struct fb_info *info = platform_get_drvdata(dev);
+
-+ printk(KERN_INFO DRIVER_NAME ": Switching to Power Save mode\n");
++ printk(KERN_INFO DRIVER_NAME ": suspend\n");
+
+ info->bl_dev->props.power = FB_BLANK_POWERDOWN;
+ nt7506fb_bl_update_status(info->bl_dev);
@@ -744,6 +787,8 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+{
+ struct fb_info *info = platform_get_drvdata(dev);
+
++ printk(KERN_INFO DRIVER_NAME ": resume\n");
++
+ info->bl_dev->props.power = FB_BLANK_UNBLANK;
+ nt7506fb_bl_update_status(info->bl_dev);
+
@@ -843,22 +888,10 @@ Index: linux-2.6.27/drivers/video/nt7506fb.c
+
+#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);
++ nt7506fb_set_gray_level(GRAY_INDEX_WHITE, GRAY_LEVEL_WHITE);
++ nt7506fb_set_gray_level(GRAY_INDEX_LIGHT, GRAY_LEVEL_LIGHT);
++ nt7506fb_set_gray_level(GRAY_INDEX_DARK, GRAY_LEVEL_DARK);
++ nt7506fb_set_gray_level(GRAY_INDEX_BLACK, GRAY_LEVEL_BLACK);
+#endif
+
+ /* Select power circuit functions */
@@ -931,3 +964,127 @@ Index: linux-2.6.27/include/linux/nt7506fb.h
+#define FBIO_FRAMERATE _IOR('f', 1, char)
+
+#endif
+Index: linux-2.6.27/drivers/video/nt7506fb-procfs.c
+===================================================================
+--- /dev/null
++++ linux-2.6.27/drivers/video/nt7506fb-procfs.c
+@@ -0,0 +1,119 @@
++/*
++ * FB driver for NT7506 monochrome/grayscale LCD board
++ * Device setup using procfs
++ *
++ * Copyright (C) 2009, 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 nt7506fb_proc_entry {
++ char *name;
++ unsigned char index;
++ unsigned char level;
++ struct nt7506fb_par *par;
++};
++
++static struct nt7506fb_proc_entry nt7506fb_proc_entries[] = {
++ { "white", GRAY_INDEX_WHITE, GRAY_LEVEL_WHITE },
++ { "light", GRAY_INDEX_LIGHT, GRAY_LEVEL_LIGHT },
++ { "dark", GRAY_INDEX_DARK, GRAY_LEVEL_DARK },
++ { "black", GRAY_INDEX_BLACK, GRAY_LEVEL_BLACK },
++};
++
++static int nt7506fb_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *data)
++{
++ struct nt7506fb_proc_entry *entry = data;
++ int len;
++
++ len = sprintf(page, "%d\n", entry->level);
++
++ len -= off;
++ if ( len < count ) {
++ *eof = 1;
++ if ( len <= 0 )
++ return 0;
++ } else {
++ len = count;
++ }
++
++ *start = page + off;
++
++ return len;
++}
++
++
++static int nt7506fb_proc_write(struct file *file, const char *buf,
++ unsigned long count, void *data)
++{
++ struct nt7506fb_proc_entry *entry = data;
++ char lbuf[count+1];
++
++ /* 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", &entry->level) == 1 ) {
++ if ( entry->level > GRAY_LEVEL_MAX )
++ entry->level = GRAY_LEVEL_MAX;
++
++ /* Set grayscale palette entry */
++ nt7506fb_set_gray_level(entry->index, entry->level);
++ }
++ else {
++ printk(KERN_INFO DRIVER_NAME ": [%s] Syntax error in expression\n", entry->name);
++ return -EINVAL;
++ }
++
++ return count;
++}
++
++
++static int nt7506fb_proc_init(struct nt7506fb_par *par)
++{
++ struct proc_dir_entry *root;
++ struct proc_dir_entry *ent;
++ int i;
++
++ /* Create nt7506fb 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 gray level entries */
++ for (i = 0; i < ARRAY_SIZE(nt7506fb_proc_entries); i++) {
++ struct nt7506fb_proc_entry *entry = &nt7506fb_proc_entries[i];
++
++ entry->par = par;
++
++ ent = create_proc_entry(entry->name, S_IFREG|S_IWUSR, root);
++ if ( ent == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/%s\n", entry->name);
++ return -1;
++ }
++
++ ent->owner = THIS_MODULE;
++ ent->data = entry;
++ ent->write_proc = nt7506fb_proc_write;
++ ent->read_proc = nt7506fb_proc_read;
++ }
++ return 0;
++}
diff --git a/recipes/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch b/recipes/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch
deleted file mode 100644
index 3acbf40c32..0000000000
--- a/recipes/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/recipes/linux/linux-2.6.27/boc01/defconfig b/recipes/linux/linux-2.6.27/boc01/defconfig
index bb667bcd10..24b147baf8 100644
--- a/recipes/linux/linux-2.6.27/boc01/defconfig
+++ b/recipes/linux/linux-2.6.27/boc01/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.27
-# Thu Feb 26 12:59:36 2009
+# Wed Mar 4 18:33:27 2009
#
# CONFIG_PPC64 is not set
@@ -40,6 +40,7 @@ CONFIG_ARCH_HAS_ILOG2_U32=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_GPIO=y
# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
CONFIG_PPC=y
CONFIG_EARLY_PRINTK=y
@@ -181,7 +182,6 @@ CONFIG_MPC831x_RDB=y
# 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
@@ -263,6 +263,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_PPC_INDIRECT_PCI=y
CONFIG_FSL_SOC=y
CONFIG_FSL_PCI=y
+CONFIG_FSL_LBC=y
CONFIG_PPC_PCI_CHOICE=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
@@ -732,6 +733,7 @@ CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_PLATFORM is not set
# CONFIG_MTD_ALAUDA is not set
CONFIG_MTD_NAND_FSL_ELBC=y
+CONFIG_MTD_NAND_FSL_UPM=y
# CONFIG_MTD_ONENAND is not set
#
@@ -739,6 +741,7 @@ CONFIG_MTD_NAND_FSL_ELBC=y
#
# CONFIG_MTD_UBI is not set
CONFIG_OF_DEVICE=y
+CONFIG_OF_GPIO=y
CONFIG_OF_I2C=y
CONFIG_OF_SPI=y
# CONFIG_PARPORT is not set
@@ -1087,6 +1090,7 @@ CONFIG_I2C_HELPER_AUTO=y
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
+# CONFIG_I2C_GPIO is not set
CONFIG_I2C_MPC=y
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_SIMTEC is not set
@@ -1119,6 +1123,7 @@ CONFIG_AT24=y
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
@@ -1141,7 +1146,26 @@ CONFIG_SPI_MPC83xx=y
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_GPIOLIB is not set
+CONFIG_GPIOLIB=y
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_BT8XX is not set
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_W1 is not set
CONFIG_POWER_SUPPLY=y
CONFIG_POWER_SUPPLY_DEBUG=y
@@ -1502,6 +1526,7 @@ CONFIG_LEDS_CLASS=y
# LED drivers
#
# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
# CONFIG_LEDS_PCA955X is not set
#
diff --git a/recipes/linux/linux_2.6.27.bb b/recipes/linux/linux_2.6.27.bb
index 0b219ec705..5d2d485b12 100644
--- a/recipes/linux/linux_2.6.27.bb
+++ b/recipes/linux/linux_2.6.27.bb
@@ -1,6 +1,6 @@
require linux.inc
-PR = "r6"
+PR = "r7"
# Mark archs/machines that this kernel supports
DEFAULT_PREFERENCE = "-1"
@@ -15,14 +15,13 @@ SRC_URI_append_boc01 = "\
file://boc01.dts \
file://001-090114-sqn11x0-usb-hack.patch;patch=1 \
file://004-081205-usb.patch;patch=1 \
- file://005-090217-isl12024.patch;patch=1 \
+ file://005-090226-isl12024.patch;patch=1 \
file://007-081217-lm73.patch;patch=1 \
file://008-081208-spi.patch;patch=1 \
file://010-090112-mii.patch;patch=1 \
file://011-090115-gpio.patch;patch=1 \
file://012-090219-capsense.patch;patch=1 \
- file://013-090209-lcd.patch;patch=1 \
- file://014-090209-pm-wakeup.patch;patch=1 \
+ file://013-090306-lcd.patch;patch=1 \
"
SRC_URI_append_progear = "file://progear-bl.patch;patch=1\