mirror of
https://github.com/openharmony/device_soc_goodix.git
synced 2026-07-01 21:54:03 -04:00
fix code format issue
Signed-off-by: zhaoxingyu <zhaoxingyu@goodix.com>
This commit is contained in:
+1
-52
@@ -55,59 +55,8 @@ static void system_pmu_calibration_task(void *p_arg);
|
||||
static app_timer_id_t s_pmu_calibration_timer_id = 0;
|
||||
#endif
|
||||
|
||||
extern uint32_t g_debug_temperature;
|
||||
|
||||
#if CFG_LPCLK_INTERNAL_EN
|
||||
|
||||
#define PMU_SMALL_INTERVAL_MS (10*1000)
|
||||
#define TEMPERATURN_HIGH 44
|
||||
#define TEMPERATURN_LOW 40
|
||||
static uint32_t pmu_interval_init = 30 * 1000;
|
||||
static uint32_t pmu_interval_prev = 0;
|
||||
|
||||
uint32_t pmu_interval_get(uint32_t is_init)
|
||||
{
|
||||
uint32_t interval = 0;
|
||||
|
||||
if (g_debug_temperature > TEMPERATURN_HIGH) {
|
||||
interval = PMU_SMALL_INTERVAL_MS;
|
||||
} else if (g_debug_temperature >= TEMPERATURN_LOW && g_debug_temperature <= TEMPERATURN_HIGH && is_init) {
|
||||
interval = PMU_SMALL_INTERVAL_MS;
|
||||
} else if (g_debug_temperature < TEMPERATURN_LOW) {
|
||||
interval = pmu_interval_init;
|
||||
}
|
||||
|
||||
return interval;
|
||||
}
|
||||
|
||||
void pmu_timer_handler(void* p_arg)
|
||||
{
|
||||
pmu_calibration_handler(p_arg);
|
||||
|
||||
uint32_t interval_new;
|
||||
uint32_t interval_diff;
|
||||
|
||||
interval_new = pmu_interval_get(0);
|
||||
if (interval_new == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
interval_diff = interval_new > pmu_interval_prev ?
|
||||
interval_new - pmu_interval_prev: pmu_interval_prev - interval_new;
|
||||
|
||||
if (interval_diff > INTERVAL_MIN) {
|
||||
#ifdef ENV_USE_FREERTOS
|
||||
portBASE_TYPE xHigherPriorityTaskWoken;
|
||||
xTimerChangePeriodFromISR(timer_handle, interval_new, &xHigherPriorityTaskWoken);
|
||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||
#else
|
||||
app_timer_delete(&s_pmu_calibration_timer_id);
|
||||
app_timer_create(&s_pmu_calibration_timer_id, ATIMER_REPEAT, pmu_timer_handler);
|
||||
app_timer_start(s_pmu_calibration_timer_id, interval_new, NULL);
|
||||
#endif
|
||||
pmu_interval_prev = interval_new;
|
||||
}
|
||||
}
|
||||
#error "INTERNAL LPCLK is not supported by OHOS"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
// NOTE: SVC #0 is reserved for freertos, DO NOT USE IT!
|
||||
#define SVC_TABLE_NUM_MAX 4
|
||||
|
||||
#define PMU_CALIBRATION_DURATION_MS (30000)
|
||||
|
||||
#define FLASH_CS (LL_GPIO_PIN_2) /* XQSPI flash CS */
|
||||
#define FLASH_CLK (LL_GPIO_PIN_4) /* XQSPI flash CLK */
|
||||
#define FLASH_IO_0 (LL_GPIO_PIN_7) /* XQSPI flash IO0 */
|
||||
@@ -147,7 +149,7 @@ static void BLE_power_check(void)
|
||||
|
||||
static void system_calibration(void)
|
||||
{
|
||||
system_pmu_calibration_init(30000);
|
||||
system_pmu_calibration_init(PMU_CALIBRATION_DURATION_MS);
|
||||
|
||||
system_pmu_deinit();
|
||||
SystemCoreSetClock((mcu_clock_type_t)SYSTEM_CLOCK);
|
||||
|
||||
@@ -25,142 +25,128 @@
|
||||
#include "los_task.h"
|
||||
#include "los_sched.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include "los_port_pm.h"
|
||||
|
||||
#define TICK_MS_IN_HUS (2000)
|
||||
#define SYS_BLE_SLEEP_ALGO_HUS (580)
|
||||
#define SLP_WAKUP_ALGO_LP_CNT (32)
|
||||
#define DEEPSLEEP_TIME_MIN_MS (5)
|
||||
#define TICK_MS_IN_HUS (2000)
|
||||
#define SYS_BLE_SLEEP_ALGO_HUS (580)
|
||||
#define SLP_WAKUP_ALGO_LP_CNT (32)
|
||||
#define DEEPSLEEP_TIME_MIN_MS (5)
|
||||
#define DEEPSLEEP_TIME_MIN_SYSTICK (DEEPSLEEP_TIME_MIN_MS * (OS_SYS_CLOCK / 1000))
|
||||
|
||||
extern void ultra_wfi(void);
|
||||
extern uint32_t get_remain_sleep_dur(void);
|
||||
extern void warm_boot_second(void);
|
||||
|
||||
static uint64_t g_tickTimerBaseBeforeSleep = 0;
|
||||
static uint32_t g_lpCntWhenTickStop = 0;
|
||||
static uint32_t g_lpCntWhenTickReload = 0;
|
||||
|
||||
TINY_RAM_SECTION uint32_t OsSleepMsGet(void)
|
||||
{
|
||||
g_tickTimerBaseBeforeSleep = OsGetCurrSchedTimeCycle();
|
||||
return ((uint32_t)(OsSchedGetNextExpireTime(g_tickTimerBaseBeforeSleep) - g_tickTimerBaseBeforeSleep)) / OS_CYCLE_PER_TICK;
|
||||
g_tickTimerBaseBeforeSleep = OsGetCurrSchedTimeCycle();
|
||||
return ((uint32_t)(OsSchedGetNextExpireTime(g_tickTimerBaseBeforeSleep) - g_tickTimerBaseBeforeSleep)) /
|
||||
OS_CYCLE_PER_TICK;
|
||||
}
|
||||
|
||||
TINY_RAM_SECTION void SysTickReload(void)
|
||||
{
|
||||
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
|
||||
SysTick->LOAD = (UINT32)((OS_SYS_CLOCK / LOSCFG_BASE_CORE_TICK_PER_SECOND) - 1UL); /* set reload register */
|
||||
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
|
||||
SysTick->CTRL |= (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk);
|
||||
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
|
||||
SysTick->LOAD = (UINT32)((OS_SYS_CLOCK / LOSCFG_BASE_CORE_TICK_PER_SECOND) - 1UL);
|
||||
SysTick->VAL = 0UL;
|
||||
SysTick->CTRL |= (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk);
|
||||
}
|
||||
|
||||
TINY_RAM_SECTION static void pwrMgmtSleepDurLimit(uint32_t sleepMs)
|
||||
{
|
||||
uint32_t sleepHus = sleepMs * TICK_MS_IN_HUS - SYS_BLE_SLEEP_ALGO_HUS;
|
||||
if (get_remain_sleep_dur() > sleepHus)
|
||||
{
|
||||
pwr_mgmt_ble_wakeup();
|
||||
}
|
||||
sys_ble_heartbeat_period_set(sleepHus);
|
||||
uint32_t sleepHus = sleepMs * TICK_MS_IN_HUS - SYS_BLE_SLEEP_ALGO_HUS;
|
||||
if (get_remain_sleep_dur() > sleepHus) {
|
||||
pwr_mgmt_ble_wakeup();
|
||||
}
|
||||
sys_ble_heartbeat_period_set(sleepHus);
|
||||
}
|
||||
|
||||
TINY_RAM_SECTION static void pwrMgmtEnterSleepWithCond(uint32_t sleepMs)
|
||||
{
|
||||
pwrMgmtSleepDurLimit(sleepMs);
|
||||
pwrMgmtSleepDurLimit(sleepMs);
|
||||
|
||||
uint32_t intSave = LOS_IntLock();
|
||||
uint32_t intSave = LOS_IntLock();
|
||||
|
||||
if (DEVICE_BUSY == pwr_mgmt_dev_suspend())
|
||||
{
|
||||
ultra_wfi();
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
if (DEVICE_BUSY == pwr_mgmt_dev_suspend()) {
|
||||
ultra_wfi();
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
|
||||
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get())
|
||||
{
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get()) {
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
|
||||
pwr_mgmt_mode_t bleState = pwr_mgmt_baseband_state_get();
|
||||
switch (bleState)
|
||||
{
|
||||
case PMR_MGMT_IDLE_MODE:
|
||||
ultra_wfi();
|
||||
case PMR_MGMT_ACTIVE_MODE:
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
pwr_mgmt_mode_t bleState = pwr_mgmt_baseband_state_get();
|
||||
switch (bleState) {
|
||||
case PMR_MGMT_IDLE_MODE:
|
||||
ultra_wfi();
|
||||
case PMR_MGMT_ACTIVE_MODE:
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
|
||||
g_lpCntWhenTickStop = ll_pwr_get_comm_sleep_duration();
|
||||
g_lpCntWhenTickStop = ll_pwr_get_comm_sleep_duration();
|
||||
|
||||
pwr_mgmt_save_context();
|
||||
pwr_mgmt_save_context();
|
||||
|
||||
if (pwr_mgmt_get_wakeup_flag() == COLD_BOOT)
|
||||
{
|
||||
if (PMR_MGMT_IDLE_MODE == pwr_mgmt_shutdown())
|
||||
{
|
||||
ultra_wfi();
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
LOS_IntRestore(intSave);
|
||||
}
|
||||
else
|
||||
{
|
||||
pwr_mgmt_set_wakeup_flag(COLD_BOOT);
|
||||
if (pwr_mgmt_get_wakeup_flag() == COLD_BOOT) {
|
||||
if (PMR_MGMT_IDLE_MODE == pwr_mgmt_shutdown()) {
|
||||
ultra_wfi();
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
LOS_IntRestore(intSave);
|
||||
} else {
|
||||
pwr_mgmt_set_wakeup_flag(COLD_BOOT);
|
||||
|
||||
uint32_t intSaveLocal = LOS_IntLock();
|
||||
uint32_t intSaveLocal = LOS_IntLock();
|
||||
|
||||
g_lpCntWhenTickReload = ll_pwr_get_comm_sleep_duration();
|
||||
SysTickReload();
|
||||
g_lpCntWhenTickReload = ll_pwr_get_comm_sleep_duration();
|
||||
SysTickReload();
|
||||
|
||||
uint32_t sleepLpCycles = g_lpCntWhenTickReload - g_lpCntWhenTickStop + SLP_WAKUP_ALGO_LP_CNT;
|
||||
uint32_t lpCycles2HusErr = 0;
|
||||
uint32_t sleepHus = sys_lpcycles_2_hus(sleepLpCycles, &lpCycles2HusErr);
|
||||
uint32_t sleepSystick = sleepHus * (OS_CYCLE_PER_TICK / TICK_MS_IN_HUS);
|
||||
uint32_t sleepLpCycles = g_lpCntWhenTickReload - g_lpCntWhenTickStop + SLP_WAKUP_ALGO_LP_CNT;
|
||||
uint32_t lpCycles2HusErr = 0;
|
||||
uint32_t sleepHus = sys_lpcycles_2_hus(sleepLpCycles, &lpCycles2HusErr);
|
||||
uint32_t sleepSystick = sleepHus * (OS_CYCLE_PER_TICK / TICK_MS_IN_HUS);
|
||||
|
||||
OsTickTimerBaseReset(g_tickTimerBaseBeforeSleep + sleepSystick);
|
||||
LOS_SchedTickHandler();
|
||||
OsTickTimerBaseReset(g_tickTimerBaseBeforeSleep + sleepSystick);
|
||||
LOS_SchedTickHandler();
|
||||
|
||||
LOS_IntRestore(intSaveLocal);
|
||||
warm_boot_second();
|
||||
}
|
||||
LOS_IntRestore(intSaveLocal);
|
||||
warm_boot_second();
|
||||
}
|
||||
}
|
||||
|
||||
TINY_RAM_SECTION static void osPmEnterHandler(void)
|
||||
{
|
||||
uint32_t intSave = LOS_IntLock();
|
||||
uint32_t intSave = LOS_IntLock();
|
||||
|
||||
if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk))
|
||||
{
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk)) {
|
||||
LOS_IntRestore(intSave);
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t sleepMs = OsSleepMsGet();
|
||||
LOS_IntRestore(intSave);
|
||||
uint32_t sleepMs = OsSleepMsGet();
|
||||
LOS_IntRestore(intSave);
|
||||
|
||||
if (sleepMs < 5)
|
||||
{
|
||||
ultra_wfi();
|
||||
return;
|
||||
}
|
||||
if (sleepMs < 5) {
|
||||
ultra_wfi();
|
||||
return;
|
||||
}
|
||||
|
||||
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get())
|
||||
{
|
||||
ultra_wfi();
|
||||
return;
|
||||
}
|
||||
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get()) {
|
||||
ultra_wfi();
|
||||
return;
|
||||
}
|
||||
|
||||
LOS_TaskLock();
|
||||
pwrMgmtEnterSleepWithCond(sleepMs);
|
||||
LOS_TaskUnlock();
|
||||
LOS_TaskLock();
|
||||
pwrMgmtEnterSleepWithCond(sleepMs);
|
||||
LOS_TaskUnlock();
|
||||
}
|
||||
|
||||
void GR551xPwrMgmtInit(void)
|
||||
{
|
||||
OsPmEnterHandlerSet(osPmEnterHandler);
|
||||
OsPmEnterHandlerSet(osPmEnterHandler);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef __LOS_PORT_PM_H__
|
||||
#define __LOS_PORT_PM_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void ultra_wfi(void);
|
||||
|
||||
uint32_t get_remain_sleep_dur(void);
|
||||
|
||||
void warm_boot_second(void);
|
||||
|
||||
#endif // __LOS_PORT_PM_H__
|
||||
@@ -134,7 +134,6 @@ int HiLogWriteInternal(const char *buffer, size_t bufLen)
|
||||
#if APP_LOG_PORT == 0
|
||||
int ret = app_uart_transmit_sync(LOG_UART_ID, buffer, bufLen, UART_TX_TIMEOUT);
|
||||
#elif APP_LOG_PORT == 1
|
||||
// TODO: implement error code and timeout here
|
||||
int ret = 0;
|
||||
bsp_segger_rtt_send(buffer, bufLen);
|
||||
#endif // APP_LOG_PORT == 0
|
||||
|
||||
Reference in New Issue
Block a user