1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2007 - 2017 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 __RTL8188E_CMD_H__ 16*4882a593Smuzhiyun #define __RTL8188E_CMD_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #if 0 19*4882a593Smuzhiyun enum cmd_msg_element_id { 20*4882a593Smuzhiyun NONE_CMDMSG_EID, 21*4882a593Smuzhiyun AP_OFFLOAD_EID = 0, 22*4882a593Smuzhiyun SET_PWRMODE_EID = 1, 23*4882a593Smuzhiyun JOINBSS_RPT_EID = 2, 24*4882a593Smuzhiyun RSVD_PAGE_EID = 3, 25*4882a593Smuzhiyun RSSI_4_EID = 4, 26*4882a593Smuzhiyun RSSI_SETTING_EID = 5, 27*4882a593Smuzhiyun MACID_CONFIG_EID = 6, 28*4882a593Smuzhiyun MACID_PS_MODE_EID = 7, 29*4882a593Smuzhiyun P2P_PS_OFFLOAD_EID = 8, 30*4882a593Smuzhiyun SELECTIVE_SUSPEND_ROF_CMD = 9, 31*4882a593Smuzhiyun P2P_PS_CTW_CMD_EID = 32, 32*4882a593Smuzhiyun MAX_CMDMSG_EID 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun #else 35*4882a593Smuzhiyun typedef enum _RTL8188E_H2C_CMD_ID { 36*4882a593Smuzhiyun /* Class Common */ 37*4882a593Smuzhiyun H2C_COM_RSVD_PAGE = 0x00, 38*4882a593Smuzhiyun H2C_COM_MEDIA_STATUS_RPT = 0x01, 39*4882a593Smuzhiyun H2C_COM_SCAN = 0x02, 40*4882a593Smuzhiyun H2C_COM_KEEP_ALIVE = 0x03, 41*4882a593Smuzhiyun H2C_COM_DISCNT_DECISION = 0x04, 42*4882a593Smuzhiyun #ifndef CONFIG_WOWLAN 43*4882a593Smuzhiyun H2C_COM_WWLAN = 0x05, 44*4882a593Smuzhiyun #endif 45*4882a593Smuzhiyun H2C_COM_INIT_OFFLOAD = 0x06, 46*4882a593Smuzhiyun H2C_COM_REMOTE_WAKE_CTL = 0x07, 47*4882a593Smuzhiyun H2C_COM_AP_OFFLOAD = 0x08, 48*4882a593Smuzhiyun H2C_COM_BCN_RSVD_PAGE = 0x09, 49*4882a593Smuzhiyun H2C_COM_PROB_RSP_RSVD_PAGE = 0x0A, 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* Class PS */ 52*4882a593Smuzhiyun H2C_PS_PWR_MODE = 0x20, 53*4882a593Smuzhiyun H2C_PS_TUNE_PARA = 0x21, 54*4882a593Smuzhiyun H2C_PS_TUNE_PARA_2 = 0x22, 55*4882a593Smuzhiyun H2C_PS_LPS_PARA = 0x23, 56*4882a593Smuzhiyun H2C_PS_P2P_OFFLOAD = 0x24, 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* Class DM */ 59*4882a593Smuzhiyun H2C_DM_MACID_CFG = 0x40, 60*4882a593Smuzhiyun H2C_DM_TXBF = 0x41, 61*4882a593Smuzhiyun H2C_RSSI_REPORT = 0x42, 62*4882a593Smuzhiyun /* Class BT */ 63*4882a593Smuzhiyun H2C_BT_COEX_MASK = 0x60, 64*4882a593Smuzhiyun H2C_BT_COEX_GPIO_MODE = 0x61, 65*4882a593Smuzhiyun H2C_BT_DAC_SWING_VAL = 0x62, 66*4882a593Smuzhiyun H2C_BT_PSD_RST = 0x63, 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun /* Class Remote WakeUp */ 69*4882a593Smuzhiyun #ifdef CONFIG_WOWLAN 70*4882a593Smuzhiyun H2C_COM_WWLAN = 0x80, 71*4882a593Smuzhiyun H2C_COM_REMOTE_WAKE_CTRL = 0x81, 72*4882a593Smuzhiyun H2C_COM_AOAC_GLOBAL_INFO = 0x82, 73*4882a593Smuzhiyun H2C_COM_AOAC_RSVD_PAGE = 0x83, 74*4882a593Smuzhiyun #endif 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun /* Class */ 77*4882a593Smuzhiyun /* H2C_RESET_TSF =0xc0, */ 78*4882a593Smuzhiyun } RTL8188E_H2C_CMD_ID; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #endif 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun struct cmd_msg_parm { 84*4882a593Smuzhiyun u8 eid; /* element id */ 85*4882a593Smuzhiyun u8 sz; /* sz */ 86*4882a593Smuzhiyun u8 buf[6]; 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun enum { 90*4882a593Smuzhiyun PWRS 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun typedef struct _SETPWRMODE_PARM { 94*4882a593Smuzhiyun u8 Mode;/* 0:Active,1:LPS,2:WMMPS */ 95*4882a593Smuzhiyun /* u8 RLBM:4; */ /* 0:Min,1:Max,2: User define */ 96*4882a593Smuzhiyun u8 SmartPS_RLBM;/* LPS=0:PS_Poll,1:PS_Poll,2:NullData,WMM=0:PS_Poll,1:NullData */ 97*4882a593Smuzhiyun u8 AwakeInterval; /* unit: beacon interval */ 98*4882a593Smuzhiyun u8 bAllQueueUAPSD; 99*4882a593Smuzhiyun u8 PwrState;/* AllON(0x0c),RFON(0x04),RFOFF(0x00) */ 100*4882a593Smuzhiyun } SETPWRMODE_PARM, *PSETPWRMODE_PARM; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun struct H2C_SS_RFOFF_PARAM { 103*4882a593Smuzhiyun u8 ROFOn; /* 1: on, 0:off */ 104*4882a593Smuzhiyun u16 gpio_period; /* unit: 1024 us */ 105*4882a593Smuzhiyun } __attribute__((packed)); 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun typedef struct JOINBSSRPT_PARM_88E { 109*4882a593Smuzhiyun u8 OpMode; /* RT_MEDIA_STATUS */ 110*4882a593Smuzhiyun #ifdef CONFIG_WOWLAN 111*4882a593Smuzhiyun u8 MacID; /* MACID */ 112*4882a593Smuzhiyun #endif /* CONFIG_WOWLAN */ 113*4882a593Smuzhiyun } JOINBSSRPT_PARM_88E, *PJOINBSSRPT_PARM_88E; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #if 0 116*4882a593Smuzhiyun /* move to hal_com_h2c.h */ 117*4882a593Smuzhiyun typedef struct _RSVDPAGE_LOC_88E { 118*4882a593Smuzhiyun u8 LocProbeRsp; 119*4882a593Smuzhiyun u8 LocPsPoll; 120*4882a593Smuzhiyun u8 LocNullData; 121*4882a593Smuzhiyun u8 LocQosNull; 122*4882a593Smuzhiyun u8 LocBTQosNull; 123*4882a593Smuzhiyun #ifdef CONFIG_WOWLAN 124*4882a593Smuzhiyun u8 LocRemoteCtrlInfo; 125*4882a593Smuzhiyun u8 LocArpRsp; 126*4882a593Smuzhiyun u8 LocNbrAdv; 127*4882a593Smuzhiyun u8 LocGTKRsp; 128*4882a593Smuzhiyun u8 LocGTKInfo; 129*4882a593Smuzhiyun u8 LocProbeReq; 130*4882a593Smuzhiyun u8 LocNetList; 131*4882a593Smuzhiyun #endif /* CONFIG_WOWLAN */ 132*4882a593Smuzhiyun } RSVDPAGE_LOC_88E, *PRSVDPAGE_LOC_88E; 133*4882a593Smuzhiyun #endif 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun /* host message to firmware cmd */ 136*4882a593Smuzhiyun void rtl8188e_set_FwPwrMode_cmd(PADAPTER padapter, u8 Mode); 137*4882a593Smuzhiyun void rtl8188e_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus); 138*4882a593Smuzhiyun s32 FillH2CCmd_88E(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); 139*4882a593Smuzhiyun /* u8 rtl8192c_set_FwSelectSuspend_cmd(PADAPTER padapter, u8 bfwpoll, u16 period); */ 140*4882a593Smuzhiyun u8 GetTxBufferRsvdPageNum8188E(_adapter *padapter, bool wowlan); 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun #ifdef CONFIG_P2P 144*4882a593Smuzhiyun void rtl8188e_set_p2p_ps_offload_cmd(PADAPTER padapter, u8 p2p_ps_state); 145*4882a593Smuzhiyun #endif /* CONFIG_P2P */ 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun /* #define H2C_8188E_RSVDPAGE_LOC_LEN 5 */ 148*4882a593Smuzhiyun /* #define H2C_8188E_AOAC_RSVDPAGE_LOC_LEN 7 */ 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun /* --------------------------------------------------------------------------------------------------------- 151*4882a593Smuzhiyun * ---------------------------------- H2C CMD CONTENT -------------------------------------------------- 152*4882a593Smuzhiyun * --------------------------------------------------------------------------------------------------------- 153*4882a593Smuzhiyun * */ 154*4882a593Smuzhiyun #if 0 155*4882a593Smuzhiyun /* move to hal_com_h2c.h 156*4882a593Smuzhiyun * _RSVDPAGE_LOC_CMD_0x00 */ 157*4882a593Smuzhiyun #define SET_8188E_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) 158*4882a593Smuzhiyun #define SET_8188E_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) 159*4882a593Smuzhiyun #define SET_8188E_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) 160*4882a593Smuzhiyun #define SET_8188E_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+3, 0, 8, __Value) 161*4882a593Smuzhiyun /* AOAC_RSVDPAGE_LOC_0x83 */ 162*4882a593Smuzhiyun #define SET_8188E_H2CCMD_AOAC_RSVDPAGE_LOC_REMOTE_WAKE_CTRL_INFO(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd), 0, 8, __Value) 163*4882a593Smuzhiyun #define SET_8188E_H2CCMD_AOAC_RSVDPAGE_LOC_ARP_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) 164*4882a593Smuzhiyun #endif 165*4882a593Smuzhiyun #endif/* __RTL8188E_CMD_H__ */ 166