ARM: davinci: add skeleton for pdata-quirks
authorKevin Hilman <khilman@baylibre.com>
Mon, 9 Jan 2017 20:55:29 +0000 (12:55 -0800)
committerSekhar Nori <nsekhar@ti.com>
Mon, 23 Jan 2017 15:22:38 +0000 (20:52 +0530)
Add skeleton pdata-quirks for davinci.

Signed-off-by: Kevin Hilman <khilman@baylibre.com>
[nsekhar@ti.com: move changes to build pdata-quirks.c and call
 to pdata_quirks_init() to this patch]
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
arch/arm/mach-davinci/Makefile
arch/arm/mach-davinci/da8xx-dt.c
arch/arm/mach-davinci/include/mach/common.h
arch/arm/mach-davinci/pdata-quirks.c [new file with mode: 0644]

index 0a2e6da..df96ca9 100644 (file)
@@ -21,7 +21,7 @@ obj-$(CONFIG_AINTC)                   += irq.o
 obj-$(CONFIG_CP_INTC)                  += cp_intc.o
 
 # Board specific
-obj-$(CONFIG_MACH_DA8XX_DT)            += da8xx-dt.o
+obj-$(CONFIG_MACH_DA8XX_DT)            += da8xx-dt.o pdata-quirks.o
 obj-$(CONFIG_MACH_DAVINCI_EVM)         += board-dm644x-evm.o
 obj-$(CONFIG_MACH_SFFSDR)              += board-sffsdr.o
 obj-$(CONFIG_MACH_NEUROS_OSD2)         += board-neuros-osd2.o
index 9ee44da..d2be194 100644 (file)
@@ -62,6 +62,7 @@ static void __init da850_init_machine(void)
 
        of_platform_default_populate(NULL, da850_auxdata_lookup, NULL);
        davinci_pm_init();
+       pdata_quirks_init();
 }
 
 static const char *const da850_boards_compat[] __initconst = {
index 0b3c169..037aa66 100644 (file)
@@ -102,6 +102,8 @@ int davinci_pm_init(void);
 static inline int davinci_pm_init(void) { return 0; }
 #endif
 
+void __init pdata_quirks_init(void);
+
 #define SRAM_SIZE      SZ_128K
 
 #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */
diff --git a/arch/arm/mach-davinci/pdata-quirks.c b/arch/arm/mach-davinci/pdata-quirks.c
new file mode 100644 (file)
index 0000000..5b57da4
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Legacy platform_data quirks
+ *
+ * Copyright (C) 2016 BayLibre, Inc
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/kernel.h>
+#include <linux/of_platform.h>
+
+#include <mach/common.h>
+
+struct pdata_init {
+       const char *compatible;
+       void (*fn)(void);
+};
+
+static void pdata_quirks_check(struct pdata_init *quirks)
+{
+       while (quirks->compatible) {
+               if (of_machine_is_compatible(quirks->compatible)) {
+                       if (quirks->fn)
+                               quirks->fn();
+                       break;
+               }
+               quirks++;
+       }
+}
+
+static struct pdata_init pdata_quirks[] __initdata = {
+       { /* sentinel */ },
+};
+
+void __init pdata_quirks_init(void)
+{
+       pdata_quirks_check(pdata_quirks);
+}