xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852be/phl/phl_sound_fsm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 - 2020 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef __PHL_SOUND_FSM_H__
16*4882a593Smuzhiyun #define __PHL_SOUND_FSM_H__
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun struct phl_sound_obj;
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun enum RTW_PHL_SND_NOTIFY_EVENT {
21*4882a593Smuzhiyun 	RTW_PHL_SND_START,
22*4882a593Smuzhiyun 	RTW_PHL_SND_ABORT,
23*4882a593Smuzhiyun 	RTW_PHL_SND_C2H_SND_DOWN /* C2H Sounding Down */
24*4882a593Smuzhiyun };
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun enum SND_EV_ID {
27*4882a593Smuzhiyun 	SND_FUNC_EV_INIT,
28*4882a593Smuzhiyun 	SND_FUNC_EV_DEINIT,
29*4882a593Smuzhiyun 	SND_FUNC_EV_SND_START,
30*4882a593Smuzhiyun 	SND_FUNC_EV_NOTIFY_PENDING_REQ,
31*4882a593Smuzhiyun 	SND_FUNC_EV_CHK_SND_STS,
32*4882a593Smuzhiyun 	SND_FUNC_EV_PROC_GRP,
33*4882a593Smuzhiyun 	SND_FUNC_EV_START_SND_PROC,
34*4882a593Smuzhiyun 	SND_FUNC_EV_END_SND,
35*4882a593Smuzhiyun 	SND_PROC_EV_IDLE_GET_SND_GRP,
36*4882a593Smuzhiyun 	SND_PROC_EV_IDLE_FREE_PRE_RES,
37*4882a593Smuzhiyun 	SND_PROC_EV_BUSY_GET_BF_RES,
38*4882a593Smuzhiyun 	SND_PROC_EV_BUSY_PRE_CFG,
39*4882a593Smuzhiyun 	SND_PROC_EV_BUSY_TRIG_SND,
40*4882a593Smuzhiyun 	SND_PROC_EV_BUSY_REL_SND_CTRL,
41*4882a593Smuzhiyun 	SND_PROC_EV_BUSY_POLLING_STS,
42*4882a593Smuzhiyun 	SND_PROC_EV_BUSY_SND_DOWN,
43*4882a593Smuzhiyun 	SND_PROC_EV_DOWN_POST_CFG,
44*4882a593Smuzhiyun 	SND_PROC_EV_DOWN_SND_END,
45*4882a593Smuzhiyun 	SND_PROC_EV_DOWN_NEXT_SND,
46*4882a593Smuzhiyun 	SND_EV_TERMINATE,
47*4882a593Smuzhiyun 	SND_EV_DONOTHING,
48*4882a593Smuzhiyun 	SND_EV_MAX
49*4882a593Smuzhiyun };
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun enum SND_STATE_ST {
52*4882a593Smuzhiyun 	/* Initializae and de-initialize*/
53*4882a593Smuzhiyun 	SND_ST_FUNC_INIT,
54*4882a593Smuzhiyun 	SND_ST_FUNC_DEINIT,
55*4882a593Smuzhiyun 	/* FUNC MAIN STATE */
56*4882a593Smuzhiyun 	SND_ST_FUNC_READY,
57*4882a593Smuzhiyun 	SND_ST_FUNC_LEAVE,
58*4882a593Smuzhiyun 	/* SND PROC - periodic */
59*4882a593Smuzhiyun 	SND_ST_PROC_IDLE,
60*4882a593Smuzhiyun 	SND_ST_PROC_BUSY,
61*4882a593Smuzhiyun 	SND_ST_PROC_DOWN,
62*4882a593Smuzhiyun 	SND_ST_PROC_TERMINATE
63*4882a593Smuzhiyun };
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun struct phl_snd_start_req {
66*4882a593Smuzhiyun 	void *wrole;
67*4882a593Smuzhiyun 	u8 dialog_token;
68*4882a593Smuzhiyun 	u8 proc_timeout_ms;
69*4882a593Smuzhiyun 	u8 proc_period;
70*4882a593Smuzhiyun 	bool bypass_sts_chk;
71*4882a593Smuzhiyun 	u8 test_flag;
72*4882a593Smuzhiyun };
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun struct fsm_main *phl_sound_new_fsm(struct fsm_root *root,
75*4882a593Smuzhiyun 	struct phl_info_t *phl_info);
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun void phl_snd_destory_fsm(struct fsm_main *fsm);
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun enum rtw_phl_status phl_snd_fsm_ev_c2h_snd_down(void *phl);
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun void phl_snd_destory_obj(struct phl_sound_obj *snd);
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun enum rtw_phl_status phl_snd_fsm_ev_abort(void *phl);
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun enum rtw_phl_status
86*4882a593Smuzhiyun phl_snd_fsm_ev_start_func(void *phl, void *req);
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun enum rtw_phl_status
89*4882a593Smuzhiyun phl_snd_fsm_send_msg(void *phl, enum RTW_PHL_SND_NOTIFY_EVENT notify,
90*4882a593Smuzhiyun 		     void *buf, u32 buf_sz);
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun u8 phl_snd_is_inprogress(void *phl);
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #endif
95