nvmem: mediatek: Fix later provider initialization
authorAndrew-CT Chen <andrew-ct.chen@mediatek.com>
Mon, 22 Feb 2016 11:24:05 +0000 (11:24 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 5 Mar 2016 20:20:29 +0000 (12:20 -0800)
Possibly, provider driver initialization is later than
consumer driver. Use function subsys_initcall to initialize
NVMEM provider early to ensure NVMEM consumer doesn't need
to -EPROBE_DEFER.

Signed-off-by: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/mtk-efuse.c

index 7b35f5b630cd1a1dccb4fcc96a5a8136a3ed34c4..9c49369beea56b0ee4ded8cce15f306ef96aa37a 100644 (file)
@@ -83,7 +83,28 @@ static struct platform_driver mtk_efuse_driver = {
                .of_match_table = mtk_efuse_of_match,
        },
 };
-module_platform_driver(mtk_efuse_driver);
+
+static int __init mtk_efuse_init(void)
+{
+       int ret;
+
+       ret = platform_driver_register(&mtk_efuse_driver);
+       if (ret) {
+               pr_err("Failed to register efuse driver\n");
+               return ret;
+       }
+
+       return 0;
+}
+
+static void __exit mtk_efuse_exit(void)
+{
+       return platform_driver_unregister(&mtk_efuse_driver);
+}
+
+subsys_initcall(mtk_efuse_init);
+module_exit(mtk_efuse_exit);
+
 MODULE_AUTHOR("Andrew-CT Chen <andrew-ct.chen@mediatek.com>");
 MODULE_DESCRIPTION("Mediatek EFUSE driver");
 MODULE_LICENSE("GPL v2");