## Automatically generated incremental diff
## From:   linux-2.4.29-bk5
## To:     linux-2.4.29-bk6
## Robot:  $Id: make-incremental-diff,v 1.12 2004/01/06 07:19:36 hpa Exp $

diff -urN linux-2.4.29-bk5/Documentation/i2c/writing-clients linux-2.4.29-bk6/Documentation/i2c/writing-clients
--- linux-2.4.29-bk5/Documentation/i2c/writing-clients	2004-11-17 03:54:20.000000000 -0800
+++ linux-2.4.29-bk6/Documentation/i2c/writing-clients	2005-01-30 02:50:30.591698904 -0800
@@ -380,9 +380,6 @@
 
 For now, you can ignore the `flags' parameter. It is there for future use.
 
-  /* Unique ID allocation */
-  static int foo_id = 0;
-
   int foo_detect_client(struct i2c_adapter *adapter, int address, 
                         unsigned short flags, int kind)
   {
@@ -518,7 +515,6 @@
     data->type = kind;
     /* SENSORS ONLY END */
 
-    new_client->id = foo_id++; /* Automatically unique */
     data->valid = 0; /* Only if you use this field */
     init_MUTEX(&data->update_lock); /* Only if you use this field */
 
diff -urN linux-2.4.29-bk5/Makefile linux-2.4.29-bk6/Makefile
--- linux-2.4.29-bk5/Makefile	2005-01-30 02:50:27.280554584 -0800
+++ linux-2.4.29-bk6/Makefile	2005-01-30 02:50:30.592698947 -0800
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 29
-EXTRAVERSION = -bk5
+EXTRAVERSION = -bk6
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.29-bk5/drivers/char/lcd.c linux-2.4.29-bk6/drivers/char/lcd.c
--- linux-2.4.29-bk5/drivers/char/lcd.c	2005-01-19 06:09:46.000000000 -0800
+++ linux-2.4.29-bk6/drivers/char/lcd.c	2005-01-30 02:50:30.594699035 -0800
@@ -386,6 +386,8 @@
 
 		int ctr=0;
 
+		if (!capable(CAP_SYS_ADMIN)) return -EPERM;
+
 		    // Chip Erase Sequence
 		WRITE_FLASH( kFlash_Addr1, kFlash_Data1 );
 		WRITE_FLASH( kFlash_Addr2, kFlash_Data2 );
@@ -422,6 +424,8 @@
 
                 struct lcd_display display;
 
+		if (!capable(CAP_SYS_ADMIN)) return -EPERM;
+
                 if(copy_from_user(&display, (struct lcd_display*)arg, sizeof(struct lcd_display)))
 		  return -EFAULT;
 		rom = (unsigned char *) kmalloc((128),GFP_ATOMIC);
@@ -434,8 +438,10 @@
 		save_flags(flags);
 		for (i=0; i<FLASH_SIZE; i=i+128) {
 
-		        if(copy_from_user(rom, display.RomImage + i, 128))
+		        if(copy_from_user(rom, display.RomImage + i, 128)) {
+			   kfree(rom);
 			   return -EFAULT;
+			}
 			burn_addr = kFlashBase + i;
 			cli();
 			for ( index = 0; index < ( 128 ) ; index++ ) 
diff -urN linux-2.4.29-bk5/drivers/i2c/i2c-algo-bit.c linux-2.4.29-bk6/drivers/i2c/i2c-algo-bit.c
--- linux-2.4.29-bk5/drivers/i2c/i2c-algo-bit.c	2004-02-18 05:36:31.000000000 -0800
+++ linux-2.4.29-bk6/drivers/i2c/i2c-algo-bit.c	2005-01-30 02:50:30.595699078 -0800
@@ -28,14 +28,12 @@
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/init.h>
-#include <asm/uaccess.h>
-#include <linux/ioport.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
-
 #include <linux/i2c.h>
 #include <linux/i2c-algo-bit.h>
 
+
 /* ----- global defines ----------------------------------------------- */
 #define DEB(x) if (i2c_debug>=1) x;
 #define DEB2(x) if (i2c_debug>=2) x;
@@ -522,8 +520,8 @@
 
 static u32 bit_func(struct i2c_adapter *adap)
 {
-	return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_10BIT_ADDR | 
-	       I2C_FUNC_PROTOCOL_MANGLING;
+	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL |
+	       I2C_FUNC_10BIT_ADDR | I2C_FUNC_PROTOCOL_MANGLING;
 }
 
 
diff -urN linux-2.4.29-bk5/drivers/i2c/i2c-algo-pcf.c linux-2.4.29-bk6/drivers/i2c/i2c-algo-pcf.c
--- linux-2.4.29-bk5/drivers/i2c/i2c-algo-pcf.c	2004-02-18 05:36:31.000000000 -0800
+++ linux-2.4.29-bk6/drivers/i2c/i2c-algo-pcf.c	2005-01-30 02:50:30.596699122 -0800
@@ -32,15 +32,13 @@
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/init.h>
-#include <asm/uaccess.h>
-#include <linux/ioport.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
-
 #include <linux/i2c.h>
 #include <linux/i2c-algo-pcf.h>
 #include "i2c-pcf8584.h"
 
+
 /* ----- global defines ----------------------------------------------- */
 #define DEB(x) if (i2c_debug>=1) x
 #define DEB2(x) if (i2c_debug>=2) x
@@ -435,8 +433,8 @@
 
 static u32 pcf_func(struct i2c_adapter *adap)
 {
-	return I2C_FUNC_SMBUS_EMUL | I2C_FUNC_10BIT_ADDR | 
-	       I2C_FUNC_PROTOCOL_MANGLING; 
+	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL |
+	       I2C_FUNC_10BIT_ADDR | I2C_FUNC_PROTOCOL_MANGLING;
 }
 
 /* -----exported algorithm data: -------------------------------------	*/
diff -urN linux-2.4.29-bk5/drivers/scsi/ahci.c linux-2.4.29-bk6/drivers/scsi/ahci.c
--- linux-2.4.29-bk5/drivers/scsi/ahci.c	2005-01-19 06:10:01.000000000 -0800
+++ linux-2.4.29-bk6/drivers/scsi/ahci.c	2005-01-30 02:50:30.602699383 -0800
@@ -248,6 +248,10 @@
 	  board_ahci }, /* ICH7 */
 	{ PCI_VENDOR_ID_INTEL, 0x27c5, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
 	  board_ahci }, /* ICH7M */
+	{ PCI_VENDOR_ID_INTEL, 0x27c2, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+	  board_ahci }, /* ICH7R */
+	{ PCI_VENDOR_ID_INTEL, 0x27c3, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+	  board_ahci }, /* ICH7R */
 	{ }	/* terminate list */
 };
 
diff -urN linux-2.4.29-bk5/drivers/scsi/libata-scsi.c linux-2.4.29-bk6/drivers/scsi/libata-scsi.c
--- linux-2.4.29-bk5/drivers/scsi/libata-scsi.c	2005-01-19 06:10:03.000000000 -0800
+++ linux-2.4.29-bk6/drivers/scsi/libata-scsi.c	2005-01-30 02:50:30.603699427 -0800
@@ -283,7 +283,8 @@
 	/* No immediate match */
 	if(err)
 		printk(KERN_DEBUG "ata%u: no sense translation for 0x%02x\n", qc->ap->id, err);
-	
+
+	i = 0;
 	/* Fall back to interpreting status bits */
 	while(stat_table[i][0] != 0xFF)
 	{
diff -urN linux-2.4.29-bk5/drivers/scsi/sata_sil.c linux-2.4.29-bk6/drivers/scsi/sata_sil.c
--- linux-2.4.29-bk5/drivers/scsi/sata_sil.c	2005-01-19 06:10:03.000000000 -0800
+++ linux-2.4.29-bk6/drivers/scsi/sata_sil.c	2005-01-30 02:50:30.604699471 -0800
@@ -71,6 +71,8 @@
 	{ 0x1095, 0x0240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 },
 	{ 0x1095, 0x3512, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 },
 	{ 0x1095, 0x3114, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3114 },
+	{ 0x1002, 0x436e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 },
+	{ 0x1002, 0x4379, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 },
 	{ }	/* terminate list */
 };
 
@@ -88,6 +90,7 @@
 	{ "ST3120023AS",	SIL_QUIRK_MOD15WRITE },
 	{ "ST3160023AS",	SIL_QUIRK_MOD15WRITE },
 	{ "ST3120026AS",	SIL_QUIRK_MOD15WRITE },
+	{ "ST3200822AS",	SIL_QUIRK_MOD15WRITE },
 	{ "ST340014ASL",	SIL_QUIRK_MOD15WRITE },
 	{ "ST360014ASL",	SIL_QUIRK_MOD15WRITE },
 	{ "ST380011ASL",	SIL_QUIRK_MOD15WRITE },
