95 lines
2.3 KiB
C
95 lines
2.3 KiB
C
/******************************************************************************
|
|
*
|
|
* Copyright(c) 2019 - 2020 Realtek Corporation.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
*****************************************************************************/
|
|
#ifndef __PHL_SOUND_FSM_H__
|
|
#define __PHL_SOUND_FSM_H__
|
|
|
|
struct phl_sound_obj;
|
|
|
|
enum RTW_PHL_SND_NOTIFY_EVENT {
|
|
RTW_PHL_SND_START,
|
|
RTW_PHL_SND_ABORT,
|
|
RTW_PHL_SND_C2H_SND_DOWN /* C2H Sounding Down */
|
|
};
|
|
|
|
enum SND_EV_ID {
|
|
SND_FUNC_EV_INIT,
|
|
SND_FUNC_EV_DEINIT,
|
|
SND_FUNC_EV_SND_START,
|
|
SND_FUNC_EV_NOTIFY_PENDING_REQ,
|
|
SND_FUNC_EV_CHK_SND_STS,
|
|
SND_FUNC_EV_PROC_GRP,
|
|
SND_FUNC_EV_START_SND_PROC,
|
|
SND_FUNC_EV_END_SND,
|
|
SND_PROC_EV_IDLE_GET_SND_GRP,
|
|
SND_PROC_EV_IDLE_FREE_PRE_RES,
|
|
SND_PROC_EV_BUSY_GET_BF_RES,
|
|
SND_PROC_EV_BUSY_PRE_CFG,
|
|
SND_PROC_EV_BUSY_TRIG_SND,
|
|
SND_PROC_EV_BUSY_REL_SND_CTRL,
|
|
SND_PROC_EV_BUSY_POLLING_STS,
|
|
SND_PROC_EV_BUSY_SND_DOWN,
|
|
SND_PROC_EV_DOWN_POST_CFG,
|
|
SND_PROC_EV_DOWN_SND_END,
|
|
SND_PROC_EV_DOWN_NEXT_SND,
|
|
SND_EV_TERMINATE,
|
|
SND_EV_DONOTHING,
|
|
SND_EV_MAX
|
|
};
|
|
|
|
enum SND_STATE_ST {
|
|
/* Initializae and de-initialize*/
|
|
SND_ST_FUNC_INIT,
|
|
SND_ST_FUNC_DEINIT,
|
|
/* FUNC MAIN STATE */
|
|
SND_ST_FUNC_READY,
|
|
SND_ST_FUNC_LEAVE,
|
|
/* SND PROC - periodic */
|
|
SND_ST_PROC_IDLE,
|
|
SND_ST_PROC_BUSY,
|
|
SND_ST_PROC_DOWN,
|
|
SND_ST_PROC_TERMINATE
|
|
};
|
|
|
|
struct phl_snd_start_req {
|
|
void *wrole;
|
|
u8 dialog_token;
|
|
u8 proc_timeout_ms;
|
|
u8 proc_period;
|
|
bool bypass_sts_chk;
|
|
u8 test_flag;
|
|
};
|
|
|
|
struct fsm_main *phl_sound_new_fsm(struct fsm_root *root,
|
|
struct phl_info_t *phl_info);
|
|
|
|
void phl_snd_destory_fsm(struct fsm_main *fsm);
|
|
|
|
enum rtw_phl_status phl_snd_fsm_ev_c2h_snd_down(void *phl);
|
|
|
|
void phl_snd_destory_obj(struct phl_sound_obj *snd);
|
|
|
|
enum rtw_phl_status phl_snd_fsm_ev_abort(void *phl);
|
|
|
|
enum rtw_phl_status
|
|
phl_snd_fsm_ev_start_func(void *phl, void *req);
|
|
|
|
enum rtw_phl_status
|
|
phl_snd_fsm_send_msg(void *phl, enum RTW_PHL_SND_NOTIFY_EVENT notify,
|
|
void *buf, u32 buf_sz);
|
|
|
|
u8 phl_snd_is_inprogress(void *phl);
|
|
|
|
#endif
|