--- /dev/null
+From c5ad4f592e27d782faea0a787d9181f192a69ef0 Mon Sep 17 00:00:00 2001
+From: roel kluin <roel.kluin@gmail.com>
+Date: Sun, 12 Jul 2009 11:40:34 +0000
+Subject: atl1c: add missing parentheses
+
+From: roel kluin <roel.kluin@gmail.com>
+
+commit c5ad4f592e27d782faea0a787d9181f192a69ef0 upstream.
+
+Parentheses are required or the comparison occurs before the bitand.
+
+Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/atl1c/atl1c.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/atl1c/atl1c.h
++++ b/drivers/net/atl1c/atl1c.h
+@@ -188,14 +188,14 @@ struct atl1c_tpd_ext_desc {
+ #define RRS_HDS_TYPE_DATA 2
+
+ #define RRS_IS_NO_HDS_TYPE(flag) \
+- (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == 0)
++ ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == 0)
+
+ #define RRS_IS_HDS_HEAD(flag) \
+- (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
++ ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
+ RRS_HDS_TYPE_HEAD)
+
+ #define RRS_IS_HDS_DATA(flag) \
+- (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
++ ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
+ RRS_HDS_TYPE_DATA)
+
+ /* rrs word 3 bit 0:31 */
+@@ -245,7 +245,7 @@ struct atl1c_tpd_ext_desc {
+ #define RRS_PACKET_TYPE_802_3 1
+ #define RRS_PACKET_TYPE_ETH 0
+ #define RRS_PACKET_IS_ETH(word) \
+- (((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK == \
++ ((((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK) == \
+ RRS_PACKET_TYPE_ETH)
+ #define RRS_RXD_IS_VALID(word) \
+ ((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1)
--- /dev/null
+From 37b76c697f4ac082e9923dfa8e8aecc8bc54a8e1 Mon Sep 17 00:00:00 2001
+From: roel kluin <roel.kluin@gmail.com>
+Date: Sun, 12 Jul 2009 12:57:38 +0000
+Subject: atl1c: misplaced parenthesis
+
+From: roel kluin <roel.kluin@gmail.com>
+
+commit 37b76c697f4ac082e9923dfa8e8aecc8bc54a8e1 upstream.
+
+Fix misplaced parenthesis
+
+Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/atl1c/atl1c_main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/atl1c/atl1c_main.c
++++ b/drivers/net/atl1c/atl1c_main.c
+@@ -1701,7 +1701,7 @@ static void atl1c_clean_rx_irq(struct at
+ if (likely(RRS_RXD_IS_VALID(rrs->word3))) {
+ rfd_num = (rrs->word0 >> RRS_RX_RFD_CNT_SHIFT) &
+ RRS_RX_RFD_CNT_MASK;
+- if (unlikely(rfd_num) != 1)
++ if (unlikely(rfd_num != 1))
+ /* TODO support mul rfd*/
+ if (netif_msg_rx_err(adapter))
+ dev_warn(&pdev->dev,
--- /dev/null
+From 0ed586d075ef65c0268982e5b7f36d0ffaa95547 Mon Sep 17 00:00:00 2001
+From: Roel Kluin <roel.kluin@gmail.com>
+Date: Wed, 10 Jun 2009 09:55:03 +0000
+Subject: atl1c: WAKE_MCAST tested twice, not WAKE_UCAST
+
+From: Roel Kluin <roel.kluin@gmail.com>
+
+commit 0ed586d075ef65c0268982e5b7f36d0ffaa95547 upstream.
+
+The WAKE_MCAST bit is tested twice, the first should be WAKE_UCAST.
+
+Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
+Cc: Jie Yang <jie.yang@atheros.com>
+Cc: Jay Cliburn <jcliburn@gmail.com>
+Cc: Chris Snook <csnook@redhat.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/atl1c/atl1c_ethtool.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/atl1c/atl1c_ethtool.c
++++ b/drivers/net/atl1c/atl1c_ethtool.c
+@@ -271,7 +271,7 @@ static int atl1c_set_wol(struct net_devi
+ struct atl1c_adapter *adapter = netdev_priv(netdev);
+
+ if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE |
+- WAKE_MCAST | WAKE_BCAST | WAKE_MCAST))
++ WAKE_UCAST | WAKE_BCAST | WAKE_MCAST))
+ return -EOPNOTSUPP;
+ /* these settings will always override what we currently have */
+ adapter->wol = 0;
--- /dev/null
+From stefanr@s5r6.in-berlin.de Wed Aug 5 14:12:28 2009
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Date: Wed, 29 Jul 2009 21:25:14 +0200 (CEST)
+Subject: firewire: sbp2: add support for disks >2 TB (and 16 bytes long CDBs)
+To: stable@kernel.org
+Message-ID: <tkrat.79e096e282ffb3fc@s5r6.in-berlin.de>
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit af2719415a5ceae06f2a6d33e78b555e64697fc8 upstream.
+
+Increase the command ORB data structure to transport up to 16 bytes long
+CDBs (instead of 12 bytes), and tell the SCSI mid layer about it. This
+is notably necessary for READ CAPACITY(16) and friends, i.e. support of
+large disks.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/firewire/fw-sbp2.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/firewire/fw-sbp2.c
++++ b/drivers/firewire/fw-sbp2.c
+@@ -190,6 +190,12 @@ struct sbp2_target {
+ #define SBP2_CYCLE_LIMIT (0xc8 << 12) /* 200 125us cycles */
+
+ /*
++ * There is no transport protocol limit to the CDB length, but we implement
++ * a fixed length only. 16 bytes is enough for disks larger than 2 TB.
++ */
++#define SBP2_MAX_CDB_SIZE 16
++
++/*
+ * The default maximum s/g segment size of a FireWire controller is
+ * usually 0x10000, but SBP-2 only allows 0xffff. Since buffers have to
+ * be quadlet-aligned, we set the length limit to 0xffff & ~3.
+@@ -301,7 +307,7 @@ struct sbp2_command_orb {
+ struct sbp2_pointer next;
+ struct sbp2_pointer data_descriptor;
+ __be32 misc;
+- u8 command_block[12];
++ u8 command_block[SBP2_MAX_CDB_SIZE];
+ } request;
+ struct scsi_cmnd *cmd;
+ scsi_done_fn_t done;
+@@ -1135,6 +1141,8 @@ static int sbp2_probe(struct device *dev
+ if (fw_device_enable_phys_dma(device) < 0)
+ goto fail_shost_put;
+
++ shost->max_cmd_len = SBP2_MAX_CDB_SIZE;
++
+ if (scsi_add_host(shost, &unit->device) < 0)
+ goto fail_shost_put;
+
--- /dev/null
+From 1b54ab450b180eaeeb0eee6f0f64349246a22c14 Mon Sep 17 00:00:00 2001
+From: Jean Delvare <khali@linux-fr.org>
+Date: Tue, 28 Jul 2009 16:31:39 +0200
+Subject: hwmon: (smsc47m1) Differentiate between LPC47M233 and LPC47M292
+
+From: Jean Delvare <khali@linux-fr.org>
+
+commit 1b54ab450b180eaeeb0eee6f0f64349246a22c14 upstream.
+
+The SMSC LPC47M233 and LPC47M292 chips have the same device ID but
+are not compatible.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Cc: Juerg Haefliger <juergh@gmail.com>
+Acked-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/smsc47m1.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/drivers/hwmon/smsc47m1.c
++++ b/drivers/hwmon/smsc47m1.c
+@@ -86,6 +86,7 @@ superio_exit(void)
+ #define SUPERIO_REG_ACT 0x30
+ #define SUPERIO_REG_BASE 0x60
+ #define SUPERIO_REG_DEVID 0x20
++#define SUPERIO_REG_DEVREV 0x21
+
+ /* Logical device registers */
+
+@@ -429,6 +430,9 @@ static int __init smsc47m1_find(unsigned
+ * The LPC47M292 (device id 0x6B) is somewhat compatible, but it
+ * supports a 3rd fan, and the pin configuration registers are
+ * unfortunately different.
++ * The LPC47M233 has the same device id (0x6B) but is not compatible.
++ * We check the high bit of the device revision register to
++ * differentiate them.
+ */
+ switch (val) {
+ case 0x51:
+@@ -448,6 +452,13 @@ static int __init smsc47m1_find(unsigned
+ sio_data->type = smsc47m1;
+ break;
+ case 0x6B:
++ if (superio_inb(SUPERIO_REG_DEVREV) & 0x80) {
++ pr_debug(DRVNAME ": "
++ "Found SMSC LPC47M233, unsupported\n");
++ superio_exit();
++ return -ENODEV;
++ }
++
+ pr_info(DRVNAME ": Found SMSC LPC47M292\n");
+ sio_data->type = smsc47m2;
+ break;
--- /dev/null
+From 8d282497cbf8124d6814d51a74fb13d69531c669 Mon Sep 17 00:00:00 2001
+From: Luca Tettamanti <kronos.it@gmail.com>
+Date: Tue, 28 Jul 2009 16:31:39 +0200
+Subject: hwmon: (asus_atk0110) Fix upper limit readings
+
+From: Luca Tettamanti <kronos.it@gmail.com>
+
+commit 8d282497cbf8124d6814d51a74fb13d69531c669 upstream.
+
+On newer Asus boards the "upper" limit of a sensor is encoded as
+delta from the "lower" limit. Fix the driver to correctly handle
+this case.
+
+Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
+Tested-by: Alex Macfarlane Smith <nospam@archifishal.co.uk>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/asus_atk0110.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/hwmon/asus_atk0110.c
++++ b/drivers/hwmon/asus_atk0110.c
+@@ -593,7 +593,11 @@ static int atk_add_sensor(struct atk_dat
+ sensor->data = data;
+ sensor->id = flags->integer.value;
+ sensor->limit1 = limit1->integer.value;
+- sensor->limit2 = limit2->integer.value;
++ if (data->old_interface)
++ sensor->limit2 = limit2->integer.value;
++ else
++ /* The upper limit is expressed as delta from lower limit */
++ sensor->limit2 = sensor->limit1 + limit2->integer.value;
+
+ snprintf(sensor->input_attr_name, ATTR_NAME_SIZE,
+ "%s%d_input", base_name, start + *num);
--- /dev/null
+From 96f699ad09c8b3c55cd229506a9add0047838e3e Mon Sep 17 00:00:00 2001
+From: Michele Jr De Candia <michele.decandia@valueteam.com>
+Date: Tue, 28 Jul 2009 16:33:03 +0200
+Subject: i2c/tsl2550: Fix lux value in dark environment
+
+From: Michele Jr De Candia <michele.decandia@valueteam.com>
+
+commit 96f699ad09c8b3c55cd229506a9add0047838e3e upstream.
+
+I've tested TSL2550 driver and I've found a bug: when light is off,
+returned value from tsl2550_calculate_lux function is -1 when it should
+be 0 (sensor correctly read that light was off).
+
+I think the bug is that a zero c0 value (approximated value of ch0) is
+misinterpreted as an error.
+
+Signed-off-by: Michele Jr De Candia <michele.decandia@valueteam.com>
+Acked-by: Rodolfo Giometti <giometti@linux.it>
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- a/drivers/i2c/chips/tsl2550.c
++++ b/drivers/i2c/chips/tsl2550.c
+@@ -27,7 +27,7 @@
+ #include <linux/delay.h>
+
+ #define TSL2550_DRV_NAME "tsl2550"
+-#define DRIVER_VERSION "1.1.1"
++#define DRIVER_VERSION "1.1.2"
+
+ /*
+ * Defines
+@@ -189,13 +189,16 @@ static int tsl2550_calculate_lux(u8 ch0, u8 ch1)
+ u8 r = 128;
+
+ /* Avoid division by 0 and count 1 cannot be greater than count 0 */
+- if (c0 && (c1 <= c0))
+- r = c1 * 128 / c0;
++ if (c1 <= c0)
++ if (c0) {
++ r = c1 * 128 / c0;
++
++ /* Calculate LUX */
++ lux = ((c0 - c1) * ratio_lut[r]) / 256;
++ } else
++ lux = 0;
+ else
+- return -1;
+-
+- /* Calculate LUX */
+- lux = ((c0 - c1) * ratio_lut[r]) / 256;
++ return -EAGAIN;
+
+ /* LUX range check */
+ return lux > TSL2550_MAX_LUX ? TSL2550_MAX_LUX : lux;
--- /dev/null
+From stefanr@s5r6.in-berlin.de Wed Aug 5 14:12:51 2009
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Date: Wed, 29 Jul 2009 21:26:25 +0200 (CEST)
+Subject: ieee1394: sbp2: add support for disks >2 TB (and 16 bytes long CDBs)
+To: stable@kernel.org
+Message-ID: <tkrat.5c059853a0558744@s5r6.in-berlin.de>
+Content-Disposition: INLINE
+
+From: Stefan Richter <stefanr@s5r6.in-berlin.de>
+
+Commit ebbb16bffa646f853899ef3fdc0ac7abab888703 upstream.
+
+Increase the command ORB data structure to transport up to 16 bytes long
+CDBs (instead of 12 bytes), and tell the SCSI mid layer about it. This
+is notably necessary for READ CAPACITY(16) and friends, i.e. support of
+large disks.
+
+Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/ieee1394/sbp2.c | 1 +
+ drivers/ieee1394/sbp2.h | 8 +++++++-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/ieee1394/sbp2.c
++++ b/drivers/ieee1394/sbp2.c
+@@ -880,6 +880,7 @@ static struct sbp2_lu *sbp2_alloc_device
+ }
+
+ shost->hostdata[0] = (unsigned long)lu;
++ shost->max_cmd_len = SBP2_MAX_CDB_SIZE;
+
+ if (!scsi_add_host(shost, &ud->device)) {
+ lu->shost = shost;
+--- a/drivers/ieee1394/sbp2.h
++++ b/drivers/ieee1394/sbp2.h
+@@ -25,6 +25,12 @@
+ #define SBP2_DEVICE_NAME "sbp2"
+
+ /*
++ * There is no transport protocol limit to the CDB length, but we implement
++ * a fixed length only. 16 bytes is enough for disks larger than 2 TB.
++ */
++#define SBP2_MAX_CDB_SIZE 16
++
++/*
+ * SBP-2 specific definitions
+ */
+
+@@ -51,7 +57,7 @@ struct sbp2_command_orb {
+ u32 data_descriptor_hi;
+ u32 data_descriptor_lo;
+ u32 misc;
+- u8 cdb[12];
++ u8 cdb[SBP2_MAX_CDB_SIZE];
+ } __attribute__((packed));
+
+ #define SBP2_LOGIN_REQUEST 0x0
md-when-a-level-change-reduces-the-number-of-devices-remove-the-excess.patch
ide-fix-handling-of-unexpected-irqs-vs-request_irq.patch
ide-relax-dma-info-validity-checking.patch
+hwmon-fix-upper-limit-readings.patch
+hwmon-differentiate-between-lpc47m233-and-lpc47m292.patch
+i2c-tsl2550-fix-lux-value-in-dark-environment.patch
+firewire-sbp2-add-support-for-disks-2-tb.patch
+ieee1394-sbp2-add-support-for-disks-2-tb.patch
+atl1c-wake_mcast-tested-twice-not-wake_ucast.patch
+atl1c-add-missing-parentheses.patch
+atl1c-misplaced-parenthesis.patch