blob: d794ddda3e0f447c7eb2096e23df9df9d51e6c3b [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#include <linux/types.h>
#include <linux/mutex.h>
#include <linux/amlogic/cpu_version.h>
#include <linux/amlogic/aml_atvdemod.h>
#ifdef CONFIG_AMLOGIC_POWER
//#include <linux/amlogic/power_domain.h>
//#include <dt-bindings/power/amlogic,pd.h>
#endif
#include "atv_demod_ext.h"
static DEFINE_MUTEX(aml_fe_hook_mutex);
static hook_func_t aml_fe_hook_atv_status;
static hook_func_t aml_fe_hook_hv_lock;
static hook_func_t aml_fe_hook_get_fmt;
static hook_func1_t aml_fe_hook_set_mode;
void aml_fe_hook_cvd(hook_func_t atv_mode, hook_func_t cvd_hv_lock,
hook_func_t get_fmt, hook_func1_t set_mode)
{
mutex_lock(&aml_fe_hook_mutex);
aml_fe_hook_atv_status = atv_mode;
aml_fe_hook_hv_lock = cvd_hv_lock;
aml_fe_hook_get_fmt = get_fmt;
aml_fe_hook_set_mode = set_mode;
mutex_unlock(&aml_fe_hook_mutex);
pr_info("%s: %s OK.\n", __func__, atv_mode != NULL ? "set" : "reset");
}
EXPORT_SYMBOL_GPL(aml_fe_hook_cvd);
bool aml_fe_has_hook_up(void)
{
bool state = false;
mutex_lock(&aml_fe_hook_mutex);
if (!aml_fe_hook_atv_status ||
!aml_fe_hook_hv_lock ||
!aml_fe_hook_get_fmt ||
!aml_fe_hook_set_mode)
state = false;
else
state = true;
mutex_unlock(&aml_fe_hook_mutex);
return state;
}
bool aml_fe_hook_call_get_fmt(int *fmt)
{
bool state = false;
mutex_lock(&aml_fe_hook_mutex);
if (aml_fe_hook_get_fmt && fmt) {
*fmt = aml_fe_hook_get_fmt();
state = true;
} else {
state = false;
}
mutex_unlock(&aml_fe_hook_mutex);
return state;
}
bool aml_fe_hook_call_set_mode(bool mode)
{
bool state = false;
mutex_lock(&aml_fe_hook_mutex);
if (aml_fe_hook_set_mode) {
aml_fe_hook_set_mode(mode);
state = true;
} else {
state = false;
}
mutex_unlock(&aml_fe_hook_mutex);
return state;
}
void atvdemod_power_switch(bool on)
{
#ifdef CONFIG_AMLOGIC_POWER
if (is_meson_tm2_cpu()) {
if (on)
;//power_domain_switch(PM_ATV_DEMOD, PWR_ON);
else
;//power_domain_switch(PM_ATV_DEMOD, PWR_OFF);
}
#endif
}