diff options
author | Laura Abbott <labbott@fedoraproject.org> | 2015-09-01 15:03:08 -0700 |
---|---|---|
committer | Laura Abbott <labbott@fedoraproject.org> | 2015-09-01 15:59:56 -0700 |
commit | d07b889185195409a6090ed3e12fff475b4258f4 (patch) | |
tree | c2b98784a9c45c2ba5420c4a256c03d1c1c2e125 /usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch | |
parent | 07775e21b6d0c7b9c2251deb8cb5ef3052a38c6e (diff) | |
download | kernel-d07b889185195409a6090ed3e12fff475b4258f4.tar.gz kernel-d07b889185195409a6090ed3e12fff475b4258f4.tar.xz kernel-d07b889185195409a6090ed3e12fff475b4258f4.zip |
Linux v4.2
This is a squashed patch of the history from F22 + the 4.2 rebase
Diffstat (limited to 'usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch')
-rw-r--r-- | usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch b/usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch new file mode 100644 index 000000000..da38d700f --- /dev/null +++ b/usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch @@ -0,0 +1,40 @@ +From: Mark Langsdorf <mlangsdo@redhat.com> +Date: Wed, 25 Mar 2015 14:12:51 -0400 +Subject: [PATCH] usb: make xhci platform driver use 64 bit or 32 bit DMA + +The xhci platform driver needs to work on systems that either only +support 64-bit DMA or only support 32-bit DMA. Attempt to set a +coherent dma mask for 64-bit DMA, and attempt again with 32-bit +DMA if that fails. + +Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com> +--- + drivers/usb/host/xhci-plat.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c +index 0e11d61408ff..cc5ca2cac706 100644 +--- a/drivers/usb/host/xhci-plat.c ++++ b/drivers/usb/host/xhci-plat.c +@@ -83,14 +83,13 @@ static int xhci_plat_probe(struct platform_device *pdev) + if (irq < 0) + return -ENODEV; + +- /* Initialize dma_mask and coherent_dma_mask to 32-bits */ +- ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); +- if (ret) +- return ret; +- if (!pdev->dev.dma_mask) +- pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; +- else +- dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); ++ /* Try setting the coherent_dma_mask to 64 bits, then try 32 bits */ ++ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); ++ if (ret) { ++ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); ++ if (ret) ++ return ret; ++ } + + hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); + if (!hcd) |