diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-05 18:51:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-05 18:51:17 -0400 |
commit | 783e9e8ede8081f2511beefc75b0c87e1b3afc07 (patch) | |
tree | ea534b3587285036c7948f9548de6c7cd118234b | |
parent | df862f625d62c8d5aef41361a8d21e4f55a0e748 (diff) | |
parent | 6ed07d45d09bc2aa60e27b845543db9972e22a38 (diff) |
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
-rw-r--r-- | drivers/usb/gadget/at91_udc.c | 10 | ||||
-rw-r--r-- | drivers/usb/host/ehci-fsl.c | 3 | ||||
-rw-r--r-- | drivers/usb/host/ohci-hub.c | 18 | ||||
-rw-r--r-- | drivers/usb/host/ohci-pci.c | 1 | ||||
-rw-r--r-- | drivers/usb/host/ohci.h | 2 | ||||
-rw-r--r-- | drivers/usb/phy/phy-fsm-usb.c | 9 | ||||
-rw-r--r-- | drivers/usb/serial/qcserial.c | 15 | ||||
-rw-r--r-- | drivers/usb/storage/shuttle_usbat.c | 2 | ||||
-rw-r--r-- | drivers/usb/storage/unusual_devs.h | 14 |
9 files changed, 58 insertions, 16 deletions
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index f605ad8c1902..cfd18bcca723 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
@@ -1709,16 +1709,6 @@ static int at91udc_probe(struct platform_device *pdev) | |||
1709 | return -ENODEV; | 1709 | return -ENODEV; |
1710 | } | 1710 | } |
1711 | 1711 | ||
1712 | if (pdev->num_resources != 2) { | ||
1713 | DBG("invalid num_resources\n"); | ||
1714 | return -ENODEV; | ||
1715 | } | ||
1716 | if ((pdev->resource[0].flags != IORESOURCE_MEM) | ||
1717 | || (pdev->resource[1].flags != IORESOURCE_IRQ)) { | ||
1718 | DBG("invalid resource type\n"); | ||
1719 | return -ENODEV; | ||
1720 | } | ||
1721 | |||
1722 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1712 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1723 | if (!res) | 1713 | if (!res) |
1724 | return -ENXIO; | 1714 | return -ENXIO; |
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 6f2c8d3899d2..cf2734b532a7 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c | |||
@@ -248,7 +248,8 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, | |||
248 | break; | 248 | break; |
249 | } | 249 | } |
250 | 250 | ||
251 | if (pdata->have_sysif_regs && pdata->controller_ver && | 251 | if (pdata->have_sysif_regs && |
252 | pdata->controller_ver > FSL_USB_VER_1_6 && | ||
252 | (phy_mode == FSL_USB2_PHY_ULPI)) { | 253 | (phy_mode == FSL_USB2_PHY_ULPI)) { |
253 | /* check PHY_CLK_VALID to get phy clk valid */ | 254 | /* check PHY_CLK_VALID to get phy clk valid */ |
254 | if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) & | 255 | if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) & |
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c index c81c8721cc5a..cd871b895013 100644 --- a/drivers/usb/host/ohci-hub.c +++ b/drivers/usb/host/ohci-hub.c | |||
@@ -90,6 +90,24 @@ __acquires(ohci->lock) | |||
90 | dl_done_list (ohci); | 90 | dl_done_list (ohci); |
91 | finish_unlinks (ohci, ohci_frame_no(ohci)); | 91 | finish_unlinks (ohci, ohci_frame_no(ohci)); |
92 | 92 | ||
93 | /* | ||
94 | * Some controllers don't handle "global" suspend properly if | ||
95 | * there are unsuspended ports. For these controllers, put all | ||
96 | * the enabled ports into suspend before suspending the root hub. | ||
97 | */ | ||
98 | if (ohci->flags & OHCI_QUIRK_GLOBAL_SUSPEND) { | ||
99 | __hc32 __iomem *portstat = ohci->regs->roothub.portstatus; | ||
100 | int i; | ||
101 | unsigned temp; | ||
102 | |||
103 | for (i = 0; i < ohci->num_ports; (++i, ++portstat)) { | ||
104 | temp = ohci_readl(ohci, portstat); | ||
105 | if ((temp & (RH_PS_PES | RH_PS_PSS)) == | ||
106 | RH_PS_PES) | ||
107 | ohci_writel(ohci, RH_PS_PSS, portstat); | ||
108 | } | ||
109 | } | ||
110 | |||
93 | /* maybe resume can wake root hub */ | 111 | /* maybe resume can wake root hub */ |
94 | if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) { | 112 | if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) { |
95 | ohci->hc_control |= OHCI_CTRL_RWE; | 113 | ohci->hc_control |= OHCI_CTRL_RWE; |
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c index 90879e9ccbec..bb1509675727 100644 --- a/drivers/usb/host/ohci-pci.c +++ b/drivers/usb/host/ohci-pci.c | |||
@@ -160,6 +160,7 @@ static int ohci_quirk_amd700(struct usb_hcd *hcd) | |||
160 | ohci_dbg(ohci, "enabled AMD prefetch quirk\n"); | 160 | ohci_dbg(ohci, "enabled AMD prefetch quirk\n"); |
161 | } | 161 | } |
162 | 162 | ||
163 | ohci->flags |= OHCI_QUIRK_GLOBAL_SUSPEND; | ||
163 | return 0; | 164 | return 0; |
164 | } | 165 | } |
165 | 166 | ||
diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index 9250cada13f0..4550ce05af7f 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h | |||
@@ -405,6 +405,8 @@ struct ohci_hcd { | |||
405 | #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ | 405 | #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ |
406 | #define OHCI_QUIRK_AMD_PLL 0x200 /* AMD PLL quirk*/ | 406 | #define OHCI_QUIRK_AMD_PLL 0x200 /* AMD PLL quirk*/ |
407 | #define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */ | 407 | #define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */ |
408 | #define OHCI_QUIRK_GLOBAL_SUSPEND 0x800 /* must suspend ports */ | ||
409 | |||
408 | // there are also chip quirks/bugs in init logic | 410 | // there are also chip quirks/bugs in init logic |
409 | 411 | ||
410 | struct work_struct nec_work; /* Worker for NEC quirk */ | 412 | struct work_struct nec_work; /* Worker for NEC quirk */ |
diff --git a/drivers/usb/phy/phy-fsm-usb.c b/drivers/usb/phy/phy-fsm-usb.c index c47e5a6edde2..d03fadd2629f 100644 --- a/drivers/usb/phy/phy-fsm-usb.c +++ b/drivers/usb/phy/phy-fsm-usb.c | |||
@@ -303,17 +303,18 @@ int otg_statemachine(struct otg_fsm *fsm) | |||
303 | otg_set_state(fsm, OTG_STATE_A_WAIT_VRISE); | 303 | otg_set_state(fsm, OTG_STATE_A_WAIT_VRISE); |
304 | break; | 304 | break; |
305 | case OTG_STATE_A_WAIT_VRISE: | 305 | case OTG_STATE_A_WAIT_VRISE: |
306 | if (fsm->id || fsm->a_bus_drop || fsm->a_vbus_vld || | 306 | if (fsm->a_vbus_vld) |
307 | fsm->a_wait_vrise_tmout) { | ||
308 | otg_set_state(fsm, OTG_STATE_A_WAIT_BCON); | 307 | otg_set_state(fsm, OTG_STATE_A_WAIT_BCON); |
309 | } | 308 | else if (fsm->id || fsm->a_bus_drop || |
309 | fsm->a_wait_vrise_tmout) | ||
310 | otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL); | ||
310 | break; | 311 | break; |
311 | case OTG_STATE_A_WAIT_BCON: | 312 | case OTG_STATE_A_WAIT_BCON: |
312 | if (!fsm->a_vbus_vld) | 313 | if (!fsm->a_vbus_vld) |
313 | otg_set_state(fsm, OTG_STATE_A_VBUS_ERR); | 314 | otg_set_state(fsm, OTG_STATE_A_VBUS_ERR); |
314 | else if (fsm->b_conn) | 315 | else if (fsm->b_conn) |
315 | otg_set_state(fsm, OTG_STATE_A_HOST); | 316 | otg_set_state(fsm, OTG_STATE_A_HOST); |
316 | else if (fsm->id | fsm->a_bus_drop | fsm->a_wait_bcon_tmout) | 317 | else if (fsm->id || fsm->a_bus_drop || fsm->a_wait_bcon_tmout) |
317 | otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL); | 318 | otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL); |
318 | break; | 319 | break; |
319 | case OTG_STATE_A_HOST: | 320 | case OTG_STATE_A_HOST: |
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index 7ed681a714a5..6c0a542e8ec1 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c | |||
@@ -151,6 +151,21 @@ static const struct usb_device_id id_table[] = { | |||
151 | {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */ | 151 | {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */ |
152 | {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */ | 152 | {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */ |
153 | {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */ | 153 | {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */ |
154 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 0)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */ | ||
155 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */ | ||
156 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 3)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Modem */ | ||
157 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 0)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Device Management */ | ||
158 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 2)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card NMEA */ | ||
159 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Modem */ | ||
160 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 0)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Device Management */ | ||
161 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 2)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card NMEA */ | ||
162 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 3)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Modem */ | ||
163 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 0)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */ | ||
164 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 2)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */ | ||
165 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 3)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Modem */ | ||
166 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 0)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Device Management */ | ||
167 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 2)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card NMEA */ | ||
168 | {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 3)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Modem */ | ||
154 | 169 | ||
155 | { } /* Terminating entry */ | 170 | { } /* Terminating entry */ |
156 | }; | 171 | }; |
diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c index 4ef2a80728f7..008d805c3d21 100644 --- a/drivers/usb/storage/shuttle_usbat.c +++ b/drivers/usb/storage/shuttle_usbat.c | |||
@@ -1851,7 +1851,7 @@ static int usbat_probe(struct usb_interface *intf, | |||
1851 | us->transport_name = "Shuttle USBAT"; | 1851 | us->transport_name = "Shuttle USBAT"; |
1852 | us->transport = usbat_flash_transport; | 1852 | us->transport = usbat_flash_transport; |
1853 | us->transport_reset = usb_stor_CB_reset; | 1853 | us->transport_reset = usb_stor_CB_reset; |
1854 | us->max_lun = 1; | 1854 | us->max_lun = 0; |
1855 | 1855 | ||
1856 | result = usb_stor_probe2(us); | 1856 | result = usb_stor_probe2(us); |
1857 | return result; | 1857 | return result; |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index f4a82291894a..174a447868cd 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -234,6 +234,20 @@ UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370, | |||
234 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, | 234 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, |
235 | US_FL_MAX_SECTORS_64 ), | 235 | US_FL_MAX_SECTORS_64 ), |
236 | 236 | ||
237 | /* Reported by Daniele Forsi <dforsi@gmail.com> */ | ||
238 | UNUSUAL_DEV( 0x0421, 0x04b9, 0x0350, 0x0350, | ||
239 | "Nokia", | ||
240 | "5300", | ||
241 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, | ||
242 | US_FL_MAX_SECTORS_64 ), | ||
243 | |||
244 | /* Patch submitted by Victor A. Santos <victoraur.santos@gmail.com> */ | ||
245 | UNUSUAL_DEV( 0x0421, 0x05af, 0x0742, 0x0742, | ||
246 | "Nokia", | ||
247 | "305", | ||
248 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, | ||
249 | US_FL_MAX_SECTORS_64), | ||
250 | |||
237 | /* Patch submitted by Mikhail Zolotaryov <lebon@lebon.org.ua> */ | 251 | /* Patch submitted by Mikhail Zolotaryov <lebon@lebon.org.ua> */ |
238 | UNUSUAL_DEV( 0x0421, 0x06aa, 0x1110, 0x1110, | 252 | UNUSUAL_DEV( 0x0421, 0x06aa, 0x1110, 0x1110, |
239 | "Nokia", | 253 | "Nokia", |