121e4b0726dc671c423e2dc9a85364716219c4502Larry Finger/******************************************************************************
221e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
321e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * Copyright(c) 2009-2010  Realtek Corporation.
421e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
521e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * This program is free software; you can redistribute it and/or modify it
621e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * under the terms of version 2 of the GNU General Public License as
721e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * published by the Free Software Foundation.
821e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
921e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * This program is distributed in the hope that it will be useful, but WITHOUT
1021e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1121e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
1221e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * more details.
1321e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
1421e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * The full GNU General Public License is included in this distribution in the
1521e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * file called LICENSE.
1621e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
1721e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * Contact Information:
1821e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * wlanfae <wlanfae@realtek.com>
1921e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
2021e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * Hsinchu 300, Taiwan.
2121e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
2221e4b0726dc671c423e2dc9a85364716219c4502Larry Finger * Larry Finger <Larry.Finger@lwfinger.net>
2321e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *
2421e4b0726dc671c423e2dc9a85364716219c4502Larry Finger *****************************************************************************/
2521e4b0726dc671c423e2dc9a85364716219c4502Larry Finger
2621e4b0726dc671c423e2dc9a85364716219c4502Larry Finger#ifndef __RTL8821AE_HW_H__
2721e4b0726dc671c423e2dc9a85364716219c4502Larry Finger#define __RTL8821AE_HW_H__
2821e4b0726dc671c423e2dc9a85364716219c4502Larry Finger
2921e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
3021e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_read_eeprom_info(struct ieee80211_hw *hw);
3121e4b0726dc671c423e2dc9a85364716219c4502Larry Finger
3221e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw,
3321e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				    u32 *p_inta, u32 *p_intb);
3421e4b0726dc671c423e2dc9a85364716219c4502Larry Fingerint rtl8821ae_hw_init(struct ieee80211_hw *hw);
3521e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_card_disable(struct ieee80211_hw *hw);
3621e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_enable_interrupt(struct ieee80211_hw *hw);
3721e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_disable_interrupt(struct ieee80211_hw *hw);
3821e4b0726dc671c423e2dc9a85364716219c4502Larry Fingerint rtl8821ae_set_network_type(struct ieee80211_hw *hw,
3921e4b0726dc671c423e2dc9a85364716219c4502Larry Finger			       enum nl80211_iftype type);
4021e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid);
4121e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_set_qos(struct ieee80211_hw *hw, int aci);
4221e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_set_beacon_related_registers(struct ieee80211_hw *hw);
4321e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_set_beacon_interval(struct ieee80211_hw *hw);
4421e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_update_interrupt_mask(struct ieee80211_hw *hw,
4521e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				     u32 add_msr, u32 rm_msr);
4621e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
4721e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_update_hal_rate_tbl(struct ieee80211_hw *hw,
4821e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				   struct ieee80211_sta *sta,
4921e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				   u8 rssi_level);
5021e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_update_channel_access_setting(struct ieee80211_hw *hw);
5121e4b0726dc671c423e2dc9a85364716219c4502Larry Fingerbool rtl8821ae_gpio_radio_on_off_checking(struct ieee80211_hw *hw, u8 *valid);
5221e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_enable_hw_security_config(struct ieee80211_hw *hw);
5321e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_set_key(struct ieee80211_hw *hw, u32 key_index,
5421e4b0726dc671c423e2dc9a85364716219c4502Larry Finger		       u8 *p_macaddr, bool is_group, u8 enc_algo,
5521e4b0726dc671c423e2dc9a85364716219c4502Larry Finger		       bool is_wepkey, bool clear_all);
5621e4b0726dc671c423e2dc9a85364716219c4502Larry Finger
5721e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_bt_reg_init(struct ieee80211_hw *hw);
5821e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_bt_hw_init(struct ieee80211_hw *hw);
5921e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_suspend(struct ieee80211_hw *hw);
6021e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_resume(struct ieee80211_hw *hw);
6121e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_allow_all_destaddr(struct ieee80211_hw *hw,
6221e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				  bool allow_all_da,
6321e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				  bool write_into_reg);
6421e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid _rtl8821ae_stop_tx_beacon(struct ieee80211_hw *hw);
6521e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid _rtl8821ae_resume_tx_beacon(struct ieee80211_hw *hw);
6621e4b0726dc671c423e2dc9a85364716219c4502Larry Fingervoid rtl8821ae_add_wowlan_pattern(struct ieee80211_hw *hw,
6721e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				  struct rtl_wow_pattern *rtl_pattern,
6821e4b0726dc671c423e2dc9a85364716219c4502Larry Finger				  u8 index);
6921e4b0726dc671c423e2dc9a85364716219c4502Larry Finger
7021e4b0726dc671c423e2dc9a85364716219c4502Larry Finger#endif
71