blob: 206b98148142933bfd11e79f10fd455860a4c154 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2019 MediaTek Inc.
*/
#include "ondiemet.h"
/* record enabled modules */
unsigned int ondiemet_module[ONDIEMET_NUM];
EXPORT_SYMBOL(ondiemet_module);
void (*scp_start[ONDIEMET_NUM]) (void) = {
sspm_start, NULL, NULL};
void (*scp_stop[ONDIEMET_NUM]) (void) = {
sspm_stop, NULL, NULL};
void (*scp_extract[ONDIEMET_NUM]) (void) = {
sspm_extract, NULL, NULL};
/* record which MCU is started to generate data */
int ondiemet_module_started[ONDIEMET_NUM];
int ondiemet_attr_init(struct device *dev)
{
int ret;
ret = sspm_attr_init(dev);
if (ret != 0) {
pr_debug("can not create device file: sspm related\n");
return ret;
}
return 0;
}
int ondiemet_attr_uninit(struct device *dev)
{
int ret;
ret = sspm_attr_uninit(dev);
if (ret != 0) {
pr_debug("can not delete device file: sspm related\n");
return ret;
}
return 0;
}
void ondiemet_start(void)
{
int i;
for (i = 0; i < ONDIEMET_NUM; i++) {
if (ondiemet_module[i] != 0) {
ondiemet_module_started[i] = 1;
(*scp_start[i]) ();
}
}
}
void ondiemet_stop(void)
{
int i;
for (i = 0; i < ONDIEMET_NUM; i++) {
if (ondiemet_module[i] != 0) {
(*scp_stop[i]) ();
ondiemet_module_started[i] = 0;
}
}
}
void ondiemet_extract(void)
{
int i;
for (i = 0; i < ONDIEMET_NUM; i++) {
if (ondiemet_module[i] != 0)
(*scp_extract[i]) ();
}
}