1 /****************************************************************************** 2 * 3 * Copyright(c) 2009-2010 Realtek Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * The full GNU General Public License is included in this distribution in the 15 * file called LICENSE. 16 * 17 * Contact Information: 18 * wlanfae <wlanfae@realtek.com> 19 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 20 * Hsinchu 300, Taiwan. 21 * 22 * Larry Finger <Larry.Finger@lwfinger.net> 23 * 24 *****************************************************************************/ 25 26 #include "../pwrseqcmd.h" 27 #include "pwrseq.h" 28 29 /* drivers should parse below arrays and do the corresponding actions */ 30 /* 3 Power on Array */ 31 struct wlan_pwr_cfg rtl8812_power_on_flow[RTL8812_TRANS_CARDEMU_TO_ACT_STEPS + 32 RTL8812_TRANS_END_STEPS] = { 33 RTL8812_TRANS_CARDEMU_TO_ACT 34 RTL8812_TRANS_END 35 }; 36 37 /* 3Radio off GPIO Array */ 38 struct wlan_pwr_cfg rtl8812_radio_off_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 39 RTL8812_TRANS_END_STEPS] = { 40 RTL8812_TRANS_ACT_TO_CARDEMU 41 RTL8812_TRANS_END 42 }; 43 44 /* 3Card Disable Array */ 45 struct wlan_pwr_cfg rtl8812_card_disable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS 46 + RTL8812_TRANS_CARDEMU_TO_PDN_STEPS 47 + RTL8812_TRANS_END_STEPS] = { 48 RTL8812_TRANS_ACT_TO_CARDEMU 49 RTL8812_TRANS_CARDEMU_TO_CARDDIS 50 RTL8812_TRANS_END 51 }; 52 53 /* 3 Card Enable Array */ 54 struct wlan_pwr_cfg rtl8812_card_enable_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS 55 + RTL8812_TRANS_CARDEMU_TO_PDN_STEPS 56 + RTL8812_TRANS_END_STEPS] = { 57 RTL8812_TRANS_CARDDIS_TO_CARDEMU 58 RTL8812_TRANS_CARDEMU_TO_ACT 59 RTL8812_TRANS_END 60 }; 61 62 /* 3Suspend Array */ 63 struct wlan_pwr_cfg rtl8812_suspend_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 64 RTL8812_TRANS_CARDEMU_TO_SUS_STEPS + 65 RTL8812_TRANS_END_STEPS] = { 66 RTL8812_TRANS_ACT_TO_CARDEMU 67 RTL8812_TRANS_CARDEMU_TO_SUS 68 RTL8812_TRANS_END 69 }; 70 71 /* 3 Resume Array */ 72 struct wlan_pwr_cfg rtl8812_resume_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 73 RTL8812_TRANS_CARDEMU_TO_SUS_STEPS + 74 RTL8812_TRANS_END_STEPS] = { 75 RTL8812_TRANS_SUS_TO_CARDEMU 76 RTL8812_TRANS_CARDEMU_TO_ACT 77 RTL8812_TRANS_END 78 }; 79 80 /* 3HWPDN Array */ 81 struct wlan_pwr_cfg rtl8812_hwpdn_flow[RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 82 RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 83 RTL8812_TRANS_END_STEPS] = { 84 RTL8812_TRANS_ACT_TO_CARDEMU 85 RTL8812_TRANS_CARDEMU_TO_PDN 86 RTL8812_TRANS_END 87 }; 88 89 /* 3 Enter LPS */ 90 struct wlan_pwr_cfg rtl8812_enter_lps_flow[RTL8812_TRANS_ACT_TO_LPS_STEPS + 91 RTL8812_TRANS_END_STEPS] = { 92 /* FW behavior */ 93 RTL8812_TRANS_ACT_TO_LPS 94 RTL8812_TRANS_END 95 }; 96 97 /* 3 Leave LPS */ 98 struct wlan_pwr_cfg rtl8812_leave_lps_flow[RTL8812_TRANS_LPS_TO_ACT_STEPS + 99 RTL8812_TRANS_END_STEPS] = { 100 /* FW behavior */ 101 RTL8812_TRANS_LPS_TO_ACT 102 RTL8812_TRANS_END 103 }; 104 105 /* drivers should parse below arrays and do the corresponding actions */ 106 /*3 Power on Array*/ 107 struct wlan_pwr_cfg rtl8821A_power_on_flow[RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS 108 + RTL8821A_TRANS_END_STEPS] = { 109 RTL8821A_TRANS_CARDEMU_TO_ACT 110 RTL8821A_TRANS_END 111 }; 112 113 /*3Radio off GPIO Array */ 114 struct wlan_pwr_cfg rtl8821A_radio_off_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 115 + RTL8821A_TRANS_END_STEPS] = { 116 RTL8821A_TRANS_ACT_TO_CARDEMU 117 RTL8821A_TRANS_END 118 }; 119 120 /*3Card Disable Array*/ 121 struct wlan_pwr_cfg rtl8821A_card_disable_flow 122 [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 123 + RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS 124 + RTL8821A_TRANS_END_STEPS] = { 125 RTL8821A_TRANS_ACT_TO_CARDEMU 126 RTL8821A_TRANS_CARDEMU_TO_CARDDIS 127 RTL8821A_TRANS_END 128 }; 129 130 /*3 Card Enable Array*/ 131 /*RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS*/ 132 struct wlan_pwr_cfg rtl8821A_card_enable_flow 133 [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 134 + RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS 135 + RTL8821A_TRANS_END_STEPS] = { 136 RTL8821A_TRANS_CARDDIS_TO_CARDEMU 137 RTL8821A_TRANS_CARDEMU_TO_ACT 138 RTL8821A_TRANS_END 139 }; 140 141 /*3Suspend Array*/ 142 struct wlan_pwr_cfg rtl8821A_suspend_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 143 + RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS 144 + RTL8821A_TRANS_END_STEPS] = { 145 RTL8821A_TRANS_ACT_TO_CARDEMU 146 RTL8821A_TRANS_CARDEMU_TO_SUS 147 RTL8821A_TRANS_END 148 }; 149 150 /*3 Resume Array*/ 151 struct wlan_pwr_cfg rtl8821A_resume_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 152 + RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS 153 + RTL8821A_TRANS_END_STEPS] = { 154 RTL8821A_TRANS_SUS_TO_CARDEMU 155 RTL8821A_TRANS_CARDEMU_TO_ACT 156 RTL8821A_TRANS_END 157 }; 158 159 /*3HWPDN Array*/ 160 struct wlan_pwr_cfg rtl8821A_hwpdn_flow[RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 161 + RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS 162 + RTL8821A_TRANS_END_STEPS] = { 163 RTL8821A_TRANS_ACT_TO_CARDEMU 164 RTL8821A_TRANS_CARDEMU_TO_PDN 165 RTL8821A_TRANS_END 166 }; 167 168 /*3 Enter LPS */ 169 struct wlan_pwr_cfg rtl8821A_enter_lps_flow[RTL8821A_TRANS_ACT_TO_LPS_STEPS 170 + RTL8821A_TRANS_END_STEPS] = { 171 /*FW behavior*/ 172 RTL8821A_TRANS_ACT_TO_LPS 173 RTL8821A_TRANS_END 174 }; 175 176 /*3 Leave LPS */ 177 struct wlan_pwr_cfg rtl8821A_leave_lps_flow[RTL8821A_TRANS_LPS_TO_ACT_STEPS 178 + RTL8821A_TRANS_END_STEPS] = { 179 /*FW behavior*/ 180 RTL8821A_TRANS_LPS_TO_ACT 181 RTL8821A_TRANS_END 182 }; 183