Commit 73dc61cb authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'usb-3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB fixes from Greg KH:
 "Here are some small USB fixes and quirk additions for 3.19-rc7.

  All have been in linux-next for a while with no reported problems"

* tag 'usb-3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
  USB: Add OTG PET device to TPL
  usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA controller
  uas: Add no-report-opcodes quirk for Simpletech devices with id 4971:8017
  storage: Revise/fix quirk for 04E6:000F SCM USB-SCSI converter
  usb: phy: never defer probe in non-OF case
  usb: dwc2: call dwc2_is_controller_alive() under spinlock
parents 6155bc14 54eb4cd4
...@@ -55,6 +55,11 @@ static int is_targeted(struct usb_device *dev) ...@@ -55,6 +55,11 @@ static int is_targeted(struct usb_device *dev)
le16_to_cpu(dev->descriptor.idProduct) == 0xbadd)) le16_to_cpu(dev->descriptor.idProduct) == 0xbadd))
return 0; return 0;
/* OTG PET device is always targeted (see OTG 2.0 ECN 6.4.2) */
if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a &&
le16_to_cpu(dev->descriptor.idProduct) == 0x0200))
return 1;
/* NOTE: can't use usb_match_id() since interface caches /* NOTE: can't use usb_match_id() since interface caches
* aren't set up yet. this is cut/paste from that code. * aren't set up yet. this is cut/paste from that code.
*/ */
......
...@@ -179,6 +179,10 @@ static const struct usb_device_id usb_quirk_list[] = { ...@@ -179,6 +179,10 @@ static const struct usb_device_id usb_quirk_list[] = {
{ USB_DEVICE(0x0b05, 0x17e0), .driver_info = { USB_DEVICE(0x0b05, 0x17e0), .driver_info =
USB_QUIRK_IGNORE_REMOTE_WAKEUP }, USB_QUIRK_IGNORE_REMOTE_WAKEUP },
/* Protocol and OTG Electrical Test Device */
{ USB_DEVICE(0x1a0a, 0x0200), .driver_info =
USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL },
{ } /* terminating entry must be last */ { } /* terminating entry must be last */
}; };
......
...@@ -476,13 +476,13 @@ irqreturn_t dwc2_handle_common_intr(int irq, void *dev) ...@@ -476,13 +476,13 @@ irqreturn_t dwc2_handle_common_intr(int irq, void *dev)
u32 gintsts; u32 gintsts;
irqreturn_t retval = IRQ_NONE; irqreturn_t retval = IRQ_NONE;
spin_lock(&hsotg->lock);
if (!dwc2_is_controller_alive(hsotg)) { if (!dwc2_is_controller_alive(hsotg)) {
dev_warn(hsotg->dev, "Controller is dead\n"); dev_warn(hsotg->dev, "Controller is dead\n");
goto out; goto out;
} }
spin_lock(&hsotg->lock);
gintsts = dwc2_read_common_intr(hsotg); gintsts = dwc2_read_common_intr(hsotg);
if (gintsts & ~GINTSTS_PRTINT) if (gintsts & ~GINTSTS_PRTINT)
retval = IRQ_HANDLED; retval = IRQ_HANDLED;
...@@ -515,8 +515,8 @@ irqreturn_t dwc2_handle_common_intr(int irq, void *dev) ...@@ -515,8 +515,8 @@ irqreturn_t dwc2_handle_common_intr(int irq, void *dev)
} }
} }
spin_unlock(&hsotg->lock);
out: out:
spin_unlock(&hsotg->lock);
return retval; return retval;
} }
EXPORT_SYMBOL_GPL(dwc2_handle_common_intr); EXPORT_SYMBOL_GPL(dwc2_handle_common_intr);
...@@ -34,7 +34,7 @@ static struct usb_phy *__usb_find_phy(struct list_head *list, ...@@ -34,7 +34,7 @@ static struct usb_phy *__usb_find_phy(struct list_head *list,
return phy; return phy;
} }
return ERR_PTR(-EPROBE_DEFER); return ERR_PTR(-ENODEV);
} }
static struct usb_phy *__usb_find_phy_dev(struct device *dev, static struct usb_phy *__usb_find_phy_dev(struct device *dev,
......
...@@ -507,7 +507,7 @@ UNUSUAL_DEV( 0x04e6, 0x000c, 0x0100, 0x0100, ...@@ -507,7 +507,7 @@ UNUSUAL_DEV( 0x04e6, 0x000c, 0x0100, 0x0100,
UNUSUAL_DEV( 0x04e6, 0x000f, 0x0000, 0x9999, UNUSUAL_DEV( 0x04e6, 0x000f, 0x0000, 0x9999,
"SCM Microsystems", "SCM Microsystems",
"eUSB SCSI Adapter (Bus Powered)", "eUSB SCSI Adapter (Bus Powered)",
USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, USB_SC_SCSI, USB_PR_BULK, usb_stor_euscsi_init,
US_FL_SCM_MULT_TARG ), US_FL_SCM_MULT_TARG ),
UNUSUAL_DEV( 0x04e6, 0x0101, 0x0200, 0x0200, UNUSUAL_DEV( 0x04e6, 0x0101, 0x0200, 0x0200,
...@@ -1995,6 +1995,13 @@ UNUSUAL_DEV( 0x152d, 0x2329, 0x0100, 0x0100, ...@@ -1995,6 +1995,13 @@ UNUSUAL_DEV( 0x152d, 0x2329, 0x0100, 0x0100,
USB_SC_DEVICE, USB_PR_DEVICE, NULL, USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ), US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ),
/* Reported by Dmitry Nezhevenko <dion@dion.org.ua> */
UNUSUAL_DEV( 0x152d, 0x2566, 0x0114, 0x0114,
"JMicron",
"USB to ATA/ATAPI Bridge",
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_BROKEN_FUA ),
/* Entrega Technologies U1-SC25 (later Xircom PortGear PGSCSI) /* Entrega Technologies U1-SC25 (later Xircom PortGear PGSCSI)
* and Mac USB Dock USB-SCSI */ * and Mac USB Dock USB-SCSI */
UNUSUAL_DEV( 0x1645, 0x0007, 0x0100, 0x0133, UNUSUAL_DEV( 0x1645, 0x0007, 0x0100, 0x0133,
......
...@@ -140,3 +140,10 @@ UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999, ...@@ -140,3 +140,10 @@ UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999,
"External HDD", "External HDD",
USB_SC_DEVICE, USB_PR_DEVICE, NULL, USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_IGNORE_UAS), US_FL_IGNORE_UAS),
/* Reported-by: Richard Henderson <rth@redhat.com> */
UNUSUAL_DEV(0x4971, 0x8017, 0x0000, 0x9999,
"SimpleTech",
"External HDD",
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
US_FL_NO_REPORT_OPCODES),
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment