summaryrefslogtreecommitdiff
path: root/recipes/linux
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux')
-rw-r--r--recipes/linux/linux-2.6.24/hipox/defconfig29
-rw-r--r--recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch17
-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)380
-rw-r--r--recipes/linux/linux-2.6.29/boc01/007-091005-lm73.patch (renamed from recipes/linux/linux-2.6.29/boc01/007-090825-lm73.patch)178
-rw-r--r--recipes/linux/linux-2.6.29/boc01/008-091005-spi.patch (renamed from recipes/linux/linux-2.6.29/boc01/008-081208-spi.patch)24
-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.30/tosa/defconfig2013
-rw-r--r--recipes/linux/linux-2.6.31/db1200/defconfig1341
-rw-r--r--recipes/linux/linux-bug/defconfig222
-rw-r--r--recipes/linux/linux-bug_2.6.27.2.bb3
-rw-r--r--recipes/linux/linux-omap-zoomsync_2.6.31.bb4
-rw-r--r--recipes/linux/linux_2.6.25.bb1
-rw-r--r--recipes/linux/linux_2.6.29.bb6
-rw-r--r--recipes/linux/linux_2.6.30.bb4
-rw-r--r--recipes/linux/linux_2.6.31.bb9
16 files changed, 3656 insertions, 583 deletions
diff --git a/recipes/linux/linux-2.6.24/hipox/defconfig b/recipes/linux/linux-2.6.24/hipox/defconfig
index a1482fbf4b..27acce8811 100644
--- a/recipes/linux/linux-2.6.24/hipox/defconfig
+++ b/recipes/linux/linux-2.6.24/hipox/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24.4
-# Mon Aug 24 09:09:25 2009
+# Wed Oct 7 11:41:43 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -32,7 +32,7 @@ CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
@@ -46,7 +46,7 @@ CONFIG_SYSVIPC_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_CGROUPS is not set
# CONFIG_FAIR_GROUP_SCHED is not set
-CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
@@ -332,7 +332,10 @@ CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
@@ -747,7 +750,22 @@ CONFIG_SYNOPSYS_GMAC=y
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
@@ -1201,6 +1219,7 @@ CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
diff --git a/recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch b/recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch
deleted file mode 100644
index 4bd44e25db..0000000000
--- a/recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -ur linux-2.6.27.orig/drivers/usb/host/ehci-q.c linux-2.6.27/drivers/usb/host/ehci-q.c
---- linux-2.6.27.orig/drivers/usb/host/ehci-q.c 2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/drivers/usb/host/ehci-q.c 2009-01-06 18:31:38.000000000 +0100
-@@ -799,7 +799,12 @@
- * to help them do so. So now people expect to use
- * such nonconformant devices with Linux too; sigh.
- */
-- info1 |= max_packet(maxp) << 16;
-+ struct usb_device_descriptor *desc = &urb->dev->descriptor;
-+ if (desc->idVendor == cpu_to_le16(0x148e) && desc->idProduct == cpu_to_le16(0x0900)) {
-+ info1 |= 256 << 16;
-+ } else {
-+ info1 |= max_packet(maxp) << 16;
-+ }
- info2 |= (EHCI_TUNE_MULT_HS << 30);
- } else { /* PIPE_INTERRUPT */
- info1 |= max_packet (maxp) << 16;
diff --git a/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..50a4c75177 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-09 18:37:43.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-09 18:37:43.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-09 18:37:43.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,63 @@ 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 19:05:21.000000000 +0200
+@@ -0,0 +1,498 @@
+/*
-+ * 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/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 +107,12 @@ 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 };
-+
-+
-+// 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,
-+};
++static struct i2c_driver isl12024_driver;
+
-+
-+int
++static int
+isl12024_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[],
+ unsigned len)
+{
@@ -228,7 +130,7 @@ Index: linux-2.6.29/drivers/rtc/rtc-isl12024.c
+ .addr = client->addr,
+ .flags = I2C_M_RD,
+ .len = len ,
-+ .buf = buf ,
++ .buf = buf,
+ },
+ };
+
@@ -243,10 +145,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 +170,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 +194,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 +206,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 +240,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 +267,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 +283,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 +380,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 +389,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,144 +415,114 @@ 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,
+ .set_time = isl12024_rtc_set_time,
+};
+
-+static int
-+read_proc(char * page, char ** start, off_t off, int count, int * eof, void * data)
++static ssize_t isl12024_show_id(struct device *dev, struct device_attribute *attr,
++ char *buf)
+{
++ struct i2c_client *client = to_i2c_client(dev);
++ int err;
+ int len = 0;
+ int i;
++ u8 id_buffer[ISL12024_RTC_SECTION_LEN];
+
-+ 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;
++ /* Read unique id from eeprom */
++ err = isl12024_i2c_read_regs(client, ISL12024_REG_ID, id_buffer, sizeof(id_buffer));
++ if (err < 0) {
++ dev_err(&client->dev, "reading RTC section failed\n");
++ return err;
+ }
+
-+ *start = page + off;
-+
++ /* Print hexadecimal */
++ for (i = 0; i < sizeof(id_buffer); i++)
++ len += sprintf(buf + len, "%02X", id_buffer[i]);
++ len += sprintf(buf + len, "\n");
+ return len;
+}
+
++static DEVICE_ATTR(id, S_IRUGO, isl12024_show_id, NULL);
+
+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;
-+ }
+
-+ new_client->addr = addr;
-+ new_client->adapter = adapter;
-+ new_client->driver = &isl12024_driver;
-+ new_client->flags = 0;
-+ strcpy(new_client->name, DRV_NAME);
++ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
++ return -ENODEV;
+
-+ if (kind < 0) {
-+ rc = isl12024_i2c_validate_client(new_client);
-+ if (rc < 0)
-+ goto failout;
-+ }
++ if (isl12024_i2c_validate_client(client) < 0)
++ return -ENODEV;
+
-+ 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_entry = create_proc_entry("id", S_IFREG | S_IRUGO, proc_root);
-+ if (proc_entry == NULL)
-+ return -1;
-+
-+ 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));
++ /* Register sysfs hooks */
++ rc = device_create_file(&client->dev, &dev_attr_id);
++ if (rc < 0)
++ goto exit_unregister;
+
+ 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);
++ rtc_device_unregister(rtc);
++ device_remove_file(&client->dev, &dev_attr_id);
+
+ 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/007-090825-lm73.patch b/recipes/linux/linux-2.6.29/boc01/007-091005-lm73.patch
index 8ffae6a2b0..bc43a0a70a 100644
--- a/recipes/linux/linux-2.6.29/boc01/007-090825-lm73.patch
+++ b/recipes/linux/linux-2.6.29/boc01/007-091005-lm73.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.29/drivers/hwmon/Kconfig
===================================================================
---- linux-2.6.29.orig/drivers/hwmon/Kconfig 2009-08-25 17:33:48.000000000 +0200
-+++ linux-2.6.29/drivers/hwmon/Kconfig 2009-08-25 17:34:24.000000000 +0200
+--- linux-2.6.29.orig/drivers/hwmon/Kconfig 2009-10-05 18:27:57.000000000 +0200
++++ linux-2.6.29/drivers/hwmon/Kconfig 2009-10-05 18:28:35.000000000 +0200
@@ -448,6 +448,15 @@
This driver can also be built as a module. If so, the module
will be called lm70.
@@ -11,7 +11,7 @@ Index: linux-2.6.29/drivers/hwmon/Kconfig
+ depends on I2C
+ help
+ If you say yes here you get support for National Semiconductor LM73
-+ sensor chips
++ sensor chips.
+ This driver can also be built as a module. If so, the module
+ will be called lm73.
+
@@ -21,102 +21,98 @@ Index: linux-2.6.29/drivers/hwmon/Kconfig
Index: linux-2.6.29/drivers/hwmon/lm73.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.29/drivers/hwmon/lm73.c 2009-08-25 18:43:49.000000000 +0200
-@@ -0,0 +1,243 @@
-+ /*
++++ linux-2.6.29/drivers/hwmon/lm73.c 2009-10-05 18:28:49.000000000 +0200
+@@ -0,0 +1,205 @@
++/*
+ * LM73 Sensor driver
+ * Based on LM75
+ *
+ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
+ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu).
+ *
-+ * Guillaume Ligneul (Guillaume.ligneul@gmail.com)
++ * Guillaume Ligneul <guillaume.ligneul@cenosys.com>
+ * Adrien Demarez <adrien.demarez@bolloretelecom.eu>
+ * 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
++ * (GPL).Version 2,June 1991, available at
++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
-+#include <linux/jiffies.h>
+#include <linux/i2c.h>
+#include <linux/hwmon.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/err.h>
-+#include <linux/mutex.h>
+
+
+/* Addresses scanned */
-+static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
-+ 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
++static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4c,
++ 0x4d, 0x4e, I2C_CLIENT_END };
+
+/* Insmod parameters */
+I2C_CLIENT_INSMOD_1(lm73);
+
+/* LM73 registers */
++#define LM73_REG_INPUT 0x00
+#define LM73_REG_CONF 0x01
-+static const u8 LM73_REG_TEMP[3] = {
-+ 0x00, /* input */
-+ 0x02, /* max */
-+ 0x03, /* min */
-+};
-+
-+/* Each client has this additional data */
-+struct lm73_data {
-+ struct device *hwmon_dev;
-+ struct mutex update_lock;
-+ u16 temp[3]; /* Register values,
-+ 0 = input
-+ 1 = max
-+ 2 = min */
-+};
-+
-+static int lm73_read_value(struct i2c_client *client, u8 reg);
-+static int lm73_write_value(struct i2c_client *client, u8 reg, short value);
++#define LM73_REG_MAX 0x02
++#define LM73_REG_MIN 0x03
++#define LM73_REG_CTRL 0x04
++#define LM73_REG_ID 0x07
+
++#define LM73_ID 0x9001 /* or 0x190 after a swab16() */
++#define DRVNAME "lm73"
++#define LM73_TEMP_MIN (-40)
++#define LM73_TEMP_MAX 150
+
+/*-----------------------------------------------------------------------*/
+
-+/* sysfs attributes for hwmon */
+
-+static ssize_t show_temp(struct device *dev, struct device_attribute *da,
-+ char *buf)
++static ssize_t set_temp(struct device *dev, struct device_attribute *da,
++ const char *buf, size_t count)
+{
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+ struct i2c_client *client = to_i2c_client(dev);
-+ struct lm73_data *data = i2c_get_clientdata(client);
-+ int iTemp = 0;
++ long temp;
++ short value;
+
-+ mutex_lock(&data->update_lock);
-+ iTemp = lm73_read_value(client, LM73_REG_TEMP[attr->index]);
-+ mutex_unlock(&data->update_lock);
++ int status = strict_strtol(buf, 10, &temp);
++ if(status < 0)
++ return status;
+
-+ return sprintf(buf, "%d\n", iTemp);
++ /* Write value */
++ value = (short) SENSORS_LIMIT(temp/250, (LM73_TEMP_MIN*4),
++ (LM73_TEMP_MAX*4)) << 5;
++ i2c_smbus_write_word_data(client, attr->index, swab16(value));
++ return count;
+}
+
-+static ssize_t set_temp(struct device *dev, struct device_attribute *da,
-+ const char *buf, size_t count)
++static ssize_t show_temp(struct device *dev, struct device_attribute *da,
++ char *buf)
+{
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
+ struct i2c_client *client = to_i2c_client(dev);
-+ struct lm73_data *data = i2c_get_clientdata(client);
-+ int nr = attr->index;
-+ long temp = simple_strtol(buf, NULL, 10);
-+
-+ mutex_lock(&data->update_lock);
-+ lm73_write_value(client, LM73_REG_TEMP[nr], temp);
-+ mutex_unlock(&data->update_lock);
-+ return count;
++ /* use integer division instead of equivalent right shift to
++ guarantee arithmetic shift and preserve the sign */
++ int temp = ((s16) (swab16(i2c_smbus_read_word_data(client,
++ attr->index)))*250) / 32;
++ return sprintf(buf, "%d\n", temp);
+}
+
++
++/*-----------------------------------------------------------------------*/
++
++/* sysfs attributes for hwmon */
++
+static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
-+ show_temp, set_temp, 1);
++ show_temp, set_temp, LM73_REG_MAX);
+static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO,
-+ show_temp, set_temp, 2);
-+static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
++ show_temp, set_temp, LM73_REG_MIN);
++static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
++ show_temp, NULL, LM73_REG_INPUT);
+
+
+static struct attribute *lm73_attributes[] = {
@@ -138,52 +134,38 @@ Index: linux-2.6.29/drivers/hwmon/lm73.c
+static int
+lm73_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
-+ struct lm73_data *data;
++ struct device *hwmon_dev;
+ int status;
+
-+ if (!i2c_check_functionality(client->adapter,
-+ I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA))
-+ return -EIO;
-+
-+ data = kzalloc(sizeof(struct lm73_data), GFP_KERNEL);
-+ if (!data)
-+ return -ENOMEM;
-+
-+ i2c_set_clientdata(client, data);
-+ mutex_init(&data->update_lock);
-+
+ /* Register sysfs hooks */
+ status = sysfs_create_group(&client->dev.kobj, &lm73_group);
+ if (status)
-+ goto exit_free;
++ return status;
+
-+ data->hwmon_dev = hwmon_device_register(&client->dev);
-+ if (IS_ERR(data->hwmon_dev)) {
-+ status = PTR_ERR(data->hwmon_dev);
++ hwmon_dev = hwmon_device_register(&client->dev);
++ if (IS_ERR(hwmon_dev)) {
++ status = PTR_ERR(hwmon_dev);
+ goto exit_remove;
+ }
++ i2c_set_clientdata(client, hwmon_dev);
+
+ dev_info(&client->dev, "%s: sensor '%s'\n",
-+ dev_name(data->hwmon_dev), client->name);
++ dev_name(hwmon_dev), client->name);
+
+ return 0;
+
+exit_remove:
+ sysfs_remove_group(&client->dev.kobj, &lm73_group);
-+exit_free:
-+ i2c_set_clientdata(client, NULL);
-+ kfree(data);
+ return status;
+}
+
+static int lm73_remove(struct i2c_client *client)
+{
-+ struct lm73_data *data = i2c_get_clientdata(client);
++ struct device *hwmon_dev = i2c_get_clientdata(client);
+
-+ hwmon_device_unregister(data->hwmon_dev);
++ hwmon_device_unregister(hwmon_dev);
+ sysfs_remove_group(&client->dev.kobj, &lm73_group);
+ i2c_set_clientdata(client, NULL);
-+ kfree(data);
+ return 0;
+}
+
@@ -195,17 +177,22 @@ Index: linux-2.6.29/drivers/hwmon/lm73.c
+
+/* Return 0 if detection is successful, -ENODEV otherwise */
+static int lm73_detect(struct i2c_client *new_client, int kind,
-+ struct i2c_board_info *info)
++ struct i2c_board_info *info)
+{
+ struct i2c_adapter *adapter = new_client->adapter;
++ u16 id;
++ u8 ctrl;
+
+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
-+ I2C_FUNC_SMBUS_WORD_DATA))
++ I2C_FUNC_SMBUS_WORD_DATA))
++ return -ENODEV;
++
++ /* Check device ID */
++ id = i2c_smbus_read_word_data(new_client, LM73_REG_ID);
++ ctrl = i2c_smbus_read_byte_data(new_client, LM73_REG_CTRL);
++ if ((id != LM73_ID) || (ctrl & 0x10))