1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 */
14 #include "regulator_adapter_consumer.h"
15 #include "regulator_adapter.h"
16 #include <linux/kernel.h>
17 #include <linux/device.h>
18 #include <linux/platform_device.h>
19 #include <linux/regulator/driver.h>
20 #include <linux/regulator/machine.h>
21 #include <linux/regulator/consumer.h>
22 #include "hdf_log.h"
23
24 #define HDF_LOG_TAG regulator_linux_adapter
25
RegulatorAdapterConsumerDevRelease(struct device * dev)26 static void RegulatorAdapterConsumerDevRelease(struct device *dev)
27 {
28 }
29
30 static struct platform_device RegulatorAdapterConsumerPlatformDevice = {
31 .name = "regulator_adapter_consumer01",
32 .id = -1,
33 .dev = {
34 .release = RegulatorAdapterConsumerDevRelease,
35 }
36 };
37
38 struct platform_device *g_regulatorAdapterDev;
RegulatorAdapterConsumerPlatformProbe(struct platform_device * platform_dev)39 static int RegulatorAdapterConsumerPlatformProbe(struct platform_device *platform_dev)
40 {
41 if (platform_dev != NULL) {
42 g_regulatorAdapterDev = platform_dev;
43 LinuxRegulatorSetConsumerDev(&platform_dev->dev);
44 HDF_LOGI("%s success", __func__);
45 return HDF_SUCCESS;
46 }
47
48 HDF_LOGE("%s: fail", __func__);
49 return HDF_FAILURE;
50 }
51
RegulatorAdapterConsumerPlatformRemove(struct platform_device * platform_dev)52 static int RegulatorAdapterConsumerPlatformRemove(struct platform_device *platform_dev)
53 {
54 if (platform_dev == NULL) {
55 HDF_LOGE("%s: fail", __func__);
56 return HDF_FAILURE;
57 }
58 HDF_LOGI("%s: success", __func__);
59 return HDF_SUCCESS;
60 }
61
62 static struct platform_driver RegulatorAdapterConsumerPlatformDriver = {
63 .driver = {
64 .name = "regulator_adapter_consumer01",
65 .owner = THIS_MODULE,
66 },
67 .probe = RegulatorAdapterConsumerPlatformProbe,
68 .remove = RegulatorAdapterConsumerPlatformRemove,
69 };
70
RegulatorAdapterConsumerInit(void)71 int RegulatorAdapterConsumerInit(void)
72 {
73 int ret;
74
75 ret = platform_device_register(&RegulatorAdapterConsumerPlatformDevice);
76 if (ret != 0) {
77 HDF_LOGE("%s: fail", __func__);
78 return ret;
79 }
80
81 ret = platform_driver_register(&RegulatorAdapterConsumerPlatformDriver);
82 return ret;
83 }
84
RegulatorAdapterConsumerModuleInit(void)85 int __init RegulatorAdapterConsumerModuleInit(void)
86 {
87 int ret;
88
89 ret = platform_device_register(&RegulatorAdapterConsumerPlatformDevice);
90 if (ret != 0) {
91 HDF_LOGE("%s: fail", __func__);
92 return ret;
93 }
94 ret = platform_driver_register(&RegulatorAdapterConsumerPlatformDriver);
95 return ret;
96 }
RegulatorAdapterConsumerExit(void)97 void __exit RegulatorAdapterConsumerExit(void)
98 {
99 platform_device_unregister(&RegulatorAdapterConsumerPlatformDevice);
100 platform_driver_unregister(&RegulatorAdapterConsumerPlatformDriver);
101 }
102
103 MODULE_DESCRIPTION("Regulator Adapter Consumer Platform Device");
104 MODULE_LICENSE("GPL");
105