USB fixes for 3.15-rc4
Here are some small fixes and device ids for 3.15-rc4. All have been in linux-next just fine. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEABECAAYFAlNoAMYACgkQMUfUDdst+ymm5QCgzEdgN+YTpuivw63Z/r4ZHGJW u/QAoLxnz5vjXk9bZDGfnUMEWHrw98Lu =epx3 -----END PGP SIGNATURE----- Merge tag 'usb-3.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb Pull USB fixes from Greg KH: "Here are some small fixes and device ids for 3.15-rc4. All have been in linux-next just fine" * tag 'usb-3.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: USB: Nokia 5300 should be treated as unusual dev USB: Nokia 305 should be treated as unusual dev fsl-usb: do not test for PHY_CLK_VALID bit on controller version 1.6 usb: storage: shuttle_usbat: fix discs being detected twice usb: qcserial: add a number of Dell devices USB: OHCI: fix problem with global suspend on ATI controllers usb: gadget: at91-udc: fix irq and iomem resource retrieval usb: phy: fsm: change "|" to "||" for condition OTG_STATE_A_WAIT_BCON at statemachine usb: phy: fsm: update OTG HNP state transition
This commit is contained in:
commit
783e9e8ede
9 changed files with 58 additions and 16 deletions
|
@ -1709,16 +1709,6 @@ static int at91udc_probe(struct platform_device *pdev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdev->num_resources != 2) {
|
|
||||||
DBG("invalid num_resources\n");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
if ((pdev->resource[0].flags != IORESOURCE_MEM)
|
|
||||||
|| (pdev->resource[1].flags != IORESOURCE_IRQ)) {
|
|
||||||
DBG("invalid resource type\n");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (!res)
|
if (!res)
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
|
|
@ -248,7 +248,8 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdata->have_sysif_regs && pdata->controller_ver &&
|
if (pdata->have_sysif_regs &&
|
||||||
|
pdata->controller_ver > FSL_USB_VER_1_6 &&
|
||||||
(phy_mode == FSL_USB2_PHY_ULPI)) {
|
(phy_mode == FSL_USB2_PHY_ULPI)) {
|
||||||
/* check PHY_CLK_VALID to get phy clk valid */
|
/* check PHY_CLK_VALID to get phy clk valid */
|
||||||
if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
|
if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
|
||||||
|
|
|
@ -90,6 +90,24 @@ __acquires(ohci->lock)
|
||||||
dl_done_list (ohci);
|
dl_done_list (ohci);
|
||||||
finish_unlinks (ohci, ohci_frame_no(ohci));
|
finish_unlinks (ohci, ohci_frame_no(ohci));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some controllers don't handle "global" suspend properly if
|
||||||
|
* there are unsuspended ports. For these controllers, put all
|
||||||
|
* the enabled ports into suspend before suspending the root hub.
|
||||||
|
*/
|
||||||
|
if (ohci->flags & OHCI_QUIRK_GLOBAL_SUSPEND) {
|
||||||
|
__hc32 __iomem *portstat = ohci->regs->roothub.portstatus;
|
||||||
|
int i;
|
||||||
|
unsigned temp;
|
||||||
|
|
||||||
|
for (i = 0; i < ohci->num_ports; (++i, ++portstat)) {
|
||||||
|
temp = ohci_readl(ohci, portstat);
|
||||||
|
if ((temp & (RH_PS_PES | RH_PS_PSS)) ==
|
||||||
|
RH_PS_PES)
|
||||||
|
ohci_writel(ohci, RH_PS_PSS, portstat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* maybe resume can wake root hub */
|
/* maybe resume can wake root hub */
|
||||||
if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) {
|
if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) {
|
||||||
ohci->hc_control |= OHCI_CTRL_RWE;
|
ohci->hc_control |= OHCI_CTRL_RWE;
|
||||||
|
|
|
@ -160,6 +160,7 @@ static int ohci_quirk_amd700(struct usb_hcd *hcd)
|
||||||
ohci_dbg(ohci, "enabled AMD prefetch quirk\n");
|
ohci_dbg(ohci, "enabled AMD prefetch quirk\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ohci->flags |= OHCI_QUIRK_GLOBAL_SUSPEND;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -405,6 +405,8 @@ struct ohci_hcd {
|
||||||
#define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */
|
#define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */
|
||||||
#define OHCI_QUIRK_AMD_PLL 0x200 /* AMD PLL quirk*/
|
#define OHCI_QUIRK_AMD_PLL 0x200 /* AMD PLL quirk*/
|
||||||
#define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */
|
#define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */
|
||||||
|
#define OHCI_QUIRK_GLOBAL_SUSPEND 0x800 /* must suspend ports */
|
||||||
|
|
||||||
// there are also chip quirks/bugs in init logic
|
// there are also chip quirks/bugs in init logic
|
||||||
|
|
||||||
struct work_struct nec_work; /* Worker for NEC quirk */
|
struct work_struct nec_work; /* Worker for NEC quirk */
|
||||||
|
|
|
@ -303,17 +303,18 @@ int otg_statemachine(struct otg_fsm *fsm)
|
||||||
otg_set_state(fsm, OTG_STATE_A_WAIT_VRISE);
|
otg_set_state(fsm, OTG_STATE_A_WAIT_VRISE);
|
||||||
break;
|
break;
|
||||||
case OTG_STATE_A_WAIT_VRISE:
|
case OTG_STATE_A_WAIT_VRISE:
|
||||||
if (fsm->id || fsm->a_bus_drop || fsm->a_vbus_vld ||
|
if (fsm->a_vbus_vld)
|
||||||
fsm->a_wait_vrise_tmout) {
|
|
||||||
otg_set_state(fsm, OTG_STATE_A_WAIT_BCON);
|
otg_set_state(fsm, OTG_STATE_A_WAIT_BCON);
|
||||||
}
|
else if (fsm->id || fsm->a_bus_drop ||
|
||||||
|
fsm->a_wait_vrise_tmout)
|
||||||
|
otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL);
|
||||||
break;
|
break;
|
||||||
case OTG_STATE_A_WAIT_BCON:
|
case OTG_STATE_A_WAIT_BCON:
|
||||||
if (!fsm->a_vbus_vld)
|
if (!fsm->a_vbus_vld)
|
||||||
otg_set_state(fsm, OTG_STATE_A_VBUS_ERR);
|
otg_set_state(fsm, OTG_STATE_A_VBUS_ERR);
|
||||||
else if (fsm->b_conn)
|
else if (fsm->b_conn)
|
||||||
otg_set_state(fsm, OTG_STATE_A_HOST);
|
otg_set_state(fsm, OTG_STATE_A_HOST);
|
||||||
else if (fsm->id | fsm->a_bus_drop | fsm->a_wait_bcon_tmout)
|
else if (fsm->id || fsm->a_bus_drop || fsm->a_wait_bcon_tmout)
|
||||||
otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL);
|
otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL);
|
||||||
break;
|
break;
|
||||||
case OTG_STATE_A_HOST:
|
case OTG_STATE_A_HOST:
|
||||||
|
|
|
@ -151,6 +151,21 @@ static const struct usb_device_id id_table[] = {
|
||||||
{USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */
|
{USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */
|
||||||
{USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */
|
{USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */
|
||||||
{USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */
|
{USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 0)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 3)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Modem */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 0)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Device Management */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 2)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card NMEA */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Modem */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 0)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Device Management */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 2)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card NMEA */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 3)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Modem */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 0)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 2)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 3)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Modem */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 0)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Device Management */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 2)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card NMEA */
|
||||||
|
{USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 3)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Modem */
|
||||||
|
|
||||||
{ } /* Terminating entry */
|
{ } /* Terminating entry */
|
||||||
};
|
};
|
||||||
|
|
|
@ -1851,7 +1851,7 @@ static int usbat_probe(struct usb_interface *intf,
|
||||||
us->transport_name = "Shuttle USBAT";
|
us->transport_name = "Shuttle USBAT";
|
||||||
us->transport = usbat_flash_transport;
|
us->transport = usbat_flash_transport;
|
||||||
us->transport_reset = usb_stor_CB_reset;
|
us->transport_reset = usb_stor_CB_reset;
|
||||||
us->max_lun = 1;
|
us->max_lun = 0;
|
||||||
|
|
||||||
result = usb_stor_probe2(us);
|
result = usb_stor_probe2(us);
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -234,6 +234,20 @@ UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370,
|
||||||
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||||
US_FL_MAX_SECTORS_64 ),
|
US_FL_MAX_SECTORS_64 ),
|
||||||
|
|
||||||
|
/* Reported by Daniele Forsi <dforsi@gmail.com> */
|
||||||
|
UNUSUAL_DEV( 0x0421, 0x04b9, 0x0350, 0x0350,
|
||||||
|
"Nokia",
|
||||||
|
"5300",
|
||||||
|
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||||
|
US_FL_MAX_SECTORS_64 ),
|
||||||
|
|
||||||
|
/* Patch submitted by Victor A. Santos <victoraur.santos@gmail.com> */
|
||||||
|
UNUSUAL_DEV( 0x0421, 0x05af, 0x0742, 0x0742,
|
||||||
|
"Nokia",
|
||||||
|
"305",
|
||||||
|
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||||
|
US_FL_MAX_SECTORS_64),
|
||||||
|
|
||||||
/* Patch submitted by Mikhail Zolotaryov <lebon@lebon.org.ua> */
|
/* Patch submitted by Mikhail Zolotaryov <lebon@lebon.org.ua> */
|
||||||
UNUSUAL_DEV( 0x0421, 0x06aa, 0x1110, 0x1110,
|
UNUSUAL_DEV( 0x0421, 0x06aa, 0x1110, 0x1110,
|
||||||
"Nokia",
|
"Nokia",
|
||||||
|
|
Loading…
Add table
Reference in a new issue