1c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger/****************************************************************************** 2c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 3c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * Copyright(c) 2009-2012 Realtek Corporation. 4c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 5c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * This program is free software; you can redistribute it and/or modify it 6c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * under the terms of version 2 of the GNU General Public License as 7c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * published by the Free Software Foundation. 8c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 9c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * This program is distributed in the hope that it will be useful, but WITHOUT 10c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * more details. 13c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 14c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * You should have received a copy of the GNU General Public License along with 15c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * this program; if not, write to the Free Software Foundation, Inc., 16c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 18c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * The full GNU General Public License is included in this distribution in the 19c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * file called LICENSE. 20c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 21c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * Contact Information: 22c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * wlanfae <wlanfae@realtek.com> 23c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 24c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * Hsinchu 300, Taiwan. 25c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * Larry Finger <Larry.Finger@lwfinger.net> 26c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger * 270529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger *****************************************************************************/ 28c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger 29c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#ifndef __RTL92C__FW__H__ 30c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define __RTL92C__FW__H__ 31c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger 320529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger#define FW_8192C_SIZE 0x3000 33c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define FW_8192C_START_ADDRESS 0x1000 34c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define FW_8192C_END_ADDRESS 0x3FFF 350529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger#define FW_8192C_PAGE_SIZE 4096 36c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define FW_8192C_POLLING_DELAY 5 37c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger 380529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger#define IS_FW_HEADER_EXIST(_pfwhdr) \ 390529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger ((_pfwhdr->signature&0xFFFF) == 0x2300 ||\ 400529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger (_pfwhdr->signature&0xFFFF) == 0x2301 ||\ 410529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger (_pfwhdr->signature&0xFFFF) == 0x2302) 42c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger 430529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger#define pagenum_128(_len) (u32)(((_len)>>7) + ((_len)&0x7F ? 1 : 0)) 44c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger 45c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define SET_H2CCMD_PWRMODE_PARM_MODE(__ph2ccmd, __val) \ 46c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) 470529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger#define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__ph2ccmd, __val) \ 48c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) 49c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define SET_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__ph2ccmd, __val) \ 50c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) 51c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define SET_H2CCMD_JOINBSSRPT_PARM_OPMODE(__ph2ccmd, __val) \ 52c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) 53c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__ph2ccmd, __val) \ 54c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE(__ph2ccmd, 0, 8, __val) 55c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(__ph2ccmd, __val) \ 56c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE((__ph2ccmd)+1, 0, 8, __val) 57c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#define SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__ph2ccmd, __val) \ 58c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger SET_BITS_TO_LE_1BYTE((__ph2ccmd)+2, 0, 8, __val) 59c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger 600529c6b8176135bcae1ab66bed6c1288456fbdecLarry Fingervoid rtl8723e_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, 610529c6b8176135bcae1ab66bed6c1288456fbdecLarry Finger u32 cmd_len, u8 *p_cmdbuffer); 620529c6b8176135bcae1ab66bed6c1288456fbdecLarry Fingervoid rtl8723e_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode); 630529c6b8176135bcae1ab66bed6c1288456fbdecLarry Fingervoid rtl8723e_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished); 640529c6b8176135bcae1ab66bed6c1288456fbdecLarry Fingervoid rtl8723e_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus); 650529c6b8176135bcae1ab66bed6c1288456fbdecLarry Fingervoid rtl8723e_set_p2p_ps_offload_cmd(struct ieee80211_hw *hw, u8 p2p_ps_state); 66c592e631bcec4d858695eee8bf321d60390d38e9Larry Finger#endif 67