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: USB: Storage: Update unusual_devs entry for Datafab KECF-USB USB: Correct Makefile to make isp1760 buildable USB: option: New mobile broadband modems to be supported USB: two more usb ids for ti_usb_3410_5052 USB: ftdi_sio: unlock_kernel() on error in set_serial_info() USB: usb-storage: add Pentax to the bad-vendor list USB: ftdi_sio: add support for the NDI Polaris system USB: usb-serial: fix the aircable_init failure path USB: usb-storage: remove WARN from last-sector hacks Revert USB: option: add Pantech cards USB: cdc-acm.c: remove duplicate lines for MTK gps support USB: fsl_qe_udc: Fix stalled TX requests bug USB: fsl_qe_udc: Fix muram corruption by disabled endpoints USB: fsl_qe_udc: Fix disconnects reporting during bus reset USB: fsl_qe_udc: Fix QE USB controller initialization USB: fsl_qe_udc: Fix recursive locking bug in ch9getstatus() USB: fsl_qe_udc: Fix oops on QE UDC probe failure
This commit is contained in:
Коммит
d006b2b620
|
@ -11,6 +11,7 @@ obj-$(CONFIG_USB_MON) += mon/
|
|||
obj-$(CONFIG_PCI) += host/
|
||||
obj-$(CONFIG_USB_EHCI_HCD) += host/
|
||||
obj-$(CONFIG_USB_ISP116X_HCD) += host/
|
||||
obj-$(CONFIG_USB_ISP1760_HCD) += host/
|
||||
obj-$(CONFIG_USB_OHCI_HCD) += host/
|
||||
obj-$(CONFIG_USB_UHCI_HCD) += host/
|
||||
obj-$(CONFIG_USB_FHCI_HCD) += host/
|
||||
|
|
|
@ -1349,9 +1349,6 @@ static struct usb_device_id acm_ids[] = {
|
|||
{ USB_DEVICE(0x0e8d, 0x0003), /* FIREFLY, MediaTek Inc; andrey.arapov@gmail.com */
|
||||
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
|
||||
},
|
||||
{ USB_DEVICE(0x0e8d, 0x3329), /* i-blue 747, Qstarz BT-Q1000, Holux M-241 */
|
||||
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
|
||||
},
|
||||
{ USB_DEVICE(0x0e8d, 0x3329), /* MediaTek Inc GPS */
|
||||
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
|
||||
},
|
||||
|
|
|
@ -1622,6 +1622,8 @@ static int qe_ep_disable(struct usb_ep *_ep)
|
|||
nuke(ep, -ESHUTDOWN);
|
||||
ep->desc = NULL;
|
||||
ep->stopped = 1;
|
||||
ep->tx_req = NULL;
|
||||
qe_ep_reset(udc, ep->epnum);
|
||||
spin_unlock_irqrestore(&udc->lock, flags);
|
||||
|
||||
cpm_muram_free(cpm_muram_offset(ep->rxbase));
|
||||
|
@ -1681,14 +1683,11 @@ static void qe_free_request(struct usb_ep *_ep, struct usb_request *_req)
|
|||
kfree(req);
|
||||
}
|
||||
|
||||
/* queues (submits) an I/O request to an endpoint */
|
||||
static int qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
|
||||
gfp_t gfp_flags)
|
||||
static int __qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req)
|
||||
{
|
||||
struct qe_ep *ep = container_of(_ep, struct qe_ep, ep);
|
||||
struct qe_req *req = container_of(_req, struct qe_req, req);
|
||||
struct qe_udc *udc;
|
||||
unsigned long flags;
|
||||
int reval;
|
||||
|
||||
udc = ep->udc;
|
||||
|
@ -1732,7 +1731,7 @@ static int qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
|
|||
list_add_tail(&req->queue, &ep->queue);
|
||||
dev_vdbg(udc->dev, "gadget have request in %s! %d\n",
|
||||
ep->name, req->req.length);
|
||||
spin_lock_irqsave(&udc->lock, flags);
|
||||
|
||||
/* push the request to device */
|
||||
if (ep_is_in(ep))
|
||||
reval = ep_req_send(ep, req);
|
||||
|
@ -1748,11 +1747,24 @@ static int qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
|
|||
if (ep->dir == USB_DIR_OUT)
|
||||
reval = ep_req_receive(ep, req);
|
||||
|
||||
spin_unlock_irqrestore(&udc->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* queues (submits) an I/O request to an endpoint */
|
||||
static int qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
|
||||
gfp_t gfp_flags)
|
||||
{
|
||||
struct qe_ep *ep = container_of(_ep, struct qe_ep, ep);
|
||||
struct qe_udc *udc = ep->udc;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
spin_lock_irqsave(&udc->lock, flags);
|
||||
ret = __qe_ep_queue(_ep, _req);
|
||||
spin_unlock_irqrestore(&udc->lock, flags);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* dequeues (cancels, unlinks) an I/O request from an endpoint */
|
||||
static int qe_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
|
||||
{
|
||||
|
@ -2008,7 +2020,7 @@ static void ch9getstatus(struct qe_udc *udc, u8 request_type, u16 value,
|
|||
udc->ep0_dir = USB_DIR_IN;
|
||||
|
||||
/* data phase */
|
||||
status = qe_ep_queue(&ep->ep, &req->req, GFP_ATOMIC);
|
||||
status = __qe_ep_queue(&ep->ep, &req->req);
|
||||
|
||||
if (status == 0)
|
||||
return;
|
||||
|
@ -2151,6 +2163,9 @@ static int reset_irq(struct qe_udc *udc)
|
|||
{
|
||||
unsigned char i;
|
||||
|
||||
if (udc->usb_state == USB_STATE_DEFAULT)
|
||||
return 0;
|
||||
|
||||
qe_usb_disable();
|
||||
out_8(&udc->usb_regs->usb_usadr, 0);
|
||||
|
||||
|
@ -2442,8 +2457,12 @@ static int __devinit qe_udc_reg_init(struct qe_udc *udc)
|
|||
struct usb_ctlr __iomem *qe_usbregs;
|
||||
qe_usbregs = udc->usb_regs;
|
||||
|
||||
/* Init the usb register */
|
||||
/* Spec says that we must enable the USB controller to change mode. */
|
||||
out_8(&qe_usbregs->usb_usmod, 0x01);
|
||||
/* Mode changed, now disable it, since muram isn't initialized yet. */
|
||||
out_8(&qe_usbregs->usb_usmod, 0x00);
|
||||
|
||||
/* Initialize the rest. */
|
||||
out_be16(&qe_usbregs->usb_usbmr, 0);
|
||||
out_8(&qe_usbregs->usb_uscom, 0);
|
||||
out_be16(&qe_usbregs->usb_usber, USBER_ALL_CLEAR);
|
||||
|
@ -2604,6 +2623,10 @@ static int __devinit qe_udc_probe(struct of_device *ofdev,
|
|||
(unsigned long)udc_controller);
|
||||
/* request irq and disable DR */
|
||||
udc_controller->usb_irq = irq_of_parse_and_map(np, 0);
|
||||
if (!udc_controller->usb_irq) {
|
||||
ret = -EINVAL;
|
||||
goto err_noirq;
|
||||
}
|
||||
|
||||
ret = request_irq(udc_controller->usb_irq, qe_udc_irq, 0,
|
||||
driver_name, udc_controller);
|
||||
|
@ -2625,6 +2648,8 @@ static int __devinit qe_udc_probe(struct of_device *ofdev,
|
|||
err6:
|
||||
free_irq(udc_controller->usb_irq, udc_controller);
|
||||
err5:
|
||||
irq_dispose_mapping(udc_controller->usb_irq);
|
||||
err_noirq:
|
||||
if (udc_controller->nullmap) {
|
||||
dma_unmap_single(udc_controller->gadget.dev.parent,
|
||||
udc_controller->nullp, 256,
|
||||
|
@ -2648,7 +2673,7 @@ err2:
|
|||
iounmap(udc_controller->usb_regs);
|
||||
err1:
|
||||
kfree(udc_controller);
|
||||
|
||||
udc_controller = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2710,6 +2735,7 @@ static int __devexit qe_udc_remove(struct of_device *ofdev)
|
|||
kfree(ep->txframe);
|
||||
|
||||
free_irq(udc_controller->usb_irq, udc_controller);
|
||||
irq_dispose_mapping(udc_controller->usb_irq);
|
||||
|
||||
tasklet_kill(&udc_controller->rx_tasklet);
|
||||
|
||||
|
|
|
@ -621,9 +621,9 @@ static int __init aircable_init(void)
|
|||
goto failed_usb_register;
|
||||
return 0;
|
||||
|
||||
failed_serial_register:
|
||||
usb_serial_deregister(&aircable_device);
|
||||
failed_usb_register:
|
||||
usb_serial_deregister(&aircable_device);
|
||||
failed_serial_register:
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
|
@ -662,6 +662,7 @@ static struct usb_device_id id_table_combined [] = {
|
|||
{ USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
|
||||
{ USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, DIEBOLD_BCS_SE923_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_NDI_HUC_PID) },
|
||||
{ }, /* Optional parameter entry */
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
@ -1064,8 +1065,10 @@ static int set_serial_info(struct tty_struct *tty,
|
|||
|
||||
if (!capable(CAP_SYS_ADMIN)) {
|
||||
if (((new_serial.flags & ~ASYNC_USR_MASK) !=
|
||||
(priv->flags & ~ASYNC_USR_MASK)))
|
||||
(priv->flags & ~ASYNC_USR_MASK))) {
|
||||
unlock_kernel();
|
||||
return -EPERM;
|
||||
}
|
||||
priv->flags = ((priv->flags & ~ASYNC_USR_MASK) |
|
||||
(new_serial.flags & ASYNC_USR_MASK));
|
||||
priv->custom_divisor = new_serial.custom_divisor;
|
||||
|
|
|
@ -844,6 +844,9 @@
|
|||
#define TML_VID 0x1B91 /* Vendor ID */
|
||||
#define TML_USB_SERIAL_PID 0x0064 /* USB - Serial Converter */
|
||||
|
||||
/* NDI Polaris System */
|
||||
#define FTDI_NDI_HUC_PID 0xDA70
|
||||
|
||||
/* Propox devices */
|
||||
#define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
|
||||
|
||||
|
|
|
@ -199,14 +199,15 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po
|
|||
#define NOVATELWIRELESS_PRODUCT_MC950D 0x4400
|
||||
|
||||
/* FUTURE NOVATEL PRODUCTS */
|
||||
#define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000
|
||||
#define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000
|
||||
#define NOVATELWIRELESS_PRODUCT_EMBEDDED_1 0x8000
|
||||
#define NOVATELWIRELESS_PRODUCT_GLOBAL_1 0x9000
|
||||
#define NOVATELWIRELESS_PRODUCT_EVDO_2 0x6001
|
||||
#define NOVATELWIRELESS_PRODUCT_HSPA_2 0x7001
|
||||
#define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001
|
||||
#define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001
|
||||
#define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED 0X6000
|
||||
#define NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED 0X6001
|
||||
#define NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED 0X7000
|
||||
#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED 0X7001
|
||||
#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED 0X8000
|
||||
#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0X8001
|
||||
#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0X9000
|
||||
#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0X9001
|
||||
#define NOVATELWIRELESS_PRODUCT_GLOBAL 0XA001
|
||||
|
||||
/* AMOI PRODUCTS */
|
||||
#define AMOI_VENDOR_ID 0x1614
|
||||
|
@ -216,6 +217,27 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po
|
|||
|
||||
#define DELL_VENDOR_ID 0x413C
|
||||
|
||||
/* Dell modems */
|
||||
#define DELL_PRODUCT_5700_MINICARD 0x8114
|
||||
#define DELL_PRODUCT_5500_MINICARD 0x8115
|
||||
#define DELL_PRODUCT_5505_MINICARD 0x8116
|
||||
#define DELL_PRODUCT_5700_EXPRESSCARD 0x8117
|
||||
#define DELL_PRODUCT_5510_EXPRESSCARD 0x8118
|
||||
|
||||
#define DELL_PRODUCT_5700_MINICARD_SPRINT 0x8128
|
||||
#define DELL_PRODUCT_5700_MINICARD_TELUS 0x8129
|
||||
|
||||
#define DELL_PRODUCT_5720_MINICARD_VZW 0x8133
|
||||
#define DELL_PRODUCT_5720_MINICARD_SPRINT 0x8134
|
||||
#define DELL_PRODUCT_5720_MINICARD_TELUS 0x8135
|
||||
#define DELL_PRODUCT_5520_MINICARD_CINGULAR 0x8136
|
||||
#define DELL_PRODUCT_5520_MINICARD_GENERIC_L 0x8137
|
||||
#define DELL_PRODUCT_5520_MINICARD_GENERIC_I 0x8138
|
||||
|
||||
#define DELL_PRODUCT_5730_MINICARD_SPRINT 0x8180
|
||||
#define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181
|
||||
#define DELL_PRODUCT_5730_MINICARD_VZW 0x8182
|
||||
|
||||
#define KYOCERA_VENDOR_ID 0x0c88
|
||||
#define KYOCERA_PRODUCT_KPC650 0x17da
|
||||
#define KYOCERA_PRODUCT_KPC680 0x180a
|
||||
|
@ -274,12 +296,6 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po
|
|||
#define ERICSSON_VENDOR_ID 0x0bdb
|
||||
#define ERICSSON_PRODUCT_F3507G 0x1900
|
||||
|
||||
/* Pantech products */
|
||||
#define PANTECH_VENDOR_ID 0x106c
|
||||
#define PANTECH_PRODUCT_PC5740 0x3701
|
||||
#define PANTECH_PRODUCT_PC5750 0x3702 /* PX-500 */
|
||||
#define PANTECH_PRODUCT_UM150 0x3711
|
||||
|
||||
static struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
|
||||
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
|
||||
|
@ -395,31 +411,37 @@ static struct usb_device_id option_ids[] = {
|
|||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_1) }, /* Novatel Global product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_2) }, /* Novatel EVDO product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_2) }, /* Novatel HSPA product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED) }, /* Novatel HSPA Embedded product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED) }, /* Novatel EVDO product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED) }, /* Novatel HSPA product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED) }, /* Novatel EVDO Embedded product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED) }, /* Novatel HSPA Embedded product */
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL) }, /* Novatel Global product */
|
||||
|
||||
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
|
||||
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
|
||||
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) },
|
||||
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8117) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8128) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8129) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8133) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8136) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8137) }, /* Dell Wireless HSDPA 5520 */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8138) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5500_MINICARD) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5505_MINICARD) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_EXPRESSCARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5510_EXPRESSCARD) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_SPRINT) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_TELUS) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_VZW) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_SPRINT) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_TELUS) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) }, /* Dell Wireless HSDPA 5520 */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
|
||||
|
@ -488,9 +510,6 @@ static struct usb_device_id option_ids[] = {
|
|||
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
|
||||
{ USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
|
||||
{ USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
|
||||
{ USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5740) },
|
||||
{ USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5750) },
|
||||
{ USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_UM150) },
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, option_ids);
|
||||
|
|
|
@ -176,7 +176,7 @@ static unsigned int product_5052_count;
|
|||
/* the array dimension is the number of default entries plus */
|
||||
/* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
|
||||
/* null entry */
|
||||
static struct usb_device_id ti_id_table_3410[7+TI_EXTRA_VID_PID_COUNT+1] = {
|
||||
static struct usb_device_id ti_id_table_3410[10+TI_EXTRA_VID_PID_COUNT+1] = {
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
|
||||
{ USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
|
||||
|
@ -185,9 +185,11 @@ static struct usb_device_id ti_id_table_3410[7+TI_EXTRA_VID_PID_COUNT+1] = {
|
|||
{ USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_PRODUCT_ID) },
|
||||
{ USB_DEVICE(MTS_VENDOR_ID, MTS_EDGE_PRODUCT_ID) },
|
||||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
|
||||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
|
||||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
|
||||
};
|
||||
|
||||
static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = {
|
||||
static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) },
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
|
||||
|
@ -195,7 +197,7 @@ static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = {
|
|||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
|
||||
};
|
||||
|
||||
static struct usb_device_id ti_id_table_combined[6+2*TI_EXTRA_VID_PID_COUNT+1] = {
|
||||
static struct usb_device_id ti_id_table_combined[14+2*TI_EXTRA_VID_PID_COUNT+1] = {
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
|
||||
{ USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
|
||||
|
@ -208,6 +210,8 @@ static struct usb_device_id ti_id_table_combined[6+2*TI_EXTRA_VID_PID_COUNT+1] =
|
|||
{ USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
|
||||
{ USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
|
||||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
|
||||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
|
||||
{ USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#define IBM_VENDOR_ID 0x04b3
|
||||
#define TI_3410_PRODUCT_ID 0x3410
|
||||
#define IBM_4543_PRODUCT_ID 0x4543
|
||||
#define IBM_454B_PRODUCT_ID 0x454b
|
||||
#define IBM_454C_PRODUCT_ID 0x454c
|
||||
#define TI_3410_EZ430_ID 0xF430 /* TI ez430 development tool */
|
||||
#define TI_5052_BOOT_PRODUCT_ID 0x5052 /* no EEPROM, no firmware */
|
||||
#define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */
|
||||
|
|
|
@ -64,6 +64,7 @@
|
|||
*/
|
||||
#define VENDOR_ID_NOKIA 0x0421
|
||||
#define VENDOR_ID_NIKON 0x04b0
|
||||
#define VENDOR_ID_PENTAX 0x0a17
|
||||
#define VENDOR_ID_MOTOROLA 0x22b8
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -158,6 +159,7 @@ static int slave_configure(struct scsi_device *sdev)
|
|||
switch (le16_to_cpu(us->pusb_dev->descriptor.idVendor)) {
|
||||
case VENDOR_ID_NOKIA:
|
||||
case VENDOR_ID_NIKON:
|
||||
case VENDOR_ID_PENTAX:
|
||||
case VENDOR_ID_MOTOROLA:
|
||||
if (!(us->fflags & (US_FL_FIX_CAPACITY |
|
||||
US_FL_CAPACITY_OK)))
|
||||
|
|
|
@ -558,32 +558,10 @@ static void last_sector_hacks(struct us_data *us, struct scsi_cmnd *srb)
|
|||
|
||||
if (srb->result == SAM_STAT_GOOD && scsi_get_resid(srb) == 0) {
|
||||
|
||||
/* The command succeeded. If the capacity is odd
|
||||
* (i.e., if the sector number is even) then the
|
||||
* "always-even" heuristic would be wrong for this
|
||||
* device. Issue a WARN() so that the kerneloops.org
|
||||
* project will be notified and we will then know to
|
||||
* mark the device with a CAPACITY_OK flag. Hopefully
|
||||
* this will occur for only a few devices.
|
||||
*
|
||||
* Use the sign of us->last_sector_hacks to tell whether
|
||||
* the warning has already been issued; we don't need
|
||||
* more than one warning per device.
|
||||
/* The command succeeded. We know this device doesn't
|
||||
* have the last-sector bug, so stop checking it.
|
||||
*/
|
||||
if (!(sector & 1) && us->use_last_sector_hacks > 0) {
|
||||
unsigned vid = le16_to_cpu(
|
||||
us->pusb_dev->descriptor.idVendor);
|
||||
unsigned pid = le16_to_cpu(
|
||||
us->pusb_dev->descriptor.idProduct);
|
||||
unsigned rev = le16_to_cpu(
|
||||
us->pusb_dev->descriptor.bcdDevice);
|
||||
|
||||
WARN(1, "%s: Successful last sector success at %u, "
|
||||
"device %04x:%04x:%04x\n",
|
||||
sdkp->disk->disk_name, sector,
|
||||
vid, pid, rev);
|
||||
us->use_last_sector_hacks = -1;
|
||||
}
|
||||
us->use_last_sector_hacks = 0;
|
||||
|
||||
} else {
|
||||
/* The command failed. Allow up to 3 retries in case this
|
||||
|
@ -599,14 +577,6 @@ static void last_sector_hacks(struct us_data *us, struct scsi_cmnd *srb)
|
|||
srb->result = SAM_STAT_CHECK_CONDITION;
|
||||
memcpy(srb->sense_buffer, record_not_found,
|
||||
sizeof(record_not_found));
|
||||
|
||||
/* In theory we might want to issue a WARN() here if the
|
||||
* capacity is even, since it could indicate the device
|
||||
* has the READ CAPACITY bug _and_ the real capacity is
|
||||
* odd. But it could also indicate that the device
|
||||
* simply can't access its last sector, a failure mode
|
||||
* which is surprisingly common. So no warning.
|
||||
*/
|
||||
}
|
||||
|
||||
done:
|
||||
|
|
|
@ -1214,7 +1214,7 @@ UNUSUAL_DEV( 0x07c4, 0xa400, 0x0000, 0xffff,
|
|||
"Datafab",
|
||||
"KECF-USB",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_INQUIRY ),
|
||||
US_FL_FIX_INQUIRY | US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* Reported by Rauch Wolke <rauchwolke@gmx.net> */
|
||||
UNUSUAL_DEV( 0x07c4, 0xa4a5, 0x0000, 0xffff,
|
||||
|
@ -1354,21 +1354,6 @@ UNUSUAL_DEV( 0x0a17, 0x0004, 0x1000, 0x1000,
|
|||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_INQUIRY ),
|
||||
|
||||
|
||||
/* Submitted by Per Winkvist <per.winkvist@uk.com> */
|
||||
UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xffff,
|
||||
"Pentax",
|
||||
"Optio S/S4",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_INQUIRY ),
|
||||
|
||||
/* Reported by Jaak Ristioja <Ristioja@gmail.com> */
|
||||
UNUSUAL_DEV( 0x0a17, 0x006e, 0x0100, 0x0100,
|
||||
"Pentax",
|
||||
"K10D",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
|
||||
/* These are virtual windows driver CDs, which the zd1211rw driver
|
||||
* automatically converts into WLAN devices. */
|
||||
UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101,
|
||||
|
|
Загрузка…
Ссылка в новой задаче