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
This commit is contained in:
@@ -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[] = {
|
|||||||
{ 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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
"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),
|
||||||
|
Reference in New Issue
Block a user