AC63_BT_SDK/apps/common/temp_trim/dtemp_pll_trim.c
2025-02-18 15:40:42 +08:00

92 lines
2.1 KiB
C

#include "typedef.h"
#include "asm/clock.h"
#include "timer.h"
#include "asm/efuse.h"
#include "irq.h"
#include "asm/power_interface.h"
#include "jiffies.h"
#include "app_config.h"
#include "syscfg_id.h"
#include "system/includes.h"
//*******************************************
// ****************dtemp pll trim************
//*******************************************
#define APP_IO_DEBUG_0(i,x) //{JL_PORT##i->DIR &= ~BIT(x), JL_PORT##i->OUT &= ~BIT(x);}
#define APP_IO_DEBUG_1(i,x) //{JL_PORT##i->DIR &= ~BIT(x), JL_PORT##i->OUT |= BIT(x);}
extern void get_bta_pll_midbank_temp(void); //ok
extern const int config_bt_temperature_pll_trim;
static u16 trim_timer_handle = 0;
static u8 is_pll_trim_active = 0;
#define CHECK_TEMPERATURE_CYCLE_INIT (1000 * 8) //未连接检测周期
/* #define CHECK_TEMPERATURE_CYCLE_CONNECTED (1000 * 5 ) //连接蓝牙检测周期 */
extern u8 btpll_status_det();
extern u8 le_hw_check_all_instant_will_be_valid();
static void btpll_trim_main()
{
printf("midbank_trim>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\r\n");
local_irq_disable();
is_pll_trim_active = 1;
local_irq_enable();
/* APP_IO_DEBUG_1(B,0); */
get_bta_pll_midbank_temp();
/* APP_IO_DEBUG_0(B,0); */
local_irq_disable();
is_pll_trim_active = 0;
local_irq_enable();
}
void temperature_plltrim_handle()
{
int msg[3] = {0};
msg[0] = (int)btpll_trim_main;
msg[1] = 1;
msg[2] = 0;
int ret = os_taskq_post_type("app_core", Q_CALLBACK, 3, msg);
}
void trim_process()
{
if (!le_hw_check_all_instant_will_be_valid() && btpll_status_det()) {
temperature_plltrim_handle();
}
}
void trim_timer_add()
{
if (config_bt_temperature_pll_trim) {
if (!trim_timer_handle) {
trim_timer_handle = sys_s_hi_timer_add(NULL, trim_process, CHECK_TEMPERATURE_CYCLE_INIT);
}
}
}
static u8 pll_trim_idle_query(void)
{
return (!is_pll_trim_active);
}
REGISTER_LP_TARGET(plll_trim_lp_target) = {
.name = "pll_trim",
.is_idle = pll_trim_idle_query,
};
__initcall(trim_timer_add);