Commit c99e76c5 authored by Andreas Herrmann's avatar Andreas Herrmann Committed by Greg Kroah-Hartman

USB: host: Introduce flag to enable use of 64-bit dma_mask for ehci-platform

ehci-octeon driver used a 64-bit dma_mask. With removal of ehci-octeon
and usage of ehci-platform ehci dma_mask is now limited to 32 bits
(coerced in ehci_platform_probe).

Provide a flag in ehci platform data to allow use of 64 bits for
dma_mask.

Cc: David Daney <david.daney@cavium.com>
Cc: Alex Smith <alex.smith@imgtec.com>
Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann@caviumnetworks.com>
Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a5790e9e
...@@ -310,6 +310,7 @@ static struct usb_ehci_pdata octeon_ehci_pdata = { ...@@ -310,6 +310,7 @@ static struct usb_ehci_pdata octeon_ehci_pdata = {
#ifdef __BIG_ENDIAN #ifdef __BIG_ENDIAN
.big_endian_mmio = 1, .big_endian_mmio = 1,
#endif #endif
.dma_mask_64 = 1,
.power_on = octeon_ehci_power_on, .power_on = octeon_ehci_power_on,
.power_off = octeon_ehci_power_off, .power_off = octeon_ehci_power_off,
}; };
...@@ -331,8 +332,6 @@ static void __init octeon_ehci_hw_start(struct device *dev) ...@@ -331,8 +332,6 @@ static void __init octeon_ehci_hw_start(struct device *dev)
octeon2_usb_clocks_stop(); octeon2_usb_clocks_stop();
} }
static u64 octeon_ehci_dma_mask = DMA_BIT_MASK(64);
static int __init octeon_ehci_device_init(void) static int __init octeon_ehci_device_init(void)
{ {
struct platform_device *pd; struct platform_device *pd;
...@@ -347,7 +346,6 @@ static int __init octeon_ehci_device_init(void) ...@@ -347,7 +346,6 @@ static int __init octeon_ehci_device_init(void)
if (!pd) if (!pd)
return 0; return 0;
pd->dev.dma_mask = &octeon_ehci_dma_mask;
pd->dev.platform_data = &octeon_ehci_pdata; pd->dev.platform_data = &octeon_ehci_pdata;
octeon_ehci_hw_start(&pd->dev); octeon_ehci_hw_start(&pd->dev);
......
...@@ -155,7 +155,8 @@ static int ehci_platform_probe(struct platform_device *dev) ...@@ -155,7 +155,8 @@ static int ehci_platform_probe(struct platform_device *dev)
if (!pdata) if (!pdata)
pdata = &ehci_platform_defaults; pdata = &ehci_platform_defaults;
err = dma_coerce_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32)); err = dma_coerce_mask_and_coherent(&dev->dev,
pdata->dma_mask_64 ? DMA_BIT_MASK(64) : DMA_BIT_MASK(32));
if (err) if (err)
return err; return err;
......
...@@ -48,6 +48,7 @@ struct usb_ehci_pdata { ...@@ -48,6 +48,7 @@ struct usb_ehci_pdata {
unsigned big_endian_mmio:1; unsigned big_endian_mmio:1;
unsigned no_io_watchdog:1; unsigned no_io_watchdog:1;
unsigned reset_on_resume:1; unsigned reset_on_resume:1;
unsigned dma_mask_64:1;
/* Turn on all power and clocks */ /* Turn on all power and clocks */
int (*power_on)(struct platform_device *pdev); int (*power_on)(struct platform_device *pdev);
......
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