1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2016 Realtek Corporation. 5 * 6 * Contact Information: 7 * wlanfae <wlanfae@realtek.com> 8 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 9 * Hsinchu 300, Taiwan. 10 * 11 * Larry Finger <Larry.Finger@lwfinger.net> 12 * 13 *****************************************************************************/ 14 #ifndef _RTL_HALMAC_H_ 15 #define _RTL_HALMAC_H_ 16 17 #include "halmac_api.h" 18 19 #define rtlpriv_to_halmac(priv) \ 20 ((struct halmac_adapter *)((priv)->halmac.internal)) 21 22 /* for H2C cmd */ 23 #define MAX_H2C_BOX_NUMS 4 24 #define MESSAGE_BOX_SIZE 4 25 #define EX_MESSAGE_BOX_SIZE 4 26 27 /* HALMAC API for Driver(HAL) */ 28 int rtl_halmac_init_adapter(struct rtl_priv *rtlpriv); 29 int rtl_halmac_deinit_adapter(struct rtl_priv *rtlpriv); 30 int rtl_halmac_poweron(struct rtl_priv *rtlpriv); 31 int rtl_halmac_poweroff(struct rtl_priv *rtlpriv); 32 int rtl_halmac_init_hal(struct rtl_priv *rtlpriv); 33 int rtl_halmac_init_hal_fw(struct rtl_priv *rtlpriv, u8 *fw, u32 fwsize); 34 int rtl_halmac_init_hal_fw_file(struct rtl_priv *rtlpriv, u8 *fwpath); 35 int rtl_halmac_deinit_hal(struct rtl_priv *rtlpriv); 36 int rtl_halmac_self_verify(struct rtl_priv *rtlpriv); 37 int rtl_halmac_dlfw(struct rtl_priv *rtlpriv, u8 *fw, u32 fwsize); 38 int rtl_halmac_dlfw_from_file(struct rtl_priv *rtlpriv, u8 *fwpath); 39 int rtl_halmac_phy_power_switch(struct rtl_priv *rtlpriv, u8 enable); 40 int rtl_halmac_send_h2c(struct rtl_priv *rtlpriv, u8 *h2c); 41 int rtl_halmac_c2h_handle(struct rtl_priv *rtlpriv, u8 *c2h, u32 size); 42 43 int rtl_halmac_get_physical_efuse_size(struct rtl_priv *rtlpriv, u32 *size); 44 int rtl_halmac_read_physical_efuse_map(struct rtl_priv *rtlpriv, u8 *map, 45 u32 size); 46 int rtl_halmac_read_physical_efuse(struct rtl_priv *rtlpriv, u32 offset, 47 u32 cnt, u8 *data); 48 int rtl_halmac_write_physical_efuse(struct rtl_priv *rtlpriv, u32 offset, 49 u32 cnt, u8 *data); 50 int rtl_halmac_get_logical_efuse_size(struct rtl_priv *rtlpriv, u32 *size); 51 int rtl_halmac_read_logical_efuse_map(struct rtl_priv *rtlpriv, u8 *map, 52 u32 size); 53 int rtl_halmac_write_logical_efuse_map(struct rtl_priv *rtlpriv, u8 *map, 54 u32 size, u8 *maskmap, u32 masksize); 55 int rtl_halmac_read_logical_efuse(struct rtl_priv *rtlpriv, u32 offset, u32 cnt, 56 u8 *data); 57 int rtl_halmac_write_logical_efuse(struct rtl_priv *rtlpriv, u32 offset, 58 u32 cnt, u8 *data); 59 60 int rtl_halmac_config_rx_info(struct rtl_priv *rtlpriv, enum halmac_drv_info); 61 int rtl_halmac_set_mac_address(struct rtl_priv *rtlpriv, u8 hwport, u8 *addr); 62 int rtl_halmac_set_bssid(struct rtl_priv *d, u8 hwport, u8 *addr); 63 64 int rtl_halmac_set_bandwidth(struct rtl_priv *rtlpriv, u8 channel, 65 u8 pri_ch_idx, u8 bw); 66 int rtl_halmac_rx_agg_switch(struct rtl_priv *rtlpriv, bool enable); 67 int rtl_halmac_get_hw_value(struct rtl_priv *d, enum halmac_hw_id hw_id, 68 void *pvalue); 69 int rtl_halmac_dump_fifo(struct rtl_priv *rtlpriv, 70 enum hal_fifo_sel halmac_fifo_sel); 71 72 int rtl_halmac_get_wow_reason(struct rtl_priv *rtlpriv, u8 *reason); 73 int rtl_halmac_get_drv_info_sz(struct rtl_priv *d, u8 *sz); 74 75 int rtl_halmac_get_rsvd_drv_pg_bndy(struct rtl_priv *dvobj, u16 *drv_pg); 76 int rtl_halmac_download_rsvd_page(struct rtl_priv *dvobj, u8 pg_offset, 77 u8 *pbuf, u32 size); 78 79 int rtl_halmac_chk_txdesc(struct rtl_priv *rtlpriv, u8 *txdesc, u32 size); 80 81 struct rtl_halmac_ops *rtl_halmac_get_ops_pointer(void); 82 83 #endif /* _RTL_HALMAC_H_ */ 84