--- /dev/null
+From 9926a67557532acb6cddb1c1add02952175b5c72 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@googlemail.com>
+Date: Sat, 25 Feb 2012 21:36:36 +0100
+Subject: carl9170: fix frame delivery if sta is in powersave mode
+
+From: Christian Lamparter <chunkeey@googlemail.com>
+
+commit 9926a67557532acb6cddb1c1add02952175b5c72 upstream.
+
+Nicolas Cavallari discovered that carl9170 has some
+serious problems delivering data to sleeping stations.
+
+It turns out that the driver was not honoring two
+important flags (IEEE80211_TX_CTL_POLL_RESPONSE and
+IEEE80211_TX_CTL_CLEAR_PS_FILT) which are set on
+frames that should be sent although the receiving
+station is still in powersave mode.
+
+Reported-by: Nicolas Cavallari <Nicolas.Cavallari@lri.fr>
+Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/carl9170/tx.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/ath/carl9170/tx.c
++++ b/drivers/net/wireless/ath/carl9170/tx.c
+@@ -1234,6 +1234,7 @@ static bool carl9170_tx_ps_drop(struct a
+ {
+ struct ieee80211_sta *sta;
+ struct carl9170_sta_info *sta_info;
++ struct ieee80211_tx_info *tx_info;
+
+ rcu_read_lock();
+ sta = __carl9170_get_tx_sta(ar, skb);
+@@ -1241,12 +1242,13 @@ static bool carl9170_tx_ps_drop(struct a
+ goto out_rcu;
+
+ sta_info = (void *) sta->drv_priv;
+- if (unlikely(sta_info->sleeping)) {
+- struct ieee80211_tx_info *tx_info;
++ tx_info = IEEE80211_SKB_CB(skb);
+
++ if (unlikely(sta_info->sleeping) &&
++ !(tx_info->flags & (IEEE80211_TX_CTL_POLL_RESPONSE |
++ IEEE80211_TX_CTL_CLEAR_PS_FILT))) {
+ rcu_read_unlock();
+
+- tx_info = IEEE80211_SKB_CB(skb);
+ if (tx_info->flags & IEEE80211_TX_CTL_AMPDU)
+ atomic_dec(&ar->tx_ampdu_upload);
+
--- /dev/null
+From 992d52529d7840236d3059b51c15d5eb9e81a869 Mon Sep 17 00:00:00 2001
+From: Nicolas Cavallari <Nicolas.Cavallari@lri.fr>
+Date: Thu, 23 Feb 2012 16:53:34 +0100
+Subject: carl9170: Fix memory accounting when sta is in power-save mode.
+
+From: Nicolas Cavallari <Nicolas.Cavallari@lri.fr>
+
+commit 992d52529d7840236d3059b51c15d5eb9e81a869 upstream.
+
+On Access Point mode, when transmitting a packet, if the destination
+station is in powersave mode, we abort transmitting the packet to the
+device queue, but we do not reclaim the allocated memory. Given enough
+packets, we can go in a state where there is no packet on the device
+queue, but we think the device has no memory left, so no packet gets
+transmitted, connections breaks and the AP stops working.
+
+This undo the allocation done in the TX path when the station is in
+power-save mode.
+
+Signed-off-by: Nicolas Cavallari <cavallar@lri.fr>
+Acked-by: Christian Lamparter <chunkeey@googlemail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/carl9170/tx.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/ath/carl9170/tx.c
++++ b/drivers/net/wireless/ath/carl9170/tx.c
+@@ -1251,6 +1251,7 @@ static bool carl9170_tx_ps_drop(struct a
+ atomic_dec(&ar->tx_ampdu_upload);
+
+ tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
++ carl9170_release_dev_space(ar, skb);
+ carl9170_tx_status(ar, skb, false);
+ return true;
+ }
--- /dev/null
+From 1bd612a25855f4cc9345052b53d7da697dba6358 Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Mon, 5 Mar 2012 11:13:52 -0800
+Subject: hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP9804
+
+From: Guenter Roeck <linux@roeck-us.net>
+
+commit 1bd612a25855f4cc9345052b53d7da697dba6358 upstream.
+
+Also update IDT datasheet locations.
+
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Acked-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/hwmon/jc42 | 20 ++++++++++++++------
+ drivers/hwmon/Kconfig | 6 +++---
+ drivers/hwmon/jc42.c | 20 ++++++++++++++++++--
+ 3 files changed, 35 insertions(+), 11 deletions(-)
+
+--- a/Documentation/hwmon/jc42
++++ b/Documentation/hwmon/jc42
+@@ -7,21 +7,29 @@ Supported chips:
+ Addresses scanned: I2C 0x18 - 0x1f
+ Datasheets:
+ http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf
+- * IDT TSE2002B3, TS3000B3
+- Prefix: 'tse2002b3', 'ts3000b3'
++ * Atmel AT30TS00
++ Prefix: 'at30ts00'
+ Addresses scanned: I2C 0x18 - 0x1f
+ Datasheets:
+- http://www.idt.com/products/getdoc.cfm?docid=18715691
+- http://www.idt.com/products/getdoc.cfm?docid=18715692
++ http://www.atmel.com/Images/doc8585.pdf
++ * IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2
++ Prefix: 'tse2002', 'ts3000'
++ Addresses scanned: I2C 0x18 - 0x1f
++ Datasheets:
++ http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf
++ http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf
++ http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf
++ http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf
+ * Maxim MAX6604
+ Prefix: 'max6604'
+ Addresses scanned: I2C 0x18 - 0x1f
+ Datasheets:
+ http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf
+- * Microchip MCP9805, MCP98242, MCP98243, MCP9843
+- Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
++ * Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843
++ Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
+ Addresses scanned: I2C 0x18 - 0x1f
+ Datasheets:
++ http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf
+ http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf
+ http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf
+ http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf
+--- a/drivers/hwmon/Kconfig
++++ b/drivers/hwmon/Kconfig
+@@ -497,9 +497,9 @@ config SENSORS_JC42
+ If you say yes here, you get support for JEDEC JC42.4 compliant
+ temperature sensors, which are used on many DDR3 memory modules for
+ mobile devices and servers. Support will include, but not be limited
+- to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243,
+- MCP9843, SE97, SE98, STTS424(E), STTS2002, STTS3000, TSE2002B3, and
+- TS3000B3.
++ to, ADT7408, AT30TS00, CAT34TS02, CAT6095, MAX6604, MCP9804, MCP9805,
++ MCP98242, MCP98243, MCP9843, SE97, SE98, STTS424(E), STTS2002,
++ STTS3000, TSE2002B3, TSE2002GB2, TS3000B3, and TS3000GB2.
+
+ This driver can also be built as a module. If so, the module
+ will be called jc42.
+--- a/drivers/hwmon/jc42.c
++++ b/drivers/hwmon/jc42.c
+@@ -64,6 +64,7 @@ static const unsigned short normal_i2c[]
+
+ /* Manufacturer IDs */
+ #define ADT_MANID 0x11d4 /* Analog Devices */
++#define ATMEL_MANID 0x001f /* Atmel */
+ #define MAX_MANID 0x004d /* Maxim */
+ #define IDT_MANID 0x00b3 /* IDT */
+ #define MCP_MANID 0x0054 /* Microchip */
+@@ -77,15 +78,25 @@ static const unsigned short normal_i2c[]
+ #define ADT7408_DEVID 0x0801
+ #define ADT7408_DEVID_MASK 0xffff
+
++/* Atmel */
++#define AT30TS00_DEVID 0x8201
++#define AT30TS00_DEVID_MASK 0xffff
++
+ /* IDT */
+ #define TS3000B3_DEVID 0x2903 /* Also matches TSE2002B3 */
+ #define TS3000B3_DEVID_MASK 0xffff
+
++#define TS3000GB2_DEVID 0x2912 /* Also matches TSE2002GB2 */
++#define TS3000GB2_DEVID_MASK 0xffff
++
+ /* Maxim */
+ #define MAX6604_DEVID 0x3e00
+ #define MAX6604_DEVID_MASK 0xffff
+
+ /* Microchip */
++#define MCP9804_DEVID 0x0200
++#define MCP9804_DEVID_MASK 0xfffc
++
+ #define MCP98242_DEVID 0x2000
+ #define MCP98242_DEVID_MASK 0xfffc
+
+@@ -129,8 +140,11 @@ struct jc42_chips {
+
+ static struct jc42_chips jc42_chips[] = {
+ { ADT_MANID, ADT7408_DEVID, ADT7408_DEVID_MASK },
++ { ATMEL_MANID, AT30TS00_DEVID, AT30TS00_DEVID_MASK },
+ { IDT_MANID, TS3000B3_DEVID, TS3000B3_DEVID_MASK },
++ { IDT_MANID, TS3000GB2_DEVID, TS3000GB2_DEVID_MASK },
+ { MAX_MANID, MAX6604_DEVID, MAX6604_DEVID_MASK },
++ { MCP_MANID, MCP9804_DEVID, MCP9804_DEVID_MASK },
+ { MCP_MANID, MCP98242_DEVID, MCP98242_DEVID_MASK },
+ { MCP_MANID, MCP98243_DEVID, MCP98243_DEVID_MASK },
+ { MCP_MANID, MCP9843_DEVID, MCP9843_DEVID_MASK },
+@@ -167,10 +181,12 @@ static struct jc42_data *jc42_update_dev
+
+ static const struct i2c_device_id jc42_id[] = {
+ { "adt7408", 0 },
++ { "at30ts00", 0 },
+ { "cat94ts02", 0 },
+ { "cat6095", 0 },
+ { "jc42", 0 },
+ { "max6604", 0 },
++ { "mcp9804", 0 },
+ { "mcp9805", 0 },
+ { "mcp98242", 0 },
+ { "mcp98243", 0 },
+@@ -181,8 +197,8 @@ static const struct i2c_device_id jc42_i
+ { "stts424", 0 },
+ { "stts2002", 0 },
+ { "stts3000", 0 },
+- { "tse2002b3", 0 },
+- { "ts3000b3", 0 },
++ { "tse2002", 0 },
++ { "ts3000", 0 },
+ { }
+ };
+ MODULE_DEVICE_TABLE(i2c, jc42_id);
--- /dev/null
+From 4de86126a712ba83fa038d277c8282f7ed466a4b Mon Sep 17 00:00:00 2001
+From: Jean Delvare <khali@linux-fr.org>
+Date: Mon, 5 Mar 2012 08:32:00 -0500
+Subject: hwmon: (jc42) Add support for ST Microelectronics STTS2002 and STTS3000
+
+From: Jean Delvare <khali@linux-fr.org>
+
+commit 4de86126a712ba83fa038d277c8282f7ed466a4b upstream.
+
+These are fully compatible with Jedec JC 42.4 as far as I can see.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Cc: Guenter Roeck <guenter.roeck@ericsson.com>
+Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/hwmon/jc42 | 6 ++++++
+ drivers/hwmon/Kconfig | 3 ++-
+ drivers/hwmon/jc42.c | 10 ++++++++++
+ 3 files changed, 18 insertions(+), 1 deletion(-)
+
+--- a/Documentation/hwmon/jc42
++++ b/Documentation/hwmon/jc42
+@@ -48,6 +48,12 @@ Supported chips:
+ Datasheets:
+ http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf
+ http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf
++ * ST Microelectronics STTS2002, STTS3000
++ Prefix: 'stts2002', 'stts3000'
++ Addresses scanned: I2C 0x18 - 0x1f
++ Datasheets:
++ http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf
++ http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf
+ * JEDEC JC 42.4 compliant temperature sensor chips
+ Prefix: 'jc42'
+ Addresses scanned: I2C 0x18 - 0x1f
+--- a/drivers/hwmon/Kconfig
++++ b/drivers/hwmon/Kconfig
+@@ -498,7 +498,8 @@ config SENSORS_JC42
+ temperature sensors, which are used on many DDR3 memory modules for
+ mobile devices and servers. Support will include, but not be limited
+ to, ADT7408, CAT34TS02, CAT6095, MAX6604, MCP9805, MCP98242, MCP98243,
+- MCP9843, SE97, SE98, STTS424(E), TSE2002B3, and TS3000B3.
++ MCP9843, SE97, SE98, STTS424(E), STTS2002, STTS3000, TSE2002B3, and
++ TS3000B3.
+
+ This driver can also be built as a module. If so, the module
+ will be called jc42.
+--- a/drivers/hwmon/jc42.c
++++ b/drivers/hwmon/jc42.c
+@@ -113,6 +113,12 @@ static const unsigned short normal_i2c[]
+ #define STTS424E_DEVID 0x0000
+ #define STTS424E_DEVID_MASK 0xfffe
+
++#define STTS2002_DEVID 0x0300
++#define STTS2002_DEVID_MASK 0xffff
++
++#define STTS3000_DEVID 0x0200
++#define STTS3000_DEVID_MASK 0xffff
++
+ static u16 jc42_hysteresis[] = { 0, 1500, 3000, 6000 };
+
+ struct jc42_chips {
+@@ -133,6 +139,8 @@ static struct jc42_chips jc42_chips[] =
+ { NXP_MANID, SE98_DEVID, SE98_DEVID_MASK },
+ { STM_MANID, STTS424_DEVID, STTS424_DEVID_MASK },
+ { STM_MANID, STTS424E_DEVID, STTS424E_DEVID_MASK },
++ { STM_MANID, STTS2002_DEVID, STTS2002_DEVID_MASK },
++ { STM_MANID, STTS3000_DEVID, STTS3000_DEVID_MASK },
+ };
+
+ /* Each client has this additional data */
+@@ -171,6 +179,8 @@ static const struct i2c_device_id jc42_i
+ { "se97b", 0 },
+ { "se98", 0 },
+ { "stts424", 0 },
++ { "stts2002", 0 },
++ { "stts3000", 0 },
+ { "tse2002b3", 0 },
+ { "ts3000b3", 0 },
+ { }
--- /dev/null
+From 7cb3c44fb1f7999e4c53b6a52de6bc25da6de079 Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Sun, 4 Mar 2012 08:10:57 -0800
+Subject: hwmon: (pmbus_core) Fix maximum number of POUT alarm attributes
+
+From: Guenter Roeck <linux@roeck-us.net>
+
+commit 7cb3c44fb1f7999e4c53b6a52de6bc25da6de079 upstream.
+
+There are up to three POUT alarm attributes, not two, since cap_alarm was added.
+
+Reported-by: Michele Petracca <mi.petracca@gmail.com>
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hwmon/pmbus/pmbus_core.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/hwmon/pmbus/pmbus_core.c
++++ b/drivers/hwmon/pmbus/pmbus_core.c
+@@ -54,7 +54,8 @@
+ lcrit_alarm, crit_alarm */
+ #define PMBUS_IOUT_BOOLEANS_PER_PAGE 3 /* alarm, lcrit_alarm,
+ crit_alarm */
+-#define PMBUS_POUT_BOOLEANS_PER_PAGE 2 /* alarm, crit_alarm */
++#define PMBUS_POUT_BOOLEANS_PER_PAGE 3 /* cap_alarm, alarm, crit_alarm
++ */
+ #define PMBUS_MAX_BOOLEANS_PER_FAN 2 /* alarm, fault */
+ #define PMBUS_MAX_BOOLEANS_PER_TEMP 4 /* min_alarm, max_alarm,
+ lcrit_alarm, crit_alarm */
--- /dev/null
+From 7ad6307ad6968ce25cecf209d4822d4c722be030 Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Wed, 7 Mar 2012 03:58:55 -0800
+Subject: hwmon: (zl6100) Maintain delay parameter in driver instance data
+
+From: Guenter Roeck <linux@roeck-us.net>
+
+commit 7ad6307ad6968ce25cecf209d4822d4c722be030 upstream.
+
+A global delay parameter has the side effect of being overwritten with 0 if a
+single ZL2004 or ZL6105 is instantiated. If other chips supported by the same
+driver are in the system, this will result in access errors for those chips.
+
+To solve the problem, keep a per-instance copy of the delay parameter, and do
+not change the original parameter.
+
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Acked-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hwmon/pmbus/zl6100.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/drivers/hwmon/pmbus/zl6100.c
++++ b/drivers/hwmon/pmbus/zl6100.c
+@@ -33,6 +33,7 @@ enum chips { zl2004, zl2006, zl2008, zl2
+ struct zl6100_data {
+ int id;
+ ktime_t access; /* chip access time */
++ int delay; /* Delay between chip accesses in uS */
+ struct pmbus_driver_info info;
+ };
+
+@@ -49,10 +50,10 @@ MODULE_PARM_DESC(delay, "Delay between c
+ /* Some chips need a delay between accesses */
+ static inline void zl6100_wait(const struct zl6100_data *data)
+ {
+- if (delay) {
++ if (data->delay) {
+ s64 delta = ktime_us_delta(ktime_get(), data->access);
+- if (delta < delay)
+- udelay(delay - delta);
++ if (delta < data->delay)
++ udelay(data->delay - delta);
+ }
+ }
+
+@@ -184,8 +185,9 @@ static int zl6100_probe(struct i2c_clien
+ * can be cleared later for additional chips if tests show that it
+ * is not needed (in other words, better be safe than sorry).
+ */
++ data->delay = delay;
+ if (data->id == zl2004 || data->id == zl6105)
+- delay = 0;
++ data->delay = 0;
+
+ /*
+ * Since there was a direct I2C device access above, wait before
media-staging-lirc_serial-fix-deadlock-on-resume-failure.patch
media-staging-lirc_serial-do-not-assume-error-codes-returned-by-request_irq.patch
input-alps-fix-touchpad-detection-when-buttons-are-pressed.patch
+hwmon-pmbus_core-fix-maximum-number-of-pout-alarm-attributes.patch
+hwmon-jc42-add-support-for-st-microelectronics-stts2002-and-stts3000.patch
+hwmon-jc42-add-support-for-at30ts00-ts3000gb2-tse2002gb2-and-mcp9804.patch
+hwmon-zl6100-maintain-delay-parameter-in-driver-instance-data.patch
+carl9170-fix-memory-accounting-when-sta-is-in-power-save-mode.patch
+carl9170-fix-frame-delivery-if-sta-is-in-powersave-mode.patch