Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nvmem: mediatek: Fix later provider initialization

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>

authored by

Andrew-CT Chen and committed by
Greg Kroah-Hartman
564e7f87 c7e3c5f8

+22 -1
+22 -1
drivers/nvmem/mtk-efuse.c
··· 83 83 .of_match_table = mtk_efuse_of_match, 84 84 }, 85 85 }; 86 - module_platform_driver(mtk_efuse_driver); 86 + 87 + static int __init mtk_efuse_init(void) 88 + { 89 + int ret; 90 + 91 + ret = platform_driver_register(&mtk_efuse_driver); 92 + if (ret) { 93 + pr_err("Failed to register efuse driver\n"); 94 + return ret; 95 + } 96 + 97 + return 0; 98 + } 99 + 100 + static void __exit mtk_efuse_exit(void) 101 + { 102 + return platform_driver_unregister(&mtk_efuse_driver); 103 + } 104 + 105 + subsys_initcall(mtk_efuse_init); 106 + module_exit(mtk_efuse_exit); 107 + 87 108 MODULE_AUTHOR("Andrew-CT Chen <andrew-ct.chen@mediatek.com>"); 88 109 MODULE_DESCRIPTION("Mediatek EFUSE driver"); 89 110 MODULE_LICENSE("GPL v2");