Revert "xhci: Reset Renesas uPD72020x USB controller for 32-bit DMA issue"
This reverts commitpull/10/head8466489ef5
. Now that we can properly reset the uPD72020x without a hard PCI reset, let's get rid of the existing quirks. Tested-by: Domenico Andreoli <domenico.andreoli@linux.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Tested-by: Faiz Abbas <faiz_abbas@ti.com> Tested-by: Domenico Andreoli <domenico.andreoli@linux.com> Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commitc2ef60fea2
)
parent
6f00b1e2cd
commit
40789e4547
|
@ -1267,23 +1267,3 @@ static void quirk_usb_early_handoff(struct pci_dev *pdev)
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
|
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
|
||||||
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
|
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
|
||||||
|
|
||||||
bool usb_xhci_needs_pci_reset(struct pci_dev *pdev)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Our dear uPD72020{1,2} friend only partially resets when
|
|
||||||
* asked to via the XHCI interface, and may end up doing DMA
|
|
||||||
* at the wrong addresses, as it keeps the top 32bit of some
|
|
||||||
* addresses from its previous programming under obscure
|
|
||||||
* circumstances.
|
|
||||||
* Give it a good wack at probe time. Unfortunately, this
|
|
||||||
* needs to happen before we've had a chance to discover any
|
|
||||||
* quirk, or the system will be in a rather bad state.
|
|
||||||
*/
|
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
|
|
||||||
(pdev->device == 0x0014 || pdev->device == 0x0015))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(usb_xhci_needs_pci_reset);
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev);
|
||||||
void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev);
|
void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev);
|
||||||
void usb_disable_xhci_ports(struct pci_dev *xhci_pdev);
|
void usb_disable_xhci_ports(struct pci_dev *xhci_pdev);
|
||||||
void sb800_prefetch(struct device *dev, int on);
|
void sb800_prefetch(struct device *dev, int on);
|
||||||
bool usb_xhci_needs_pci_reset(struct pci_dev *pdev);
|
|
||||||
bool usb_amd_pt_check_port(struct device *device, int port);
|
bool usb_amd_pt_check_port(struct device *device, int port);
|
||||||
#else
|
#else
|
||||||
struct pci_dev;
|
struct pci_dev;
|
||||||
|
|
|
@ -294,13 +294,6 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
|
|
||||||
driver = (struct hc_driver *)id->driver_data;
|
driver = (struct hc_driver *)id->driver_data;
|
||||||
|
|
||||||
/* For some HW implementation, a XHCI reset is just not enough... */
|
|
||||||
if (usb_xhci_needs_pci_reset(dev)) {
|
|
||||||
dev_info(&dev->dev, "Resetting\n");
|
|
||||||
if (pci_reset_function_locked(dev))
|
|
||||||
dev_warn(&dev->dev, "Reset failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
||||||
pm_runtime_get_noresume(&dev->dev);
|
pm_runtime_get_noresume(&dev->dev);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue