1 // Copyright (C) 2022 Beken Corporation 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #pragma once 16 17 #include <common/bk_typedef.h> 18 #include "bk_fake_clock.h" 19 #include "bk_icu.h" 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 #define CFG_MCU_PS_SELECT_120M 1 26 27 typedef struct mcu_ps { 28 UINT8 mcu_ps_on; 29 int peri_busy_count; 30 UINT32 mcu_prevent; 31 } MCU_PS_INFO; 32 33 34 #define MCU_PS_CONNECT CO_BIT(0) 35 #define MCU_PS_ADD_KEY CO_BIT(1) 36 37 #define CHIP_U_MCU_WKUP_USE_TIMER 1 38 39 #define PS_USE_UART_WAKE_ARM 1 40 41 extern void mcu_ps_init ( void ); 42 extern void mcu_ps_exit ( void ); 43 extern UINT32 mcu_power_save ( UINT32 ); 44 extern void mcu_prevent_clear ( UINT32 ); 45 extern void mcu_prevent_set ( UINT32 ); 46 extern void peri_busy_count_dec ( void ); 47 extern void peri_busy_count_add ( void ); 48 extern UINT32 peri_busy_count_get ( void ); 49 extern UINT32 mcu_prevent_get ( void ); 50 extern void mcu_ps_dump ( void ); 51 extern void ps_pwm_reconfig ( UINT32 , UINT8 ); 52 extern void ps_pwm_resume_tick ( void ); 53 extern void ps_pwm_suspend_tick ( UINT32 ); 54 extern void ps_pwm_disable ( void ); 55 extern void ps_pwm_enable ( void ); 56 extern uint32_t ps_timer3_disable ( void ); 57 extern void ps_timer3_enable ( uint32_t ); 58 extern UINT32 ps_pwm_int_status ( void ); 59 extern UINT32 rtt_update_tick ( UINT32 tick ); 60 61 extern UINT32 ps_timer3_measure_prepare ( void ); 62 extern UINT32 mcu_ps_tsf_cal ( UINT64 ); 63 extern UINT32 mcu_ps_machw_cal ( void ); 64 extern UINT32 mcu_ps_machw_reset ( void ); 65 extern UINT32 mcu_ps_machw_init ( void ); 66 extern UINT32 mcu_ps_is_on ( void ); 67 extern void mcu_ps_msg_process( UINT8 ); 68 69 #define PS_PWM_ID FCLK_PWM_ID 70 #if (PS_PWM_ID == PWM0) 71 #define MCU_PS_PWM_COUNTER PWM0_COUNTER 72 #define MCU_PS_PWM_DUTY_CYCLE PWM0_DUTY_CYCLE 73 #define PWD_MCU_WAKE_PWM_BIT PWD_PWM0_CLK_BIT 74 #elif(PS_PWM_ID == PWM1) 75 #define MCU_PS_PWM_COUNTER PWM1_COUNTER 76 #define MCU_PS_PWM_DUTY_CYCLE PWM1_DUTY_CYCLE 77 #define PWD_MCU_WAKE_PWM_BIT PWD_PWM1_CLK_BIT 78 #elif(PS_PWM_ID == PWM2) 79 #define MCU_PS_PWM_COUNTER PWM2_COUNTER 80 #define MCU_PS_PWM_DUTY_CYCLE PWM2_DUTY_CYCLE 81 #define PWD_MCU_WAKE_PWM_BIT PWD_PWM2_CLK_BIT 82 #elif(PS_PWM_ID == PWM3) 83 #define MCU_PS_PWM_COUNTER PWM3_COUNTER 84 #define MCU_PS_PWM_DUTY_CYCLE PWM3_DUTY_CYCLE 85 #define PWD_MCU_WAKE_PWM_BIT PWD_PWM3_CLK_BIT 86 #elif(PS_PWM_ID == PWM4) 87 #define MCU_PS_PWM_COUNTER PWM4_COUNTER 88 #define MCU_PS_PWM_DUTY_CYCLE PWM4_DUTY_CYCLE 89 #define PWD_MCU_WAKE_PWM_BIT PWD_PWM4_CLK_BIT 90 #elif(PS_PWM_ID == PWM5) 91 #define MCU_PS_PWM_COUNTER PWM5_COUNTER 92 #define MCU_PS_PWM_DUTY_CYCLE PWM5_DUTY_CYCLE 93 #define PWD_MCU_WAKE_PWM_BIT PWD_PWM5_CLK_BIT 94 #endif 95 96 #ifdef __cplusplus 97 } 98 #endif 99