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