blob: 3f1ce7fd12adc22910f4daf194669b4214314acd [file] [log] [blame]
#ifndef RAKE_API_PUBLIC_H
#define RAKE_API_PUBLIC_H
#if defined(__MD97__) || defined(__MD97P__)
#include "dsp_module_based_api_public.h"
#else //defined(__MD97__)
#include "dsp_control_public.h"
/***************************************************************/
/********* Enum for BootDoneCheck Return Value *************/
/***************************************************************/
typedef enum{
RAKE_NOTYETDONE,
RAKE_BOOTDONE,
RAKE_NOT_DEACTIVEDONE,
RAKE_DEACTIVEDONE
}RAKE_BOOTDONECHECK_RETVALUE;
#define RAKE_NOT_ACTIVEDONE RAKE_NOTYETDONE
#define RAKE_ACTIVEDONE RAKE_BOOTDONE
/***************************************************************/
/********* Function Prototype **********************************/
/***************************************************************/
extern RAKE_BOOTDONECHECK_RETVALUE RAKE_BootDoneCheck(RAKE_API_USER);
/* Common API */
extern DSP_CONTROL_IDLE_FLAG_STATUS rake_check_idle_flag(RAKE_API_USER);
extern kal_uint32 rake_ddl_check_idle_flag_bitmap(kal_uint32);
extern kal_bool is_myself_duty_rat(DSP_CDIF_CORE_ENUM, kal_uint32);
extern kal_uint32 return_dutyrat_of_thread(DSP_CDIF_CORE_ENUM);
extern void firstboot_activate(DSP_CDIF_CORE_ENUM, kal_uint32);
/* Activate Relatives */
extern void rake_activate(RAKE_API_USER);
/* Deactivate Relatives */
extern void rake_deactivate(RAKE_API_USER, CMIFZI_CTRL);
extern RAKE_CONTROL_STATUS rake_deactive_done_check(RAKE_API_USER);
/* DDL Relatives */
extern void rake_ddl_start(RAKE_API_USER , DDL_MODE);
extern void rake_ddl_status_mode_query(DDL_STATUS*, DDL_MODE*);
extern kal_bool ddl_check_all_target_user_are_deactive(DSP_CDIF_CORE_ENUM);
extern kal_bool ddl_has_rake_user_call_deactivate(kal_uint32);
extern kal_uint32 dsp_check_ddl_user_status(DSP_CDIF_CORE_ENUM, kal_uint32);
/***************************************************************/
/********* Function Definition *********************************/
/***************************************************************/
/***** Sleep Flow APIs for user *****/
/* FirstBoot API */
#define topsm_return_dutyrat_of_rake firstboot_topsm_query(DSP_CONTROL_RAKE)
#define is_myself_duty_user_of_rake(user_id) is_myself_duty_rat(DSP_CONTROL_RAKE, user_id)
/* First Boot Activate Use */
#define rake_firstboot_activate(user_id) firstboot_activate(DSP_CONTROL_RAKE, user_id)
/* Check idle APIs */
#define rake_check_ddl_user_status(user_bitmap) dsp_check_ddl_user_status(DSP_CONTROL_RAKE, user_bitmap)
#define dsp_rake_check_idle_flag(user_id) rake_check_idle_flag(user_id)
/* Activate APIs*/
#define dsp_rake_activate(user_id) rake_activate(user_id)
/* Activate check APIs */
#define dsp_rake_done_check(user_id) RAKE_BootDoneCheck(user_id)
#define dsp_rake_active_done_check(user_id) RAKE_BootDoneCheck(user_id)
/* Deactivate APIs */
#define dsp_rake_deactivate(user_id) rake_deactivate(user_id, CMIFZI_EN)
#define dsp_rake_deactivate_wo_cmifzi(user_id) rake_deactivate(user_id, CMIFZI_DIS)
/* Deactivate check APIs */
#define dsp_rake_deactive_done_check(user_id) rake_deactive_done_check(user_id)
/***** DDL Flow APIs for user *****/
// DDL check if RAKE is deactive
#define ddl_l2tcm_is_rake_deactive() ddl_check_all_target_user_are_deactive(DSP_CONTROL_RAKE)
// Trigger DDL
#define dsp_rake_ddl_start(user_id, bin_mode) rake_ddl_start(user_id, bin_mode)
// Check rake DDL mode/status
#define dsp_rake_ddl_status_mode_query(status, bin_mode) rake_ddl_status_mode_query(status, bin_mode)
#endif //defined(__MD97__)
#endif /* RAKE_API_PUBLIC_H */