linux-2.6.27: update patches for boc01
authorJeremy Lainé <jeremy.laine@m4x.org>
Tue, 24 Mar 2009 16:30:03 +0000 (17:30 +0100)
committerJeremy Lainé <jeremy.laine@m4x.org>
Tue, 24 Mar 2009 16:30:03 +0000 (17:30 +0100)
recipes/linux/linux-2.6.27/boc01/005-090226-isl12024.patch [moved from recipes/linux/linux-2.6.27/boc01/005-090217-isl12024.patch with 90% similarity]
recipes/linux/linux-2.6.27/boc01/012-090219-capsense.patch
recipes/linux/linux-2.6.27/boc01/013-090306-lcd.patch [moved from recipes/linux/linux-2.6.27/boc01/013-090209-lcd.patch with 83% similarity]
recipes/linux/linux-2.6.27/boc01/014-090209-pm-wakeup.patch [deleted file]
recipes/linux/linux-2.6.27/boc01/defconfig
recipes/linux/linux_2.6.27.bb

@@ -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_*/
index fed8218..c70339d 100644 (file)
@@ -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;
@@ -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 (file)
index 3acbf40..0000000
+++ /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);
index bb667bc..24b147b 100644 (file)
@@ -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
 
 #
index 0b219ec..5d2d485 100644 (file)
@@ -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\