Merge 3.8-rc4 into usb-next
This pulls in all of the -rc4 fixes into usb-next to sync things up. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -37,6 +37,7 @@ config USB_ARCH_HAS_EHCI
|
||||
default y if ARCH_W90X900
|
||||
default y if ARCH_AT91
|
||||
default y if ARCH_MXC
|
||||
default y if ARCH_MXS
|
||||
default y if ARCH_OMAP3
|
||||
default y if ARCH_CNS3XXX
|
||||
default y if ARCH_VT8500
|
||||
|
@@ -70,6 +70,9 @@ static int host_start(struct ci13xxx *ci)
|
||||
else
|
||||
ci->hcd = hcd;
|
||||
|
||||
if (ci->platdata->flags & CI13XXX_DISABLE_STREAMING)
|
||||
hw_write(ci, OP_USBMODE, USBMODE_CI_SDIS, USBMODE_CI_SDIS);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -1602,6 +1602,9 @@ static const struct usb_device_id acm_ids[] = {
|
||||
{ USB_DEVICE(0x0572, 0x1340), /* Conexant CX93010-2x UCMxx */
|
||||
.driver_info = NO_UNION_NORMAL,
|
||||
},
|
||||
{ USB_DEVICE(0x05f9, 0x4002), /* PSC Scanning, Magellan 800i */
|
||||
.driver_info = NO_UNION_NORMAL,
|
||||
},
|
||||
{ USB_DEVICE(0x1bbb, 0x0003), /* Alcatel OT-I650 */
|
||||
.driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */
|
||||
},
|
||||
|
@@ -3013,7 +3013,7 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
|
||||
static int finish_port_resume(struct usb_device *udev)
|
||||
{
|
||||
int status = 0;
|
||||
u16 devstatus;
|
||||
u16 devstatus = 0;
|
||||
|
||||
/* caller owns the udev device lock */
|
||||
dev_dbg(&udev->dev, "%s\n",
|
||||
@@ -3058,7 +3058,13 @@ static int finish_port_resume(struct usb_device *udev)
|
||||
if (status) {
|
||||
dev_dbg(&udev->dev, "gone after usb resume? status %d\n",
|
||||
status);
|
||||
} else if (udev->actconfig) {
|
||||
/*
|
||||
* There are a few quirky devices which violate the standard
|
||||
* by claiming to have remote wakeup enabled after a reset,
|
||||
* which crash if the feature is cleared, hence check for
|
||||
* udev->reset_resume
|
||||
*/
|
||||
} else if (udev->actconfig && !udev->reset_resume) {
|
||||
le16_to_cpus(&devstatus);
|
||||
if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) {
|
||||
status = usb_control_msg(udev,
|
||||
|
@@ -43,6 +43,9 @@ static const struct usb_device_id usb_quirk_list[] = {
|
||||
/* Creative SB Audigy 2 NX */
|
||||
{ USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
/* Microsoft LifeCam-VX700 v2.0 */
|
||||
{ USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
/* Logitech Quickcam Fusion */
|
||||
{ USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
|
@@ -230,7 +230,7 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
|
||||
|
||||
switch (phy_mode) {
|
||||
case FSL_USB2_PHY_ULPI:
|
||||
if (pdata->controller_ver) {
|
||||
if (pdata->have_sysif_regs && pdata->controller_ver) {
|
||||
/* controller version 1.6 or above */
|
||||
setbits32(non_ehci + FSL_SOC_USB_CTRL,
|
||||
ULPI_PHY_CLK_SEL);
|
||||
@@ -251,7 +251,7 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
|
||||
portsc |= PORT_PTS_PTW;
|
||||
/* fall through */
|
||||
case FSL_USB2_PHY_UTMI:
|
||||
if (pdata->controller_ver) {
|
||||
if (pdata->have_sysif_regs && pdata->controller_ver) {
|
||||
/* controller version 1.6 or above */
|
||||
setbits32(non_ehci + FSL_SOC_USB_CTRL, UTMI_PHY_EN);
|
||||
mdelay(FSL_UTMI_PHY_DLY); /* Delay for UTMI PHY CLK to
|
||||
@@ -267,7 +267,8 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
|
||||
break;
|
||||
}
|
||||
|
||||
if (pdata->controller_ver && (phy_mode == FSL_USB2_PHY_ULPI)) {
|
||||
if (pdata->have_sysif_regs && pdata->controller_ver &&
|
||||
(phy_mode == FSL_USB2_PHY_ULPI)) {
|
||||
/* check PHY_CLK_VALID to get phy clk valid */
|
||||
if (!spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
|
||||
PHY_CLK_VALID, FSL_USB_PHY_CLK_TIMEOUT, 0)) {
|
||||
@@ -278,7 +279,7 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
|
||||
|
||||
ehci_writel(ehci, portsc, &ehci->regs->port_status[port_offset]);
|
||||
|
||||
if (phy_mode != FSL_USB2_PHY_ULPI)
|
||||
if (phy_mode != FSL_USB2_PHY_ULPI && pdata->have_sysif_regs)
|
||||
setbits32(non_ehci + FSL_SOC_USB_CTRL, USB_CTRL_USB_EN);
|
||||
|
||||
return 0;
|
||||
|
@@ -325,7 +325,7 @@ static int __exit ehci_orion_drv_remove(struct platform_device *pdev)
|
||||
|
||||
MODULE_ALIAS("platform:orion-ehci");
|
||||
|
||||
static const struct of_device_id ehci_orion_dt_ids[] __devinitdata = {
|
||||
static const struct of_device_id ehci_orion_dt_ids[] = {
|
||||
{ .compatible = "marvell,orion-ehci", },
|
||||
{},
|
||||
};
|
||||
|
@@ -200,6 +200,26 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
|
||||
break;
|
||||
}
|
||||
|
||||
/* optional debug port, normally in the first BAR */
|
||||
temp = pci_find_capability(pdev, PCI_CAP_ID_DBG);
|
||||
if (temp) {
|
||||
pci_read_config_dword(pdev, temp, &temp);
|
||||
temp >>= 16;
|
||||
if (((temp >> 13) & 7) == 1) {
|
||||
u32 hcs_params = ehci_readl(ehci,
|
||||
&ehci->caps->hcs_params);
|
||||
|
||||
temp &= 0x1fff;
|
||||
ehci->debug = hcd->regs + temp;
|
||||
temp = ehci_readl(ehci, &ehci->debug->control);
|
||||
ehci_info(ehci, "debug port %d%s\n",
|
||||
HCS_DEBUG_PORT(hcs_params),
|
||||
(temp & DBGP_ENABLED) ? " IN USE" : "");
|
||||
if (!(temp & DBGP_ENABLED))
|
||||
ehci->debug = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
retval = ehci_setup(hcd);
|
||||
if (retval)
|
||||
return retval;
|
||||
@@ -228,25 +248,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
|
||||
break;
|
||||
}
|
||||
|
||||
/* optional debug port, normally in the first BAR */
|
||||
temp = pci_find_capability(pdev, 0x0a);
|
||||
if (temp) {
|
||||
pci_read_config_dword(pdev, temp, &temp);
|
||||
temp >>= 16;
|
||||
if ((temp & (3 << 13)) == (1 << 13)) {
|
||||
temp &= 0x1fff;
|
||||
ehci->debug = hcd->regs + temp;
|
||||
temp = ehci_readl(ehci, &ehci->debug->control);
|
||||
ehci_info(ehci, "debug port %d%s\n",
|
||||
HCS_DEBUG_PORT(ehci->hcs_params),
|
||||
(temp & DBGP_ENABLED)
|
||||
? " IN USE"
|
||||
: "");
|
||||
if (!(temp & DBGP_ENABLED))
|
||||
ehci->debug = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* at least the Genesys GL880S needs fixup here */
|
||||
temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params);
|
||||
temp &= 0x0f;
|
||||
|
@@ -142,6 +142,9 @@ static int usb_get_ver_info(struct device_node *np)
|
||||
return ver;
|
||||
}
|
||||
|
||||
if (of_device_is_compatible(np, "fsl,mpc5121-usb2-dr"))
|
||||
return FSL_USB_VER_OLD;
|
||||
|
||||
if (of_device_is_compatible(np, "fsl-usb2-mph")) {
|
||||
if (of_device_is_compatible(np, "fsl-usb2-mph-v1.6"))
|
||||
ver = FSL_USB_VER_1_6;
|
||||
|
@@ -58,6 +58,7 @@
|
||||
#include <linux/usb.h>
|
||||
#include <linux/usb/hcd.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include "imx21-hcd.h"
|
||||
|
||||
|
@@ -128,7 +128,8 @@ static void tmio_start_hc(struct platform_device *dev)
|
||||
tmio_iowrite8(2, tmio->ccr + CCR_INTC);
|
||||
|
||||
dev_info(&dev->dev, "revision %d @ 0x%08llx, irq %d\n",
|
||||
tmio_ioread8(tmio->ccr + CCR_REVID), hcd->rsrc_start, hcd->irq);
|
||||
tmio_ioread8(tmio->ccr + CCR_REVID),
|
||||
(u64) hcd->rsrc_start, hcd->irq);
|
||||
}
|
||||
|
||||
static int ohci_tmio_start(struct usb_hcd *hcd)
|
||||
|
@@ -2179,7 +2179,7 @@ usbtest_ioctl(struct usb_interface *intf, unsigned int code, void *buf)
|
||||
if (dev->out_pipe == 0 || !param->length || param->sglen < 4)
|
||||
break;
|
||||
retval = 0;
|
||||
dev_info(&intf->dev, "TEST 17: unlink from %d queues of "
|
||||
dev_info(&intf->dev, "TEST 24: unlink from %d queues of "
|
||||
"%d %d-byte writes\n",
|
||||
param->iterations, param->sglen, param->length);
|
||||
for (i = param->iterations; retval == 0 && i > 0; --i) {
|
||||
|
@@ -875,6 +875,8 @@ static struct usb_device_id id_table_combined [] = {
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
|
||||
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) },
|
||||
/* Crucible Devices */
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) },
|
||||
{ }, /* Optional parameter entry */
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
@@ -1259,3 +1259,9 @@
|
||||
* ATI command output: Cinterion MC55i
|
||||
*/
|
||||
#define FTDI_CINTERION_MC55I_PID 0xA951
|
||||
|
||||
/*
|
||||
* Product: Comet Caller ID decoder
|
||||
* Manufacturer: Crucible Technologies
|
||||
*/
|
||||
#define FTDI_CT_COMET_PID 0x8e08
|
||||
|
@@ -288,6 +288,7 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define ALCATEL_VENDOR_ID 0x1bbb
|
||||
#define ALCATEL_PRODUCT_X060S_X200 0x0000
|
||||
#define ALCATEL_PRODUCT_X220_X500D 0x0017
|
||||
#define ALCATEL_PRODUCT_L100V 0x011e
|
||||
|
||||
#define PIRELLI_VENDOR_ID 0x1266
|
||||
#define PIRELLI_PRODUCT_C100_1 0x1002
|
||||
@@ -429,9 +430,12 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define MEDIATEK_VENDOR_ID 0x0e8d
|
||||
#define MEDIATEK_PRODUCT_DC_1COM 0x00a0
|
||||
#define MEDIATEK_PRODUCT_DC_4COM 0x00a5
|
||||
#define MEDIATEK_PRODUCT_DC_4COM2 0x00a7
|
||||
#define MEDIATEK_PRODUCT_DC_5COM 0x00a4
|
||||
#define MEDIATEK_PRODUCT_7208_1COM 0x7101
|
||||
#define MEDIATEK_PRODUCT_7208_2COM 0x7102
|
||||
#define MEDIATEK_PRODUCT_7103_2COM 0x7103
|
||||
#define MEDIATEK_PRODUCT_7106_2COM 0x7106
|
||||
#define MEDIATEK_PRODUCT_FP_1COM 0x0003
|
||||
#define MEDIATEK_PRODUCT_FP_2COM 0x0023
|
||||
#define MEDIATEK_PRODUCT_FPDC_1COM 0x0043
|
||||
@@ -441,6 +445,10 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define CELLIENT_VENDOR_ID 0x2692
|
||||
#define CELLIENT_PRODUCT_MEN200 0x9005
|
||||
|
||||
/* Hyundai Petatel Inc. products */
|
||||
#define PETATEL_VENDOR_ID 0x1ff4
|
||||
#define PETATEL_PRODUCT_NP10T 0x600e
|
||||
|
||||
/* some devices interfaces need special handling due to a number of reasons */
|
||||
enum option_blacklist_reason {
|
||||
OPTION_BLACKLIST_NONE = 0,
|
||||
@@ -923,7 +931,8 @@ static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0257, 0xff, 0xff, 0xff), /* ZTE MF821 */
|
||||
.driver_info = (kernel_ulong_t)&net_intf3_blacklist },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0265, 0xff, 0xff, 0xff) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0284, 0xff, 0xff, 0xff) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0284, 0xff, 0xff, 0xff), /* ZTE MF880 */
|
||||
.driver_info = (kernel_ulong_t)&net_intf4_blacklist },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0317, 0xff, 0xff, 0xff) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0326, 0xff, 0xff, 0xff),
|
||||
.driver_info = (kernel_ulong_t)&net_intf4_blacklist },
|
||||
@@ -1190,6 +1199,8 @@ static const struct usb_device_id option_ids[] = {
|
||||
.driver_info = (kernel_ulong_t)&alcatel_x200_blacklist
|
||||
},
|
||||
{ USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D) },
|
||||
{ USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L100V),
|
||||
.driver_info = (kernel_ulong_t)&net_intf4_blacklist },
|
||||
{ USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
|
||||
{ USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) },
|
||||
{ USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
|
||||
@@ -1294,7 +1305,12 @@ static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FP_2COM, 0x0a, 0x00, 0x00) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_1COM, 0x0a, 0x00, 0x00) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_2COM, 0x0a, 0x00, 0x00) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7103_2COM, 0xff, 0x00, 0x00) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7106_2COM, 0x02, 0x02, 0x01) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
|
||||
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
|
||||
{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) },
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, option_ids);
|
||||
|
Reference in New Issue
Block a user