blob: cd35a9e24b121bf4c97aa33c3f7a46fb649d5d81 [file] [log] [blame]
Meng Wang43bbb872018-12-10 12:32:05 +08001// SPDX-License-Identifier: GPL-2.0-only
Meng Wang11a25cf2018-10-31 14:11:26 +08002/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303 */
4
5#include <linux/module.h>
Meng Wang11a25cf2018-10-31 14:11:26 +08006#include <asoc/msm-cdc-pinctrl.h>
7#include <asoc/wcd9xxx-irq.h>
8#include <asoc/core.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309
10#define NUM_DRIVERS_REG_RET 3
11
12static int __init wcd9xxx_core_init(void)
13{
14 int ret[NUM_DRIVERS_REG_RET] = {0};
15 int i = 0;
16
17 ret[0] = msm_cdc_pinctrl_drv_init();
18 if (ret[0])
19 pr_err("%s: Failed init pinctrl drv: %d\n", __func__, ret[0]);
20
21 ret[1] = wcd9xxx_irq_drv_init();
22 if (ret[1])
23 pr_err("%s: Failed init irq drv: %d\n", __func__, ret[1]);
24
25 ret[2] = wcd9xxx_init();
26 if (ret[2])
27 pr_err("%s: Failed wcd core drv: %d\n", __func__, ret[2]);
28
29 for (i = 0; i < NUM_DRIVERS_REG_RET; i++) {
30 if (ret[i])
31 return ret[i];
32 }
33
34 return 0;
35}
36module_init(wcd9xxx_core_init);
37
38static void __exit wcd9xxx_core_exit(void)
39{
40 wcd9xxx_exit();
41 wcd9xxx_irq_drv_exit();
42 msm_cdc_pinctrl_drv_exit();
43}
44module_exit(wcd9xxx_core_exit);
45
46MODULE_DESCRIPTION("WCD9XXX CODEC core init driver");
47MODULE_LICENSE("GPL v2");