• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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