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