mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (23 commits) USB: revert recovery from transient errors usb: unusual devs patch for Nokia 5310 Music Xpress usb: ftdi_sio: add support for Domintell devices USB: drivers/usb/musb/: disable it on SuperH USB Serial: Sierra: Add MC8785 VID/PID USB: serial: add ZTE CDMA Tech id to option driver USB: ftdi_sio: Add 0x5050/0x0900 USB IDs (Papouch Quido USB 4/4) usb serial: ti_usb_3410_5052 obviously broken by firmware changes USB: fsl_usb2_udc: fix VDBG() format string USB: unusual_devs addition for RockChip MP3 player USB: SERIAL CP2101 add device IDs usb-serial: Add Siemens EF81 to PL-2303 hack triggers USB: fix EHCI periodic transfers usb: musb: fix include path USB: Fixing Nokia 3310c in storage mode usb gadget: fix omap_udc DMA regression USB: update of Documentation/usb/anchors.txt USB: fix hcd interrupt disabling USB: Correct Sierra Wireless USB EVDO Modem Device ID USB: Fix the Nokia 6300 storage-mode. ...
This commit is contained in:
commit
fb478da5ba
@ -42,9 +42,21 @@ This function kills all URBs associated with an anchor. The URBs
|
||||
are called in the reverse temporal order they were submitted.
|
||||
This way no data can be reordered.
|
||||
|
||||
usb_unlink_anchored_urbs()
|
||||
--------------------------
|
||||
|
||||
This function unlinks all URBs associated with an anchor. The URBs
|
||||
are processed in the reverse temporal order they were submitted.
|
||||
This is similar to usb_kill_anchored_urbs(), but it will not sleep.
|
||||
Therefore no guarantee is made that the URBs have been unlinked when
|
||||
the call returns. They may be unlinked later but will be unlinked in
|
||||
finite time.
|
||||
|
||||
usb_wait_anchor_empty_timeout()
|
||||
-------------------------------
|
||||
|
||||
This function waits for all URBs associated with an anchor to finish
|
||||
or a timeout, whichever comes first. Its return value will tell you
|
||||
whether the timeout was reached.
|
||||
|
||||
|
||||
|
@ -1876,6 +1876,7 @@ int usb_add_hcd(struct usb_hcd *hcd,
|
||||
* with IRQF_SHARED. As usb_hcd_irq() will always disable
|
||||
* interrupts we can remove it here.
|
||||
*/
|
||||
if (irqflags & IRQF_SHARED)
|
||||
irqflags &= ~IRQF_DISABLED;
|
||||
|
||||
snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d",
|
||||
|
@ -2683,35 +2683,17 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
|
||||
USB_PORT_STAT_C_ENABLE);
|
||||
#endif
|
||||
|
||||
/* Try to use the debounce delay for protection against
|
||||
* port-enable changes caused, for example, by EMI.
|
||||
*/
|
||||
if (portchange & (USB_PORT_STAT_C_CONNECTION |
|
||||
USB_PORT_STAT_C_ENABLE)) {
|
||||
status = hub_port_debounce(hub, port1);
|
||||
if (status < 0) {
|
||||
if (printk_ratelimit())
|
||||
dev_err (hub_dev, "connect-debounce failed, "
|
||||
"port %d disabled\n", port1);
|
||||
portstatus &= ~USB_PORT_STAT_CONNECTION;
|
||||
} else {
|
||||
portstatus = status;
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to resuscitate an existing device */
|
||||
udev = hdev->children[port1-1];
|
||||
if ((portstatus & USB_PORT_STAT_CONNECTION) && udev &&
|
||||
udev->state != USB_STATE_NOTATTACHED) {
|
||||
|
||||
usb_lock_device(udev);
|
||||
if (portstatus & USB_PORT_STAT_ENABLE) {
|
||||
status = 0; /* Nothing to do */
|
||||
} else if (!udev->persist_enabled) {
|
||||
status = -ENODEV; /* Mustn't resuscitate */
|
||||
|
||||
#ifdef CONFIG_USB_SUSPEND
|
||||
} else if (udev->state == USB_STATE_SUSPENDED) {
|
||||
} else if (udev->state == USB_STATE_SUSPENDED &&
|
||||
udev->persist_enabled) {
|
||||
/* For a suspended device, treat this as a
|
||||
* remote wakeup event.
|
||||
*/
|
||||
@ -2726,7 +2708,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
|
||||
#endif
|
||||
|
||||
} else {
|
||||
status = usb_reset_device(udev);
|
||||
status = -ENODEV; /* Don't resuscitate */
|
||||
}
|
||||
usb_unlock_device(udev);
|
||||
|
||||
@ -2741,6 +2723,19 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
|
||||
usb_disconnect(&hdev->children[port1-1]);
|
||||
clear_bit(port1, hub->change_bits);
|
||||
|
||||
if (portchange & (USB_PORT_STAT_C_CONNECTION |
|
||||
USB_PORT_STAT_C_ENABLE)) {
|
||||
status = hub_port_debounce(hub, port1);
|
||||
if (status < 0) {
|
||||
if (printk_ratelimit())
|
||||
dev_err(hub_dev, "connect-debounce failed, "
|
||||
"port %d disabled\n", port1);
|
||||
portstatus &= ~USB_PORT_STAT_CONNECTION;
|
||||
} else {
|
||||
portstatus = status;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return now if debouncing failed or nothing is connected */
|
||||
if (!(portstatus & USB_PORT_STAT_CONNECTION)) {
|
||||
|
||||
|
@ -223,7 +223,7 @@ static int dr_controller_setup(struct fsl_udc *udc)
|
||||
fsl_writel(tmp, &dr_regs->endpointlistaddr);
|
||||
|
||||
VDBG("vir[qh_base] is %p phy[qh_base] is 0x%8x reg is 0x%8x",
|
||||
(int)udc->ep_qh, (int)tmp,
|
||||
udc->ep_qh, (int)tmp,
|
||||
fsl_readl(&dr_regs->endpointlistaddr));
|
||||
|
||||
/* Config PHY interface */
|
||||
|
@ -787,7 +787,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
|
||||
omap_set_dma_dest_params(ep->lch,
|
||||
OMAP_DMA_PORT_TIPB,
|
||||
OMAP_DMA_AMODE_CONSTANT,
|
||||
(unsigned long) io_v2p(UDC_DATA_DMA),
|
||||
UDC_DATA_DMA,
|
||||
0, 0);
|
||||
}
|
||||
} else {
|
||||
@ -804,7 +804,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
|
||||
omap_set_dma_src_params(ep->lch,
|
||||
OMAP_DMA_PORT_TIPB,
|
||||
OMAP_DMA_AMODE_CONSTANT,
|
||||
(unsigned long) io_v2p(UDC_DATA_DMA),
|
||||
UDC_DATA_DMA,
|
||||
0, 0);
|
||||
/* EMIFF or SDRC */
|
||||
omap_set_dma_dest_burst_mode(ep->lch,
|
||||
|
@ -145,16 +145,6 @@ static int handshake (struct ehci_hcd *ehci, void __iomem *ptr,
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
static int handshake_on_error_set_halt(struct ehci_hcd *ehci, void __iomem *ptr,
|
||||
u32 mask, u32 done, int usec)
|
||||
{
|
||||
int error = handshake(ehci, ptr, mask, done, usec);
|
||||
if (error)
|
||||
ehci_to_hcd(ehci)->state = HC_STATE_HALT;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/* force HC to halt state from unknown (EHCI spec section 2.3) */
|
||||
static int ehci_halt (struct ehci_hcd *ehci)
|
||||
{
|
||||
@ -173,6 +163,22 @@ static int ehci_halt (struct ehci_hcd *ehci)
|
||||
STS_HALT, STS_HALT, 16 * 125);
|
||||
}
|
||||
|
||||
static int handshake_on_error_set_halt(struct ehci_hcd *ehci, void __iomem *ptr,
|
||||
u32 mask, u32 done, int usec)
|
||||
{
|
||||
int error;
|
||||
|
||||
error = handshake(ehci, ptr, mask, done, usec);
|
||||
if (error) {
|
||||
ehci_halt(ehci);
|
||||
ehci_to_hcd(ehci)->state = HC_STATE_HALT;
|
||||
ehci_err(ehci, "force halt; handhake %p %08x %08x -> %d\n",
|
||||
ptr, mask, done, error);
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/* put TDI/ARC silicon into EHCI mode */
|
||||
static void tdi_reset (struct ehci_hcd *ehci)
|
||||
{
|
||||
|
@ -437,6 +437,9 @@ static int enable_periodic (struct ehci_hcd *ehci)
|
||||
u32 cmd;
|
||||
int status;
|
||||
|
||||
if (ehci->periodic_sched++)
|
||||
return 0;
|
||||
|
||||
/* did clearing PSE did take effect yet?
|
||||
* takes effect only at frame boundaries...
|
||||
*/
|
||||
@ -461,6 +464,9 @@ static int disable_periodic (struct ehci_hcd *ehci)
|
||||
u32 cmd;
|
||||
int status;
|
||||
|
||||
if (--ehci->periodic_sched)
|
||||
return 0;
|
||||
|
||||
/* did setting PSE not take effect yet?
|
||||
* takes effect only at frame boundaries...
|
||||
*/
|
||||
@ -544,13 +550,10 @@ static int qh_link_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
: (qh->usecs * 8);
|
||||
|
||||
/* maybe enable periodic schedule processing */
|
||||
if (!ehci->periodic_sched++)
|
||||
return enable_periodic(ehci);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void qh_unlink_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
static int qh_unlink_periodic(struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
{
|
||||
unsigned i;
|
||||
unsigned period;
|
||||
@ -586,9 +589,7 @@ static void qh_unlink_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
qh_put (qh);
|
||||
|
||||
/* maybe turn off periodic schedule */
|
||||
ehci->periodic_sched--;
|
||||
if (!ehci->periodic_sched)
|
||||
(void) disable_periodic (ehci);
|
||||
return disable_periodic(ehci);
|
||||
}
|
||||
|
||||
static void intr_deschedule (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
@ -1562,9 +1563,7 @@ itd_link_urb (
|
||||
urb->hcpriv = NULL;
|
||||
|
||||
timer_action (ehci, TIMER_IO_WATCHDOG);
|
||||
if (unlikely (!ehci->periodic_sched++))
|
||||
return enable_periodic(ehci);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define ISO_ERRS (EHCI_ISOC_BUF_ERR | EHCI_ISOC_BABBLE | EHCI_ISOC_XACTERR)
|
||||
@ -1642,7 +1641,7 @@ itd_complete (
|
||||
ehci_urb_done(ehci, urb, 0);
|
||||
retval = true;
|
||||
urb = NULL;
|
||||
ehci->periodic_sched--;
|
||||
(void) disable_periodic(ehci);
|
||||
ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
|
||||
|
||||
if (unlikely (list_empty (&stream->td_list))) {
|
||||
@ -1951,9 +1950,7 @@ sitd_link_urb (
|
||||
urb->hcpriv = NULL;
|
||||
|
||||
timer_action (ehci, TIMER_IO_WATCHDOG);
|
||||
if (!ehci->periodic_sched++)
|
||||
return enable_periodic(ehci);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
@ -2019,7 +2016,7 @@ sitd_complete (
|
||||
ehci_urb_done(ehci, urb, 0);
|
||||
retval = true;
|
||||
urb = NULL;
|
||||
ehci->periodic_sched--;
|
||||
(void) disable_periodic(ehci);
|
||||
ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
|
||||
|
||||
if (list_empty (&stream->td_list)) {
|
||||
@ -2243,8 +2240,7 @@ restart:
|
||||
if (unlikely (modified)) {
|
||||
if (likely(ehci->periodic_sched > 0))
|
||||
goto restart;
|
||||
/* maybe we can short-circuit this scan! */
|
||||
disable_periodic(ehci);
|
||||
/* short-circuit this scan */
|
||||
now_uframe = clock;
|
||||
break;
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ comment "Enable Host or Gadget support to see Inventra options"
|
||||
# (M)HDRC = (Multipoint) Highspeed Dual-Role Controller
|
||||
config USB_MUSB_HDRC
|
||||
depends on (USB || USB_GADGET) && HAVE_CLK
|
||||
depends on !SUPERH
|
||||
select TWL4030_USB if MACH_OMAP_3430SDP
|
||||
tristate 'Inventra Highspeed Dual Role Controller (TI, ...)'
|
||||
help
|
||||
|
@ -100,8 +100,8 @@
|
||||
#include <linux/io.h>
|
||||
|
||||
#ifdef CONFIG_ARM
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/memory.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/memory.h>
|
||||
#include <asm/mach-types.h>
|
||||
#endif
|
||||
|
||||
|
@ -35,8 +35,8 @@
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/mux.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/mux.h>
|
||||
|
||||
#include "musb_core.h"
|
||||
#include "omap2430.h"
|
||||
|
@ -11,8 +11,8 @@
|
||||
#define __MUSB_OMAP243X_H__
|
||||
|
||||
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/usb.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/usb.h>
|
||||
|
||||
/*
|
||||
* OMAP2430-specific definitions
|
||||
|
@ -72,6 +72,7 @@ static struct usb_device_id id_table [] = {
|
||||
{ USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
|
||||
{ USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */
|
||||
{ USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
|
||||
{ USB_DEVICE(0x10C4, 0x8115) }, /* Arygon NFC/Mifare Reader */
|
||||
{ USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */
|
||||
{ USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
|
||||
{ USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
|
||||
@ -83,6 +84,7 @@ static struct usb_device_id id_table [] = {
|
||||
{ USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */
|
||||
{ USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */
|
||||
{ USB_DEVICE(0x10c4, 0x8293) }, /* Telegesys ETRX2USB */
|
||||
{ USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */
|
||||
{ USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
|
||||
{ USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
|
||||
{ USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */
|
||||
@ -93,6 +95,7 @@ static struct usb_device_id id_table [] = {
|
||||
{ USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
|
||||
{ USB_DEVICE(0x166A, 0x0303) }, /* Clipsal 5500PCU C-Bus USB interface */
|
||||
{ USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
|
||||
{ USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
|
||||
{ } /* Terminating Entry */
|
||||
};
|
||||
|
||||
|
@ -654,6 +654,9 @@ static struct usb_device_id id_table_combined [] = {
|
||||
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
|
||||
{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
|
||||
{ USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
|
||||
{ }, /* Optional parameter entry */
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
@ -750,6 +750,7 @@
|
||||
|
||||
#define PAPOUCH_VID 0x5050 /* Vendor ID */
|
||||
#define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
|
||||
#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
|
||||
|
||||
/*
|
||||
* ACG Identification Technologies GmbH products (http://www.acg.de/).
|
||||
@ -838,6 +839,10 @@
|
||||
/* Rig Expert Ukraine devices */
|
||||
#define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
|
||||
|
||||
/* Domintell products http://www.domintell.com */
|
||||
#define FTDI_DOMINTELL_DGQG_PID 0xEF50 /* Master */
|
||||
#define FTDI_DOMINTELL_DUSB_PID 0xEF51 /* DUSB01 module */
|
||||
|
||||
/* Commands */
|
||||
#define FTDI_SIO_RESET 0 /* Reset the port */
|
||||
#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
|
||||
|
@ -218,6 +218,7 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po
|
||||
/* ZTE PRODUCTS */
|
||||
#define ZTE_VENDOR_ID 0x19d2
|
||||
#define ZTE_PRODUCT_MF628 0x0015
|
||||
#define ZTE_PRODUCT_CDMA_TECH 0xfffe
|
||||
|
||||
static struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
|
||||
@ -347,6 +348,7 @@ static struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
|
||||
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
|
||||
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
|
||||
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, option_ids);
|
||||
|
@ -14,7 +14,7 @@
|
||||
Whom based his on the Keyspan driver by Hugh Blemings <hugh@blemings.org>
|
||||
*/
|
||||
|
||||
#define DRIVER_VERSION "v.1.2.13a"
|
||||
#define DRIVER_VERSION "v.1.3.2"
|
||||
#define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>"
|
||||
#define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"
|
||||
|
||||
@ -30,9 +30,6 @@
|
||||
|
||||
#define SWIMS_USB_REQUEST_SetPower 0x00
|
||||
#define SWIMS_USB_REQUEST_SetNmea 0x07
|
||||
#define SWIMS_USB_REQUEST_SetMode 0x0B
|
||||
#define SWIMS_USB_REQUEST_GetSwocInfo 0x0A
|
||||
#define SWIMS_SET_MODE_Modem 0x0001
|
||||
|
||||
/* per port private data */
|
||||
#define N_IN_URB 4
|
||||
@ -163,7 +160,7 @@ static struct usb_device_id id_table [] = {
|
||||
{ USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */
|
||||
{ USB_DEVICE(0x1199, 0x0018) }, /* Sierra Wireless MC5720 */
|
||||
{ USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */
|
||||
{ USB_DEVICE(0x0f30, 0x1b1d) }, /* Sierra Wireless MC5720 */
|
||||
{ USB_DEVICE(0x03f0, 0x1b1d) }, /* HP ev2200 a.k.a MC5720 */
|
||||
{ USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */
|
||||
{ USB_DEVICE(0x1199, 0x0024) }, /* Sierra Wireless MC5727 */
|
||||
{ USB_DEVICE(0x1199, 0x0220) }, /* Sierra Wireless MC5725 */
|
||||
@ -175,6 +172,8 @@ static struct usb_device_id id_table [] = {
|
||||
/* Sierra Wireless Device */
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x0025, 0xFF, 0xFF, 0xFF) },
|
||||
{ USB_DEVICE(0x1199, 0x0026) }, /* Sierra Wireless Device */
|
||||
{ USB_DEVICE(0x1199, 0x0027) }, /* Sierra Wireless Device */
|
||||
{ USB_DEVICE(0x1199, 0x0028) }, /* Sierra Wireless Device */
|
||||
|
||||
{ USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
|
||||
{ USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
|
||||
@ -187,6 +186,7 @@ static struct usb_device_id id_table [] = {
|
||||
{ USB_DEVICE(0x1199, 0x6821) }, /* Sierra Wireless AirCard 875U */
|
||||
{ USB_DEVICE(0x1199, 0x6832) }, /* Sierra Wireless MC8780 */
|
||||
{ USB_DEVICE(0x1199, 0x6833) }, /* Sierra Wireless MC8781 */
|
||||
{ USB_DEVICE(0x1199, 0x683A) }, /* Sierra Wireless MC8785 */
|
||||
{ USB_DEVICE(0x1199, 0x683B) }, /* Sierra Wireless MC8785 Composite */
|
||||
{ USB_DEVICE(0x1199, 0x683C) }, /* Sierra Wireless MC8790 */
|
||||
{ USB_DEVICE(0x1199, 0x683D) }, /* Sierra Wireless MC8790 */
|
||||
@ -204,6 +204,8 @@ static struct usb_device_id id_table [] = {
|
||||
/* Sierra Wireless Device */
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6890, 0xFF, 0xFF, 0xFF)},
|
||||
/* Sierra Wireless Device */
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6891, 0xFF, 0xFF, 0xFF)},
|
||||
/* Sierra Wireless Device */
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)},
|
||||
|
||||
{ USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */
|
||||
|
@ -1744,7 +1744,7 @@ static int ti_download_firmware(struct ti_device *tdev, int type)
|
||||
if (buffer) {
|
||||
memcpy(buffer, fw_p->data, fw_p->size);
|
||||
memset(buffer + fw_p->size, 0xff, buffer_size - fw_p->size);
|
||||
ti_do_download(dev, pipe, buffer, fw_p->size);
|
||||
status = ti_do_download(dev, pipe, buffer, fw_p->size);
|
||||
kfree(buffer);
|
||||
}
|
||||
release_firmware(fw_p);
|
||||
|
@ -733,7 +733,9 @@ int usb_serial_probe(struct usb_interface *interface,
|
||||
((le16_to_cpu(dev->descriptor.idVendor) == ATEN_VENDOR_ID) &&
|
||||
(le16_to_cpu(dev->descriptor.idProduct) == ATEN_PRODUCT_ID)) ||
|
||||
((le16_to_cpu(dev->descriptor.idVendor) == ALCOR_VENDOR_ID) &&
|
||||
(le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID))) {
|
||||
(le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID)) ||
|
||||
((le16_to_cpu(dev->descriptor.idVendor) == SIEMENS_VENDOR_ID) &&
|
||||
(le16_to_cpu(dev->descriptor.idProduct) == SIEMENS_PRODUCT_ID_EF81))) {
|
||||
if (interface != dev->actconfig->interface[0]) {
|
||||
/* check out the endpoints of the other interface*/
|
||||
iface_desc = dev->actconfig->interface[0]->cur_altsetting;
|
||||
|
@ -146,18 +146,6 @@ config USB_STORAGE_KARMA
|
||||
on the resulting scsi device node returns the Karma to normal
|
||||
operation.
|
||||
|
||||
config USB_STORAGE_SIERRA
|
||||
bool "Sierra Wireless TRU-Install Feature Support"
|
||||
depends on USB_STORAGE
|
||||
help
|
||||
Say Y here to include additional code to support Sierra Wireless
|
||||
products with the TRU-Install feature (e.g., AC597E, AC881U).
|
||||
|
||||
This code switches the Sierra Wireless device from being in
|
||||
Mass Storage mode to Modem mode. It also has the ability to
|
||||
support host software upgrades should full Linux support be added
|
||||
to TRU-Install.
|
||||
|
||||
config USB_STORAGE_CYPRESS_ATACB
|
||||
bool "SAT emulation on Cypress USB/ATA Bridge with ATACB"
|
||||
depends on USB_STORAGE
|
||||
|
@ -21,11 +21,10 @@ usb-storage-obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += jumpshot.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_ALAUDA) += alauda.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_ONETOUCH) += onetouch.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_KARMA) += karma.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_SIERRA) += sierra_ms.o
|
||||
usb-storage-obj-$(CONFIG_USB_STORAGE_CYPRESS_ATACB) += cypress_atacb.o
|
||||
|
||||
usb-storage-objs := scsiglue.o protocol.o transport.o usb.o \
|
||||
initializers.o $(usb-storage-obj-y)
|
||||
initializers.o sierra_ms.o $(usb-storage-obj-y)
|
||||
|
||||
ifneq ($(CONFIG_USB_LIBUSUAL),)
|
||||
obj-$(CONFIG_USB) += libusual.o
|
||||
|
@ -160,6 +160,13 @@ UNUSUAL_DEV( 0x0421, 0x0019, 0x0592, 0x0592,
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_MAX_SECTORS_64 ),
|
||||
|
||||
/* Reported by Filip Joelsson <filip@blueturtle.nu> */
|
||||
UNUSUAL_DEV( 0x0421, 0x005d, 0x0001, 0x0600,
|
||||
"Nokia",
|
||||
"Nokia 3110c",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* Reported by Mario Rettig <mariorettig@web.de> */
|
||||
UNUSUAL_DEV( 0x0421, 0x042e, 0x0100, 0x0100,
|
||||
"Nokia",
|
||||
@ -232,6 +239,20 @@ UNUSUAL_DEV( 0x0421, 0x04b9, 0x0551, 0x0551,
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* Reported by Richard Nauber <RichardNauber@web.de> */
|
||||
UNUSUAL_DEV( 0x0421, 0x04fa, 0x0601, 0x0601,
|
||||
"Nokia",
|
||||
"6300",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* Patch for Nokia 5310 capacity */
|
||||
UNUSUAL_DEV( 0x0421, 0x006a, 0x0000, 0x0591,
|
||||
"Nokia",
|
||||
"5310",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* Reported by Olaf Hering <olh@suse.de> from novell bug #105878 */
|
||||
UNUSUAL_DEV( 0x0424, 0x0fdc, 0x0210, 0x0210,
|
||||
"SMSC",
|
||||
@ -987,6 +1008,13 @@ UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001,
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* Reported by Adrian Pilchowiec <adi1981@epf.pl> */
|
||||
UNUSUAL_DEV( 0x071b, 0x3203, 0x0000, 0x0000,
|
||||
"RockChip",
|
||||
"MP3",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_NO_WP_DETECT | US_FL_MAX_SECTORS_64),
|
||||
|
||||
/* Reported by Massimiliano Ghilardi <massimiliano.ghilardi@gmail.com>
|
||||
* This USB MP3/AVI player device fails and disconnects if more than 128
|
||||
* sectors (64kB) are read/written in a single command, and may be present
|
||||
@ -1576,7 +1604,6 @@ UNUSUAL_DEV( 0x10d6, 0x2200, 0x0100, 0x0100,
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
0),
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE_SIERRA
|
||||
/* Reported by Kevin Lloyd <linux@sierrawireless.com>
|
||||
* Entry is needed for the initializer function override,
|
||||
* which instructs the device to load as a modem
|
||||
@ -1587,7 +1614,6 @@ UNUSUAL_DEV( 0x1199, 0x0fff, 0x0000, 0x9999,
|
||||
"USB MMC Storage",
|
||||
US_SC_DEVICE, US_PR_DEVICE, sierra_ms_init,
|
||||
0),
|
||||
#endif
|
||||
|
||||
/* Reported by Jaco Kroon <jaco@kroon.co.za>
|
||||
* The usb-storage module found on the Digitech GNX4 (and supposedly other
|
||||
|
@ -102,9 +102,7 @@
|
||||
#ifdef CONFIG_USB_STORAGE_CYPRESS_ATACB
|
||||
#include "cypress_atacb.h"
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_SIERRA
|
||||
#include "sierra_ms.h"
|
||||
#endif
|
||||
|
||||
/* Some informational data */
|
||||
MODULE_AUTHOR("Matthew Dharm <mdharm-usb@one-eyed-alien.net>");
|
||||
|
Loading…
Reference in New Issue
Block a user