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: Andreas Herrmann <andreas.herrmann@caviumnetworks.com> Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
a5790e9e83
commit
c99e76c55f
@@ -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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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 {
|
|||||||
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);
|
||||||
|
Reference in New Issue
Block a user