xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/pwrseq.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /* Copyright(c) 2009-2010  Realtek Corporation.*/
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #include "../pwrseqcmd.h"
5*4882a593Smuzhiyun #include "pwrseq.h"
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun /* drivers should parse below arrays and do the corresponding actions */
8*4882a593Smuzhiyun /* 3 Power on  Array */
9*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_power_on_flow[RTL8812_TRANS_CARDEMU_TO_ACT_STEPS +
10*4882a593Smuzhiyun 					RTL8812_TRANS_END_STEPS] = {
11*4882a593Smuzhiyun 	RTL8812_TRANS_CARDEMU_TO_ACT
12*4882a593Smuzhiyun 	RTL8812_TRANS_END
13*4882a593Smuzhiyun };
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* 3Radio off GPIO Array */
16*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_radio_off_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS +
17*4882a593Smuzhiyun 						RTL8812_TRANS_END_STEPS] = {
18*4882a593Smuzhiyun 	RTL8812_TRANS_ACT_TO_CARDEMU
19*4882a593Smuzhiyun 	RTL8812_TRANS_END
20*4882a593Smuzhiyun };
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun /* 3Card Disable Array */
23*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_card_disable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS
24*4882a593Smuzhiyun 	+ RTL8812_TRANS_CARDEMU_TO_PDN_STEPS
25*4882a593Smuzhiyun 	+ RTL8812_TRANS_END_STEPS] = {
26*4882a593Smuzhiyun 	RTL8812_TRANS_ACT_TO_CARDEMU
27*4882a593Smuzhiyun 	RTL8812_TRANS_CARDEMU_TO_CARDDIS
28*4882a593Smuzhiyun 	RTL8812_TRANS_END
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /* 3 Card Enable Array */
32*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_card_enable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS
33*4882a593Smuzhiyun 	+ RTL8812_TRANS_CARDEMU_TO_PDN_STEPS
34*4882a593Smuzhiyun 	+ RTL8812_TRANS_END_STEPS] = {
35*4882a593Smuzhiyun 	RTL8812_TRANS_CARDDIS_TO_CARDEMU
36*4882a593Smuzhiyun 	RTL8812_TRANS_CARDEMU_TO_ACT
37*4882a593Smuzhiyun 	RTL8812_TRANS_END
38*4882a593Smuzhiyun };
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun /* 3Suspend Array */
41*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_suspend_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS +
42*4882a593Smuzhiyun 					RTL8812_TRANS_CARDEMU_TO_SUS_STEPS +
43*4882a593Smuzhiyun 					RTL8812_TRANS_END_STEPS] = {
44*4882a593Smuzhiyun 	RTL8812_TRANS_ACT_TO_CARDEMU
45*4882a593Smuzhiyun 	RTL8812_TRANS_CARDEMU_TO_SUS
46*4882a593Smuzhiyun 	RTL8812_TRANS_END
47*4882a593Smuzhiyun };
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun /* 3 Resume Array */
50*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_resume_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS +
51*4882a593Smuzhiyun 					RTL8812_TRANS_CARDEMU_TO_SUS_STEPS +
52*4882a593Smuzhiyun 					RTL8812_TRANS_END_STEPS] = {
53*4882a593Smuzhiyun 	RTL8812_TRANS_SUS_TO_CARDEMU
54*4882a593Smuzhiyun 	RTL8812_TRANS_CARDEMU_TO_ACT
55*4882a593Smuzhiyun 	RTL8812_TRANS_END
56*4882a593Smuzhiyun };
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun /* 3HWPDN Array */
59*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_hwpdn_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS +
60*4882a593Smuzhiyun 					RTL8812_TRANS_CARDEMU_TO_PDN_STEPS +
61*4882a593Smuzhiyun 					RTL8812_TRANS_END_STEPS] = {
62*4882a593Smuzhiyun 	RTL8812_TRANS_ACT_TO_CARDEMU
63*4882a593Smuzhiyun 	RTL8812_TRANS_CARDEMU_TO_PDN
64*4882a593Smuzhiyun 	RTL8812_TRANS_END
65*4882a593Smuzhiyun };
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun /* 3 Enter LPS */
68*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_enter_lps_flow[RTL8812_TRANS_ACT_TO_LPS_STEPS +
69*4882a593Smuzhiyun 						RTL8812_TRANS_END_STEPS] = {
70*4882a593Smuzhiyun 	/* FW behavior */
71*4882a593Smuzhiyun 	RTL8812_TRANS_ACT_TO_LPS
72*4882a593Smuzhiyun 	RTL8812_TRANS_END
73*4882a593Smuzhiyun };
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* 3 Leave LPS */
76*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8812_leave_lps_flow[RTL8812_TRANS_LPS_TO_ACT_STEPS +
77*4882a593Smuzhiyun 						RTL8812_TRANS_END_STEPS] = {
78*4882a593Smuzhiyun 	/* FW behavior */
79*4882a593Smuzhiyun 	RTL8812_TRANS_LPS_TO_ACT
80*4882a593Smuzhiyun 	RTL8812_TRANS_END
81*4882a593Smuzhiyun };
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun /* drivers should parse below arrays and do the corresponding actions */
84*4882a593Smuzhiyun /*3 Power on  Array*/
85*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_power_on_flow[RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS
86*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
87*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDEMU_TO_ACT
88*4882a593Smuzhiyun 	RTL8821A_TRANS_END
89*4882a593Smuzhiyun };
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun /*3Radio off GPIO Array */
92*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_radio_off_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS
93*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
94*4882a593Smuzhiyun 	RTL8821A_TRANS_ACT_TO_CARDEMU
95*4882a593Smuzhiyun 	RTL8821A_TRANS_END
96*4882a593Smuzhiyun };
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun /*3Card Disable Array*/
99*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_card_disable_flow
100*4882a593Smuzhiyun 					[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS
101*4882a593Smuzhiyun 					+ RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS
102*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
103*4882a593Smuzhiyun 	RTL8821A_TRANS_ACT_TO_CARDEMU
104*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDEMU_TO_CARDDIS
105*4882a593Smuzhiyun 	RTL8821A_TRANS_END
106*4882a593Smuzhiyun };
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun /*3 Card Enable Array*/
109*4882a593Smuzhiyun /*RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS*/
110*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_card_enable_flow
111*4882a593Smuzhiyun 					[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS
112*4882a593Smuzhiyun 					+ RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS
113*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
114*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDDIS_TO_CARDEMU
115*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDEMU_TO_ACT
116*4882a593Smuzhiyun 	RTL8821A_TRANS_END
117*4882a593Smuzhiyun };
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /*3Suspend Array*/
120*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_suspend_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS
121*4882a593Smuzhiyun 					+ RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS
122*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
123*4882a593Smuzhiyun 	RTL8821A_TRANS_ACT_TO_CARDEMU
124*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDEMU_TO_SUS
125*4882a593Smuzhiyun 	RTL8821A_TRANS_END
126*4882a593Smuzhiyun };
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /*3 Resume Array*/
129*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_resume_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS
130*4882a593Smuzhiyun 					+ RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS
131*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
132*4882a593Smuzhiyun 	RTL8821A_TRANS_SUS_TO_CARDEMU
133*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDEMU_TO_ACT
134*4882a593Smuzhiyun 	RTL8821A_TRANS_END
135*4882a593Smuzhiyun };
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun /*3HWPDN Array*/
138*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_hwpdn_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS
139*4882a593Smuzhiyun 				+ RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS
140*4882a593Smuzhiyun 				+ RTL8821A_TRANS_END_STEPS] = {
141*4882a593Smuzhiyun 	RTL8821A_TRANS_ACT_TO_CARDEMU
142*4882a593Smuzhiyun 	RTL8821A_TRANS_CARDEMU_TO_PDN
143*4882a593Smuzhiyun 	RTL8821A_TRANS_END
144*4882a593Smuzhiyun };
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun /*3 Enter LPS */
147*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_enter_lps_flow[RTL8821A_TRANS_ACT_TO_LPS_STEPS
148*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
149*4882a593Smuzhiyun 	/*FW behavior*/
150*4882a593Smuzhiyun 	RTL8821A_TRANS_ACT_TO_LPS
151*4882a593Smuzhiyun 	RTL8821A_TRANS_END
152*4882a593Smuzhiyun };
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun /*3 Leave LPS */
155*4882a593Smuzhiyun struct wlan_pwr_cfg rtl8821A_leave_lps_flow[RTL8821A_TRANS_LPS_TO_ACT_STEPS
156*4882a593Smuzhiyun 					+ RTL8821A_TRANS_END_STEPS] = {
157*4882a593Smuzhiyun 	/*FW behavior*/
158*4882a593Smuzhiyun 	RTL8821A_TRANS_LPS_TO_ACT
159*4882a593Smuzhiyun 	RTL8821A_TRANS_END
160*4882a593Smuzhiyun };
161