blob: 16e80a6b8ddeb9a2d1e46906a03d11fc1bde7a3c [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#include "audio_uevent.h"
#include "../auge/earc_hw.h"
static struct audio_uevent audio_events[] = {
{
.type = AUDIO_SPDIF_FMT_EVENT,
.env = "AUDIO_FORMAT=",
},
{
.type = HEADPHONE_DETECTION_EVENT,
.env = "HEADPHONE_DETECTION=",
},
{
.type = MICROPHONE_DETECTION_EVENT,
.env = "MICROPHONE_DETECTION=",
},
{
.type = EARCTX_ATNDTYP_EVENT,
.env = "EARCTX_ARC_STATE=",
},
{
.type = AUDIO_NONE_EVENT,
}
};
int audio_send_uevent(struct device *dev, enum audio_event type, int val)
{
char env[MAX_UEVENT_LEN];
struct audio_uevent *event = audio_events;
char *envp[2];
int ret = -1;
for (event = audio_events; event->type != AUDIO_NONE_EVENT; event++) {
if (type == event->type)
break;
}
if (event->type == AUDIO_NONE_EVENT)
return ret;
event->state = val;
memset(env, 0, sizeof(env));
envp[0] = env;
envp[1] = NULL;
snprintf(env, MAX_UEVENT_LEN, "%s%d", event->env, val);
ret = kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp);
pr_debug("%s[%d] %s %d\n", __func__, __LINE__, env, ret);
return ret;
}