xref: /openbmc/linux/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/hw.h (revision 597473720f4dc69749542bfcfed4a927a43d935e)
1  /* SPDX-License-Identifier: GPL-2.0 */
2  /* Copyright(c) 2009-2012  Realtek Corporation.*/
3  
4  #ifndef __RTL92CU_HW_H__
5  #define __RTL92CU_HW_H__
6  
7  #define H2C_RA_MASK	6
8  
9  #define LLT_LAST_ENTRY_OF_TX_PKT_BUFFER		255
10  
11  #define RX_PAGE_SIZE_REG_VALUE			PBP_128
12  /* Note: We will divide number of page equally for each queue
13   * other than public queue! */
14  #define TX_TOTAL_PAGE_NUMBER			0xF8
15  #define TX_PAGE_BOUNDARY			(TX_TOTAL_PAGE_NUMBER + 1)
16  
17  #define CHIP_B_PAGE_NUM_PUBQ			0xE7
18  
19  /* For Test Chip Setting
20   * (HPQ + LPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER */
21  #define CHIP_A_PAGE_NUM_PUBQ			0x7E
22  
23  /* For Chip A Setting */
24  #define WMM_CHIP_A_TX_TOTAL_PAGE_NUMBER		0xF5
25  #define WMM_CHIP_A_TX_PAGE_BOUNDARY		\
26  	(WMM_CHIP_A_TX_TOTAL_PAGE_NUMBER + 1) /* F6 */
27  
28  #define WMM_CHIP_A_PAGE_NUM_PUBQ		0xA3
29  #define WMM_CHIP_A_PAGE_NUM_HPQ			0x29
30  #define WMM_CHIP_A_PAGE_NUM_LPQ			0x29
31  
32  /* Note: For Chip B Setting ,modify later */
33  #define WMM_CHIP_B_TX_TOTAL_PAGE_NUMBER		0xF5
34  #define WMM_CHIP_B_TX_PAGE_BOUNDARY		\
35  	(WMM_CHIP_B_TX_TOTAL_PAGE_NUMBER + 1) /* F6 */
36  
37  #define WMM_CHIP_B_PAGE_NUM_PUBQ		0xB0
38  #define WMM_CHIP_B_PAGE_NUM_HPQ			0x29
39  #define WMM_CHIP_B_PAGE_NUM_LPQ			0x1C
40  #define WMM_CHIP_B_PAGE_NUM_NPQ			0x1C
41  
42  #define BOARD_TYPE_NORMAL_MASK			0xE0
43  #define BOARD_TYPE_TEST_MASK			0x0F
44  
45  /* should be renamed and moved to another file */
46  enum _BOARD_TYPE_8192CUSB {
47  	BOARD_USB_DONGLE		= 0,	/* USB dongle */
48  	BOARD_USB_HIGH_PA		= 1,	/* USB dongle - high power PA */
49  	BOARD_MINICARD			= 2,	/* Minicard */
50  	BOARD_USB_SOLO			= 3,	/* USB solo-Slim module */
51  	BOARD_USB_COMBO			= 4,	/* USB Combo-Slim module */
52  };
53  
54  #define IS_HIGHT_PA(boardtype)		\
55  	((boardtype == BOARD_USB_HIGH_PA) ? true : false)
56  
57  #define RTL92C_DRIVER_INFO_SIZE				4
58  void rtl92cu_read_eeprom_info(struct ieee80211_hw *hw);
59  void rtl92cu_enable_hw_security_config(struct ieee80211_hw *hw);
60  int rtl92cu_hw_init(struct ieee80211_hw *hw);
61  void rtl92cu_card_disable(struct ieee80211_hw *hw);
62  int rtl92cu_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type);
63  void rtl92cu_set_beacon_related_registers(struct ieee80211_hw *hw);
64  void rtl92cu_set_beacon_interval(struct ieee80211_hw *hw);
65  void rtl92cu_update_interrupt_mask(struct ieee80211_hw *hw,
66  				   u32 add_msr, u32 rm_msr);
67  void rtl92cu_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
68  void rtl92cu_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
69  
70  void rtl92cu_update_channel_access_setting(struct ieee80211_hw *hw);
71  bool rtl92cu_gpio_radio_on_off_checking(struct ieee80211_hw *hw, u8 * valid);
72  void rtl92cu_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
73  int rtl92c_download_fw(struct ieee80211_hw *hw);
74  void rtl92c_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode);
75  void rtl92c_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus);
76  void rtl92c_fill_h2c_cmd(struct ieee80211_hw *hw,
77  			 u8 element_id, u32 cmd_len, u8 *p_cmdbuffer);
78  bool rtl92cu_phy_mac_config(struct ieee80211_hw *hw);
79  void rtl92cu_update_hal_rate_tbl(struct ieee80211_hw *hw,
80  				 struct ieee80211_sta *sta,
81  				 u8 rssi_level, bool update_bw);
82  
83  #endif
84