blob: 206b98148142933bfd11e79f10fd455860a4c154 [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2019 MediaTek Inc.
4 */
5
6#include "ondiemet.h"
7
8/* record enabled modules */
9unsigned int ondiemet_module[ONDIEMET_NUM];
10EXPORT_SYMBOL(ondiemet_module);
11
12void (*scp_start[ONDIEMET_NUM]) (void) = {
13sspm_start, NULL, NULL};
14
15void (*scp_stop[ONDIEMET_NUM]) (void) = {
16sspm_stop, NULL, NULL};
17
18void (*scp_extract[ONDIEMET_NUM]) (void) = {
19sspm_extract, NULL, NULL};
20
21/* record which MCU is started to generate data */
22int ondiemet_module_started[ONDIEMET_NUM];
23
24int ondiemet_attr_init(struct device *dev)
25{
26 int ret;
27
28 ret = sspm_attr_init(dev);
29 if (ret != 0) {
30 pr_debug("can not create device file: sspm related\n");
31 return ret;
32 }
33
34 return 0;
35
36}
37
38int ondiemet_attr_uninit(struct device *dev)
39{
40 int ret;
41
42 ret = sspm_attr_uninit(dev);
43 if (ret != 0) {
44 pr_debug("can not delete device file: sspm related\n");
45 return ret;
46 }
47
48 return 0;
49
50}
51
52void ondiemet_start(void)
53{
54 int i;
55
56 for (i = 0; i < ONDIEMET_NUM; i++) {
57 if (ondiemet_module[i] != 0) {
58 ondiemet_module_started[i] = 1;
59 (*scp_start[i]) ();
60 }
61 }
62}
63
64void ondiemet_stop(void)
65{
66 int i;
67
68 for (i = 0; i < ONDIEMET_NUM; i++) {
69 if (ondiemet_module[i] != 0) {
70 (*scp_stop[i]) ();
71 ondiemet_module_started[i] = 0;
72 }
73 }
74}
75
76void ondiemet_extract(void)
77{
78 int i;
79
80 for (i = 0; i < ONDIEMET_NUM; i++) {
81 if (ondiemet_module[i] != 0)
82 (*scp_extract[i]) ();
83 }
84}