diff mbox

[RESEND,1/2] ARM: ixp4xx: Make dma_set_coherent_mask common, correct implementation

Message ID 20140317105659.449505d8@marrow.netinsight.se (mailing list archive)
State New, archived
Headers show

Commit Message

Simon Kagstrom March 17, 2014, 9:56 a.m. UTC
Non-PCI devices can use the entire 32-bit range, PCI dittos are
limited to the first 64MiB.

Also actually setup coherent_dma_mask.

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
---
 arch/arm/mach-ixp4xx/common-pci.c |    8 --------
 arch/arm/mach-ixp4xx/common.c     |   11 +++++++++++
 2 files changed, 11 insertions(+), 8 deletions(-)

Comments

Arnd Bergmann March 17, 2014, 11:29 a.m. UTC | #1
On Monday 17 March 2014, Simon Kågström wrote:
> diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c
> index 200970d..b02c764 100644
> --- a/arch/arm/mach-ixp4xx/common-pci.c
> +++ b/arch/arm/mach-ixp4xx/common-pci.c
> @@ -481,14 +481,6 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys)
>         return 1;
>  }
>  
> -int dma_set_coherent_mask(struct device *dev, u64 mask)
> -{
> -       if (mask >= SZ_64M - 1)
> -               return 0;
> -
> -       return -EIO;
> -}
> -
>  EXPORT_SYMBOL(ixp4xx_pci_read);
>  EXPORT_SYMBOL(ixp4xx_pci_write);
>  EXPORT_SYMBOL(dma_set_coherent_mask);

When you move this function, you should really move the
'EXPORT_SYMBOL' along with it.

	Arnd
Simon Kagstrom March 17, 2014, 11:54 a.m. UTC | #2
On Mon, 17 Mar 2014 12:29:38 +0100
Arnd Bergmann <arnd@arndb.de> wrote:
> >  
> > -int dma_set_coherent_mask(struct device *dev, u64 mask)
> > -{
> > -       if (mask >= SZ_64M - 1)
> > -               return 0;
> > -
> > -       return -EIO;
> > -}
> > -
> >  EXPORT_SYMBOL(ixp4xx_pci_read);
> >  EXPORT_SYMBOL(ixp4xx_pci_write);
> >  EXPORT_SYMBOL(dma_set_coherent_mask);
> 
> When you move this function, you should really move the
> 'EXPORT_SYMBOL' along with it.

Yes, you are right. Will fix and resend the patches!

// Simon
diff mbox

Patch

diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c
index 200970d..b02c764 100644
--- a/arch/arm/mach-ixp4xx/common-pci.c
+++ b/arch/arm/mach-ixp4xx/common-pci.c
@@ -481,14 +481,6 @@  int ixp4xx_setup(int nr, struct pci_sys_data *sys)
 	return 1;
 }
 
-int dma_set_coherent_mask(struct device *dev, u64 mask)
-{
-	if (mask >= SZ_64M - 1)
-		return 0;
-
-	return -EIO;
-}
-
 EXPORT_SYMBOL(ixp4xx_pci_read);
 EXPORT_SYMBOL(ixp4xx_pci_write);
 EXPORT_SYMBOL(dma_set_coherent_mask);
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 6d68aed..b221c78 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -31,6 +31,7 @@ 
 #include <linux/gpio.h>
 #include <linux/cpu.h>
 #include <linux/sched_clock.h>
+#include <linux/pci.h>
 
 #include <mach/udc.h>
 #include <mach/hardware.h>
@@ -578,6 +579,16 @@  void ixp4xx_restart(enum reboot_mode mode, const char *cmd)
 	}
 }
 
+int dma_set_coherent_mask(struct device *dev, u64 mask)
+{
+	if (dev_is_pci(dev) && mask >= SZ_64M)
+		return -EIO;
+
+	dev->coherent_dma_mask = mask;
+
+	return 0;
+}
+
 #ifdef CONFIG_IXP4XX_INDIRECT_PCI
 /*
  * In the case of using indirect PCI, we simply return the actual PCI