]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
mfd: vexpress: Allow vexpress-sysreg to self-initialise
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 4 Feb 2013 18:08:02 +0000 (18:08 +0000)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 13 Feb 2013 23:22:59 +0000 (00:22 +0100)
The vexpress_sysreg_init() is a core_initcall() already and it can
trigger the early initialisation if a matching node is found. This patch
allows the SoC code to avoid calling vexpress_sysreg_of_early_init()
explicitly.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Pawel Moll <pawel.moll@arm.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/vexpress-sysreg.c

index 51c3ca263bf5e913637f08c970b8db618a4b7ab2..a4a43230abcda29e74bd7044d9b16fa131a6e52a 100644 (file)
@@ -338,14 +338,15 @@ void __init vexpress_sysreg_early_init(void __iomem *base)
 
 void __init vexpress_sysreg_of_early_init(void)
 {
-       struct device_node *node = of_find_compatible_node(NULL, NULL,
-                       "arm,vexpress-sysreg");
+       struct device_node *node;
 
+       if (vexpress_sysreg_base)
+               return;
+
+       node = of_find_compatible_node(NULL, NULL, "arm,vexpress-sysreg");
        if (node) {
                vexpress_sysreg_base = of_iomap(node, 0);
                vexpress_sysreg_setup(node);
-       } else {
-               pr_info("vexpress-sysreg: No Device Tree node found.");
        }
 }
 
@@ -515,6 +516,7 @@ static struct platform_driver vexpress_sysreg_driver = {
 
 static int __init vexpress_sysreg_init(void)
 {
+       vexpress_sysreg_of_early_init();
        return platform_driver_register(&vexpress_sysreg_driver);
 }
 core_initcall(vexpress_sysreg_init);