ARM: ixp4xx: Make dma_set_coherent_mask common, correct implementation
Non-PCI devices can use the entire 32-bit range, PCI dittos are limited to the first 64MiB. Also actually setup coherent_dma_mask. The patch has been verified on a board with 128MiB memory, one ipx4xx_eth device and a e100 PCI device. Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
64cf9d07ef
commit
bfdad565ae
2 changed files with 12 additions and 9 deletions
|
@ -481,14 +481,5 @@ 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);
|
||||
|
|
|
@ -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,17 @@ 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;
|
||||
}
|
||||
EXPORT_SYMBOL(dma_set_coherent_mask);
|
||||
|
||||
#ifdef CONFIG_IXP4XX_INDIRECT_PCI
|
||||
/*
|
||||
* In the case of using indirect PCI, we simply return the actual PCI
|
||||
|
|
Loading…
Reference in a new issue