|
@@ -4913,6 +4913,16 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
|
|
!dma_set_mask(dev, DMA_BIT_MASK(64))) {
|
|
!dma_set_mask(dev, DMA_BIT_MASK(64))) {
|
|
xhci_dbg(xhci, "Enabling 64-bit DMA addresses.\n");
|
|
xhci_dbg(xhci, "Enabling 64-bit DMA addresses.\n");
|
|
dma_set_coherent_mask(dev, DMA_BIT_MASK(64));
|
|
dma_set_coherent_mask(dev, DMA_BIT_MASK(64));
|
|
|
|
+ } else {
|
|
|
|
+ /*
|
|
|
|
+ * This is to avoid error in cases where a 32-bit USB
|
|
|
|
+ * controller is used on a 64-bit capable system.
|
|
|
|
+ */
|
|
|
|
+ retval = dma_set_mask(dev, DMA_BIT_MASK(32));
|
|
|
|
+ if (retval)
|
|
|
|
+ return retval;
|
|
|
|
+ xhci_dbg(xhci, "Enabling 32-bit DMA addresses.\n");
|
|
|
|
+ dma_set_coherent_mask(dev, DMA_BIT_MASK(32));
|
|
}
|
|
}
|
|
|
|
|
|
xhci_dbg(xhci, "Calling HCD init\n");
|
|
xhci_dbg(xhci, "Calling HCD init\n");
|