diff options
author | Jeremy Lainé <jeremy.laine@m4x.org> | 2009-03-24 17:30:03 +0100 |
---|---|---|
committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2009-03-24 17:30:03 +0100 |
commit | 08f02468d5a3963cf0114285835f46cf0249b944 (patch) | |
tree | ea3bce114a2a7721e6a1adc94f5421744bb75b62 /recipes | |
parent | 9bb0079fdb658519027cd4bfa419ddae8a39334a (diff) |
linux-2.6.27: update patches for boc01
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.patch | 20 | ||||
-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.patch | 195 | ||||
-rw-r--r-- | recipes/linux/linux-2.6.27/boc01/defconfig | 31 | ||||
-rw-r--r-- | recipes/linux/linux_2.6.27.bb | 7 |
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\ |