92 lines
2.1 KiB
C
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);
|