aboutsummaryrefslogtreecommitdiffstats
path: root/recipes
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2009-10-09 18:34:53 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2009-10-09 18:34:53 +0200
commit924dc8e21aa7e229bcf9c58de08edfc69c163d7a (patch)
tree30547162e40a2b90d7ddafa86d78cd8e27a378b1 /recipes
parentf39bf1b386f876aee67afe44006faafdf8db7705 (diff)
downloadopenembedded-924dc8e21aa7e229bcf9c58de08edfc69c163d7a.tar.gz
linux-2.6.29: update boc01 isl12024 driver to new style i2c
Diffstat (limited to 'recipes')
-rw-r--r--recipes/linux/linux-2.6.29/boc01/005-091008-isl12024.patch (renamed from recipes/linux/linux-2.6.29/boc01/005-090226-isl12024.patch)337
-rw-r--r--recipes/linux/linux-2.6.29/boc01/boc01.dts4
-rw-r--r--recipes/linux/linux-2.6.29/boc01/boc01.dts.v14
-rw-r--r--recipes/linux/linux_2.6.29.bb2
4 files changed, 105 insertions, 242 deletions
diff --git a/recipes/linux/linux-2.6.29/boc01/005-090226-isl12024.patch b/recipes/linux/linux-2.6.29/boc01/005-091008-isl12024.patch
index ce71c3af80..975d810e3b 100644
--- a/recipes/linux/linux-2.6.29/boc01/005-090226-isl12024.patch
+++ b/recipes/linux/linux-2.6.29/boc01/005-091008-isl12024.patch
@@ -1,26 +1,26 @@
Index: linux-2.6.29/drivers/misc/eeprom/at24.c
===================================================================
--- linux-2.6.29.orig/drivers/misc/eeprom/at24.c 2009-03-24 00:12:14.000000000 +0100
-+++ linux-2.6.29/drivers/misc/eeprom/at24.c 2009-04-01 17:37:45.000000000 +0200
++++ linux-2.6.29/drivers/misc/eeprom/at24.c 2009-10-08 16:30:58.000000000 +0200
@@ -114,6 +114,8 @@
{ "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) },
++ { "isl12024-eeprom", 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.29/drivers/rtc/Kconfig
===================================================================
--- linux-2.6.29.orig/drivers/rtc/Kconfig 2009-03-24 00:12:14.000000000 +0100
-+++ linux-2.6.29/drivers/rtc/Kconfig 2009-04-01 17:37:45.000000000 +0200
++++ linux-2.6.29/drivers/rtc/Kconfig 2009-10-08 16:30:58.000000000 +0200
@@ -128,6 +128,12 @@
if I2C
+config RTC_DRV_ISL12024
-+ tristate "Intersil 12024 RTC/ UniqueID"
++ tristate "Intersil 12024 RTC/Unique-ID"
+ help
+ If you say yes ....
+ This driver can also be built as a module.
@@ -31,7 +31,7 @@ Index: linux-2.6.29/drivers/rtc/Kconfig
Index: linux-2.6.29/drivers/rtc/Makefile
===================================================================
--- linux-2.6.29.orig/drivers/rtc/Makefile 2009-03-24 00:12:14.000000000 +0100
-+++ linux-2.6.29/drivers/rtc/Makefile 2009-04-01 17:37:45.000000000 +0200
++++ linux-2.6.29/drivers/rtc/Makefile 2009-10-08 16:30:58.000000000 +0200
@@ -39,6 +39,7 @@
obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
@@ -40,100 +40,64 @@ Index: linux-2.6.29/drivers/rtc/Makefile
obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o
obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o
obj-$(CONFIG_RTC_DRV_M48T35) += rtc-m48t35.o
-Index: linux-2.6.29/drivers/rtc/isl12024.h
+Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/drivers/rtc/isl12024.h 2009-04-01 17:37:45.000000000 +0200
-@@ -0,0 +1,100 @@
++++ linux-2.6.29/drivers/rtc/rtc-isl12024.c 2009-10-09 15:50:08.000000000 +0200
+@@ -0,0 +1,509 @@
+/*
-+ * Intersil ISL12024 chip registers definitions
++ * Intersil ISL12024 class driver
+ *
+ *
-+ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
-+ * Guillaume Ligneul
-+ * Guillaume.ligneul@gmail.com
++ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
++ *
++ * Guillaume Ligneul <guillaume.ligneul@gmail.com>
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu>
+ *
+ * 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
++#include <linux/module.h>
++#include <linux/i2c.h>
++#include <linux/bcd.h>
++#include <linux/rtc.h>
++#include <linux/proc_fs.h>
++#include <linux/delay.h>
++
++#define DRV_VERSION "0.3"
+
+#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
++/* Register map */
+
+/* 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_REG_SC 0x30
++#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 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
@@ -144,73 +108,15 @@ Index: linux-2.6.29/drivers/rtc/isl12024.h
+#define CCR_WDAY 6
+#define CCR_Y2K 7
+
-+#endif /*ISL12024_H_*/
-Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/drivers/rtc/rtc-isl12024.c 2009-04-01 17:37:45.000000000 +0200
-@@ -0,0 +1,541 @@
-+/*
-+ * Intersil ISL12024 class driver
-+ *
-+ *
-+ * Copyright (C) 2007, CenoSYS (www.cenosys.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
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/i2c.h>
-+#include <linux/bcd.h>
-+#include <linux/rtc.h>
-+#include <linux/proc_fs.h>
-+#include <linux/delay.h>
-+
-+#include "isl12024.h"
-+
-+
-+#define DBG 1
-+#undef DBG
-+
-+#define DRV_NAME "isl12024"
-+#define DRV_VERSION "0.2"
-+
-+/* i2c configuration */
-+static const unsigned short normal_i2c[] = {
-+ ISL12024_I2C_ADDR >>1, I2C_CLIENT_END
-+};
-+I2C_CLIENT_INSMOD;
-+
+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);
-+
-+
+/* Bufer to store unique identifier in */
+static u8 buf_id[ISL12024_RTC_SECTION_LEN] = { 0 };
+
++static struct i2c_driver isl12024_driver;
+
-+// 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,
-+ },
-+ .id = I2C_DRIVERID_ISL12024,
-+ .attach_adapter = &isl12024_attach_adapter,
-+ .detach_client = &isl12024_detach_client,
-+};
-+
-+
-+int
++static int
+isl12024_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[],
+ unsigned len)
+{
@@ -243,10 +149,8 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ return ret;
+}
+
-+EXPORT_SYMBOL(isl12024_i2c_read_regs);
+
-+
-+int
++static int
+isl12024_i2c_set_regs(struct i2c_client *client, u8 reg, u8 const buf[],
+ unsigned len)
+{
@@ -270,13 +174,11 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+
+ ret = i2c_transfer(client->adapter, msgs, 1);
+ if ( ret < 0 )
-+ printk(KERN_ERR DRV_NAME ": i2c_transfer failed (%d)\n", ret);
++ dev_err(&client->dev, "i2c_transfer failed (%d)\n", ret);
+
+ return ret;
+}
+
-+EXPORT_SYMBOL(isl12024_i2c_set_regs);
-+
+
+static int isl12024_i2c_validate_client(struct i2c_client *client)
+{
@@ -296,13 +198,11 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ for (i = 0; i < ISL12024_RTC_SECTION_LEN; ++i) {
+ if (regs[i] & zero_mask[i]) /* check if bits are cleared */
+ return -ENODEV;
-+
+ }
+
+ return 0;
+}
+
-+
+static int isl12024_read_time(struct i2c_client *client,
+ struct rtc_time *tm)
+{
@@ -310,25 +210,16 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ int err;
+ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, };
+
-+ //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__);
++ dev_err(&client->dev, "reading SR failed\n");
+ return -EIO;
+ }
+
+ err = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN);
+
-+#ifdef DBG
-+ int i;
-+ for(i=0; i<ISL12024_RTC_SECTION_LEN; i++)
-+ printk(KERN_INFO DRV_NAME "0x%2X\n", regs[i]);
-+#endif
-+
+ if (err < 0) {
-+ dev_err(&client->dev, "%s: reading RTC section failed\n",
-+ __func__);
-+ return sr;
++ dev_err(&client->dev, "reading RTC section failed\n");
++ return err;
+ }
+
+ tm->tm_sec = bcd2bin(regs[0]);
@@ -353,7 +244,6 @@ Index: linux-2.6.29/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 };
@@ -381,10 +271,10 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ unsigned char rdata[10] = { 0, reg_base };
+
+ static const unsigned char wel[3] = { 0, ISL12024_REG_SR,
-+ ISL12024_SR_WEL };
++ ISL12024_REG_SR_WEL };
+
+ static const unsigned char rwel[3] = { 0, ISL12024_REG_SR,
-+ ISL12024_SR_WEL | ISL12024_SR_RWEL };
++ ISL12024_REG_SR_WEL | ISL12024_REG_SR_RWEL };
+
+ static const unsigned char diswe[3] = { 0, ISL12024_REG_SR, 0 };
+
@@ -397,7 +287,7 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ buf[CCR_MIN] = bin2bcd(tm->tm_min);
+
+ /* set hour and 24hr bit */
-+ buf[CCR_HOUR] = bin2bcd(tm->tm_hour) | ISL12024_HR_MIL;
++ buf[CCR_HOUR] = bin2bcd(tm->tm_hour) | ISL12024_REG_HR_MIL;
+
+ /* should we also set the date? */
+ if (datetoo) {
@@ -494,7 +384,6 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ return 0;
+}
+
-+
+static int isl12024_fix_osc(struct i2c_client *client)
+{
+ int err;
@@ -504,26 +393,23 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+
+ err = isl12024_set_datetime(client, &tm, 0, ISL12024_CCR_BASE, 0);
+ if ( err < 0 )
-+ printk(KERN_ERR DRV_NAME ": Unable to restart the oscillator (%d)\n", err);
++ dev_err(&client->dev, "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)
+{
@@ -533,7 +419,6 @@ Index: linux-2.6.29/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,
@@ -564,113 +449,91 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ return len;
+}
+
-+
+static int
-+isl12024_probe(struct i2c_adapter *adapter, int addr, int kind)
++isl12024_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+ 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;
-+ goto failout;
-+ }
-+
-+ new_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (new_client == NULL) {
-+ rc = -ENOMEM;
-+ goto failout;
-+ }
++ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
++ return -ENODEV;
+
-+ new_client->addr = addr;
-+ new_client->adapter = adapter;
-+ new_client->driver = &isl12024_driver;
-+ new_client->flags = 0;
-+ strcpy(new_client->name, DRV_NAME);
++ if (isl12024_i2c_validate_client(client) < 0)
++ return -ENODEV;
+
-+ if (kind < 0) {
-+ rc = isl12024_i2c_validate_client(new_client);
-+ if (rc < 0)
-+ goto failout;
-+ }
-+
-+ rc = i2c_attach_client(new_client);
-+ if (rc < 0)
-+ goto failout;
++ dev_info(&client->dev,
++ "chip found, driver version " DRV_VERSION "\n");
+
+ rtc = rtc_device_register(isl12024_driver.driver.name,
-+ &new_client->dev,
-+ &isl12024_rtc_ops, THIS_MODULE);
-+
-+ if (IS_ERR(rtc)) {
-+ printk(KERN_ERR DRV_NAME ": Error during rtc registration\n");
-+ rc = PTR_ERR(rtc);
-+ goto failout;
++ &client->dev, &isl12024_rtc_ops,
++ THIS_MODULE);
++
++ if (IS_ERR(rtc))
++ return PTR_ERR(rtc);
++
++ i2c_set_clientdata(client, rtc);
++
++ rc = isl12024_get_status(client, &sr);
++ if (rc < 0) {
++ dev_err(&client->dev, "reading status failed\n");
++ goto exit_unregister;
++ }
++
++ /* Check for power failures and enable the osc */
++ if (sr & ISL12024_REG_SR_RTCF) {
++ dev_warn(&client->dev, "rtc power failure detected, "
++ "please set clock.\n");
++ udelay(50);
++ isl12024_fix_osc(client);
+ }
+
-+ 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 DRV_NAME ": Power failure detected, please set the clock\n");
-+ udelay(50);
-+ isl12024_fix_osc(new_client);
-+ }
-+ }
-+ else {
-+ printk(KERN_ERR DRV_NAME ": Couldn't read status\n");
-+ }
-+
-+ proc_root = proc_mkdir(DRV_NAME, 0);
++ proc_root = proc_mkdir("isl12024", 0);
+ proc_entry = create_proc_entry("id", S_IFREG | S_IRUGO, proc_root);
+ if (proc_entry == NULL)
-+ return -1;
++ goto exit_unregister;
+
+ proc_entry->owner = THIS_MODULE;
+ proc_entry->read_proc = read_proc;
+
+ /* Read unique id from eeprom */
-+ isl12024_i2c_read_regs(new_client, ISL12024_REG_ID, buf_id, sizeof(buf_id));
++ isl12024_i2c_read_regs(client, ISL12024_REG_ID, buf_id, sizeof(buf_id));
+
+ return 0;
+
-+ failout:
-+ kfree(new_client);
-+ return rc;
-+}
-+
++exit_unregister:
++ rtc_device_unregister(rtc);
+
-+static int
-+isl12024_attach_adapter (struct i2c_adapter *adapter)
-+{
-+ return i2c_probe(adapter, &addr_data, isl12024_probe);
++ return rc;
+}
+
-+
+static int
-+isl12024_detach_client(struct i2c_client *client)
++isl12024_remove(struct i2c_client *client)
+{
-+ int rc;
-+ struct rtc_device *const rtc = i2c_get_clientdata(client);
++ struct rtc_device *rtc = i2c_get_clientdata(client);
+
-+ if (rtc)
-+ rtc_device_unregister(rtc);
-+
-+ rc = i2c_detach_client(client);
-+ if (rc)
-+ return rc;
-+
-+ kfree(client);
++ /* FIXME : unregister from procfs */
++ rtc_device_unregister(rtc);
+
+ return 0;
+}
+
++static const struct i2c_device_id isl12024_id[] = {
++ { "isl12024", 0 },
++ { }
++};
++MODULE_DEVICE_TABLE(i2c, isl12024_id);
++
++static struct i2c_driver isl12024_driver = {
++ .driver = {
++ .name = "rtc-isl12024",
++ },
++ .probe = isl12024_probe,
++ .remove = isl12024_remove,
++ .id_table = isl12024_id,
++};
+
+/* module init/exit */
+
diff --git a/recipes/linux/linux-2.6.29/boc01/boc01.dts b/recipes/linux/linux-2.6.29/boc01/boc01.dts
index fb0b5fb0a5..1abe296842 100644
--- a/recipes/linux/linux-2.6.29/boc01/boc01.dts
+++ b/recipes/linux/linux-2.6.29/boc01/boc01.dts
@@ -125,7 +125,7 @@
interrupt-parent = <&ipic>;
dfsrr;
rtc@6f {
- compatible = "isl12024";
+ compatible = "intersil,isl12024";
reg = <0x6f>;
};
dtt@49 {
@@ -137,7 +137,7 @@
reg = <0x50>;
};
at24@57 {
- compatible = "at24,isl12024";
+ compatible = "at24,isl12024-eeprom";
reg = <0x57>;
};
};
diff --git a/recipes/linux/linux-2.6.29/boc01/boc01.dts.v1 b/recipes/linux/linux-2.6.29/boc01/boc01.dts.v1
index 2066652695..b71373a9ab 100644
--- a/recipes/linux/linux-2.6.29/boc01/boc01.dts.v1
+++ b/recipes/linux/linux-2.6.29/boc01/boc01.dts.v1
@@ -125,7 +125,7 @@
interrupt-parent = <&ipic>;
dfsrr;
rtc@6f {
- compatible = "isl12024";
+ compatible = "intersil,isl12024";
reg = <0x6f>;
};
dtt@49 {
@@ -137,7 +137,7 @@
reg = <0x50>;
};
at24@57 {
- compatible = "at24,isl12024";
+ compatible = "at24,isl12024-eeprom";
reg = <0x57>;
};
};
diff --git a/recipes/linux/linux_2.6.29.bb b/recipes/linux/linux_2.6.29.bb
index a172b6d074..b4c7aca8fd 100644
--- a/recipes/linux/linux_2.6.29.bb
+++ b/recipes/linux/linux_2.6.29.bb
@@ -25,7 +25,7 @@ SRC_URI_append_boc01 = "\
file://boc01.dts \
file://boc01.dts.v1 \
file://004-081205-usb.patch;patch=1 \
- file://005-090226-isl12024.patch;patch=1 \
+ file://005-091008-isl12024.patch;patch=1 \
file://007-091005-lm73.patch;patch=1 \
file://008-091005-spi.patch;patch=1 \
file://011-090115-gpio.patch;patch=1 \