aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--driver-core/hwmon-add-driver-for-smsc-emc2103-temperature-monitor-and-fan-controller.patch795
-rw-r--r--series40
-rw-r--r--staging.current/staging-batman-adv-fix-function-prototype.patch79
-rw-r--r--staging.current/staging-batman-adv-return-efault-on-copy_to_user-errors.patch33
-rw-r--r--staging.current/staging-comedi-drivers-adl_pci9111-fix-ai-commands-in-trig_follow-case.patch53
-rw-r--r--staging.current/staging-comedi-fix-read-past-end-of-array-in-cb_pcidda_attach.patch40
-rw-r--r--staging.current/staging-hv-fix-hv_utils-module-to-properly-autoload.patch70
-rw-r--r--staging.current/staging-hv-fix-race-condition-on-vmbus-channel-initialization.patch123
-rw-r--r--staging.current/staging-mrst-touchscreen-fix-dereferencing-free-memory.patch33
-rw-r--r--staging.current/staging-rt2870-add-device-id-for-zyxel-nwd-270n.patch28
-rw-r--r--staging.current/staging-rtl8187se-fix-compile-warnings-in-2.6.35-rc2.patch41
-rw-r--r--staging.current/staging-rtl8192s_usb-remove-duplicate-device-id.patch26
-rw-r--r--staging.current/staging-rtl8192su-add-device-ids.patch62
-rw-r--r--staging.current/staging-rtl8192su-remove-device-ids.patch54
-rw-r--r--staging.current/staging-rtl8192u_usb-add-lg-device-id-043e-7a01.patch30
-rw-r--r--staging.current/staging-usbip-usbip_common-kill-rx-thread-on-tx-thread-creation-error.patch95
-rw-r--r--staging.current/staging-wlags49_h2-add-missing-linux-string.h-for-strlen.patch29
-rw-r--r--staging.current/staging-wlags49_h2-fix-build-error-when-config_sysfs-is-not-set.patch38
-rw-r--r--tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch197
-rw-r--r--usb.current/usb-ehci-mxc-bail-out-on-transceiver-problems.patch69
-rw-r--r--usb.current/usb-fix-oops-in-usb_sg_init.patch37
-rw-r--r--usb.current/usb-g_serial-don-t-set-low_latency-flag.patch59
-rw-r--r--usb.current/usb-g_serial-fix-tty-cleanup-on-unload.patch31
-rw-r--r--usb.current/usb-gadget-eth-fix-calculate-crc32-in-eem.patch31
-rw-r--r--usb.current/usb-gadget-f_mass_storage-fixed-fs-descriptors-not-being-updated.patch106
-rw-r--r--usb.current/usb-gadget-f_mass_storage-stale-common-fsg-value-bug-fix.patch326
-rw-r--r--usb.current/usb-gadget-g_fs-possible-invalid-pointer-reference-bug-fixed.patch50
-rw-r--r--usb.current/usb-gadget-printer-fix-sleep-inside-atomic.patch163
-rw-r--r--usb.current/usb-isp1362-hcd-fix-double-lock.patch66
-rw-r--r--usb.current/usb-musb-enable-the-maximum-supported-burst-mode-for-dma.patch53
-rw-r--r--usb.current/usb-musb-fix-a-bug-by-making-suspend-interrupt-available-in-device-mode.patch49
-rw-r--r--usb.current/usb-musb-fix-blackfin-ulpi-stubs.patch40
-rw-r--r--usb.current/usb-musb-make-non-omap-platforms-build-with-config_pm-y.patch58
-rw-r--r--usb.current/usb-musb_core-make-disconnect-and-suspend-interrupts-work-again.patch48
-rw-r--r--usb.current/usb-obey-the-sysfs-power-wakeup-setting.patch67
-rw-r--r--usb.current/usb-otg-ulpi-bail-out-on-read-errors.patch46
-rw-r--r--usb.current/usb-qcserial-fix-a-memory-leak-in-qcprobe-error-path.patch43
-rw-r--r--usb.current/usb-r8a66597-fix-failure-in-change-of-status.patch34
-rw-r--r--usb.current/usb-s3c2410-deactivate-endpoints-before-gadget-unbinding.patch36
-rw-r--r--usb.current/usb-serial-ftdi-correct-merge-conflict-with-contec-id.patch53
-rw-r--r--usb.current/usb-xhci-fix-bug-in-link-trb-activation-change.patch196
41 files changed, 0 insertions, 3527 deletions
diff --git a/driver-core/hwmon-add-driver-for-smsc-emc2103-temperature-monitor-and-fan-controller.patch b/driver-core/hwmon-add-driver-for-smsc-emc2103-temperature-monitor-and-fan-controller.patch
deleted file mode 100644
index c313132bb82ed6..00000000000000
--- a/driver-core/hwmon-add-driver-for-smsc-emc2103-temperature-monitor-and-fan-controller.patch
+++ /dev/null
@@ -1,795 +0,0 @@
-From steve.glendinning@smsc.com Mon Jun 14 15:25:47 2010
-From: Steve Glendinning <steve.glendinning@smsc.com>
-Date: Thu, 10 Jun 2010 07:46:21 +0100
-Subject: hwmon: Add driver for SMSC EMC2103 temperature monitor and fan controller
-To: gregkh@suse.de
-Message-ID: <1276152381-2088-1-git-send-email-steve.glendinning@smsc.com>
-
-
-SMSC's EMC2103 family of temperature/fan controllers have 1
-onboard and up to 3 external temperature sensors, and allow
-closed-loop control of one fan. This patch adds support for
-them.
-
-Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Jean Delvare <khali@linux-fr.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- MAINTAINERS | 6
- drivers/hwmon/Kconfig | 10
- drivers/hwmon/Makefile | 1
- drivers/hwmon/emc2103.c | 723 ++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 740 insertions(+)
-
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -5205,6 +5205,12 @@ M: Nicolas Pitre <nico@fluxnic.net>
- S: Odd Fixes
- F: drivers/net/smc91x.*
-
-+SMSC EMC2103 HARDWARE MONITOR DRIVER
-+M: Steve Glendinning <steve.glendinning@smsc.com>
-+L: lm-sensors@lm-sensors.org
-+S: Supported
-+F: drivers/hwmon/emc2103.c
-+
- SMSC47B397 HARDWARE MONITOR DRIVER
- M: "Mark M. Hoffman" <mhoffman@lightlink.com>
- L: lm-sensors@lm-sensors.org
---- a/drivers/hwmon/Kconfig
-+++ b/drivers/hwmon/Kconfig
-@@ -794,6 +794,16 @@ config SENSORS_SMSC47M192
- This driver can also be built as a module. If so, the module
- will be called smsc47m192.
-
-+config SENSORS_EMC2103
-+ tristate "SMSC EMC2103"
-+ depends on I2C
-+ help
-+ If you say yes here you get support for the temperature
-+ and fan sensors of the SMSC EMC2103 chips.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called emc2103.
-+
- config SENSORS_SMSC47B397
- tristate "SMSC LPC47B397-NC"
- depends on EXPERIMENTAL
---- a/drivers/hwmon/Makefile
-+++ b/drivers/hwmon/Makefile
-@@ -89,6 +89,7 @@ obj-$(CONFIG_SENSORS_SIS5595) += sis5595
- obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc47b397.o
- obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
- obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
-+obj-$(CONFIG_SENSORS_EMC2103) += emc2103.o
- obj-$(CONFIG_SENSORS_AMC6821) += amc6821.o
- obj-$(CONFIG_SENSORS_THMC50) += thmc50.o
- obj-$(CONFIG_SENSORS_TMP102) += tmp102.o
---- /dev/null
-+++ b/drivers/hwmon/emc2103.c
-@@ -0,0 +1,723 @@
-+/*
-+ emc2103.c - Support for SMSC EMC2103
-+ Copyright (c) 2010 SMSC
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+*/
-+
-+#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[] = { 0x2E, I2C_CLIENT_END };
-+
-+static u8 REG_TEMP[4] = { 0x00, 0x02, 0x04, 0x06 };
-+static u8 REG_TEMP_MIN[4] = { 0x3c, 0x38, 0x39, 0x3a };
-+static u8 REG_TEMP_MAX[4] = { 0x34, 0x30, 0x31, 0x32 };
-+
-+#define REG_CONF1 (0x20)
-+#define REG_TEMP_MAX_ALARM (0x24)
-+#define REG_TEMP_MIN_ALARM (0x25)
-+#define REG_FAN_CONF1 (0x42)
-+#define REG_FAN_TARGET_LO (0x4c)
-+#define REG_FAN_TARGET_HI (0x4d)
-+#define REG_FAN_TACH_HI (0x4e)
-+#define REG_FAN_TACH_LO (0x4f)
-+#define REG_PRODUCT_ID (0xfd)
-+#define REG_MFG_ID (0xfe)
-+#define FAN_RPM_FACTOR (3932160)
-+
-+static int apd = 1;
-+module_param(apd, bool, 0);
-+MODULE_PARM_DESC(init, "Set to zero to disable anti-parallel diode mode");
-+
-+struct temperature {
-+ s8 degrees;
-+ u8 fraction; /* 0-7 multiples of 0.125 */
-+};
-+
-+struct emc2103_data {
-+ struct device *hwmon_dev;
-+ struct mutex update_lock;
-+ bool valid; /* registers are valid */
-+ bool fan_rpm_control;
-+ bool have_temp3;
-+ bool have_temp4;
-+ unsigned long last_updated; /* in jiffies */
-+ struct temperature temp[4]; /* internal + 3 external */
-+ s8 temp_min[4]; /* no fractional part */
-+ s8 temp_max[4]; /* no fractional part */
-+ u8 temp_min_alarm;
-+ u8 temp_max_alarm;
-+ u8 fan_range;
-+ u16 fan_tach;
-+ u16 fan_target;
-+};
-+
-+static void read_u8_from_i2c(struct i2c_client *client, u8 i2c_reg, u8 *output)
-+{
-+ int status = i2c_smbus_read_byte_data(client, i2c_reg);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ i2c_reg, status);
-+ } else {
-+ *output = status;
-+ }
-+}
-+
-+static void read_s8_from_i2c(struct i2c_client *client, u8 i2c_reg, s8 *output)
-+{
-+ int status = i2c_smbus_read_byte_data(client, i2c_reg);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ i2c_reg, status);
-+ } else {
-+ *output = status;
-+ }
-+}
-+
-+static void read_temp_from_i2c(struct i2c_client *client, u8 i2c_reg,
-+ struct temperature *temp)
-+{
-+ /* read integer part */
-+ int status = i2c_smbus_read_byte_data(client, i2c_reg);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ i2c_reg, status);
-+ } else {
-+ temp->degrees = status;
-+ }
-+
-+ /* Read fractional part from the next register offset */
-+ status = i2c_smbus_read_byte_data(client, i2c_reg + 1);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ i2c_reg, status);
-+ } else {
-+ temp->fraction = (status & 0xe0) >> 5;
-+ }
-+}
-+
-+static void read_fan_from_i2c(struct i2c_client *client, u16 *output,
-+ u8 hi_addr, u8 lo_addr)
-+{
-+ u16 high_byte;
-+
-+ int status = i2c_smbus_read_byte_data(client, hi_addr);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ hi_addr, status);
-+ } else {
-+ high_byte = status & 0xff;
-+
-+ status = i2c_smbus_read_byte_data(client, lo_addr);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ lo_addr, status);
-+ } else {
-+ *output = (high_byte << 5) | ((status & 0xf8) >> 3);
-+ }
-+ }
-+}
-+
-+static void write_fan_target_to_i2c(struct i2c_client *client, u16 new_target)
-+{
-+ u8 high_byte = (new_target & 0x1fe0) >> 5;
-+ u8 low_byte = (new_target & 0x001f) << 3;
-+ i2c_smbus_write_byte_data(client, REG_FAN_TARGET_LO, low_byte);
-+ i2c_smbus_write_byte_data(client, REG_FAN_TARGET_HI, high_byte);
-+}
-+
-+static void read_fan_range_from_i2c(struct i2c_client *client, u8 *output)
-+
-+{
-+ int status = i2c_smbus_read_byte_data(client, REG_FAN_CONF1);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ REG_FAN_CONF1, status);
-+ } else {
-+ *output = (status & 0x60) >> 5;
-+ }
-+}
-+
-+static struct emc2103_data *emc2103_update_device(struct device *dev)
-+{
-+ struct i2c_client *client = to_i2c_client(dev);
-+ struct emc2103_data *data = i2c_get_clientdata(client);
-+
-+ mutex_lock(&data->update_lock);
-+
-+ if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
-+ || !data->valid) {
-+ int i;
-+
-+ dev_dbg(&client->dev, "Starting emc2103 update\n");
-+
-+ for (i = 0; i < 4; i++) {
-+ read_temp_from_i2c(client, REG_TEMP[i], &data->temp[i]);
-+ read_s8_from_i2c(client, REG_TEMP_MIN[i],
-+ &data->temp_min[i]);
-+ read_s8_from_i2c(client, REG_TEMP_MAX[i],
-+ &data->temp_max[i]);
-+ }
-+
-+ read_u8_from_i2c(client, REG_TEMP_MIN_ALARM,
-+ &data->temp_min_alarm);
-+ read_u8_from_i2c(client, REG_TEMP_MAX_ALARM,
-+ &data->temp_max_alarm);
-+
-+ read_fan_from_i2c(client, &data->fan_tach,
-+ REG_FAN_TACH_HI, REG_FAN_TACH_LO);
-+ read_fan_from_i2c(client, &data->fan_target,
-+ REG_FAN_TARGET_HI, REG_FAN_TARGET_LO);
-+ read_fan_range_from_i2c(client, &data->fan_range);
-+
-+ data->last_updated = jiffies;
-+ data->valid = true;
-+ }
-+
-+ mutex_unlock(&data->update_lock);
-+
-+ return data;
-+}
-+
-+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 emc2103_data *data = emc2103_update_device(dev);
-+ int millidegrees = data->temp[attr->index].degrees * 1000
-+ + data->temp[attr->index].fraction * 125;
-+ return sprintf(buf, "%d\n", millidegrees);
-+}
-+
-+static ssize_t
-+show_temp_min(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ int millidegrees = data->temp_min[attr->index] * 1000;
-+ return sprintf(buf, "%d\n", millidegrees);
-+}
-+
-+static ssize_t
-+show_temp_max(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ int millidegrees = data->temp_max[attr->index] * 1000;
-+ return sprintf(buf, "%d\n", millidegrees);
-+}
-+
-+static ssize_t
-+show_temp_fault(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ bool fault = (data->temp[attr->index].degrees == -128);
-+ return sprintf(buf, "%d\n", fault ? 1 : 0);
-+}
-+
-+static ssize_t
-+show_temp_min_alarm(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ bool alarm = data->temp_min_alarm & (1 << attr->index);
-+ return sprintf(buf, "%d\n", alarm ? 1 : 0);
-+}
-+
-+static ssize_t
-+show_temp_max_alarm(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ bool alarm = data->temp_max_alarm & (1 << attr->index);
-+ return sprintf(buf, "%d\n", alarm ? 1 : 0);
-+}
-+
-+static ssize_t set_temp_min(struct device *dev, struct device_attribute *da,
-+ const char *buf, size_t count)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ struct i2c_client *client = to_i2c_client(dev);
-+ long val;
-+
-+ int result = strict_strtol(buf, 10, &val);
-+ if (result < 0)
-+ return -EINVAL;
-+
-+ val = val / 1000;
-+ if ((val < -63) || (val > 127))
-+ return -EINVAL;
-+
-+ mutex_lock(&data->update_lock);
-+ data->temp_min[attr->index] = val;
-+ i2c_smbus_write_byte_data(client, REG_TEMP_MIN[attr->index], val);
-+ mutex_unlock(&data->update_lock);
-+
-+ return count;
-+}
-+
-+static ssize_t set_temp_max(struct device *dev, struct device_attribute *da,
-+ const char *buf, size_t count)
-+{
-+ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ struct i2c_client *client = to_i2c_client(dev);
-+ long val;
-+
-+ int result = strict_strtol(buf, 10, &val);
-+ if (result < 0)
-+ return -EINVAL;
-+
-+ if ((val < -63) || (val > 127))
-+ return -EINVAL;
-+
-+ mutex_lock(&data->update_lock);
-+ data->temp_max[attr->index] = val;
-+ i2c_smbus_write_byte_data(client, REG_TEMP_MAX[attr->index], val);
-+ mutex_unlock(&data->update_lock);
-+
-+ return count;
-+}
-+
-+static ssize_t
-+show_fan(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ int fan_div = 1 << data->fan_range;
-+ int rpm = (FAN_RPM_FACTOR * fan_div) / data->fan_tach;
-+ return sprintf(buf, "%d\n", rpm);
-+}
-+
-+static ssize_t
-+show_fan_div(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ int fan_div = 1 << data->fan_range;
-+ return sprintf(buf, "%d\n", fan_div);
-+}
-+
-+/* Note: we also update the fan target here, because its value is
-+ determined in part by the fan clock divider. This follows the principle
-+ of least surprise; the user doesn't expect the fan target to change just
-+ because the divider changed. */
-+static ssize_t set_fan_div(struct device *dev, struct device_attribute *da,
-+ const char *buf, size_t count)
-+{
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ struct i2c_client *client = to_i2c_client(dev);
-+ int status, old_div = 1 << data->fan_range;
-+ long new_div;
-+
-+ int result = strict_strtol(buf, 10, &new_div);
-+ if (result < 0)
-+ return -EINVAL;
-+
-+ if (new_div == old_div) /* No change */
-+ return count;
-+
-+ mutex_lock(&data->update_lock);
-+ switch (new_div) {
-+ case 1:
-+ data->fan_range = 0;
-+ break;
-+ case 2:
-+ data->fan_range = 1;
-+ break;
-+ case 4:
-+ data->fan_range = 2;
-+ break;
-+ case 8:
-+ data->fan_range = 3;
-+ break;
-+ default:
-+ mutex_unlock(&data->update_lock);
-+ return -EINVAL;
-+ }
-+
-+ status = i2c_smbus_read_byte_data(client, REG_FAN_CONF1);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ REG_FAN_CONF1, status);
-+ mutex_unlock(&data->update_lock);
-+ return -EIO;
-+ }
-+ status &= 0x9F;
-+ status |= (data->fan_range << 5) & 0x60;
-+ i2c_smbus_write_byte_data(client, REG_FAN_CONF1, status);
-+
-+ /* update fan target if high word is not disabled */
-+ if ((data->fan_target & 0x1fe0) != 0x1fe0) {
-+ data->fan_target = (data->fan_target * new_div) / old_div;
-+ write_fan_target_to_i2c(client, data->fan_target);
-+ }
-+
-+ /* invalidate data to force re-read from hardware */
-+ data->valid = false;
-+
-+ mutex_unlock(&data->update_lock);
-+ return count;
-+}
-+
-+static ssize_t
-+show_fan_target(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ int fan_div = 1 << data->fan_range;
-+ int rpm = (FAN_RPM_FACTOR * fan_div) / data->fan_target;
-+
-+ /* high byte of 0xff = disabled so return 0 */
-+ if ((data->fan_target & 0x1fe0) == 0x1fe0)
-+ rpm = 0;
-+
-+ return sprintf(buf, "%d\n", rpm);
-+}
-+
-+static ssize_t set_fan_target(struct device *dev, struct device_attribute *da,
-+ const char *buf, size_t count)
-+{
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ struct i2c_client *client = to_i2c_client(dev);
-+ long rpm_target;
-+ int fan_div = 1 << data->fan_range;
-+
-+ int result = strict_strtol(buf, 10, &rpm_target);
-+ if (result < 0)
-+ return -EINVAL;
-+
-+ if ((rpm_target < 0) || (rpm_target > 16384))
-+ return -EINVAL;
-+
-+ mutex_lock(&data->update_lock);
-+
-+ if (rpm_target == 0)
-+ data->fan_target = 0x1fff;
-+ else
-+ data->fan_target =
-+ ((FAN_RPM_FACTOR * fan_div) / rpm_target) & 0x1fff;
-+
-+ write_fan_target_to_i2c(client, data->fan_target);
-+
-+ if (!data->fan_rpm_control) {
-+ /* RPM control mode is not currently enabled */
-+ int status = i2c_smbus_read_byte_data(client, REG_FAN_CONF1);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ REG_FAN_CONF1, status);
-+ mutex_unlock(&data->update_lock);
-+ return -EIO;
-+ }
-+ status |= 0x80;
-+ i2c_smbus_write_byte_data(client, REG_FAN_CONF1, status);
-+
-+ data->fan_rpm_control = true;
-+ }
-+
-+ mutex_unlock(&data->update_lock);
-+ return count;
-+}
-+
-+static ssize_t
-+show_fan_fault(struct device *dev, struct device_attribute *da, char *buf)
-+{
-+ struct emc2103_data *data = emc2103_update_device(dev);
-+ bool fault = ((data->fan_tach & 0x1fe0) == 0x1fe0);
-+ return sprintf(buf, "%d\n", fault ? 1 : 0);
-+}
-+
-+static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
-+static SENSOR_DEVICE_ATTR(temp1_min, S_IRUGO | S_IWUSR, show_temp_min,
-+ set_temp_min, 0);
-+static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO | S_IWUSR, show_temp_max,
-+ set_temp_max, 0);
-+static SENSOR_DEVICE_ATTR(temp1_fault, S_IRUGO, show_temp_fault, NULL, 0);
-+static SENSOR_DEVICE_ATTR(temp1_min_alarm, S_IRUGO, show_temp_min_alarm,
-+ NULL, 0);
-+static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_temp_max_alarm,
-+ NULL, 0);
-+
-+static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1);
-+static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO | S_IWUSR, show_temp_min,
-+ set_temp_min, 1);
-+static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO | S_IWUSR, show_temp_max,
-+ set_temp_max, 1);
-+static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_temp_fault, NULL, 1);
-+static SENSOR_DEVICE_ATTR(temp2_min_alarm, S_IRUGO, show_temp_min_alarm,
-+ NULL, 1);
-+static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO, show_temp_max_alarm,
-+ NULL, 1);
-+
-+static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2);
-+static SENSOR_DEVICE_ATTR(temp3_min, S_IRUGO | S_IWUSR, show_temp_min,
-+ set_temp_min, 2);
-+static SENSOR_DEVICE_ATTR(temp3_max, S_IRUGO | S_IWUSR, show_temp_max,
-+ set_temp_max, 2);
-+static SENSOR_DEVICE_ATTR(temp3_fault, S_IRUGO, show_temp_fault, NULL, 2);
-+static SENSOR_DEVICE_ATTR(temp3_min_alarm, S_IRUGO, show_temp_min_alarm,
-+ NULL, 2);
-+static SENSOR_DEVICE_ATTR(temp3_max_alarm, S_IRUGO, show_temp_max_alarm,
-+ NULL, 2);
-+
-+static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp, NULL, 3);
-+static SENSOR_DEVICE_ATTR(temp4_min, S_IRUGO | S_IWUSR, show_temp_min,
-+ set_temp_min, 3);
-+static SENSOR_DEVICE_ATTR(temp4_max, S_IRUGO | S_IWUSR, show_temp_max,
-+ set_temp_max, 3);
-+static SENSOR_DEVICE_ATTR(temp4_fault, S_IRUGO, show_temp_fault, NULL, 3);
-+static SENSOR_DEVICE_ATTR(temp4_min_alarm, S_IRUGO, show_temp_min_alarm,
-+ NULL, 3);
-+static SENSOR_DEVICE_ATTR(temp4_max_alarm, S_IRUGO, show_temp_max_alarm,
-+ NULL, 3);
-+
-+static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0);
-+static SENSOR_DEVICE_ATTR(fan1_div, S_IRUGO | S_IWUSR, show_fan_div,
-+ set_fan_div, 0);
-+static SENSOR_DEVICE_ATTR(fan1_target, S_IRUGO | S_IWUSR, show_fan_target,
-+ set_fan_target, 0);
-+static SENSOR_DEVICE_ATTR(fan1_fault, S_IRUGO, show_fan_fault, NULL, 0);
-+
-+/* sensors present on all models */
-+static struct attribute *emc2103_attributes[] = {
-+ &sensor_dev_attr_temp1_input.dev_attr.attr,
-+ &sensor_dev_attr_temp1_min.dev_attr.attr,
-+ &sensor_dev_attr_temp1_max.dev_attr.attr,
-+ &sensor_dev_attr_temp1_fault.dev_attr.attr,
-+ &sensor_dev_attr_temp1_min_alarm.dev_attr.attr,
-+ &sensor_dev_attr_temp1_max_alarm.dev_attr.attr,
-+ &sensor_dev_attr_temp2_input.dev_attr.attr,
-+ &sensor_dev_attr_temp2_min.dev_attr.attr,
-+ &sensor_dev_attr_temp2_max.dev_attr.attr,
-+ &sensor_dev_attr_temp2_fault.dev_attr.attr,
-+ &sensor_dev_attr_temp2_min_alarm.dev_attr.attr,
-+ &sensor_dev_attr_temp2_max_alarm.dev_attr.attr,
-+ &sensor_dev_attr_fan1_input.dev_attr.attr,
-+ &sensor_dev_attr_fan1_div.dev_attr.attr,
-+ &sensor_dev_attr_fan1_target.dev_attr.attr,
-+ &sensor_dev_attr_fan1_fault.dev_attr.attr,
-+ NULL
-+};
-+
-+/* extra temperature sensors only present on 2103-2 and 2103-4 */
-+static struct attribute *emc2103_attributes_temp3[] = {
-+ &sensor_dev_attr_temp3_input.dev_attr.attr,
-+ &sensor_dev_attr_temp3_min.dev_attr.attr,
-+ &sensor_dev_attr_temp3_max.dev_attr.attr,
-+ &sensor_dev_attr_temp3_fault.dev_attr.attr,
-+ &sensor_dev_attr_temp3_min_alarm.dev_attr.attr,
-+ &sensor_dev_attr_temp3_max_alarm.dev_attr.attr,
-+ NULL
-+};
-+
-+/* extra temperature sensors only present on 2103-2 and 2103-4 in APD mode */
-+static struct attribute *emc2103_attributes_temp4[] = {
-+ &sensor_dev_attr_temp4_input.dev_attr.attr,
-+ &sensor_dev_attr_temp4_min.dev_attr.attr,
-+ &sensor_dev_attr_temp4_max.dev_attr.attr,
-+ &sensor_dev_attr_temp4_fault.dev_attr.attr,
-+ &sensor_dev_attr_temp4_min_alarm.dev_attr.attr,
-+ &sensor_dev_attr_temp4_max_alarm.dev_attr.attr,
-+ NULL
-+};
-+
-+static const struct attribute_group emc2103_group = {
-+ .attrs = emc2103_attributes,
-+};
-+
-+static const struct attribute_group emc2103_temp3_group = {
-+ .attrs = emc2103_attributes_temp3,
-+};
-+
-+static const struct attribute_group emc2103_temp4_group = {
-+ .attrs = emc2103_attributes_temp4,
-+};
-+
-+static int
-+emc2103_probe(struct i2c_client *client, const struct i2c_device_id *id)
-+{
-+ struct emc2103_data *data;
-+ int status;
-+
-+ if (!i2c_check_functionality(client->adapter,
-+ I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA))
-+ return -EIO;
-+
-+ data = kzalloc(sizeof(struct emc2103_data), GFP_KERNEL);
-+ if (!data)
-+ return -ENOMEM;
-+
-+ i2c_set_clientdata(client, data);
-+ mutex_init(&data->update_lock);
-+
-+ /* 2103-2 and 2103-4 have 3 external diodes, 2103-1 has 1 */
-+ status = i2c_smbus_read_byte_data(client, REG_PRODUCT_ID);
-+ data->have_temp3 = (status == 0x26);
-+
-+ /* check if the device is already in RPM control mode */
-+ status = i2c_smbus_read_byte_data(client, REG_FAN_CONF1);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n",
-+ REG_FAN_CONF1, status);
-+ return -EIO;
-+ }
-+ data->fan_rpm_control = (status & 0x80);
-+
-+ if (data->have_temp3) {
-+ /* Configure anti-parallel diode mode */
-+ data->have_temp4 = apd;
-+ status = i2c_smbus_read_byte_data(client, REG_CONF1);
-+ if (status < 0) {
-+ dev_dbg(&client->dev, "reg 0x%02x, err %d\n", REG_CONF1,
-+ status);
-+ return -EIO;
-+ }
-+
-+ if (data->have_temp4)
-+ status |= 0x01;
-+ else
-+ status &= ~(0x01);
-+
-+ i2c_smbus_write_byte_data(client, REG_CONF1, status & 0xff);
-+ }
-+
-+ /* Register sysfs hooks */
-+ status = sysfs_create_group(&client->dev.kobj, &emc2103_group);
-+ if (status)
-+ goto exit_free;
-+
-+ if (data->have_temp3) {
-+ status = sysfs_create_group(&client->dev.kobj,
-+ &emc2103_temp3_group);
-+ if (status)
-+ goto exit_remove;
-+ }
-+
-+ if (data->have_temp4) {
-+ status = sysfs_create_group(&client->dev.kobj,
-+ &emc2103_temp4_group);
-+ if (status)
-+ goto exit_remove_temp3;
-+ }
-+
-+ data->hwmon_dev = hwmon_device_register(&client->dev);
-+ if (IS_ERR(data->hwmon_dev)) {
-+ status = PTR_ERR(data->hwmon_dev);
-+ goto exit_remove_temp4;
-+ }
-+
-+ dev_info(&client->dev, "%s: sensor '%s'\n",
-+ dev_name(data->hwmon_dev), client->name);
-+
-+ return 0;
-+
-+exit_remove_temp4:
-+ if (data->have_temp4)
-+ sysfs_remove_group(&client->dev.kobj, &emc2103_temp4_group);
-+exit_remove_temp3:
-+ if (data->have_temp3)
-+ sysfs_remove_group(&client->dev.kobj, &emc2103_temp3_group);
-+exit_remove:
-+ sysfs_remove_group(&client->dev.kobj, &emc2103_group);
-+exit_free:
-+ i2c_set_clientdata(client, NULL);
-+ kfree(data);
-+ return status;
-+}
-+
-+static int emc2103_remove(struct i2c_client *client)
-+{
-+ struct emc2103_data *data = i2c_get_clientdata(client);
-+
-+ hwmon_device_unregister(data->hwmon_dev);
-+
-+ if (data->have_temp4)
-+ sysfs_remove_group(&client->dev.kobj, &emc2103_temp4_group);
-+
-+ if (data->have_temp3)
-+ sysfs_remove_group(&client->dev.kobj, &emc2103_temp3_group);
-+
-+ sysfs_remove_group(&client->dev.kobj, &emc2103_group);
-+
-+ i2c_set_clientdata(client, NULL);
-+ kfree(data);
-+ return 0;
-+}
-+
-+static const struct i2c_device_id emc2103_ids[] = {
-+ { "emc2103", 0, },
-+ { /* LIST END */ }
-+};
-+MODULE_DEVICE_TABLE(i2c, emc2103_ids);
-+
-+/* Return 0 if detection is successful, -ENODEV otherwise */
-+static int
-+emc2103_detect(struct i2c_client *new_client, struct i2c_board_info *info)
-+{
-+ struct i2c_adapter *adapter = new_client->adapter;
-+ int manufacturer, product;
-+
-+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
-+ return -ENODEV;
-+
-+ manufacturer = i2c_smbus_read_byte_data(new_client, REG_MFG_ID);
-+ if (manufacturer != 0x5D)
-+ return -ENODEV;
-+
-+ product = i2c_smbus_read_byte_data(new_client, REG_PRODUCT_ID);
-+ if ((product != 0x24) && (product != 0x26))
-+ return -ENODEV;
-+
-+ strlcpy(info->type, "emc2103", I2C_NAME_SIZE);
-+
-+ return 0;
-+}
-+
-+static struct i2c_driver emc2103_driver = {
-+ .class = I2C_CLASS_HWMON,
-+ .driver = {
-+ .name = "emc2103",
-+ },
-+ .probe = emc2103_probe,
-+ .remove = emc2103_remove,
-+ .id_table = emc2103_ids,
-+ .detect = emc2103_detect,
-+ .address_list = normal_i2c,
-+};
-+
-+static int __init sensors_emc2103_init(void)
-+{
-+ return i2c_add_driver(&emc2103_driver);
-+}
-+
-+static void __exit sensors_emc2103_exit(void)
-+{
-+ i2c_del_driver(&emc2103_driver);
-+}
-+
-+MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>");
-+MODULE_DESCRIPTION("SMSC EMCxxxx hwmon driver");
-+MODULE_LICENSE("GPL");
-+
-+module_init(sensors_emc2103_init);
-+module_exit(sensors_emc2103_exit);
diff --git a/series b/series
index b6912308e01116..07eda15a698f12 100644
--- a/series
+++ b/series
@@ -12,53 +12,14 @@ gregkh/gkh-version.patch
#################################
# TTY patches for 2.6.35
#################################
-tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch
#################################
# USB patches for 2.6.35
#################################
-usb.current/usb-g_serial-don-t-set-low_latency-flag.patch
-usb.current/usb-g_serial-fix-tty-cleanup-on-unload.patch
-usb.current/usb-gadget-g_fs-possible-invalid-pointer-reference-bug-fixed.patch
-usb.current/usb-xhci-fix-bug-in-link-trb-activation-change.patch
-usb.current/usb-r8a66597-fix-failure-in-change-of-status.patch
-usb.current/usb-musb-fix-a-bug-by-making-suspend-interrupt-available-in-device-mode.patch
-usb.current/usb-otg-ulpi-bail-out-on-read-errors.patch
-usb.current/usb-ehci-mxc-bail-out-on-transceiver-problems.patch
-usb.current/usb-s3c2410-deactivate-endpoints-before-gadget-unbinding.patch
-usb.current/usb-fix-oops-in-usb_sg_init.patch
-usb.current/usb-serial-ftdi-correct-merge-conflict-with-contec-id.patch
-usb.current/usb-isp1362-hcd-fix-double-lock.patch
-usb.current/usb-gadget-printer-fix-sleep-inside-atomic.patch
-usb.current/usb-qcserial-fix-a-memory-leak-in-qcprobe-error-path.patch
-usb.current/usb-gadget-eth-fix-calculate-crc32-in-eem.patch
-usb.current/usb-obey-the-sysfs-power-wakeup-setting.patch
-usb.current/usb-musb_core-make-disconnect-and-suspend-interrupts-work-again.patch
-usb.current/usb-musb-make-non-omap-platforms-build-with-config_pm-y.patch
-usb.current/usb-musb-fix-blackfin-ulpi-stubs.patch
-usb.current/usb-musb-enable-the-maximum-supported-burst-mode-for-dma.patch
-usb.current/usb-gadget-f_mass_storage-fixed-fs-descriptors-not-being-updated.patch
-usb.current/usb-gadget-f_mass_storage-stale-common-fsg-value-bug-fix.patch
#################################
# Staging patches for 2.6.35
#################################
-staging.current/staging-usbip-usbip_common-kill-rx-thread-on-tx-thread-creation-error.patch
-staging.current/staging-batman-adv-return-efault-on-copy_to_user-errors.patch
-staging.current/staging-batman-adv-fix-function-prototype.patch
-staging.current/staging-mrst-touchscreen-fix-dereferencing-free-memory.patch
-staging.current/staging-comedi-drivers-adl_pci9111-fix-ai-commands-in-trig_follow-case.patch
-staging.current/staging-hv-fix-race-condition-on-vmbus-channel-initialization.patch
-staging.current/staging-hv-fix-hv_utils-module-to-properly-autoload.patch
-staging.current/staging-wlags49_h2-add-missing-linux-string.h-for-strlen.patch
-staging.current/staging-wlags49_h2-fix-build-error-when-config_sysfs-is-not-set.patch
-staging.current/staging-rtl8187se-fix-compile-warnings-in-2.6.35-rc2.patch
-staging.current/staging-rtl8192su-remove-device-ids.patch
-staging.current/staging-rtl8192su-add-device-ids.patch
-staging.current/staging-comedi-fix-read-past-end-of-array-in-cb_pcidda_attach.patch
-staging.current/staging-rt2870-add-device-id-for-zyxel-nwd-270n.patch
-staging.current/staging-rtl8192s_usb-remove-duplicate-device-id.patch
-staging.current/staging-rtl8192u_usb-add-lg-device-id-043e-7a01.patch
#####################################################################
# Stuff to be merged after 2.6.35 is out
@@ -67,7 +28,6 @@ staging.current/staging-rtl8192u_usb-add-lg-device-id-043e-7a01.patch
#############################################
# Driver core patches for after 2.6.35 is out
#############################################
-driver-core/hwmon-add-driver-for-smsc-emc2103-temperature-monitor-and-fan-controller.patch
driver-core/uio-remove-irqf_disabled-flag-from-uio_pdrv_genirq.c.patch
driver-core/uio-remove-irqf_disabled-from-uio_sercos3.c.patch
driver-core/uio-remove-irqf_disabled-flag-from-uio_cif.c.patch
diff --git a/staging.current/staging-batman-adv-fix-function-prototype.patch b/staging.current/staging-batman-adv-fix-function-prototype.patch
deleted file mode 100644
index 24b18e1e8d2acb..00000000000000
--- a/staging.current/staging-batman-adv-fix-function-prototype.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From sven.eckelmann@gmx.de Mon Jun 14 15:50:02 2010
-From: Sven Eckelmann <sven.eckelmann@gmx.de>
-Date: Sun, 6 Jun 2010 21:03:05 +0200
-Subject: Staging: batman-adv: fix function prototype
-To: gregkh@suse.de, b.a.t.m.a.n@lists.open-mesh.net
-Cc: Javier Martinez Canillas <martinez.javier@gmail.com>, Sven Eckelmann <sven.eckelmann@gmx.de>
-Message-ID: <1275850985-27105-3-git-send-email-sven.eckelmann@gmx.de>
-
-
-From: Javier Martinez Canillas <martinez.javier@gmail.com>
-
-In today linux-next I got a compile warning in staging/batman-adv.
-
-This is due a struct bin_attribute read function prototype change and the driver was not updated.
-
-This patch solves the issue
-
-Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com>
-Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/batman-adv/bat_sysfs.c | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
-
---- a/drivers/staging/batman-adv/bat_sysfs.c
-+++ b/drivers/staging/batman-adv/bat_sysfs.c
-@@ -225,9 +225,9 @@ static struct bat_attribute *mesh_attrs[
- NULL,
- };
-
--static ssize_t transtable_local_read(struct kobject *kobj,
-- struct bin_attribute *bin_attr,
-- char *buff, loff_t off, size_t count)
-+static ssize_t transtable_local_read(struct file *filp, struct kobject *kobj,
-+ struct bin_attribute *bin_attr,
-+ char *buff, loff_t off, size_t count)
- {
- struct device *dev = to_dev(kobj->parent);
- struct net_device *net_dev = to_net_dev(dev);
-@@ -235,9 +235,9 @@ static ssize_t transtable_local_read(str
- return hna_local_fill_buffer_text(net_dev, buff, count, off);
- }
-
--static ssize_t transtable_global_read(struct kobject *kobj,
-- struct bin_attribute *bin_attr,
-- char *buff, loff_t off, size_t count)
-+static ssize_t transtable_global_read(struct file *filp, struct kobject *kobj,
-+ struct bin_attribute *bin_attr,
-+ char *buff, loff_t off, size_t count)
- {
- struct device *dev = to_dev(kobj->parent);
- struct net_device *net_dev = to_net_dev(dev);
-@@ -245,9 +245,9 @@ static ssize_t transtable_global_read(st
- return hna_global_fill_buffer_text(net_dev, buff, count, off);
- }
-
--static ssize_t originators_read(struct kobject *kobj,
-- struct bin_attribute *bin_attr,
-- char *buff, loff_t off, size_t count)
-+static ssize_t originators_read(struct file *filp, struct kobject *kobj,
-+ struct bin_attribute *bin_attr,
-+ char *buff, loff_t off, size_t count)
- {
- struct device *dev = to_dev(kobj->parent);
- struct net_device *net_dev = to_net_dev(dev);
-@@ -255,9 +255,9 @@ static ssize_t originators_read(struct k
- return orig_fill_buffer_text(net_dev, buff, count, off);
- }
-
--static ssize_t vis_data_read(struct kobject *kobj,
-- struct bin_attribute *bin_attr,
-- char *buff, loff_t off, size_t count)
-+static ssize_t vis_data_read(struct file *filp, struct kobject *kobj,
-+ struct bin_attribute *bin_attr,
-+ char *buff, loff_t off, size_t count)
- {
- struct device *dev = to_dev(kobj->parent);
- struct net_device *net_dev = to_net_dev(dev);
diff --git a/staging.current/staging-batman-adv-return-efault-on-copy_to_user-errors.patch b/staging.current/staging-batman-adv-return-efault-on-copy_to_user-errors.patch
deleted file mode 100644
index 1b9eb25e427748..00000000000000
--- a/staging.current/staging-batman-adv-return-efault-on-copy_to_user-errors.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From sven.eckelmann@gmx.de Mon Jun 14 15:49:49 2010
-From: Sven Eckelmann <sven.eckelmann@gmx.de>
-Date: Sun, 6 Jun 2010 21:03:04 +0200
-Subject: Staging: batman-adv: return -EFAULT on copy_to_user errors
-To: gregkh@suse.de, b.a.t.m.a.n@lists.open-mesh.net
-Cc: Dan Carpenter <error27@gmail.com>, Sven Eckelmann <sven.eckelmann@gmx.de>
-Message-ID: <1275850985-27105-2-git-send-email-sven.eckelmann@gmx.de>
-
-
-From: Dan Carpenter <error27@gmail.com>
-
-copy_to_user() returns the number of bites remaining but we want to
-return a negative error code here.
-
-Signed-off-by: Dan Carpenter <error27@gmail.com>
-Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/batman-adv/device.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/staging/batman-adv/device.c
-+++ b/drivers/staging/batman-adv/device.c
-@@ -196,7 +196,7 @@ ssize_t bat_device_read(struct file *fil
- kfree(device_packet);
-
- if (error)
-- return error;
-+ return -EFAULT;
-
- return sizeof(struct icmp_packet);
- }
diff --git a/staging.current/staging-comedi-drivers-adl_pci9111-fix-ai-commands-in-trig_follow-case.patch b/staging.current/staging-comedi-drivers-adl_pci9111-fix-ai-commands-in-trig_follow-case.patch
deleted file mode 100644
index b07c9c5e09ec8d..00000000000000
--- a/staging.current/staging-comedi-drivers-adl_pci9111-fix-ai-commands-in-trig_follow-case.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From abbotti@mev.co.uk Fri Jun 18 08:50:02 2010
-From: Ian Abbott <abbotti@mev.co.uk>
-Date: Fri, 18 Jun 2010 12:11:28 +0100
-Subject: Staging: comedi: drivers: adl_pci9111: Fix AI commands in TRIG_FOLLOW case
-Cc: Frank Mori Hess <fmhess@users.sourceforge.net>, Ian Abbott <abbotti@mev.co.uk>, Greg Kroah-Hartman <gregkh@suse.de>
-Message-ID: <1276859488-10456-1-git-send-email-abbotti@mev.co.uk>
-
-
-From: Ian Abbott <abbotti@mev.co.uk>
-
-I received a report that AI streaming acquisitions do not work properly
-for the adl_pci9111 driver when convert_src is TRIG_TIMER and
-scan_begin_src is TRIG_FOLLOW (and scan_begin_arg is therefore 0). This
-seems to be down to the incorrect setting of dev_private->scan_delay in
-pci9111_ai_do_cmd(). Under the previously stated conditions,
-dev_private->scan_delay ends up set to (unsigned int)-1, but it ought to
-be set to 0. The function sets it to 0 initially, and it only makes
-sense to change it if both convert_src and scan_begin_src are set to
-TRIG_TIMER.
-
-Note: 'scan_delay' is the number of unwanted scans to discard after each
-valid scan. The hardware does not support 'scan' timing as such, just a
-regularly paced conversion timer (with automatic channel switching
-between conversions). The driver simulates a scan period that is some
-(>1) multiple of the conversion period times the scan length
-(chanlist_len samples) by reading chanlist_len samples and discarding
-the next scan_delay times chanlist_len samples.
-
-Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/comedi/drivers/adl_pci9111.c | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
---- a/drivers/staging/comedi/drivers/adl_pci9111.c
-+++ b/drivers/staging/comedi/drivers/adl_pci9111.c
-@@ -824,9 +824,12 @@ static int pci9111_ai_do_cmd(struct come
- plx9050_interrupt_control(dev_private->lcr_io_base, true, true,
- false, true, true);
-
-- dev_private->scan_delay =
-- (async_cmd->scan_begin_arg / (async_cmd->convert_arg *
-- async_cmd->chanlist_len)) - 1;
-+ if (async_cmd->scan_begin_src == TRIG_TIMER) {
-+ dev_private->scan_delay =
-+ (async_cmd->scan_begin_arg /
-+ (async_cmd->convert_arg *
-+ async_cmd->chanlist_len)) - 1;
-+ }
-
- break;
-
diff --git a/staging.current/staging-comedi-fix-read-past-end-of-array-in-cb_pcidda_attach.patch b/staging.current/staging-comedi-fix-read-past-end-of-array-in-cb_pcidda_attach.patch
deleted file mode 100644
index 6a85df35b12e11..00000000000000
--- a/staging.current/staging-comedi-fix-read-past-end-of-array-in-cb_pcidda_attach.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From error27@gmail.com Tue Jun 22 15:34:56 2010
-From: Dan Carpenter <error27@gmail.com>
-Date: Mon, 21 Jun 2010 08:49:25 +0200
-Subject: Staging: comedi: fix read past end of array in cb_pcidda_attach()
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: devel@driverdev.osuosl.org, Dirk Hohndel <hohndel@infradead.org>, Jiri Kosina <jkosina@suse.cz>, kernel-janitors@vger.kernel.org, Andrea Gelmini <andrea.gelmini@gelma.net>
-Message-ID: <20100621064924.GC5940@bicker>
-Content-Disposition: inline
-
-
-There are only 6 elements in the cb_pcidda_boards[] array so the
-original code read past the end. After this change nothing uses N_BOARDS
-so I removed the definition.
-
-Signed-off-by: Dan Carpenter <error27@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/comedi/drivers/cb_pcidda.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
---- a/drivers/staging/comedi/drivers/cb_pcidda.c
-+++ b/drivers/staging/comedi/drivers/cb_pcidda.c
-@@ -52,7 +52,6 @@ Please report success/failure with other
- #include "8255.h"
-
- #define PCI_VENDOR_ID_CB 0x1307 /* PCI vendor number of ComputerBoards */
--#define N_BOARDS 10 /* Number of boards in cb_pcidda_boards */
- #define EEPROM_SIZE 128 /* number of entries in eeprom */
- #define MAX_AO_CHANNELS 8 /* maximum number of ao channels for supported boards */
-
-@@ -307,7 +306,7 @@ static int cb_pcidda_attach(struct comed
- continue;
- }
- }
-- for (index = 0; index < N_BOARDS; index++) {
-+ for (index = 0; index < ARRAY_SIZE(cb_pcidda_boards); index++) {
- if (cb_pcidda_boards[index].device_id ==
- pcidev->device) {
- goto found;
diff --git a/staging.current/staging-hv-fix-hv_utils-module-to-properly-autoload.patch b/staging.current/staging-hv-fix-hv_utils-module-to-properly-autoload.patch
deleted file mode 100644
index 8b2b8631208b4f..00000000000000
--- a/staging.current/staging-hv-fix-hv_utils-module-to-properly-autoload.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From haiyangz@microsoft.com Wed May 19 08:56:34 2010
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Wed, 19 May 2010 15:56:28 +0000
-Subject: Staging: hv: fix hv_utils module to properly autoload
-To: "'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>, "'devel@driverdev.osuosl.org'" <devel@driverdev.osuosl.org>, "'virtualization@lists.osdl.org'" <virtualization@lists.osdl.org>, "'gregkh@suse.de'" <gregkh@suse.de>
-Cc: Hank Janssen <hjanssen@microsoft.com>
-Message-ID: <1FB5E1D5CA062146B38059374562DF7266B8931E@TK5EX14MBXC128.redmond.corp.microsoft.com>
-
-
-From: Haiyang Zhang <haiyangz@microsoft.com>
-
-Added autoloading based on pci id and dmi strings.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/hv/hv_utils.c | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
---- a/drivers/staging/hv/hv_utils.c
-+++ b/drivers/staging/hv/hv_utils.c
-@@ -24,6 +24,8 @@
- #include <linux/slab.h>
- #include <linux/sysctl.h>
- #include <linux/reboot.h>
-+#include <linux/dmi.h>
-+#include <linux/pci.h>
-
- #include "logging.h"
- #include "osd.h"
-@@ -251,10 +253,36 @@ static void heartbeat_onchannelcallback(
- DPRINT_EXIT(VMBUS);
- }
-
-+static const struct pci_device_id __initconst
-+hv_utils_pci_table[] __maybe_unused = {
-+ { PCI_DEVICE(0x1414, 0x5353) }, /* Hyper-V emulated VGA controller */
-+ { 0 }
-+};
-+MODULE_DEVICE_TABLE(pci, hv_utils_pci_table);
-+
-+
-+static const struct dmi_system_id __initconst
-+hv_utils_dmi_table[] __maybe_unused = {
-+ {
-+ .ident = "Hyper-V",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Virtual Machine"),
-+ DMI_MATCH(DMI_BOARD_NAME, "Virtual Machine"),
-+ },
-+ },
-+ { },
-+};
-+MODULE_DEVICE_TABLE(dmi, hv_utils_dmi_table);
-+
-+
- static int __init init_hyperv_utils(void)
- {
- printk(KERN_INFO "Registering HyperV Utility Driver\n");
-
-+ if (!dmi_check_system(hv_utils_dmi_table))
-+ return -ENODEV;
-+
- hv_cb_utils[HV_SHUTDOWN_MSG].channel->OnChannelCallback =
- &shutdown_onchannelcallback;
- hv_cb_utils[HV_SHUTDOWN_MSG].callback = &shutdown_onchannelcallback;
diff --git a/staging.current/staging-hv-fix-race-condition-on-vmbus-channel-initialization.patch b/staging.current/staging-hv-fix-race-condition-on-vmbus-channel-initialization.patch
deleted file mode 100644
index 5778dfd466ad6d..00000000000000
--- a/staging.current/staging-hv-fix-race-condition-on-vmbus-channel-initialization.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From haiyangz@microsoft.com Fri May 28 16:22:49 2010
-From: Haiyang Zhang <haiyangz@microsoft.com>
-Date: Fri, 28 May 2010 23:22:44 +0000
-Subject: Staging: hv: Fix race condition on vmbus channel initialization
-Cc: Hank Janssen <hjanssen@microsoft.com>
-Message-ID: <1FB5E1D5CA062146B38059374562DF7266B8D340@TK5EX14MBXC128.redmond.corp.microsoft.com>
-
-From: Haiyang Zhang <haiyangz@microsoft.com>
-
-Subject: [PATCH] staging: hv: Fix race condition on vmbus channel initialization
-There is a possible race condition when hv_utils starts to load immediately
-after hv_vmbus is loading - null pointer error could happen.
-This patch added wait/completion to ensure all channels are ready before
-vmbus loading completes. So another module won't have any uninitialized channel.
-
-Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
-Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/staging/hv/channel_mgmt.c | 41 +++++++++++++++++++++++++++-----------
- drivers/staging/hv/vmbus.h | 2 +
- drivers/staging/hv/vmbus_drv.c | 3 ++
- 3 files changed, 35 insertions(+), 11 deletions(-)
-
---- a/drivers/staging/hv/channel_mgmt.c
-+++ b/drivers/staging/hv/channel_mgmt.c
-@@ -23,6 +23,7 @@
- #include <linux/slab.h>
- #include <linux/list.h>
- #include <linux/module.h>
-+#include <linux/completion.h>
- #include "osd.h"
- #include "logging.h"
- #include "vmbus_private.h"
-@@ -293,6 +294,25 @@ void FreeVmbusChannel(struct vmbus_chann
- Channel);
- }
-
-+
-+DECLARE_COMPLETION(hv_channel_ready);
-+
-+/*
-+ * Count initialized channels, and ensure all channels are ready when hv_vmbus
-+ * module loading completes.
-+ */
-+static void count_hv_channel(void)
-+{
-+ static int counter;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&gVmbusConnection.channel_lock, flags);
-+ if (++counter == MAX_MSG_TYPES)
-+ complete(&hv_channel_ready);
-+ spin_unlock_irqrestore(&gVmbusConnection.channel_lock, flags);
-+}
-+
-+
- /*
- * VmbusChannelProcessOffer - Process the offer by creating a channel/device
- * associated with this offer
-@@ -373,22 +393,21 @@ static void VmbusChannelProcessOffer(voi
- * can cleanup properly
- */
- newChannel->State = CHANNEL_OPEN_STATE;
-- cnt = 0;
-
-- while (cnt != MAX_MSG_TYPES) {
-+ /* Open IC channels */
-+ for (cnt = 0; cnt < MAX_MSG_TYPES; cnt++) {
- if (memcmp(&newChannel->OfferMsg.Offer.InterfaceType,
- &hv_cb_utils[cnt].data,
-- sizeof(struct hv_guid)) == 0) {
-+ sizeof(struct hv_guid)) == 0 &&
-+ VmbusChannelOpen(newChannel, 2 * PAGE_SIZE,
-+ 2 * PAGE_SIZE, NULL, 0,
-+ hv_cb_utils[cnt].callback,
-+ newChannel) == 0) {
-+ hv_cb_utils[cnt].channel = newChannel;
- DPRINT_INFO(VMBUS, "%s",
-- hv_cb_utils[cnt].log_msg);
--
-- if (VmbusChannelOpen(newChannel, 2 * PAGE_SIZE,
-- 2 * PAGE_SIZE, NULL, 0,
-- hv_cb_utils[cnt].callback,
-- newChannel) == 0)
-- hv_cb_utils[cnt].channel = newChannel;
-+ hv_cb_utils[cnt].log_msg);
-+ count_hv_channel();
- }
-- cnt++;
- }
- }
- DPRINT_EXIT(VMBUS);
---- a/drivers/staging/hv/vmbus.h
-+++ b/drivers/staging/hv/vmbus.h
-@@ -74,4 +74,6 @@ int vmbus_child_driver_register(struct d
- void vmbus_child_driver_unregister(struct driver_context *driver_ctx);
- void vmbus_get_interface(struct vmbus_channel_interface *interface);
-
-+extern struct completion hv_channel_ready;
-+
- #endif /* _VMBUS_H_ */
---- a/drivers/staging/hv/vmbus_drv.c
-+++ b/drivers/staging/hv/vmbus_drv.c
-@@ -27,6 +27,7 @@
- #include <linux/pci.h>
- #include <linux/dmi.h>
- #include <linux/slab.h>
-+#include <linux/completion.h>
- #include "version_info.h"
- #include "osd.h"
- #include "logging.h"
-@@ -356,6 +357,8 @@ static int vmbus_bus_init(int (*drv_init
-
- vmbus_drv_obj->GetChannelOffers();
-
-+ wait_for_completion(&hv_channel_ready);
-+
- cleanup:
- DPRINT_EXIT(VMBUS_DRV);
-
diff --git a/staging.current/staging-mrst-touchscreen-fix-dereferencing-free-memory.patch b/staging.current/staging-mrst-touchscreen-fix-dereferencing-free-memory.patch
deleted file mode 100644
index 006982d77bca0b..00000000000000
--- a/staging.current/staging-mrst-touchscreen-fix-dereferencing-free-memory.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From error27@gmail.com Mon Jun 14 15:51:12 2010
-From: Dan Carpenter <error27@gmail.com>
-Date: Sat, 5 Jun 2010 19:16:42 +0200
-Subject: Staging: mrst-touchscreen: fix dereferencing free memory
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: devel@driverdev.osuosl.org, kernel-janitors@vger.kernel.org, Alan Cox <alan@linux.intel.com>
-Message-ID: <20100605171642.GM5483@bicker>
-Content-Disposition: inline
-
-
-I moved the kfree() down a couple lines after the dereference.
-
-Signed-off-by: Dan Carpenter <error27@gmail.com>
-Acked-by: Alan Cox <alan@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/mrst-touchscreen/intel-mid-touch.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/staging/mrst-touchscreen/intel-mid-touch.c
-+++ b/drivers/staging/mrst-touchscreen/intel-mid-touch.c
-@@ -817,9 +817,9 @@ static int mrstouch_remove(struct spi_de
- free_irq(mrstouchdevp->irq, mrstouchdevp);
- input_unregister_device(mrstouchdevp->input);
- input_free_device(mrstouchdevp->input);
-- kfree(mrstouchdevp);
- if (mrstouchdevp->pendet_thrd)
- kthread_stop(mrstouchdevp->pendet_thrd);
-+ kfree(mrstouchdevp);
- return 0;
- }
-
diff --git a/staging.current/staging-rt2870-add-device-id-for-zyxel-nwd-270n.patch b/staging.current/staging-rt2870-add-device-id-for-zyxel-nwd-270n.patch
deleted file mode 100644
index 78dd5a38aaf03b..00000000000000
--- a/staging.current/staging-rt2870-add-device-id-for-zyxel-nwd-270n.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From ozan@pardus.org.tr Tue Jun 22 15:35:20 2010
-From: Ozan Çağlayan <ozan@pardus.org.tr>
-Date: Mon, 21 Jun 2010 14:00:56 +0300
-Subject: Staging: rt2870: add device id for Zyxel NWD-270N
-To: linux-kernel@vger.kernel.org
-Cc: gregkh@suse.de
-Message-ID: <1277118056-21367-1-git-send-email-ozan@pardus.org.tr>
-
-
-Add device id for Zyxel NWD-270N USB dongle.
-
-Signed-off-by: Ozan Çağlayan <ozan@pardus.org.tr>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/rt2860/usb_main_dev.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/staging/rt2860/usb_main_dev.c
-+++ b/drivers/staging/rt2860/usb_main_dev.c
-@@ -77,6 +77,7 @@ struct usb_device_id rtusb_usb_id[] = {
- {USB_DEVICE(0x083A, 0x7522)}, /* Arcadyan */
- {USB_DEVICE(0x0CDE, 0x0022)}, /* ZCOM */
- {USB_DEVICE(0x0586, 0x3416)}, /* Zyxel */
-+ {USB_DEVICE(0x0586, 0x341a)}, /* Zyxel NWD-270N */
- {USB_DEVICE(0x0CDE, 0x0025)}, /* Zyxel */
- {USB_DEVICE(0x1740, 0x9701)}, /* EnGenius */
- {USB_DEVICE(0x1740, 0x9702)}, /* EnGenius */
diff --git a/staging.current/staging-rtl8187se-fix-compile-warnings-in-2.6.35-rc2.patch b/staging.current/staging-rtl8187se-fix-compile-warnings-in-2.6.35-rc2.patch
deleted file mode 100644
index 5310c89d3883c3..00000000000000
--- a/staging.current/staging-rtl8187se-fix-compile-warnings-in-2.6.35-rc2.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From Larry.Finger@lwfinger.net Mon Jun 7 10:00:31 2010
-From: Larry Finger <Larry.Finger@lwfinger.net>
-Date: Mon, 07 Jun 2010 12:00:44 -0500
-Subject: Staging: rtl8187se: Fix compile warnings in 2.6.35-rc2
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: linux-kernel@vger.kernel.org
-Message-ID: <4c0d25bc.kKU10fWqlRtt6mUb%Larry.Finger@lwfinger.net>
-
-
-In commit bbfb5652, the spacing in the definitions of eqMacAddr and cpMacAddr
-in drivers/staging/rtl8187se/r8180_core.c were changed to conform to kernel
-standards. These definitions were duplicates of lines found in
-drivers/staging/rtl8187se/ieee80211/dot11d.h. Once the change was made, the
-following warnings were emitted:
-
- CC [M] drivers/staging/rtl8187se/r8180_core.o
-drivers/staging/rtl8187se/r8180_core.c:69:0: warning: "eqMacAddr" redefined
-drivers/staging/rtl8187se/ieee80211/dot11d.h:39:0: note: this is the location of the previous definition
-drivers/staging/rtl8187se/r8180_core.c:70:0: warning: "cpMacAddr" redefined
-drivers/staging/rtl8187se/ieee80211/dot11d.h:40:0: note: this is the location of the previous definition
-
-The fix is to keep only the difinition in the header file.
-
-Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/rtl8187se/r8180_core.c | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/drivers/staging/rtl8187se/r8180_core.c
-+++ b/drivers/staging/rtl8187se/r8180_core.c
-@@ -66,8 +66,6 @@ static int hwseqnum = 0;
- static int hwwep = 0;
- static int channels = 0x3fff;
-
--#define eqMacAddr(a, b) (((a)[0] == (b)[0] && (a)[1] == (b)[1] && (a)[2] == (b)[2] && (a)[3] == (b)[3] && (a)[4] == (b)[4] && (a)[5] == (b)[5]) ? 1 : 0)
--#define cpMacAddr(des, src) ((des)[0] = (src)[0], (des)[1] = (src)[1], (des)[2] = (src)[2], (des)[3] = (src)[3], (des)[4] = (src)[4], (des)[5] = (src)[5])
- MODULE_LICENSE("GPL");
- MODULE_DEVICE_TABLE(pci, rtl8180_pci_id_tbl);
- MODULE_AUTHOR("Andrea Merello <andreamrl@tiscali.it>");
diff --git a/staging.current/staging-rtl8192s_usb-remove-duplicate-device-id.patch b/staging.current/staging-rtl8192s_usb-remove-duplicate-device-id.patch
deleted file mode 100644
index 52fba2b037f6bf..00000000000000
--- a/staging.current/staging-rtl8192s_usb-remove-duplicate-device-id.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From ben@decadent.org.uk Thu Jun 24 17:35:06 2010
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Fri, 25 Jun 2010 01:35:01 +0100
-Subject: Staging: rtl8192s_usb: Remove duplicate device ID
-To: Greg KH <greg@kroah.com>
-Cc: devel@driverdev.osuosl.org, Florian Schilhabel <florian.c.schilhabel@googlemail.com>, Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Guy Sheffer <guysoft@gmail.com>
-Message-ID: <1277426101.26161.168.camel@localhost>
-
-
-Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/rtl8192su/r8192U_core.c | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/drivers/staging/rtl8192su/r8192U_core.c
-+++ b/drivers/staging/rtl8192su/r8192U_core.c
-@@ -134,7 +134,6 @@ static const struct usb_device_id rtl819
- {USB_DEVICE(0x0E66, 0x0016)},
- {USB_DEVICE(0x0b05, 0x1786)},
- /* these are not in the official list */
-- {USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
- {USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
- {}
- };
diff --git a/staging.current/staging-rtl8192su-add-device-ids.patch b/staging.current/staging-rtl8192su-add-device-ids.patch
deleted file mode 100644
index 4b35a2bdf2961a..00000000000000
--- a/staging.current/staging-rtl8192su-add-device-ids.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From florian.c.schilhabel@googlemail.com Tue Jun 22 15:32:46 2010
-From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
-Date: Tue, 8 Jun 2010 03:47:13 +0200
-Subject: Staging: rtl8192su: add device ids
-To: greg@kroah.com
-Message-ID: <20100608014713.GD13449@localhost.localdomain>
-Content-Disposition: inline
-
-
-This patch adds some device ids.
-The list of supported devices was extracted from realteks driver package.
-(0x050d, 0x815F) and (0x0df6, 0x004b) are not in the official list of
-supported devices and may not work correctly.
-In case of problems with these, they should probably be removed from the list.
-
-Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/rtl8192su/r8192U_core.c | 30 +++++++++++++++++++++++-------
- 1 file changed, 23 insertions(+), 7 deletions(-)
-
---- a/drivers/staging/rtl8192su/r8192U_core.c
-+++ b/drivers/staging/rtl8192su/r8192U_core.c
-@@ -112,14 +112,30 @@ u32 rt_global_debug_component = \
- #define CAM_CONTENT_COUNT 8
-
- static const struct usb_device_id rtl8192_usb_id_tbl[] = {
-- /* Realtek */
-- {USB_DEVICE(0x0bda, 0x8171)},
-- {USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
-- {USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
-- /* Guillemot */
-- {USB_DEVICE(0x06f8, 0xe031)},
-- //92SU
-+ {USB_DEVICE(0x0bda, 0x8171)}, /* Realtek */
- {USB_DEVICE(0x0bda, 0x8172)},
-+ {USB_DEVICE(0x0bda, 0x8173)},
-+ {USB_DEVICE(0x0bda, 0x8174)},
-+ {USB_DEVICE(0x0bda, 0x8712)},
-+ {USB_DEVICE(0x0bda, 0x8713)},
-+ {USB_DEVICE(0x07aa, 0x0047)},
-+ {USB_DEVICE(0x07d1, 0x3303)},
-+ {USB_DEVICE(0x07d1, 0x3302)},
-+ {USB_DEVICE(0x07d1, 0x3300)},
-+ {USB_DEVICE(0x1740, 0x9603)},
-+ {USB_DEVICE(0x1740, 0x9605)},
-+ {USB_DEVICE(0x050d, 0x815F)},
-+ {USB_DEVICE(0x06f8, 0xe031)},
-+ {USB_DEVICE(0x7392, 0x7611)},
-+ {USB_DEVICE(0x7392, 0x7612)},
-+ {USB_DEVICE(0x7392, 0x7622)},
-+ {USB_DEVICE(0x0DF6, 0x0045)},
-+ {USB_DEVICE(0x0E66, 0x0015)},
-+ {USB_DEVICE(0x0E66, 0x0016)},
-+ {USB_DEVICE(0x0b05, 0x1786)},
-+ /* these are not in the official list */
-+ {USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
-+ {USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
- {}
- };
-
diff --git a/staging.current/staging-rtl8192su-remove-device-ids.patch b/staging.current/staging-rtl8192su-remove-device-ids.patch
deleted file mode 100644
index f975d0a16e6b25..00000000000000
--- a/staging.current/staging-rtl8192su-remove-device-ids.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From florian.c.schilhabel@googlemail.com Tue Jun 22 15:32:33 2010
-From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
-Date: Tue, 8 Jun 2010 03:46:26 +0200
-Subject: Staging: rtl8192su: remove device ids
-To: greg@kroah.com
-Message-ID: <20100608014626.GC13449@localhost.localdomain>
-Content-Disposition: inline
-
-
-This patch removes some device-ids.
-The list of unsupported devices was extracted from realteks driver package.
-removed IDs are:
-(0x0bda, 0x8192)
-(0x0bda, 0x8709)
-(0x07aa, 0x0043)
-(0x050d, 0x805E)
-(0x0df6, 0x0031)
-(0x1740, 0x9201)
-(0x2001, 0x3301)
-(0x5a57, 0x0290)
-These devices are _not_ rtl819su based.
-
-Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/rtl8192su/r8192U_core.c | 14 --------------
- 1 file changed, 14 deletions(-)
-
---- a/drivers/staging/rtl8192su/r8192U_core.c
-+++ b/drivers/staging/rtl8192su/r8192U_core.c
-@@ -114,22 +114,8 @@ u32 rt_global_debug_component = \
- static const struct usb_device_id rtl8192_usb_id_tbl[] = {
- /* Realtek */
- {USB_DEVICE(0x0bda, 0x8171)},
-- {USB_DEVICE(0x0bda, 0x8192)},
-- {USB_DEVICE(0x0bda, 0x8709)},
-- /* Corega */
-- {USB_DEVICE(0x07aa, 0x0043)},
-- /* Belkin */
-- {USB_DEVICE(0x050d, 0x805E)},
- {USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
-- /* Sitecom */
-- {USB_DEVICE(0x0df6, 0x0031)},
- {USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
-- /* EnGenius */
-- {USB_DEVICE(0x1740, 0x9201)},
-- /* Dlink */
-- {USB_DEVICE(0x2001, 0x3301)},
-- /* Zinwell */
-- {USB_DEVICE(0x5a57, 0x0290)},
- /* Guillemot */
- {USB_DEVICE(0x06f8, 0xe031)},
- //92SU
diff --git a/staging.current/staging-rtl8192u_usb-add-lg-device-id-043e-7a01.patch b/staging.current/staging-rtl8192u_usb-add-lg-device-id-043e-7a01.patch
deleted file mode 100644
index 9b8749d1303f63..00000000000000
--- a/staging.current/staging-rtl8192u_usb-add-lg-device-id-043e-7a01.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From ben@decadent.org.uk Thu Jun 24 17:35:53 2010
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Fri, 25 Jun 2010 01:35:49 +0100
-Subject: Staging: rtl8192u_usb: Add LG device ID 043e:7a01
-To: Greg KH <greg@kroah.com>
-Cc: devel@driverdev.osuosl.org, Florian Schilhabel <florian.c.schilhabel@googlemail.com>, Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Guy Sheffer <guysoft@gmail.com>
-Message-ID: <1277426149.26161.169.camel@localhost>
-
-
-Add another device ID as listed in the vendor driver version
-0003.0825.2009.
-
-Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/rtl8192u/r8192U_core.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/staging/rtl8192u/r8192U_core.c
-+++ b/drivers/staging/rtl8192u/r8192U_core.c
-@@ -121,6 +121,8 @@ static const struct usb_device_id rtl819
- {USB_DEVICE(0x2001, 0x3301)},
- /* Zinwell */
- {USB_DEVICE(0x5a57, 0x0290)},
-+ /* LG */
-+ {USB_DEVICE(0x043e, 0x7a01)},
- {}
- };
-
diff --git a/staging.current/staging-usbip-usbip_common-kill-rx-thread-on-tx-thread-creation-error.patch b/staging.current/staging-usbip-usbip_common-kill-rx-thread-on-tx-thread-creation-error.patch
deleted file mode 100644
index efb224d9d337a5..00000000000000
--- a/staging.current/staging-usbip-usbip_common-kill-rx-thread-on-tx-thread-creation-error.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From hschauhan@nulltrace.org Fri Jun 4 13:50:50 2010
-From: Himanshu Chauhan <hschauhan@nulltrace.org>
-Date: Fri, 4 Jun 2010 23:16:27 +0530
-Subject: staging: usbip: usbip_common: kill rx thread on tx thread creation error.
-To: greg@kroah.com
-Cc: usbip-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org
-Message-ID: <1275673587-1660-1-git-send-email-hschauhan@nulltrace.org>
-
-
-Signed-off-by: Himanshu Chauhan <hschauhan@nulltrace.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
---- a/drivers/staging/usbip/usbip_common.c
-+++ b/drivers/staging/usbip/usbip_common.c
-@@ -378,47 +378,67 @@ int usbip_thread(void *param)
- complete_and_exit(&ut->thread_done, 0);
- }
-
-+static void stop_rx_thread(struct usbip_device *ud)
-+{
-+ if (ud->tcp_rx.thread != NULL) {
-+ send_sig(SIGKILL, ud->tcp_rx.thread, 1);
-+ wait_for_completion(&ud->tcp_rx.thread_done);
-+ usbip_udbg("rx_thread for ud %p has finished\n", ud);
-+ }
-+}
-+
-+static void stop_tx_thread(struct usbip_device *ud)
-+{
-+ if (ud->tcp_tx.thread != NULL) {
-+ send_sig(SIGKILL, ud->tcp_tx.thread, 1);
-+ wait_for_completion(&ud->tcp_tx.thread_done);
-+ usbip_udbg("tx_thread for ud %p has finished\n", ud);
-+ }
-+}
-+
- int usbip_start_threads(struct usbip_device *ud)
- {
- /*
- * threads are invoked per one device (per one connection).
- */
- struct task_struct *th;
-+ int err = 0;
-
- th = kthread_run(usbip_thread, (void *)&ud->tcp_rx, "usbip");
- if (IS_ERR(th)) {
- printk(KERN_WARNING
- "Unable to start control thread\n");
-- return PTR_ERR(th);
-+ err = PTR_ERR(th);
-+ goto ust_exit;
- }
-+
- th = kthread_run(usbip_thread, (void *)&ud->tcp_tx, "usbip");
- if (IS_ERR(th)) {
- printk(KERN_WARNING
- "Unable to start control thread\n");
-- return PTR_ERR(th);
-+ err = PTR_ERR(th);
-+ goto tx_thread_err;
- }
-
- /* confirm threads are starting */
- wait_for_completion(&ud->tcp_rx.thread_done);
- wait_for_completion(&ud->tcp_tx.thread_done);
-+
- return 0;
-+
-+tx_thread_err:
-+ stop_rx_thread(ud);
-+
-+ust_exit:
-+ return err;
- }
- EXPORT_SYMBOL_GPL(usbip_start_threads);
-
- void usbip_stop_threads(struct usbip_device *ud)
- {
- /* kill threads related to this sdev, if v.c. exists */
-- if (ud->tcp_rx.thread != NULL) {
-- send_sig(SIGKILL, ud->tcp_rx.thread, 1);
-- wait_for_completion(&ud->tcp_rx.thread_done);
-- usbip_udbg("rx_thread for ud %p has finished\n", ud);
-- }
--
-- if (ud->tcp_tx.thread != NULL) {
-- send_sig(SIGKILL, ud->tcp_tx.thread, 1);
-- wait_for_completion(&ud->tcp_tx.thread_done);
-- usbip_udbg("tx_thread for ud %p has finished\n", ud);
-- }
-+ stop_rx_thread(ud);
-+ stop_tx_thread(ud);
- }
- EXPORT_SYMBOL_GPL(usbip_stop_threads);
-
diff --git a/staging.current/staging-wlags49_h2-add-missing-linux-string.h-for-strlen.patch b/staging.current/staging-wlags49_h2-add-missing-linux-string.h-for-strlen.patch
deleted file mode 100644
index 144afa34ad7a99..00000000000000
--- a/staging.current/staging-wlags49_h2-add-missing-linux-string.h-for-strlen.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From jeffm@suse.com Fri Jun 18 17:07:06 2010
-From: Jeff Mahoney <jeffm@suse.com>
-Date: Wed, 09 Jun 2010 16:01:10 -0400
-Subject: Staging: wlags49_h2: add missing <linux/string.h> for strlen
-To: Greg KH <gregkh@suse.de>
-Message-ID: <4C0FF306.9030605@suse.com>
-
-
-
-On ia64, the build fails with incompatible implicit definition of strlen.
-This patch adds the <linux/string.h> include to get the real prototype.
-
-Signed-off-by: Jeff Mahoney <jeffm@suse.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/wlags49_h2/wl_enc.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/staging/wlags49_h2/wl_enc.c
-+++ b/drivers/staging/wlags49_h2/wl_enc.c
-@@ -62,6 +62,7 @@
- /*******************************************************************************
- * include files
- ******************************************************************************/
-+#include <linux/string.h>
- #include <wl_version.h>
-
- #include <debug.h>
diff --git a/staging.current/staging-wlags49_h2-fix-build-error-when-config_sysfs-is-not-set.patch b/staging.current/staging-wlags49_h2-fix-build-error-when-config_sysfs-is-not-set.patch
deleted file mode 100644
index 681ee5b9726e35..00000000000000
--- a/staging.current/staging-wlags49_h2-fix-build-error-when-config_sysfs-is-not-set.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From martinez.javier@gmail.com Fri Jun 18 17:08:42 2010
-From: Javier Martinez Canillas <martinez.javier@gmail.com>
-Date: Thu, 17 Jun 2010 01:17:44 -0400
-Subject: Staging: wlags49_h2: Fix build error when CONFIG_SYSFS is not set
-To: Henk de Groot <pe1dnn@amsat.org>, devel@driverdev.osuosl.org, Greg Kroah-Hartman <gregkh@suse.de>, kernel-janitors <kernel-janitors@vger.kernel.org>
-Message-ID: <1276751864.14632.6.camel@lenovo>
-
-I got a wlags49_h2 driver build error in linux-next when CONFIG_SYSFS is not set.
-
-CC [M] drivers/staging/wlags49_h2/wl_cs.o
-In file included from drivers/staging/wlags49_h2/wl_cs.c:104:
-drivers/staging/wlags49_h2/wl_sysfs.h: In function ‘register_wlags_sysfs’:
-drivers/staging/wlags49_h2/wl_sysfs.h:5: error: parameter name omitted
-drivers/staging/wlags49_h2/wl_sysfs.h: In function ‘unregister_wlags_sysfs’:
-drivers/staging/wlags49_h2/wl_sysfs.h:6: error: parameter name omitted
-make[1]: *** [drivers/staging/wlags49_h2/wl_cs.o] Error 1
-make: *** [_module_drivers/staging/wlags49_h2] Error 2
-
-This is due a wrong function definition (it does not include parameters names).
-
-Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/staging/wlags49_h2/wl_sysfs.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/staging/wlags49_h2/wl_sysfs.h
-+++ b/drivers/staging/wlags49_h2/wl_sysfs.h
-@@ -2,6 +2,6 @@
- extern void register_wlags_sysfs(struct net_device *);
- extern void unregister_wlags_sysfs(struct net_device *);
- #else
--static void register_wlags_sysfs(struct net_device *) { return; };
--static void unregister_wlags_sysfs(struct net_device *) { return; };
-+static inline void register_wlags_sysfs(struct net_device *net) { }
-+static inline void unregister_wlags_sysfs(struct net_device *net) { }
- #endif
diff --git a/tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch b/tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch
deleted file mode 100644
index 161436af0d8f84..00000000000000
--- a/tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From dongdong.deng@windriver.com Fri Jun 18 08:48:14 2010
-From: Dongdong Deng <dongdong.deng@windriver.com>
-Date: Thu, 17 Jun 2010 11:13:40 +0800
-Subject: serial: cpm_uart: implement the cpm_uart_early_write() function for console poll
-To: jason.wessel@windriver.com, gregkh@suse.de, galak@kernel.crashing.org, bruce.ashfield@windriver.com, dongdong.deng@windriver.com
-Cc: linux-kernel@vger.kernel.org
-Message-ID: <1276744420-7845-1-git-send-email-dongdong.deng@windriver.com>
-
-
-The cpm_uart_early_write() function which was used for console poll
-isn't implemented in the cpm uart driver.
-
-Implementing this function both fixes the build when CONFIG_CONSOLE_POLL
-is set and allows kgdboc to work via the cpm uart.
-
-Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com>
-Reviewed-by: Bruce Ashfield <bruce.ashfield@windriver.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/serial/cpm_uart/cpm_uart_core.c | 143 +++++++++++++++++---------------
- 1 file changed, 79 insertions(+), 64 deletions(-)
-
---- a/drivers/serial/cpm_uart/cpm_uart_core.c
-+++ b/drivers/serial/cpm_uart/cpm_uart_core.c
-@@ -930,6 +930,83 @@ static void cpm_uart_config_port(struct
- }
- }
-
-+#if defined(CONFIG_CONSOLE_POLL) || defined(CONFIG_SERIAL_CPM_CONSOLE)
-+/*
-+ * Write a string to the serial port
-+ * Note that this is called with interrupts already disabled
-+ */
-+static void cpm_uart_early_write(struct uart_cpm_port *pinfo,
-+ const char *string, u_int count)
-+{
-+ unsigned int i;
-+ cbd_t __iomem *bdp, *bdbase;
-+ unsigned char *cpm_outp_addr;
-+
-+ /* Get the address of the host memory buffer.
-+ */
-+ bdp = pinfo->tx_cur;
-+ bdbase = pinfo->tx_bd_base;
-+
-+ /*
-+ * Now, do each character. This is not as bad as it looks
-+ * since this is a holding FIFO and not a transmitting FIFO.
-+ * We could add the complexity of filling the entire transmit
-+ * buffer, but we would just wait longer between accesses......
-+ */
-+ for (i = 0; i < count; i++, string++) {
-+ /* Wait for transmitter fifo to empty.
-+ * Ready indicates output is ready, and xmt is doing
-+ * that, not that it is ready for us to send.
-+ */
-+ while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-+ ;
-+
-+ /* Send the character out.
-+ * If the buffer address is in the CPM DPRAM, don't
-+ * convert it.
-+ */
-+ cpm_outp_addr = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr),
-+ pinfo);
-+ *cpm_outp_addr = *string;
-+
-+ out_be16(&bdp->cbd_datlen, 1);
-+ setbits16(&bdp->cbd_sc, BD_SC_READY);
-+
-+ if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-+ bdp = bdbase;
-+ else
-+ bdp++;
-+
-+ /* if a LF, also do CR... */
-+ if (*string == 10) {
-+ while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-+ ;
-+
-+ cpm_outp_addr = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr),
-+ pinfo);
-+ *cpm_outp_addr = 13;
-+
-+ out_be16(&bdp->cbd_datlen, 1);
-+ setbits16(&bdp->cbd_sc, BD_SC_READY);
-+
-+ if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-+ bdp = bdbase;
-+ else
-+ bdp++;
-+ }
-+ }
-+
-+ /*
-+ * Finally, Wait for transmitter & holding register to empty
-+ * and restore the IER
-+ */
-+ while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-+ ;
-+
-+ pinfo->tx_cur = bdp;
-+}
-+#endif
-+
- #ifdef CONFIG_CONSOLE_POLL
- /* Serial polling routines for writing and reading from the uart while
- * in an interrupt or debug context.
-@@ -999,7 +1076,7 @@ static void cpm_put_poll_char(struct uar
- static char ch[2];
-
- ch[0] = (char)c;
-- cpm_uart_early_write(pinfo->port.line, ch, 1);
-+ cpm_uart_early_write(pinfo, ch, 1);
- }
- #endif /* CONFIG_CONSOLE_POLL */
-
-@@ -1130,9 +1207,6 @@ static void cpm_uart_console_write(struc
- u_int count)
- {
- struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
-- unsigned int i;
-- cbd_t __iomem *bdp, *bdbase;
-- unsigned char *cp;
- unsigned long flags;
- int nolock = oops_in_progress;
-
-@@ -1142,66 +1216,7 @@ static void cpm_uart_console_write(struc
- spin_lock_irqsave(&pinfo->port.lock, flags);
- }
-
-- /* Get the address of the host memory buffer.
-- */
-- bdp = pinfo->tx_cur;
-- bdbase = pinfo->tx_bd_base;
--
-- /*
-- * Now, do each character. This is not as bad as it looks
-- * since this is a holding FIFO and not a transmitting FIFO.
-- * We could add the complexity of filling the entire transmit
-- * buffer, but we would just wait longer between accesses......
-- */
-- for (i = 0; i < count; i++, s++) {
-- /* Wait for transmitter fifo to empty.
-- * Ready indicates output is ready, and xmt is doing
-- * that, not that it is ready for us to send.
-- */
-- while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-- ;
--
-- /* Send the character out.
-- * If the buffer address is in the CPM DPRAM, don't
-- * convert it.
-- */
-- cp = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr), pinfo);
-- *cp = *s;
--
-- out_be16(&bdp->cbd_datlen, 1);
-- setbits16(&bdp->cbd_sc, BD_SC_READY);
--
-- if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-- bdp = bdbase;
-- else
-- bdp++;
--
-- /* if a LF, also do CR... */
-- if (*s == 10) {
-- while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-- ;
--
-- cp = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr), pinfo);
-- *cp = 13;
--
-- out_be16(&bdp->cbd_datlen, 1);
-- setbits16(&bdp->cbd_sc, BD_SC_READY);
--
-- if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-- bdp = bdbase;
-- else
-- bdp++;
-- }
-- }
--
-- /*
-- * Finally, Wait for transmitter & holding register to empty
-- * and restore the IER
-- */
-- while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-- ;
--
-- pinfo->tx_cur = bdp;
-+ cpm_uart_early_write(pinfo, s, count);
-
- if (unlikely(nolock)) {
- local_irq_restore(flags);
diff --git a/usb.current/usb-ehci-mxc-bail-out-on-transceiver-problems.patch b/usb.current/usb-ehci-mxc-bail-out-on-transceiver-problems.patch
deleted file mode 100644
index 1d6323fefa3830..00000000000000
--- a/usb.current/usb-ehci-mxc-bail-out-on-transceiver-problems.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From w.sang@pengutronix.de Wed Jun 16 13:24:59 2010
-From: Wolfram Sang <w.sang@pengutronix.de>
-Date: Tue, 15 Jun 2010 12:34:23 +0200
-Subject: USB: ehci-mxc: bail out on transceiver problems
-To: linux-usb@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org, Wolfram Sang <w.sang@pengutronix.de>, Sascha Hauer <s.hauer@pengutronix.de>, Daniel Mack <daniel@caiaq.de>, Greg KH <gregkh@suse.de>, stable@kernel.org
-Message-ID: <1276598063-3956-2-git-send-email-w.sang@pengutronix.de>
-
-
-The old code registered the hcd even if there were no transceivers
-detected, leading to oopses like this if we try to probe a non-existant
-ULPI:
-
-[ 2.730000] mxc-ehci mxc-ehci.0: unable to init transceiver
-[ 2.740000] timeout polling for ULPI device
-[ 2.740000] timeout polling for ULPI device
-[ 2.750000] mxc-ehci mxc-ehci.0: unable to enable vbus on transceiver
-[ 2.750000] mxc-ehci mxc-ehci.0: Freescale On-Chip EHCI Host Controller
-[ 2.760000] mxc-ehci mxc-ehci.0: new USB bus registered, assigned bus number 2
-[ 2.770000] Unhandled fault: external abort on non-linefetch (0x808) at 0xc4876184
-[ 2.770000] Internal error: : 808 [#1] PREEMPT
-[ 2.770000] last sysfs file:
-[ 2.770000] Modules linked in:
-[ 2.770000] CPU: 0 Not tainted (2.6.33.5 #5)
-[ 2.770000] PC is at ehci_hub_control+0x4d4/0x8f8
-[ 2.770000] LR is at ehci_mxc_setup+0xbc/0xdc
-[ 2.770000] pc : [<c0196dfc>] lr : [<c019bc8c>] psr: 00000093
-[ 2.770000] sp : c3815e40 ip : 00000001 fp : 60000013
-[ 2.770000] r10: c4876184 r9 : 00000000 r8 : c3814000
-[ 2.770000] r7 : c391d2cc r6 : 00000001 r5 : 00000001 r4 : 00000000
-[ 2.770000] r3 : 80000000 r2 : 00000007 r1 : 80000000 r0 : c4876184
-[ 2.770000] Flags: nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
-[ 2.770000] Control: 0005317f Table: a0004000 DAC: 00000017
-[ 2.770000] Process swapper (pid: 1, stack limit = 0xc3814270)
-...
-
-Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
-Cc: Sascha Hauer <s.hauer@pengutronix.de>
-Cc: stable <stable@kernel.org>
-Acked-by: Daniel Mack <daniel@caiaq.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/ehci-mxc.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/host/ehci-mxc.c
-+++ b/drivers/usb/host/ehci-mxc.c
-@@ -207,10 +207,17 @@ static int ehci_mxc_drv_probe(struct pla
- /* Initialize the transceiver */
- if (pdata->otg) {
- pdata->otg->io_priv = hcd->regs + ULPI_VIEWPORT_OFFSET;
-- if (otg_init(pdata->otg) != 0)
-- dev_err(dev, "unable to init transceiver\n");
-- else if (otg_set_vbus(pdata->otg, 1) != 0)
-+ ret = otg_init(pdata->otg);
-+ if (ret) {
-+ dev_err(dev, "unable to init transceiver, probably missing\n");
-+ ret = -ENODEV;
-+ goto err_add;
-+ }
-+ ret = otg_set_vbus(pdata->otg, 1);
-+ if (ret) {
- dev_err(dev, "unable to enable vbus on transceiver\n");
-+ goto err_add;
-+ }
- }
-
- priv->hcd = hcd;
diff --git a/usb.current/usb-fix-oops-in-usb_sg_init.patch b/usb.current/usb-fix-oops-in-usb_sg_init.patch
deleted file mode 100644
index 08be68a0d0f95c..00000000000000
--- a/usb.current/usb-fix-oops-in-usb_sg_init.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From stern@rowland.harvard.edu Fri Jun 18 08:50:48 2010
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Fri, 18 Jun 2010 10:16:33 -0400 (EDT)
-Subject: USB: fix oops in usb_sg_init()
-To: Greg KH <greg@kroah.com>
-Cc: "Gupta, Ajay Kumar" <ajay.gupta@ti.com>, "matthew@wil.cx" <matthew@wil.cx>
-Message-ID: <Pine.LNX.4.44L0.1006181014130.1606-100000@iolanthe.rowland.org>
-
-
-This patch (as1401) fixes a bug in usb_sg_init() that can cause an
-invalid pointer dereference. An inner loop reuses some local variables
-in an unsafe manner, so new variables are introduced.
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Tested-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/core/message.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -416,8 +416,11 @@ int usb_sg_init(struct usb_sg_request *i
- /* A length of zero means transfer the whole sg list */
- len = length;
- if (len == 0) {
-- for_each_sg(sg, sg, nents, i)
-- len += sg->length;
-+ struct scatterlist *sg2;
-+ int j;
-+
-+ for_each_sg(sg, sg2, nents, j)
-+ len += sg2->length;
- }
- } else {
- /*
diff --git a/usb.current/usb-g_serial-don-t-set-low_latency-flag.patch b/usb.current/usb-g_serial-don-t-set-low_latency-flag.patch
deleted file mode 100644
index 49c719778183e7..00000000000000
--- a/usb.current/usb-g_serial-don-t-set-low_latency-flag.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From jon.povey@racelogic.co.uk Mon Jun 14 15:21:46 2010
-From: Jon Povey <jon.povey@racelogic.co.uk>
-Date: Mon, 14 Jun 2010 19:41:04 +0900
-Subject: USB: g_serial: don't set low_latency flag
-To: linux-usb@vger.kernel.org
-Cc: Jon Povey <jon.povey@racelogic.co.uk>, chrisv@cyberswitching.com, david-b@pacbell.net
-Message-ID: <1276512064-3229-1-git-send-email-jon.povey@racelogic.co.uk>
-
-
-No longer set low_latency flag as it causes this warning backtrace:
-
- WARNING: at kernel/mutex.c:207 __mutex_lock_slowpath+0x6c/0x288()
-
-Fix associated locking and wakeups.
-
-Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
-Cc: Maulik Mankad <x0082077@ti.com>
-Cc: stable <stable@kernel.org>
-Acked-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/u_serial.c | 15 ++-------------
- 1 file changed, 2 insertions(+), 13 deletions(-)
-
---- a/drivers/usb/gadget/u_serial.c
-+++ b/drivers/usb/gadget/u_serial.c
-@@ -536,17 +536,11 @@ recycle:
- list_move(&req->list, &port->read_pool);
- }
-
-- /* Push from tty to ldisc; this is immediate with low_latency, and
-- * may trigger callbacks to this driver ... so drop the spinlock.
-+ /* Push from tty to ldisc; without low_latency set this is handled by
-+ * a workqueue, so we won't get callbacks and can hold port_lock
- */
- if (tty && do_push) {
-- spin_unlock_irq(&port->port_lock);
- tty_flip_buffer_push(tty);
-- wake_up_interruptible(&tty->read_wait);
-- spin_lock_irq(&port->port_lock);
--
-- /* tty may have been closed */
-- tty = port->port_tty;
- }
-
-
-@@ -784,11 +778,6 @@ static int gs_open(struct tty_struct *tt
- port->open_count = 1;
- port->openclose = false;
-
-- /* low_latency means ldiscs work in tasklet context, without
-- * needing a workqueue schedule ... easier to keep up.
-- */
-- tty->low_latency = 1;
--
- /* if connected, start the I/O stream */
- if (port->port_usb) {
- struct gserial *gser = port->port_usb;
diff --git a/usb.current/usb-g_serial-fix-tty-cleanup-on-unload.patch b/usb.current/usb-g_serial-fix-tty-cleanup-on-unload.patch
deleted file mode 100644
index 833a9258c4db2e..00000000000000
--- a/usb.current/usb-g_serial-fix-tty-cleanup-on-unload.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From jon.povey@racelogic.co.uk Mon Jun 14 15:22:32 2010
-From: Jon Povey <jon.povey@racelogic.co.uk>
-Date: Mon, 14 Jun 2010 19:42:10 +0900
-Subject: USB: g_serial: fix tty cleanup on unload
-To: linux-usb@vger.kernel.org
-Cc: Jon Povey <jon.povey@racelogic.co.uk>, chrisv@cyberswitching.com, david-b@pacbell.net
-Message-ID: <1276512130-3317-1-git-send-email-jon.povey@racelogic.co.uk>
-
-
-Call put_tty_driver() in cleanup function, to fix Oops when trying to open
-gadget serial char device after module unload.
-
-Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
-Acked-by: David Brownell <dbrownell@users.sourceforge.net>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/u_serial.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/usb/gadget/u_serial.c
-+++ b/drivers/usb/gadget/u_serial.c
-@@ -1184,6 +1184,7 @@ void gserial_cleanup(void)
- n_ports = 0;
-
- tty_unregister_driver(gs_tty_driver);
-+ put_tty_driver(gs_tty_driver);
- gs_tty_driver = NULL;
-
- pr_debug("%s: cleaned up ttyGS* support\n", __func__);
diff --git a/usb.current/usb-gadget-eth-fix-calculate-crc32-in-eem.patch b/usb.current/usb-gadget-eth-fix-calculate-crc32-in-eem.patch
deleted file mode 100644
index 9534a591bd705e..00000000000000
--- a/usb.current/usb-gadget-eth-fix-calculate-crc32-in-eem.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From Jiri.Pinkava@vscht.cz Mon Jun 21 14:40:59 2010
-From: Jiri Pinkava <jiri.pinkava@vscht.cz>
-Date: Sun, 20 Jun 2010 20:05:52 +0200
-Subject: USB: gadget eth: Fix calculate CRC32 in EEM
-To: linux-usb@vger.kernel.org, dbrownell@users.sourceforge.net
-Cc: gregkh@suse.de, bniebuhr@efjohnson.com, tj@kernel.org, stevel@netspectrum.com
-Message-ID: <4C1E5880.4050007@vscht.cz>
-
-
-CRC should be calculated for Ethernet frame, not for whole recievede EEM data.
-This bug shows rarely, because in many times len == skb->len.
-
-Signed-off-by: Jiri Pinkava <jiri.pinkava@vscht.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/f_eem.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
---- a/drivers/usb/gadget/f_eem.c
-+++ b/drivers/usb/gadget/f_eem.c
-@@ -469,8 +469,7 @@ static int eem_unwrap(struct gether *por
- crc = get_unaligned_le32(skb->data + len
- - ETH_FCS_LEN);
- crc2 = ~crc32_le(~0,
-- skb->data,
-- skb->len - ETH_FCS_LEN);
-+ skb->data, len - ETH_FCS_LEN);
- } else {
- crc = get_unaligned_be32(skb->data + len
- - ETH_FCS_LEN);
diff --git a/usb.current/usb-gadget-f_mass_storage-fixed-fs-descriptors-not-being-updated.patch b/usb.current/usb-gadget-f_mass_storage-fixed-fs-descriptors-not-being-updated.patch
deleted file mode 100644
index 053d59cd4fc6d1..00000000000000
--- a/usb.current/usb-gadget-f_mass_storage-fixed-fs-descriptors-not-being-updated.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From m.nazarewicz@samsung.com Fri Jun 25 11:23:02 2010
-From: Michal Nazarewicz <m.nazarewicz@samsung.com>
-Date: Fri, 25 Jun 2010 16:29:26 +0200
-Subject: USB: gadget: f_mass_storage: fixed fs descriptors not being updated
-To: linux-usb@vger.kernel.org
-Cc: David Brownell <dbrownell@users.sourceforge.net>, Greg KH <greg@kroah.com>, Kyungmin Park <kyungmin.park@samsung.com>, Marek Szyprowski <m.szyprowski@samsung.com>, linux-kernel@vger.kernel.org, Dries Van Puymbroeck <Dries.VanPuymbroeck@dekimo.com>
-Message-ID: <195465048ef0e96371d42a9bc754a2f35a03bccd.1277461024.git.m.nazarewicz@samsung.com>
-
-
-The full speed descriptors were copied to the usb_function structure
-in the fsg_bind_config function before call to the usb_ep_autoconfig.
-The usb_ep_autoconfig was called in fsg_bind using the original
-descriptors. In effect copied descriptors were not updated.
-
-This patch changes the copy full speed descriptors after the call to
-usb_op_autoconfig is performed. This way, copied full speed
-descriptors have updated values.
-
-Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
-Cc: Kyungmin Park <kyungmin.park@samsung.com>
-Reported-by: Dries Van Puymbroeck <Dries.VanPuymbroeck@dekimo.com>
-Tested-by: Dries Van Puymbroeck <Dries.VanPuymbroeck@dekimo.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/f_mass_storage.c | 34 ++++++++++++----------------------
- 1 file changed, 12 insertions(+), 22 deletions(-)
-
---- a/drivers/usb/gadget/f_mass_storage.c
-+++ b/drivers/usb/gadget/f_mass_storage.c
-@@ -2970,7 +2970,6 @@ static int fsg_bind(struct usb_configura
- {
- struct fsg_dev *fsg = fsg_from_func(f);
- struct usb_gadget *gadget = c->cdev->gadget;
-- int rc;
- int i;
- struct usb_ep *ep;
-
-@@ -2996,6 +2995,11 @@ static int fsg_bind(struct usb_configura
- ep->driver_data = fsg->common; /* claim the endpoint */
- fsg->bulk_out = ep;
-
-+ /* Copy descriptors */
-+ f->descriptors = usb_copy_descriptors(fsg_fs_function);
-+ if (unlikely(!f->descriptors))
-+ return -ENOMEM;
-+
- if (gadget_is_dualspeed(gadget)) {
- /* Assume endpoint addresses are the same for both speeds */
- fsg_hs_bulk_in_desc.bEndpointAddress =
-@@ -3003,16 +3007,17 @@ static int fsg_bind(struct usb_configura
- fsg_hs_bulk_out_desc.bEndpointAddress =
- fsg_fs_bulk_out_desc.bEndpointAddress;
- f->hs_descriptors = usb_copy_descriptors(fsg_hs_function);
-- if (unlikely(!f->hs_descriptors))
-+ if (unlikely(!f->hs_descriptors)) {
-+ usb_free_descriptors(f->descriptors);
- return -ENOMEM;
-+ }
- }
-
- return 0;
-
- autoconf_fail:
- ERROR(fsg, "unable to autoconfigure all endpoints\n");
-- rc = -ENOTSUPP;
-- return rc;
-+ return -ENOTSUPP;
- }
-
-
-@@ -3036,11 +3041,6 @@ static int fsg_add(struct usb_composite_
-
- fsg->function.name = FSG_DRIVER_DESC;
- fsg->function.strings = fsg_strings_array;
-- fsg->function.descriptors = usb_copy_descriptors(fsg_fs_function);
-- if (unlikely(!fsg->function.descriptors)) {
-- rc = -ENOMEM;
-- goto error_free_fsg;
-- }
- fsg->function.bind = fsg_bind;
- fsg->function.unbind = fsg_unbind;
- fsg->function.setup = fsg_setup;
-@@ -3056,19 +3056,9 @@ static int fsg_add(struct usb_composite_
-
- rc = usb_add_function(c, &fsg->function);
- if (unlikely(rc))
-- goto error_free_all;
--
-- fsg_common_get(fsg->common);
-- return 0;
--
--error_free_all:
-- usb_free_descriptors(fsg->function.descriptors);
-- /* fsg_bind() might have copied those; or maybe not? who cares
-- * -- free it just in case. */
-- usb_free_descriptors(fsg->function.hs_descriptors);
--error_free_fsg:
-- kfree(fsg);
--
-+ kfree(fsg);
-+ else
-+ fsg_common_get(fsg->common);
- return rc;
- }
-
diff --git a/usb.current/usb-gadget-f_mass_storage-stale-common-fsg-value-bug-fix.patch b/usb.current/usb-gadget-f_mass_storage-stale-common-fsg-value-bug-fix.patch
deleted file mode 100644
index 2e2d400d9aaca8..00000000000000
--- a/usb.current/usb-gadget-f_mass_storage-stale-common-fsg-value-bug-fix.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-From m.nazarewicz@samsung.com Fri Jun 25 11:23:22 2010
-From: Michal Nazarewicz <m.nazarewicz@samsung.com>
-Date: Fri, 25 Jun 2010 16:29:28 +0200
-Subject: USB: gadget: f_mass_storage: stale common->fsg value bug fix
-To: linux-usb@vger.kernel.org
-Cc: David Brownell <dbrownell@users.sourceforge.net>, Greg KH <greg@kroah.com>, Kyungmin Park <kyungmin.park@samsung.com>, Marek Szyprowski <m.szyprowski@samsung.com>, linux-kernel@vger.kernel.org
-Message-ID: <023d27cf18cf64018bb96f0913b0e61bade38c39.1277475111.git.m.nazarewicz@samsung.com>
-
-
-On fsg_unbind the common->fsg pointer was not NULLed if the
-unbound fsg_dev instance was the current one. As an effect,
-the incorrect pointer was preserved in all further operations
-which caused do_set_interface to reference an invalid region.
-
-This commit fixes this by raising an exception in fsg_bind
-which will change the common->fsg pointer. This also requires
-an wait queue so that the thread in fsg_bind can wait till the
-worker thread handles the exception.
-
-This commit removes also a config and new_config fields of
-fsg_common as they are no longer needed since fsg can be
-used to determine whether function is active or not.
-
-Moreover, this commit removes possible race condition where
-the fsg field was modified in both the worker thread and
-form various other contexts. This is fixed by replacing
-prev_fsg with new_fsg. At this point, fsg is assigned only
-in worker thread.
-
-Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
-Cc: Kyungmin Park <kyungmin.park@samsung.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/f_mass_storage.c | 162 +++++++++++++-----------------------
- 1 file changed, 62 insertions(+), 100 deletions(-)
-
---- a/drivers/usb/gadget/f_mass_storage.c
-+++ b/drivers/usb/gadget/f_mass_storage.c
-@@ -321,8 +321,8 @@ struct fsg_dev;
- /* Data shared by all the FSG instances. */
- struct fsg_common {
- struct usb_gadget *gadget;
-- struct fsg_dev *fsg;
-- struct fsg_dev *prev_fsg;
-+ struct fsg_dev *fsg, *new_fsg;
-+ wait_queue_head_t fsg_wait;
-
- /* filesem protects: backing files in use */
- struct rw_semaphore filesem;
-@@ -351,7 +351,6 @@ struct fsg_common {
- enum fsg_state state; /* For exception handling */
- unsigned int exception_req_tag;
-
-- u8 config, new_config;
- enum data_direction data_dir;
- u32 data_size;
- u32 data_size_from_cmnd;
-@@ -595,7 +594,7 @@ static int fsg_setup(struct usb_function
- u16 w_value = le16_to_cpu(ctrl->wValue);
- u16 w_length = le16_to_cpu(ctrl->wLength);
-
-- if (!fsg->common->config)
-+ if (!fsg_is_set(fsg->common))
- return -EOPNOTSUPP;
-
- switch (ctrl->bRequest) {
-@@ -2303,24 +2302,20 @@ static int alloc_request(struct fsg_comm
- return -ENOMEM;
- }
-
--/*
-- * Reset interface setting and re-init endpoint state (toggle etc).
-- * Call with altsetting < 0 to disable the interface. The only other
-- * available altsetting is 0, which enables the interface.
-- */
--static int do_set_interface(struct fsg_common *common, int altsetting)
-+/* Reset interface setting and re-init endpoint state (toggle etc). */
-+static int do_set_interface(struct fsg_common *common, struct fsg_dev *new_fsg)
- {
-- int rc = 0;
-- int i;
-- const struct usb_endpoint_descriptor *d;
-+ const struct usb_endpoint_descriptor *d;
-+ struct fsg_dev *fsg;
-+ int i, rc = 0;
-
- if (common->running)
- DBG(common, "reset interface\n");
-
- reset:
- /* Deallocate the requests */
-- if (common->prev_fsg) {
-- struct fsg_dev *fsg = common->prev_fsg;
-+ if (common->fsg) {
-+ fsg = common->fsg;
-
- for (i = 0; i < FSG_NUM_BUFFERS; ++i) {
- struct fsg_buffhd *bh = &common->buffhds[i];
-@@ -2345,88 +2340,53 @@ reset:
- fsg->bulk_out_enabled = 0;
- }
-
-- common->prev_fsg = 0;
-+ common->fsg = NULL;
-+ wake_up(&common->fsg_wait);
- }
-
- common->running = 0;
-- if (altsetting < 0 || rc != 0)
-+ if (!new_fsg || rc)
- return rc;
-
-- DBG(common, "set interface %d\n", altsetting);
-+ common->fsg = new_fsg;
-+ fsg = common->fsg;
-+
-+ /* Enable the endpoints */
-+ d = fsg_ep_desc(common->gadget,
-+ &fsg_fs_bulk_in_desc, &fsg_hs_bulk_in_desc);
-+ rc = enable_endpoint(common, fsg->bulk_in, d);
-+ if (rc)
-+ goto reset;
-+ fsg->bulk_in_enabled = 1;
-+
-+ d = fsg_ep_desc(common->gadget,
-+ &fsg_fs_bulk_out_desc, &fsg_hs_bulk_out_desc);
-+ rc = enable_endpoint(common, fsg->bulk_out, d);
-+ if (rc)
-+ goto reset;
-+ fsg->bulk_out_enabled = 1;
-+ common->bulk_out_maxpacket = le16_to_cpu(d->wMaxPacketSize);
-+ clear_bit(IGNORE_BULK_OUT, &fsg->atomic_bitflags);
-+
-+ /* Allocate the requests */
-+ for (i = 0; i < FSG_NUM_BUFFERS; ++i) {
-+ struct fsg_buffhd *bh = &common->buffhds[i];
-
-- if (fsg_is_set(common)) {
-- struct fsg_dev *fsg = common->fsg;
-- common->prev_fsg = common->fsg;
--
-- /* Enable the endpoints */
-- d = fsg_ep_desc(common->gadget,
-- &fsg_fs_bulk_in_desc, &fsg_hs_bulk_in_desc);
-- rc = enable_endpoint(common, fsg->bulk_in, d);
-+ rc = alloc_request(common, fsg->bulk_in, &bh->inreq);
- if (rc)
- goto reset;
-- fsg->bulk_in_enabled = 1;
--
-- d = fsg_ep_desc(common->gadget,
-- &fsg_fs_bulk_out_desc, &fsg_hs_bulk_out_desc);
-- rc = enable_endpoint(common, fsg->bulk_out, d);
-+ rc = alloc_request(common, fsg->bulk_out, &bh->outreq);
- if (rc)
- goto reset;
-- fsg->bulk_out_enabled = 1;
-- common->bulk_out_maxpacket = le16_to_cpu(d->wMaxPacketSize);
-- clear_bit(IGNORE_BULK_OUT, &fsg->atomic_bitflags);
--
-- /* Allocate the requests */
-- for (i = 0; i < FSG_NUM_BUFFERS; ++i) {
-- struct fsg_buffhd *bh = &common->buffhds[i];
--
-- rc = alloc_request(common, fsg->bulk_in, &bh->inreq);
-- if (rc)
-- goto reset;
-- rc = alloc_request(common, fsg->bulk_out, &bh->outreq);
-- if (rc)
-- goto reset;
-- bh->inreq->buf = bh->outreq->buf = bh->buf;
-- bh->inreq->context = bh->outreq->context = bh;
-- bh->inreq->complete = bulk_in_complete;
-- bh->outreq->complete = bulk_out_complete;
-- }
--
-- common->running = 1;
-- for (i = 0; i < common->nluns; ++i)
-- common->luns[i].unit_attention_data = SS_RESET_OCCURRED;
-- return rc;
-- } else {
-- return -EIO;
-+ bh->inreq->buf = bh->outreq->buf = bh->buf;
-+ bh->inreq->context = bh->outreq->context = bh;
-+ bh->inreq->complete = bulk_in_complete;
-+ bh->outreq->complete = bulk_out_complete;
- }
--}
--
--
--/*
-- * Change our operational configuration. This code must agree with the code
-- * that returns config descriptors, and with interface altsetting code.
-- *
-- * It's also responsible for power management interactions. Some
-- * configurations might not work with our current power sources.
-- * For now we just assume the gadget is always self-powered.
-- */
--static int do_set_config(struct fsg_common *common, u8 new_config)
--{
-- int rc = 0;
-
-- /* Disable the single interface */
-- if (common->config != 0) {
-- DBG(common, "reset config\n");
-- common->config = 0;
-- rc = do_set_interface(common, -1);
-- }
--
-- /* Enable the interface */
-- if (new_config != 0) {
-- common->config = new_config;
-- rc = do_set_interface(common, 0);
-- if (rc != 0)
-- common->config = 0; /* Reset on errors */
-- }
-+ common->running = 1;
-+ for (i = 0; i < common->nluns; ++i)
-+ common->luns[i].unit_attention_data = SS_RESET_OCCURRED;
- return rc;
- }
-
-@@ -2437,9 +2397,7 @@ static int do_set_config(struct fsg_comm
- static int fsg_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
- {
- struct fsg_dev *fsg = fsg_from_func(f);
-- fsg->common->prev_fsg = fsg->common->fsg;
-- fsg->common->fsg = fsg;
-- fsg->common->new_config = 1;
-+ fsg->common->new_fsg = fsg;
- raise_exception(fsg->common, FSG_STATE_CONFIG_CHANGE);
- return 0;
- }
-@@ -2447,9 +2405,7 @@ static int fsg_set_alt(struct usb_functi
- static void fsg_disable(struct usb_function *f)
- {
- struct fsg_dev *fsg = fsg_from_func(f);
-- fsg->common->prev_fsg = fsg->common->fsg;
-- fsg->common->fsg = fsg;
-- fsg->common->new_config = 0;
-+ fsg->common->new_fsg = NULL;
- raise_exception(fsg->common, FSG_STATE_CONFIG_CHANGE);
- }
-
-@@ -2459,19 +2415,17 @@ static void fsg_disable(struct usb_funct
- static void handle_exception(struct fsg_common *common)
- {
- siginfo_t info;
-- int sig;
- int i;
- struct fsg_buffhd *bh;
- enum fsg_state old_state;
-- u8 new_config;
- struct fsg_lun *curlun;
- unsigned int exception_req_tag;
-- int rc;
-
- /* Clear the existing signals. Anything but SIGUSR1 is converted
- * into a high-priority EXIT exception. */
- for (;;) {
-- sig = dequeue_signal_lock(current, &current->blocked, &info);
-+ int sig =
-+ dequeue_signal_lock(current, &current->blocked, &info);
- if (!sig)
- break;
- if (sig != SIGUSR1) {
-@@ -2482,7 +2436,7 @@ static void handle_exception(struct fsg_
- }
-
- /* Cancel all the pending transfers */
-- if (fsg_is_set(common)) {
-+ if (likely(common->fsg)) {
- for (i = 0; i < FSG_NUM_BUFFERS; ++i) {
- bh = &common->buffhds[i];
- if (bh->inreq_busy)
-@@ -2523,7 +2477,6 @@ static void handle_exception(struct fsg_
- common->next_buffhd_to_fill = &common->buffhds[0];
- common->next_buffhd_to_drain = &common->buffhds[0];
- exception_req_tag = common->exception_req_tag;
-- new_config = common->new_config;
- old_state = common->state;
-
- if (old_state == FSG_STATE_ABORT_BULK_OUT)
-@@ -2573,12 +2526,12 @@ static void handle_exception(struct fsg_
- break;
-
- case FSG_STATE_CONFIG_CHANGE:
-- rc = do_set_config(common, new_config);
-+ do_set_interface(common, common->new_fsg);
- break;
-
- case FSG_STATE_EXIT:
- case FSG_STATE_TERMINATED:
-- do_set_config(common, 0); /* Free resources */
-+ do_set_interface(common, NULL); /* Free resources */
- spin_lock_irq(&common->lock);
- common->state = FSG_STATE_TERMINATED; /* Stop the thread */
- spin_unlock_irq(&common->lock);
-@@ -2863,6 +2816,7 @@ buffhds_first_it:
- goto error_release;
- }
- init_completion(&common->thread_notifier);
-+ init_waitqueue_head(&common->fsg_wait);
- #undef OR
-
-
-@@ -2957,9 +2911,17 @@ static void fsg_common_release(struct kr
- static void fsg_unbind(struct usb_configuration *c, struct usb_function *f)
- {
- struct fsg_dev *fsg = fsg_from_func(f);
-+ struct fsg_common *common = fsg->common;
-
- DBG(fsg, "unbind\n");
-- fsg_common_put(fsg->common);
-+ if (fsg->common->fsg == fsg) {
-+ fsg->common->new_fsg = NULL;
-+ raise_exception(fsg->common, FSG_STATE_CONFIG_CHANGE);
-+ /* FIXME: make interruptible or killable somehow? */
-+ wait_event(common->fsg_wait, common->fsg != fsg);
-+ }
-+
-+ fsg_common_put(common);
- usb_free_descriptors(fsg->function.descriptors);
- usb_free_descriptors(fsg->function.hs_descriptors);
- kfree(fsg);
diff --git a/usb.current/usb-gadget-g_fs-possible-invalid-pointer-reference-bug-fixed.patch b/usb.current/usb-gadget-g_fs-possible-invalid-pointer-reference-bug-fixed.patch
deleted file mode 100644
index e5677d0b03fdec..00000000000000
--- a/usb.current/usb-gadget-g_fs-possible-invalid-pointer-reference-bug-fixed.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From m.nazarewicz@samsung.com Mon Jun 14 15:23:58 2010
-From: Michal Nazarewicz <m.nazarewicz@samsung.com>
-Date: Mon, 14 Jun 2010 10:43:34 +0200
-Subject: [PATCH] USB: gadget: g_fs: possible invalid pointer reference bug fixed
-To: linux-usb@vger.kernel.org
-Cc: David Brownell <dbrownell@users.sourceforge.net>, Kyungmin Park <kyungmin.park@samsung.com>, Marek Szyprowski <m.szyprowski@samsung.com>, linux-kernel@vger.kernel.org
-Message-ID: <f8fbee30a711b740b5875514715c3c58b4eb196c.1276170819.git.m.nazarewicz@samsung.com>
-
-
-During __gfs_do_config() some invalid pointers may be left
-in usb_configuration::interfaces array from previous calls
-to the __gfs_do_config() for the same configuration. This
-will always happen if an user space function which has
-a fewer then the last user space function registers itself.
-Composite's set_config() function that a pointer after the
-last interface in usb_configuration::interface is NULL
-unless the array is full.
-
-This patch makes the __gfs_do_config() make sure that if the
-usb_configuration::interface is not full then a pointer
-after the last interface is NULL.
-
-Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
-Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/g_ffs.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/drivers/usb/gadget/g_ffs.c
-+++ b/drivers/usb/gadget/g_ffs.c
-@@ -392,6 +392,17 @@ static int __gfs_do_config(struct usb_co
- if (unlikely(ret < 0))
- return ret;
-
-+ /* After previous do_configs there may be some invalid
-+ * pointers in c->interface array. This happens every time
-+ * a user space function with fewer interfaces than a user
-+ * space function that was run before the new one is run. The
-+ * compasit's set_config() assumes that if there is no more
-+ * then MAX_CONFIG_INTERFACES interfaces in a configuration
-+ * then there is a NULL pointer after the last interface in
-+ * c->interface array. We need to make sure this is true. */
-+ if (c->next_interface_id < ARRAY_SIZE(c->interface))
-+ c->interface[c->next_interface_id] = NULL;
-+
- return 0;
- }
-
diff --git a/usb.current/usb-gadget-printer-fix-sleep-inside-atomic.patch b/usb.current/usb-gadget-printer-fix-sleep-inside-atomic.patch
deleted file mode 100644
index 07bf916a2c9011..00000000000000
--- a/usb.current/usb-gadget-printer-fix-sleep-inside-atomic.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From jslaby@suse.cz Mon Jun 21 14:19:25 2010
-From: Jiri Slaby <jslaby@suse.cz>
-Date: Mon, 21 Jun 2010 17:02:40 +0200
-Subject: USB: gadget/printer, fix sleep inside atomic
-To: gregkh@suse.de
-Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jirislaby@gmail.com, "Craig W. Nadler" <craig@nadler.us>, David Brownell <dbrownell@users.sourceforge.net>
-Message-ID: <1277132560-14284-1-git-send-email-jslaby@suse.cz>
-
-
-Stanse found that sleep is called inside atomic context created by
-lock_printer_io spinlock in several functions. It's used in process
-context only and some functions sleep inside its critical section. As
-this is not allowed for spinlocks, switch it to mutex.
-
-Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-Cc: Craig W. Nadler <craig@nadler.us>
-Acked-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/printer.c | 32 ++++++++++++++++----------------
- 1 file changed, 16 insertions(+), 16 deletions(-)
-
---- a/drivers/usb/gadget/printer.c
-+++ b/drivers/usb/gadget/printer.c
-@@ -82,7 +82,7 @@ static struct class *usb_gadget_class;
- struct printer_dev {
- spinlock_t lock; /* lock this structure */
- /* lock buffer lists during read/write calls */
-- spinlock_t lock_printer_io;
-+ struct mutex lock_printer_io;
- struct usb_gadget *gadget;
- struct usb_request *req; /* for control responses */
- u8 config;
-@@ -567,7 +567,7 @@ printer_read(struct file *fd, char __use
-
- DBG(dev, "printer_read trying to read %d bytes\n", (int)len);
-
-- spin_lock(&dev->lock_printer_io);
-+ mutex_lock(&dev->lock_printer_io);
- spin_lock_irqsave(&dev->lock, flags);
-
- /* We will use this flag later to check if a printer reset happened
-@@ -601,7 +601,7 @@ printer_read(struct file *fd, char __use
- * call or not.
- */
- if (fd->f_flags & (O_NONBLOCK|O_NDELAY)) {
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
- return -EAGAIN;
- }
-
-@@ -648,7 +648,7 @@ printer_read(struct file *fd, char __use
- if (dev->reset_printer) {
- list_add(&current_rx_req->list, &dev->rx_reqs);
- spin_unlock_irqrestore(&dev->lock, flags);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
- return -EAGAIN;
- }
-
-@@ -673,7 +673,7 @@ printer_read(struct file *fd, char __use
- dev->current_rx_buf = current_rx_buf;
-
- spin_unlock_irqrestore(&dev->lock, flags);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
-
- DBG(dev, "printer_read returned %d bytes\n", (int)bytes_copied);
-
-@@ -697,7 +697,7 @@ printer_write(struct file *fd, const cha
- if (len == 0)
- return -EINVAL;
-
-- spin_lock(&dev->lock_printer_io);
-+ mutex_lock(&dev->lock_printer_io);
- spin_lock_irqsave(&dev->lock, flags);
-
- /* Check if a printer reset happens while we have interrupts on */
-@@ -713,7 +713,7 @@ printer_write(struct file *fd, const cha
- * a NON-Blocking call or not.
- */
- if (fd->f_flags & (O_NONBLOCK|O_NDELAY)) {
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
- return -EAGAIN;
- }
-
-@@ -752,7 +752,7 @@ printer_write(struct file *fd, const cha
-
- if (copy_from_user(req->buf, buf, size)) {
- list_add(&req->list, &dev->tx_reqs);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
- return bytes_copied;
- }
-
-@@ -766,14 +766,14 @@ printer_write(struct file *fd, const cha
- if (dev->reset_printer) {
- list_add(&req->list, &dev->tx_reqs);
- spin_unlock_irqrestore(&dev->lock, flags);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
- return -EAGAIN;
- }
-
- if (usb_ep_queue(dev->in_ep, req, GFP_ATOMIC)) {
- list_add(&req->list, &dev->tx_reqs);
- spin_unlock_irqrestore(&dev->lock, flags);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
- return -EAGAIN;
- }
-
-@@ -782,7 +782,7 @@ printer_write(struct file *fd, const cha
- }
-
- spin_unlock_irqrestore(&dev->lock, flags);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
-
- DBG(dev, "printer_write sent %d bytes\n", (int)bytes_copied);
-
-@@ -820,11 +820,11 @@ printer_poll(struct file *fd, poll_table
- unsigned long flags;
- int status = 0;
-
-- spin_lock(&dev->lock_printer_io);
-+ mutex_lock(&dev->lock_printer_io);
- spin_lock_irqsave(&dev->lock, flags);
- setup_rx_reqs(dev);
- spin_unlock_irqrestore(&dev->lock, flags);
-- spin_unlock(&dev->lock_printer_io);
-+ mutex_unlock(&dev->lock_printer_io);
-
- poll_wait(fd, &dev->rx_wait, wait);
- poll_wait(fd, &dev->tx_wait, wait);
-@@ -1461,7 +1461,7 @@ autoconf_fail:
- }
-
- spin_lock_init(&dev->lock);
-- spin_lock_init(&dev->lock_printer_io);
-+ mutex_init(&dev->lock_printer_io);
- INIT_LIST_HEAD(&dev->tx_reqs);
- INIT_LIST_HEAD(&dev->tx_reqs_active);
- INIT_LIST_HEAD(&dev->rx_reqs);
-@@ -1594,7 +1594,7 @@ cleanup(void)
- {
- int status;
-
-- spin_lock(&usb_printer_gadget.lock_printer_io);
-+ mutex_lock(&usb_printer_gadget.lock_printer_io);
- class_destroy(usb_gadget_class);
- unregister_chrdev_region(g_printer_devno, 2);
-
-@@ -1602,6 +1602,6 @@ cleanup(void)
- if (status)
- ERROR(dev, "usb_gadget_unregister_driver %x\n", status);
-
-- spin_unlock(&usb_printer_gadget.lock_printer_io);
-+ mutex_unlock(&usb_printer_gadget.lock_printer_io);
- }
- module_exit(cleanup);
diff --git a/usb.current/usb-isp1362-hcd-fix-double-lock.patch b/usb.current/usb-isp1362-hcd-fix-double-lock.patch
deleted file mode 100644
index d8e8f0950af3c8..00000000000000
--- a/usb.current/usb-isp1362-hcd-fix-double-lock.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From jslaby@suse.cz Mon Jun 21 14:19:09 2010
-From: Jiri Slaby <jslaby@suse.cz>
-Date: Mon, 21 Jun 2010 17:02:51 +0200
-Subject: USB: isp1362-hcd, fix double lock
-To: gregkh@suse.de
-Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jirislaby@gmail.com, Lothar Wassmann <LW@KARO-electronics.de>, Michael Hennerich <michael.hennerich@analog.com>, Bryan Wu <cooloney@kernel.org>, Mike Frysinger <vapier@gentoo.org>
-Message-ID: <1277132571-14320-1-git-send-email-jslaby@suse.cz>
-
-
-Stanse found that isp1362_sw_reset tries to take a isp1362_hcd->lock,
-but it is already held in isp1362_hc_stop. Avoid that by introducing
-__isp1362_sw_reset which doesn't take the lock and call it from
-isp1362_hc_stop. isp1362_sw_reset is then as simple as lock --
-__isp1362_sw_reset -- unlock.
-
-Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-Cc: Lothar Wassmann <LW@KARO-electronics.de>
-Cc: Michael Hennerich <michael.hennerich@analog.com>
-Cc: Bryan Wu <cooloney@kernel.org>
-Cc: Mike Frysinger <vapier@gentoo.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/isp1362-hcd.c | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
---- a/drivers/usb/host/isp1362-hcd.c
-+++ b/drivers/usb/host/isp1362-hcd.c
-@@ -2224,12 +2224,9 @@ static void remove_debug_file(struct isp
-
- /*-------------------------------------------------------------------------*/
-
--static void isp1362_sw_reset(struct isp1362_hcd *isp1362_hcd)
-+static void __isp1362_sw_reset(struct isp1362_hcd *isp1362_hcd)
- {
- int tmp = 20;
-- unsigned long flags;
--
-- spin_lock_irqsave(&isp1362_hcd->lock, flags);
-
- isp1362_write_reg16(isp1362_hcd, HCSWRES, HCSWRES_MAGIC);
- isp1362_write_reg32(isp1362_hcd, HCCMDSTAT, OHCI_HCR);
-@@ -2240,6 +2237,14 @@ static void isp1362_sw_reset(struct isp1
- }
- if (!tmp)
- pr_err("Software reset timeout\n");
-+}
-+
-+static void isp1362_sw_reset(struct isp1362_hcd *isp1362_hcd)
-+{
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&isp1362_hcd->lock, flags);
-+ __isp1362_sw_reset(isp1362_hcd);
- spin_unlock_irqrestore(&isp1362_hcd->lock, flags);
- }
-
-@@ -2418,7 +2423,7 @@ static void isp1362_hc_stop(struct usb_h
- if (isp1362_hcd->board && isp1362_hcd->board->reset)
- isp1362_hcd->board->reset(hcd->self.controller, 1);
- else
-- isp1362_sw_reset(isp1362_hcd);
-+ __isp1362_sw_reset(isp1362_hcd);
-
- if (isp1362_hcd->board && isp1362_hcd->board->clock)
- isp1362_hcd->board->clock(hcd->self.controller, 0);
diff --git a/usb.current/usb-musb-enable-the-maximum-supported-burst-mode-for-dma.patch b/usb.current/usb-musb-enable-the-maximum-supported-burst-mode-for-dma.patch
deleted file mode 100644
index e97c95b10ecadf..00000000000000
--- a/usb.current/usb-musb-enable-the-maximum-supported-burst-mode-for-dma.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From gadiyar@ti.com Thu Jun 24 14:38:20 2010
-From: Hema HK <hemahk@ti.com>
-Date: Thu, 24 Jun 2010 23:07:09 +0530
-Subject: USB: musb: Enable the maximum supported burst mode for DMA
-To: linux-usb@vger.kernel.org
-Cc: Greg KH <gregkh@suse.de>, Felipe Balbi <felipe.balbi@nokia.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Hema HK <hemahk@ti.com>, Anand Gadiyar <gadiyar@ti.com>
-Message-ID: <1277401029-13761-5-git-send-email-gadiyar@ti.com>
-
-
-From: Hema HK <hemahk@ti.com>
-
-Setting MUSB Burst Mode 3 automatically enables support for
-lower burst modes (BURST4, BURST8, BURST16 or bursts of unspecified
-length). There is no need to set these burst modes based on the
-packet size. Also enable the burst mode for both mode1 and mode0.
-
-This is a fix for buggy hardware - having the lower burst modes
-enabled can potentially cause lockups of the DMA engine used in
-OMAP2/3/4 chips.
-
-Signed-off-by: Hema HK <hemahk@ti.com>
-Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
-Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/musb/musbhsdma.c | 13 ++-----------
- 1 file changed, 2 insertions(+), 11 deletions(-)
-
---- a/drivers/usb/musb/musbhsdma.c
-+++ b/drivers/usb/musb/musbhsdma.c
-@@ -132,18 +132,9 @@ static void configure_channel(struct dma
- if (mode) {
- csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
- BUG_ON(len < packet_sz);
--
-- if (packet_sz >= 64) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR16
-- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- } else if (packet_sz >= 32) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR8
-- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- } else if (packet_sz >= 16) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR4
-- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- }
- }
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR16
-+ << MUSB_HSDMA_BURSTMODE_SHIFT;
-
- csr |= (musb_channel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
- | (1 << MUSB_HSDMA_ENABLE_SHIFT)
diff --git a/usb.current/usb-musb-fix-a-bug-by-making-suspend-interrupt-available-in-device-mode.patch b/usb.current/usb-musb-fix-a-bug-by-making-suspend-interrupt-available-in-device-mode.patch
deleted file mode 100644
index bca576b6d5aa45..00000000000000
--- a/usb.current/usb-musb-fix-a-bug-by-making-suspend-interrupt-available-in-device-mode.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From x0082077@ti.com Wed Jun 16 13:23:21 2010
-From: Maulik Mankad <x0082077@ti.com>
-Date: Tue, 15 Jun 2010 14:40:27 +0530
-Subject: usb: musb: Fix a bug by making suspend interrupt available in device mode
-To: linux-usb@vger.kernel.org
-Cc: Maulik Mankad <x0082077@ti.com>, David Brownell <david-b@pacbell.net>, Felipe Balbi <felipe.balbi@nokia.com>
-Message-ID: <1276593027-30168-1-git-send-email-x0082077@ti.com>
-
-
-As a part of aligning the ISR code for MUSB with the specs, the
-ISR code was re-written.
-
-See Commit 1c25fda4a09e8229800979986ef399401053b46e (usb: musb: handle
-irqs in the order dictated by programming guide)
-
-With this the suspend interrupt came accidently under CONFIG_USB_MUSB_HDRC_HCD.
-
-The fix brings suspend interrupt handling outside
-CONFIG_USB_MUSB_HDRC_HCD.
-
-Signed-off-by: Maulik Mankad <x0082077@ti.com>
-Cc: David Brownell <david-b@pacbell.net>
-Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
-Cc: stable <stable@kernel.org> [.34]
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/musb/musb_core.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -642,7 +642,7 @@ static irqreturn_t musb_stage0_irq(struc
- handled = IRQ_HANDLED;
- }
-
--
-+#endif
- if (int_usb & MUSB_INTR_SUSPEND) {
- DBG(1, "SUSPEND (%s) devctl %02x power %02x\n",
- otg_state_string(musb), devctl, power);
-@@ -705,6 +705,7 @@ static irqreturn_t musb_stage0_irq(struc
- }
- }
-
-+#ifdef CONFIG_USB_MUSB_HDRC_HCD
- if (int_usb & MUSB_INTR_CONNECT) {
- struct usb_hcd *hcd = musb_to_hcd(musb);
- void __iomem *mbase = musb->mregs;
diff --git a/usb.current/usb-musb-fix-blackfin-ulpi-stubs.patch b/usb.current/usb-musb-fix-blackfin-ulpi-stubs.patch
deleted file mode 100644
index a58c456de24a93..00000000000000
--- a/usb.current/usb-musb-fix-blackfin-ulpi-stubs.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From gadiyar@ti.com Thu Jun 24 14:37:59 2010
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Thu, 24 Jun 2010 23:07:08 +0530
-Subject: USB: musb: fix Blackfin ulpi stubs
-To: linux-usb@vger.kernel.org
-Cc: Greg KH <gregkh@suse.de>, Felipe Balbi <felipe.balbi@nokia.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Mike Frysinger <vapier@gentoo.org>
-Message-ID: <1277401029-13761-4-git-send-email-gadiyar@ti.com>
-
-
-From: Mike Frysinger <vapier@gentoo.org>
-
-The new ulpi code defines fallback stubs for the Blackfin arch, but does
-so incorrectly leading to a build failure:
-drivers/usb/musb/musb_core.c:227: error: 'musb_ulpi_read' undeclared here (not in a function)
-drivers/usb/musb/musb_core.c:228: error: 'musb_ulpi_write' undeclared here (not in a function)
-
-Tweak the fallback stubs so that they do work as intended.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
-Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/musb/musb_core.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -219,8 +219,8 @@ static int musb_ulpi_write(struct otg_tr
- return 0;
- }
- #else
--#define musb_ulpi_read(a, b) NULL
--#define musb_ulpi_write(a, b, c) NULL
-+#define musb_ulpi_read NULL
-+#define musb_ulpi_write NULL
- #endif
-
- static struct otg_io_access_ops musb_ulpi_access = {
diff --git a/usb.current/usb-musb-make-non-omap-platforms-build-with-config_pm-y.patch b/usb.current/usb-musb-make-non-omap-platforms-build-with-config_pm-y.patch
deleted file mode 100644
index 0d838296eea571..00000000000000
--- a/usb.current/usb-musb-make-non-omap-platforms-build-with-config_pm-y.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From gadiyar@ti.com Thu Jun 24 14:37:31 2010
-From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Date: Thu, 24 Jun 2010 23:07:07 +0530
-Subject: USB: MUSB: make non-OMAP platforms build with CONFIG_PM=y
-To: linux-usb@vger.kernel.org
-Cc: Greg KH <gregkh@suse.de>, Felipe Balbi <felipe.balbi@nokia.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Message-ID: <1277401029-13761-3-git-send-email-gadiyar@ti.com>
-
-From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-
-Attempt to build MUSB driver with CONFIG_PM=y (e.g. in the OTG mode) on DaVinci
-results in these link errors:
-
-drivers/built-in.o: In function `musb_restore_context':
-led-triggers.c:(.text+0x714d8): undefined reference to
-`musb_platform_restore_context'
-drivers/built-in.o: In function `musb_save_context':
-led-triggers.c:(.text+0x71788): undefined reference to
-`musb_platform_save_context'
-
-This turned out to be caused by commit 9957dd97ec5e98dd334f87ade1d9a0b24d1f86eb
-(usb: musb: Fix compile error for omaps for musb_hdrc). Revert it, taking into
-account the rename of CONFIG_ARCH_OMAP34XX into CONFIG_ARCH_OMAP3 (which that
-commit fixed in a completely inappropriate way) and the recent addition of
-OMAP4 support.
-
-Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
-Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/musb/musb_core.h | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/musb/musb_core.h
-+++ b/drivers/usb/musb/musb_core.h
-@@ -470,7 +470,8 @@ struct musb_csr_regs {
-
- struct musb_context_registers {
-
--#ifdef CONFIG_PM
-+#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
-+ defined(CONFIG_ARCH_OMAP4)
- u32 otg_sysconfig, otg_forcestandby;
- #endif
- u8 power;
-@@ -484,7 +485,8 @@ struct musb_context_registers {
- struct musb_csr_regs index_regs[MUSB_C_NUM_EPS];
- };
-
--#ifdef CONFIG_PM
-+#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
-+ defined(CONFIG_ARCH_OMAP4)
- extern void musb_platform_save_context(struct musb *musb,
- struct musb_context_registers *musb_context);
- extern void musb_platform_restore_context(struct musb *musb,
diff --git a/usb.current/usb-musb_core-make-disconnect-and-suspend-interrupts-work-again.patch b/usb.current/usb-musb_core-make-disconnect-and-suspend-interrupts-work-again.patch
deleted file mode 100644
index 44846b6ce76245..00000000000000
--- a/usb.current/usb-musb_core-make-disconnect-and-suspend-interrupts-work-again.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From gadiyar@ti.com Thu Jun 24 14:36:43 2010
-From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Date: Thu, 24 Jun 2010 23:07:06 +0530
-Subject: USB: musb_core: make disconnect and suspend interrupts work again
-To: linux-usb@vger.kernel.org
-Cc: Greg KH <gregkh@suse.de>, Felipe Balbi <felipe.balbi@nokia.com>, Ajay Kumar Gupta <ajay.gupta@ti.com>, Sergei Shtylyov <sshtylyov@ru.mvista.com>, stable@kernel.org
-Message-ID: <1277401029-13761-2-git-send-email-gadiyar@ti.com>
-
-
-From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-
-Commit 1c25fda4a09e8229800979986ef399401053b46e (usb: musb: handle irqs in the
-order dictated by programming guide) forgot to get rid of the old 'STAGE0_MASK'
-filter for calling musb_stage0_irq(), so now disconnect and suspend interrupts
-are effectively ignored...
-
-Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
-Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/musb/musb_core.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -451,10 +451,6 @@ void musb_hnp_stop(struct musb *musb)
- * @param power
- */
-
--#define STAGE0_MASK (MUSB_INTR_RESUME | MUSB_INTR_SESSREQ \
-- | MUSB_INTR_VBUSERROR | MUSB_INTR_CONNECT \
-- | MUSB_INTR_RESET)
--
- static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb,
- u8 devctl, u8 power)
- {
-@@ -1598,7 +1594,7 @@ irqreturn_t musb_interrupt(struct musb *
- /* the core can interrupt us for multiple reasons; docs have
- * a generic interrupt flowchart to follow
- */
-- if (musb->int_usb & STAGE0_MASK)
-+ if (musb->int_usb)
- retval |= musb_stage0_irq(musb, musb->int_usb,
- devctl, power);
-
diff --git a/usb.current/usb-obey-the-sysfs-power-wakeup-setting.patch b/usb.current/usb-obey-the-sysfs-power-wakeup-setting.patch
deleted file mode 100644
index 4e40090dc26da5..00000000000000
--- a/usb.current/usb-obey-the-sysfs-power-wakeup-setting.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From stern@rowland.harvard.edu Thu Jun 24 14:33:30 2010
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Tue, 22 Jun 2010 16:14:48 -0400 (EDT)
-Subject: USB: obey the sysfs power/wakeup setting
-To: Greg KH <greg@kroah.com>
-Message-ID: <Pine.LNX.4.44L0.1006221603330.1322-100000@iolanthe.rowland.org>
-
-
-This patch (as1403) is a partial reversion of an earlier change
-(commit 5f677f1d45b2bf08085bbba7394392dfa586fa8e "USB: fix remote
-wakeup settings during system sleep"). After hearing from a user, I
-realized that remote wakeup should be enabled during system sleep
-whenever userspace allows it, and not only if a driver requests it
-too.
-
-Indeed, there could be a device with no driver, that does nothing but
-generate a wakeup request when the user presses a button. Such a
-device should be allowed to do its job.
-
-The problem fixed by the earlier patch -- device generating a wakeup
-request for no reason, causing system suspend to abort -- was also
-addressed by a later patch ("USB: don't enable remote wakeup by
-default", accepted but not yet merged into mainline). The device
-won't be able to generate the bogus wakeup requests because it will be
-disabled for remote wakeup by default. Hence this reversion will not
-re-introduce any old problems.
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Cc: stable <stable@kernel.org> [.34]
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/core/driver.c | 13 +++----------
- 1 file changed, 3 insertions(+), 10 deletions(-)
-
---- a/drivers/usb/core/driver.c
-+++ b/drivers/usb/core/driver.c
-@@ -1272,8 +1272,7 @@ static int usb_resume_both(struct usb_de
-
- static void choose_wakeup(struct usb_device *udev, pm_message_t msg)
- {
-- int w, i;
-- struct usb_interface *intf;
-+ int w;
-
- /* Remote wakeup is needed only when we actually go to sleep.
- * For things like FREEZE and QUIESCE, if the device is already
-@@ -1285,16 +1284,10 @@ static void choose_wakeup(struct usb_dev
- return;
- }
-
-- /* If remote wakeup is permitted, see whether any interface drivers
-+ /* Enable remote wakeup if it is allowed, even if no interface drivers
- * actually want it.
- */
-- w = 0;
-- if (device_may_wakeup(&udev->dev) && udev->actconfig) {
-- for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
-- intf = udev->actconfig->interface[i];
-- w |= intf->needs_remote_wakeup;
-- }
-- }
-+ w = device_may_wakeup(&udev->dev);
-
- /* If the device is autosuspended with the wrong wakeup setting,
- * autoresume now so the setting can be changed.
diff --git a/usb.current/usb-otg-ulpi-bail-out-on-read-errors.patch b/usb.current/usb-otg-ulpi-bail-out-on-read-errors.patch
deleted file mode 100644
index 733b614dacb4dc..00000000000000
--- a/usb.current/usb-otg-ulpi-bail-out-on-read-errors.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From w.sang@pengutronix.de Wed Jun 16 13:24:08 2010
-From: Wolfram Sang <w.sang@pengutronix.de>
-Date: Tue, 15 Jun 2010 12:34:22 +0200
-Subject: USB: otg/ulpi: bail out on read errors
-To: linux-usb@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org, Wolfram Sang <w.sang@pengutronix.de>, Sascha Hauer <s.hauer@pengutronix.de>, Daniel Mack <daniel@caiaq.de>, Greg KH <gregkh@suse.de>
-Message-ID: <1276598063-3956-1-git-send-email-w.sang@pengutronix.de>
-
-otg_read may return errnos, so bail out correctly to prevent bogus
-ID-numbers.
-
-Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
-Cc: Sascha Hauer <s.hauer@pengutronix.de>
-Acked-by: Daniel Mack <daniel@caiaq.de>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/otg/ulpi.c | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
---- a/drivers/usb/otg/ulpi.c
-+++ b/drivers/usb/otg/ulpi.c
-@@ -59,12 +59,17 @@ static int ulpi_set_flags(struct otg_tra
-
- static int ulpi_init(struct otg_transceiver *otg)
- {
-- int i, vid, pid;
-+ int i, vid, pid, ret;
-+ u32 ulpi_id = 0;
-
-- vid = (otg_io_read(otg, ULPI_VENDOR_ID_HIGH) << 8) |
-- otg_io_read(otg, ULPI_VENDOR_ID_LOW);
-- pid = (otg_io_read(otg, ULPI_PRODUCT_ID_HIGH) << 8) |
-- otg_io_read(otg, ULPI_PRODUCT_ID_LOW);
-+ for (i = 0; i < 4; i++) {
-+ ret = otg_io_read(otg, ULPI_PRODUCT_ID_HIGH - i);
-+ if (ret < 0)
-+ return ret;
-+ ulpi_id = (ulpi_id << 8) | ret;
-+ }
-+ vid = ulpi_id & 0xffff;
-+ pid = ulpi_id >> 16;
-
- pr_info("ULPI transceiver vendor/product ID 0x%04x/0x%04x\n", vid, pid);
-
diff --git a/usb.current/usb-qcserial-fix-a-memory-leak-in-qcprobe-error-path.patch b/usb.current/usb-qcserial-fix-a-memory-leak-in-qcprobe-error-path.patch
deleted file mode 100644
index 3332c336e757d5..00000000000000
--- a/usb.current/usb-qcserial-fix-a-memory-leak-in-qcprobe-error-path.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From axel.lin@gmail.com Mon Jun 21 14:40:38 2010
-From: Axel Lin <axel.lin@gmail.com>
-Date: Mon, 21 Jun 2010 08:44:17 +0800
-Subject: USB: qcserial: fix a memory leak in qcprobe error path
-Cc: Greg Kroah-Hartman <gregkh@suse.de>, Matthew Garrett <mjg@redhat.com>, Anssi Hannula <anssi.hannula@gmail.com>, Bernhard Rosenkraenzer <bero@arklinux.org>, linux-usb@vger.kernel.org
-Message-ID: <1277081057.15579.3.camel@mola>
-
-
-This patch adds missing kfree(data) before return -ENODEV.
-
-Signed-off-by: Axel Lin <axel.lin@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/qcserial.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/usb/serial/qcserial.c
-+++ b/drivers/usb/serial/qcserial.c
-@@ -139,6 +139,7 @@ static int qcprobe(struct usb_serial *se
- "Could not set interface, error %d\n",
- retval);
- retval = -ENODEV;
-+ kfree(data);
- }
- return retval;
- }
-@@ -155,6 +156,7 @@ static int qcprobe(struct usb_serial *se
- "Could not set interface, error %d\n",
- retval);
- retval = -ENODEV;
-+ kfree(data);
- }
- return retval;
- }
-@@ -163,6 +165,7 @@ static int qcprobe(struct usb_serial *se
- default:
- dev_err(&serial->dev->dev,
- "unknown number of interfaces: %d\n", nintf);
-+ kfree(data);
- return -ENODEV;
- }
-
diff --git a/usb.current/usb-r8a66597-fix-failure-in-change-of-status.patch b/usb.current/usb-r8a66597-fix-failure-in-change-of-status.patch
deleted file mode 100644
index 720e5023a9b3fd..00000000000000
--- a/usb.current/usb-r8a66597-fix-failure-in-change-of-status.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From nobuhiro.iwamatsu.yj@renesas.com Mon Jun 14 15:48:15 2010
-From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Date: Mon, 7 Jun 2010 16:55:56 +0900
-Subject: USB: r8a66597: Fix failure in change of status
-To: gregkh@suse.de
-Cc: stern@rowland.harvard.edu, shimoda.yoshihiro@renesas.com, Paul Mundt <lethal@linux-sh.org>
-Message-ID: <AANLkTimQgvU-pG67QWVjXY5rzLCclelHc7hhsUb_fpJF@mail.gmail.com>
-
-
-In the change by 749da5f82fe33ff68dd4aa1a5e35cd9aa6246dab,
-The change in the status when the USB device is connected is wrong.
-Therefore, the device is not recognized.
-
-Acked-by: Alan Stern <stern@rowland.harvard.edu>
-CC: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
-CC: Paul Mundt" <lethal@linux-sh.org>
-Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/r8a66597-hcd.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/host/r8a66597-hcd.c
-+++ b/drivers/usb/host/r8a66597-hcd.c
-@@ -1065,7 +1065,7 @@ static void r8a66597_usb_connect(struct
- else if (speed == LSMODE)
- rh->port |= USB_PORT_STAT_LOW_SPEED;
-
-- rh->port &= USB_PORT_STAT_RESET;
-+ rh->port &= ~USB_PORT_STAT_RESET;
- rh->port |= USB_PORT_STAT_ENABLE;
- }
-
diff --git a/usb.current/usb-s3c2410-deactivate-endpoints-before-gadget-unbinding.patch b/usb.current/usb-s3c2410-deactivate-endpoints-before-gadget-unbinding.patch
deleted file mode 100644
index 4b2ab94bd43d81..00000000000000
--- a/usb.current/usb-s3c2410-deactivate-endpoints-before-gadget-unbinding.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From vzapolskiy@gmail.com Fri Jun 18 08:49:24 2010
-From: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Date: Fri, 18 Jun 2010 08:25:00 +0400
-Subject: USB: s3c2410: deactivate endpoints before gadget unbinding
-To: linux-usb@vger.kernel.org
-Cc: Vladimir Zapolskiy <vzapolskiy@gmail.com>, Greg Kroah-Hartman <gregkh@suse.de>
-Message-ID: <1276835100-28326-1-git-send-email-vzapolskiy@gmail.com>
-
-
-Gadget disconnect must be called before unbinding to avoid races.
-The change fixes an oops on g_ether module unregistering.
-
-Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/s3c2410_udc.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/gadget/s3c2410_udc.c
-+++ b/drivers/usb/gadget/s3c2410_udc.c
-@@ -1700,9 +1700,13 @@ int usb_gadget_unregister_driver(struct
- if (!driver || driver != udc->driver || !driver->unbind)
- return -EINVAL;
-
-- dprintk(DEBUG_NORMAL,"usb_gadget_register_driver() '%s'\n",
-+ dprintk(DEBUG_NORMAL, "usb_gadget_unregister_driver() '%s'\n",
- driver->driver.name);
-
-+ /* report disconnect */
-+ if (driver->disconnect)
-+ driver->disconnect(&udc->gadget);
-+
- driver->unbind(&udc->gadget);
-
- device_del(&udc->gadget.dev);
diff --git a/usb.current/usb-serial-ftdi-correct-merge-conflict-with-contec-id.patch b/usb.current/usb-serial-ftdi-correct-merge-conflict-with-contec-id.patch
deleted file mode 100644
index 86db9d73a0652c..00000000000000
--- a/usb.current/usb-serial-ftdi-correct-merge-conflict-with-contec-id.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From daniel.sangorrin@gmail.com Mon Jun 21 14:18:14 2010
-From: Daniel Sangorrin <daniel.sangorrin@gmail.com>
-Date: Fri, 18 Jun 2010 15:30:02 +0900
-Subject: USB: serial: ftdi: correct merge conflict with CONTEC id
-To: Andreas Mohr <andi@lisas.de>
-Cc: Greg Kroah-Hartman <gregkh@suse.de>, Radek Liboska <liboska@uochb.cas.cz>, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
-Message-ID: <AANLkTimx1HWYzG0qQqP12ObWQI1eiH5SoFpRic06uN3f@mail.gmail.com>
-
-
-This patch corrects a problem with the merge of a previous
-patch to add the CONTEC identifier.
-
-I believe the merge problem occurred with the commit:
-dee5658b482e9e2ac7d6205dc876fc11d4008138
-
-Originally I submitted a patch and then they asked me to order the IDs
-and resubmit, so did I. But unfortunately in the end somehow both
-patches were merged.
-
-Signed-off-by: Daniel Sangorrin <daniel.sangorrin@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ftdi_sio.c | 1 -
- drivers/usb/serial/ftdi_sio_ids.h | 7 -------
- 2 files changed, 8 deletions(-)
-
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -653,7 +653,6 @@ static struct usb_device_id id_table_com
- { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) },
- { USB_DEVICE(EVOLUTION_VID, EVO_HYBRID_PID) },
- { USB_DEVICE(EVOLUTION_VID, EVO_RCM4_PID) },
-- { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_ARTEMIS_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16C_PID) },
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -501,13 +501,6 @@
- #define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */
-
- /*
-- * Contec products (http://www.contec.com)
-- * Submitted by Daniel Sangorrin
-- */
--#define CONTEC_VID 0x06CE /* Vendor ID */
--#define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */
--
--/*
- * Definitions for B&B Electronics products.
- */
- #define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */
diff --git a/usb.current/usb-xhci-fix-bug-in-link-trb-activation-change.patch b/usb.current/usb-xhci-fix-bug-in-link-trb-activation-change.patch
deleted file mode 100644
index ba943d301b1b08..00000000000000
--- a/usb.current/usb-xhci-fix-bug-in-link-trb-activation-change.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-From sarah.a.sharp@linux.intel.com Mon Jun 14 15:25:09 2010
-From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-Date: Thu, 10 Jun 2010 12:25:28 -0700
-Subject: USB: xHCI: Fix bug in link TRB activation change.
-To: Greg KH <gregkh@suse.de>
-Cc: linux-usb@vger.kernel.org, John Youn <John.Youn@synopsys.com>
-Message-ID: <20100610192528.GA17572@xanatos>
-Content-Disposition: inline
-
-
-Commit 6c12db90f19727c76990e7f4801c67a148b30111 introduced a bug for
-control transfers. The patch was supposed to change when the link TRBs at
-the end of each ring segment were given to the hardware. If a transfer
-descriptor (TD) ended just before the link TRB, the code wouldn't give
-back the link TRB to the hardware; instead it would be given back in
-prepare_ring() just before the next TD was enqueued at the top of the
-ring.
-
-Unfortunately, the code relied on checking the chain bit of the TRB to
-determine whether the TD ended just before the link TRB. It assumed that
-the ring enqueuing code would call prepare_ring() before enqueuing the
-next TD. However, control transfers are made of multiple TDs, and
-prepare_ring() is only called once before enqueuing two or three TDs.
-
-If the first or second TD of the control transfer ended just before the
-link TRB, then the code in inc_enq() would not move the enqueue pointer
-past the link TRB, and the link TRB would get overwritten. This would
-cause the xHCI driver to start writing to memory past the ring segment,
-and eventually the system would crash or hang.
-
-The fix is to add a flag to inc_enq() that says whether the caller will
-enqueue more TDs before calling prepare_ring(). If the chain bit is
-cleared (meaning this is the last TRB in a TD), and the caller will not
-enqueue more TDs, then we defer giving back the link TRB.
-
-Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/xhci-ring.c | 62 +++++++++++++++++++++++++++++++------------
- 1 file changed, 46 insertions(+), 16 deletions(-)
-
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -182,8 +182,12 @@ static void inc_deq(struct xhci_hcd *xhc
- * set, but other sections talk about dealing with the chain bit set. This was
- * fixed in the 0.96 specification errata, but we have to assume that all 0.95
- * xHCI hardware can't handle the chain bit being cleared on a link TRB.
-+ *
-+ * @more_trbs_coming: Will you enqueue more TRBs before calling
-+ * prepare_transfer()?
- */
--static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, bool consumer)
-+static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring,
-+ bool consumer, bool more_trbs_coming)
- {
- u32 chain;
- union xhci_trb *next;
-@@ -199,15 +203,28 @@ static void inc_enq(struct xhci_hcd *xhc
- while (last_trb(xhci, ring, ring->enq_seg, next)) {
- if (!consumer) {
- if (ring != xhci->event_ring) {
-- if (chain) {
-- next->link.control |= TRB_CHAIN;
--
-- /* Give this link TRB to the hardware */
-- wmb();
-- next->link.control ^= TRB_CYCLE;
-- } else {
-+ /*
-+ * If the caller doesn't plan on enqueueing more
-+ * TDs before ringing the doorbell, then we
-+ * don't want to give the link TRB to the
-+ * hardware just yet. We'll give the link TRB
-+ * back in prepare_ring() just before we enqueue
-+ * the TD at the top of the ring.
-+ */
-+ if (!chain && !more_trbs_coming)
- break;
-+
-+ /* If we're not dealing with 0.95 hardware,
-+ * carry over the chain bit of the previous TRB
-+ * (which may mean the chain bit is cleared).
-+ */
-+ if (!xhci_link_trb_quirk(xhci)) {
-+ next->link.control &= ~TRB_CHAIN;
-+ next->link.control |= chain;
- }
-+ /* Give this link TRB to the hardware */
-+ wmb();
-+ next->link.control ^= TRB_CYCLE;
- }
- /* Toggle the cycle bit after the last ring segment. */
- if (last_trb_on_last_seg(xhci, ring, ring->enq_seg, next)) {
-@@ -1707,9 +1724,12 @@ void xhci_handle_event(struct xhci_hcd *
- /*
- * Generic function for queueing a TRB on a ring.
- * The caller must have checked to make sure there's room on the ring.
-+ *
-+ * @more_trbs_coming: Will you enqueue more TRBs before calling
-+ * prepare_transfer()?
- */
- static void queue_trb(struct xhci_hcd *xhci, struct xhci_ring *ring,
-- bool consumer,
-+ bool consumer, bool more_trbs_coming,
- u32 field1, u32 field2, u32 field3, u32 field4)
- {
- struct xhci_generic_trb *trb;
-@@ -1719,7 +1739,7 @@ static void queue_trb(struct xhci_hcd *x
- trb->field[1] = field2;
- trb->field[2] = field3;
- trb->field[3] = field4;
-- inc_enq(xhci, ring, consumer);
-+ inc_enq(xhci, ring, consumer, more_trbs_coming);
- }
-
- /*
-@@ -1988,6 +2008,7 @@ static int queue_bulk_sg_tx(struct xhci_
- int trb_buff_len, this_sg_len, running_total;
- bool first_trb;
- u64 addr;
-+ bool more_trbs_coming;
-
- struct xhci_generic_trb *start_trb;
- int start_cycle;
-@@ -2073,7 +2094,11 @@ static int queue_bulk_sg_tx(struct xhci_
- length_field = TRB_LEN(trb_buff_len) |
- remainder |
- TRB_INTR_TARGET(0);
-- queue_trb(xhci, ep_ring, false,
-+ if (num_trbs > 1)
-+ more_trbs_coming = true;
-+ else
-+ more_trbs_coming = false;
-+ queue_trb(xhci, ep_ring, false, more_trbs_coming,
- lower_32_bits(addr),
- upper_32_bits(addr),
- length_field,
-@@ -2124,6 +2149,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
- int num_trbs;
- struct xhci_generic_trb *start_trb;
- bool first_trb;
-+ bool more_trbs_coming;
- int start_cycle;
- u32 field, length_field;
-
-@@ -2212,7 +2238,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
- length_field = TRB_LEN(trb_buff_len) |
- remainder |
- TRB_INTR_TARGET(0);
-- queue_trb(xhci, ep_ring, false,
-+ if (num_trbs > 1)
-+ more_trbs_coming = true;
-+ else
-+ more_trbs_coming = false;
-+ queue_trb(xhci, ep_ring, false, more_trbs_coming,
- lower_32_bits(addr),
- upper_32_bits(addr),
- length_field,
-@@ -2291,7 +2321,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
- /* Queue setup TRB - see section 6.4.1.2.1 */
- /* FIXME better way to translate setup_packet into two u32 fields? */
- setup = (struct usb_ctrlrequest *) urb->setup_packet;
-- queue_trb(xhci, ep_ring, false,
-+ queue_trb(xhci, ep_ring, false, true,
- /* FIXME endianness is probably going to bite my ass here. */
- setup->bRequestType | setup->bRequest << 8 | setup->wValue << 16,
- setup->wIndex | setup->wLength << 16,
-@@ -2307,7 +2337,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
- if (urb->transfer_buffer_length > 0) {
- if (setup->bRequestType & USB_DIR_IN)
- field |= TRB_DIR_IN;
-- queue_trb(xhci, ep_ring, false,
-+ queue_trb(xhci, ep_ring, false, true,
- lower_32_bits(urb->transfer_dma),
- upper_32_bits(urb->transfer_dma),
- length_field,
-@@ -2324,7 +2354,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
- field = 0;
- else
- field = TRB_DIR_IN;
-- queue_trb(xhci, ep_ring, false,
-+ queue_trb(xhci, ep_ring, false, false,
- 0,
- 0,
- TRB_INTR_TARGET(0),
-@@ -2361,7 +2391,7 @@ static int queue_command(struct xhci_hcd
- "unfailable commands failed.\n");
- return -ENOMEM;
- }
-- queue_trb(xhci, xhci->cmd_ring, false, field1, field2, field3,
-+ queue_trb(xhci, xhci->cmd_ring, false, false, field1, field2, field3,
- field4 | xhci->cmd_ring->cycle_state);
- return 0;
- }