rtl8821c.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2016 - 2017 Realtek Corporation.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. *****************************************************************************/
  15. #ifndef _RTL8821C_H_
  16. #define _RTL8821C_H_
  17. #include <drv_types.h> /* PADAPTER */
  18. #include <rtw_rf.h> /* CHANNEL_WIDTH */
  19. #include <rtw_xmit.h> /* struct pkt_attrib, struct xmit_frame */
  20. #include <rtw_recv.h> /* struct recv_frame */
  21. #include <hal_intf.h> /* HAL_DEF_VARIABLE */
  22. #include <rtl8821c_dm.h>
  23. #define DRIVER_EARLY_INT_TIME_8821C 0x05
  24. #define BCN_DMA_ATIME_INT_TIME_8821C 0x02
  25. /* rtl8821c_halinit.c */
  26. u32 rtl8821c_power_on(PADAPTER);
  27. void rtl8821c_power_off(PADAPTER);
  28. u8 rtl8821c_mac_init(PADAPTER);
  29. u8 rtl8821c_mac_verify(PADAPTER);
  30. void rtl8821c_hal_init_channel_setting(PADAPTER adapter);
  31. void rtl8821c_hal_init_misc(PADAPTER padapter);
  32. u32 rtl8821c_hal_init(PADAPTER);
  33. u32 rtl8821c_hal_deinit(PADAPTER);
  34. void rtl8821c_init_default_value(PADAPTER);
  35. u8 rtl8821c_phy_init(PADAPTER adapter);
  36. u8 rtl8821c_init_phy_parameter_mac(PADAPTER adapter);
  37. /* rtl8821c_mac.c */
  38. #ifdef CONFIG_XMIT_ACK
  39. u8 rtl8821c_set_mgnt_xmit_ack(_adapter *adapter);
  40. #endif
  41. u8 rtl8821c_rx_ba_ssn_appended(PADAPTER);
  42. u8 rtl8821c_rx_fcs_append_switch(PADAPTER, u8 enable);
  43. u8 rtl8821c_rx_fcs_appended(PADAPTER);
  44. u8 rtl8821c_rx_tsf_addr_filter_config(_adapter *adapter, u8 config);
  45. s32 rtl8821c_fw_dl(PADAPTER, u8 wowlan);
  46. s32 rtl8821c_fw_mem_dl(PADAPTER adapter, enum fw_mem mem);
  47. #define BIT_PRETXERR_HANDLE_IMR BIT(31)
  48. #define BIT_PRETXERR_HANDLE_ISR BIT(31)
  49. #ifdef CONFIG_AMPDU_PRETX_CD
  50. #define BIT_PRETXERR BIT(7)
  51. void rtl8821c_pretx_cd_config(_adapter *adapter);
  52. #endif
  53. /* rtl8821c_ops.c */
  54. u8 rtl8821c_read_efuse(PADAPTER);
  55. void rtl8821c_run_thread(PADAPTER);
  56. void rtl8821c_cancel_thread(PADAPTER);
  57. u8 rtl8821c_sethwreg(PADAPTER, u8 variable, u8 *pval);
  58. void rtl8821c_gethwreg(PADAPTER, u8 variable, u8 *pval);
  59. u8 rtl8821c_sethaldefvar(PADAPTER, HAL_DEF_VARIABLE, void *pval);
  60. u8 rtl8821c_gethaldefvar(PADAPTER, HAL_DEF_VARIABLE, void *pval);
  61. void rtl8821c_set_hal_ops(PADAPTER);
  62. /* tx */
  63. void rtl8821c_init_xmit_priv(_adapter *adapter);
  64. void rtl8821c_fill_txdesc_sectype(struct pkt_attrib *, u8 *ptxdesc);
  65. void rtl8821c_fill_txdesc_vcs(PADAPTER, struct pkt_attrib *, u8 *ptxdesc);
  66. void rtl8821c_fill_txdesc_phy(PADAPTER, struct pkt_attrib *, u8 *ptxdesc);
  67. u8 rtl8821c_bw_mapping(PADAPTER, struct pkt_attrib *);
  68. u8 rtl8821c_sc_mapping(PADAPTER, struct pkt_attrib *);
  69. void rtl8821c_cal_txdesc_chksum(PADAPTER, u8 *ptxdesc);
  70. void rtl8821c_update_txdesc(struct xmit_frame *, u8 *pbuf);
  71. void rtl8821c_dbg_dump_tx_desc(PADAPTER, int frame_tag, u8 *ptxdesc);
  72. #if defined(CONFIG_CONCURRENT_MODE)
  73. void fill_txdesc_force_bmc_camid(struct pkt_attrib *pattrib, u8 *ptxdesc);
  74. #endif
  75. void fill_txdesc_bmc_tx_rate(struct pkt_attrib *pattrib, u8 *ptxdesc);
  76. /* rx */
  77. void rtl8821c_rxdesc2attribute(struct rx_pkt_attrib *a, u8 *desc);
  78. void rtl8821c_query_rx_desc(union recv_frame *, u8 *pdesc);
  79. /* rtl8821c_cmd.c */
  80. s32 rtl8821c_fillh2ccmd(PADAPTER, u8 id, u32 buf_len, u8 *pbuf);
  81. void rtl8821c_set_FwPwrMode_cmd(PADAPTER, u8 psmode);
  82. void rtl8821c_set_FwPwrModeInIPS_cmd(PADAPTER adapter, u8 cmd_param);
  83. void c2h_handler_rtl8821c(_adapter *adapter, u8 *pbuf, u16 length);
  84. void c2h_pre_handler_rtl8821c(_adapter *adapter, u8 *pbuf, s32 length);
  85. #ifdef CONFIG_BT_COEXIST
  86. void rtl8821c_download_BTCoex_AP_mode_rsvd_page(PADAPTER);
  87. #endif /* CONFIG_BT_COEXIST */
  88. /* rtl8821c_phy.c */
  89. u32 rtl8821c_read_bb_reg(PADAPTER, u32 addr, u32 mask);
  90. void rtl8821c_write_bb_reg(PADAPTER, u32 addr, u32 mask, u32 val);
  91. u32 rtl8821c_read_rf_reg(PADAPTER adapter, enum rf_path path, u32 addr, u32 mask);
  92. void rtl8821c_write_rf_reg(PADAPTER adapter, enum rf_path path, u32 addr, u32 mask, u32 val);
  93. void rtl8821c_set_channel_bw(PADAPTER adapter, u8 center_ch, enum channel_width, u8 offset40, u8 offset80);
  94. void rtl8821c_set_tx_power_level(PADAPTER, u8 channel);
  95. void rtl8821c_get_tx_power_level(PADAPTER, s32 *power);
  96. void rtl8821c_set_tx_power_index(PADAPTER adapter, u32 powerindex, enum rf_path rfpath, u8 rate);
  97. u8 rtl8821c_get_tx_power_index(PADAPTER adapter, enum rf_path rfpath, u8 rate, u8 bandwidth, u8 channel, struct txpwr_idx_comp *tic);
  98. void rtl8821c_notch_filter_switch(PADAPTER, bool enable);
  99. #ifdef CONFIG_BEAMFORMING
  100. void rtl8821c_phy_bf_init(PADAPTER);
  101. void rtl8821c_phy_bf_enter(PADAPTER, struct sta_info*);
  102. void rtl8821c_phy_bf_leave(PADAPTER, u8 *addr);
  103. void rtl8821c_phy_bf_set_gid_table(PADAPTER, struct beamformer_entry*);
  104. #endif /* CONFIG_BEAMFORMING */
  105. #endif /* _RTL8821C_H_ */