ARM: EXYNOS: Set 64-bit DMA mask for EXYNOS5250

When LPAE is enabled, we need to set 64bit DMA mask bits.

[The actual fix for this issue is a much more involved patch series
reworking how DMA masks are set which is still in review upstream
  -- broonie]

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Tushar Behera
2013-08-09 14:12:27 +05:30
committed by Mark Brown
parent 8bb495e3f0
commit 1288d63721

View File

@@ -14,6 +14,7 @@
#include <linux/memblock.h>
#include <linux/io.h>
#include <linux/clocksource.h>
#include <linux/dma-mapping.h>
#include <asm/mach/arch.h>
#include <mach/regs-pmu.h>
@@ -23,11 +24,31 @@
#include "common.h"
static u64 dma_mask64 = DMA_BIT_MASK(64);
static void __init exynos5_dt_map_io(void)
{
exynos_init_io(NULL, 0);
}
static int exynos5250_platform_notifier(struct notifier_block *nb,
unsigned long event, void *__dev)
{
struct device *dev = __dev;
if (event != BUS_NOTIFY_ADD_DEVICE)
return NOTIFY_DONE;
dev->dma_mask = &dma_mask64;
dev->coherent_dma_mask = DMA_BIT_MASK(64);
return NOTIFY_OK;
}
static struct notifier_block exynos5250_platform_nb = {
.notifier_call = exynos5250_platform_notifier,
};
static void __init exynos5_dt_machine_init(void)
{
struct device_node *i2c_np;
@@ -52,6 +73,11 @@ static void __init exynos5_dt_machine_init(void)
}
}
if (config_enabled(CONFIG_ARM_LPAE) &&
of_machine_is_compatible("samsung,exynos5250"))
bus_register_notifier(&platform_bus_type,
&exynos5250_platform_nb);
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}