Blame view

kernel/linux-rt-4.4.41/drivers/net/wireless/realtek/rtlwifi/rtl8723com/fw_common.h 3.27 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  /******************************************************************************
   *
   * Copyright(c) 2009-2014  Realtek Corporation.
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of version 2 of the GNU General Public License as
   * published by the Free Software Foundation.
   *
   * This program is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
   * more details.
   *
   * The full GNU General Public License is included in this distribution in the
   * file called LICENSE.
   *
   * Contact Information:
   * wlanfae <wlanfae@realtek.com>
   * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
   * Hsinchu 300, Taiwan.
   *
   * Larry Finger <Larry.Finger@lwfinger.net>
   *
   *****************************************************************************/
  
  #ifndef __FW_COMMON_H__
  #define __FW_COMMON_H__
  
  #define REG_SYS_FUNC_EN				0x0002
  #define REG_MCUFWDL				0x0080
  #define FW_8192C_START_ADDRESS			0x1000
  #define FW_8192C_PAGE_SIZE			4096
  #define FW_8723A_POLLING_TIMEOUT_COUNT		1000
  #define FW_8723B_POLLING_TIMEOUT_COUNT		6000
  #define FW_8192C_POLLING_DELAY			5
  
  #define MCUFWDL_RDY				BIT(1)
  #define FWDL_CHKSUM_RPT				BIT(2)
  #define WINTINI_RDY				BIT(6)
  
  #define REG_RSV_CTRL				0x001C
  #define REG_HMETFR				0x01CC
  
  enum version_8723e {
  	VERSION_TEST_UMC_CHIP_8723 = 0x0081,
  	VERSION_NORMAL_UMC_CHIP_8723_1T1R_A_CUT = 0x0089,
  	VERSION_NORMAL_UMC_CHIP_8723_1T1R_B_CUT = 0x1089,
  	VERSION_TEST_CHIP_1T1R_8723B = 0x0106,
  	VERSION_NORMAL_SMIC_CHIP_1T1R_8723B = 0x010E,
  	VERSION_UNKNOWN = 0xFF,
  };
  
  enum rtl8723be_cmd {
  	H2C_8723BE_RSVDPAGE = 0,
  	H2C_8723BE_JOINBSSRPT = 1,
  	H2C_8723BE_SCAN = 2,
  	H2C_8723BE_KEEP_ALIVE_CTRL = 3,
  	H2C_8723BE_DISCONNECT_DECISION = 4,
  	H2C_8723BE_INIT_OFFLOAD = 6,
  	H2C_8723BE_AP_OFFLOAD = 8,
  	H2C_8723BE_BCN_RSVDPAGE = 9,
  	H2C_8723BE_PROBERSP_RSVDPAGE = 10,
  
  	H2C_8723BE_SETPWRMODE = 0x20,
  	H2C_8723BE_PS_TUNING_PARA = 0x21,
  	H2C_8723BE_PS_TUNING_PARA2 = 0x22,
  	H2C_8723BE_PS_LPS_PARA = 0x23,
  	H2C_8723BE_P2P_PS_OFFLOAD = 0x24,
  
  	H2C_8723BE_WO_WLAN = 0x80,
  	H2C_8723BE_REMOTE_WAKE_CTRL = 0x81,
  	H2C_8723BE_AOAC_GLOBAL_INFO = 0x82,
  	H2C_8723BE_AOAC_RSVDPAGE = 0x83,
  	H2C_8723BE_RSSI_REPORT = 0x42,
  	H2C_8723BE_RA_MASK = 0x40,
  	H2C_8723BE_SELECTIVE_SUSPEND_ROF_CMD,
  	H2C_8723BE_P2P_PS_MODE,
  	H2C_8723BE_PSD_RESULT,
  	/*Not defined CTW CMD for P2P yet*/
  	H2C_8723BE_P2P_PS_CTW_CMD,
  	MAX_8723BE_H2CCMD
  };
  
  void rtl8723ae_firmware_selfreset(struct ieee80211_hw *hw);
  void rtl8723be_firmware_selfreset(struct ieee80211_hw *hw);
  void rtl8723_enable_fw_download(struct ieee80211_hw *hw, bool enable);
  void rtl8723_fw_block_write(struct ieee80211_hw *hw,
  			    const u8 *buffer, u32 size);
  void rtl8723_fw_page_write(struct ieee80211_hw *hw,
  			   u32 page, const u8 *buffer, u32 size);
  void rtl8723_write_fw(struct ieee80211_hw *hw,
  		      enum version_8723e version,
  		      u8 *buffer, u32 size, u8 max_page);
  int rtl8723_fw_free_to_go(struct ieee80211_hw *hw, bool is_8723be, int count);
  int rtl8723_download_fw(struct ieee80211_hw *hw, bool is_8723be, int count);
  bool rtl8723_cmd_send_packet(struct ieee80211_hw *hw,
  			     struct sk_buff *skb);
  void rtl8723_fill_dummy(u8 *pfwbuf, u32 *pfwlen);
  
  #endif