diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-imx/mach-ls1021a.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mach-ls1021a.c b/arch/arm/mach-imx/mach-ls1021a.c index 3692dd0..dbb0256 100644 --- a/arch/arm/mach-imx/mach-ls1021a.c +++ b/arch/arm/mach-imx/mach-ls1021a.c @@ -10,13 +10,36 @@ #include <linux/clk-provider.h> #include <linux/clockchips.h> #include <linux/clocksource.h> +#include <linux/dma-mapping.h> #include <linux/of_platform.h> #include <asm/mach/arch.h> #include "common.h" +static int ls1021a_platform_notifier(struct notifier_block *nb, + unsigned long event, void *__dev) +{ + struct device *dev = __dev; + + if (event != BUS_NOTIFY_ADD_DEVICE) + return NOTIFY_DONE; + + if (of_device_is_compatible(dev->of_node, "fsl,etsec2")) + set_dma_ops(dev, &arm_coherent_dma_ops); + else if (of_property_read_bool(dev->of_node, "dma-coherent")) + set_dma_ops(dev, &arm_coherent_dma_ops); + + return NOTIFY_OK; +} + +static struct notifier_block ls1021a_platform_nb = { + .notifier_call = ls1021a_platform_notifier, +}; + static void __init ls1021a_init_machine(void) { + bus_register_notifier(&platform_bus_type, &ls1021a_platform_nb); + mxc_arch_reset_init_dt(); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); } |