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 _HALMAC_FUNC_88XX_H_ 15 #define _HALMAC_FUNC_88XX_H_ 16 17 #include "../halmac_type.h" 18 19 void halmac_init_offload_feature_state_machine_88xx( 20 struct halmac_adapter *halmac_adapter); 21 22 enum halmac_ret_status 23 halmac_send_h2c_pkt_88xx(struct halmac_adapter *halmac_adapter, u8 *hal_buff, 24 u32 size, bool ack); 25 26 enum halmac_ret_status 27 halmac_download_rsvd_page_88xx(struct halmac_adapter *halmac_adapter, 28 u8 *hal_buf, u32 size); 29 30 enum halmac_ret_status 31 halmac_set_h2c_header_88xx(struct halmac_adapter *halmac_adapter, 32 u8 *hal_h2c_hdr, u16 *seq, bool ack); 33 34 enum halmac_ret_status halmac_set_fw_offload_h2c_header_88xx( 35 struct halmac_adapter *halmac_adapter, u8 *hal_h2c_hdr, 36 struct halmac_h2c_header_info *h2c_header_info, u16 *seq_num); 37 38 enum halmac_ret_status 39 halmac_dump_efuse_88xx(struct halmac_adapter *halmac_adapter, 40 enum halmac_efuse_read_cfg cfg); 41 42 enum halmac_ret_status 43 halmac_func_read_efuse_88xx(struct halmac_adapter *halmac_adapter, u32 offset, 44 u32 size, u8 *efuse_map); 45 46 enum halmac_ret_status 47 halmac_func_write_efuse_88xx(struct halmac_adapter *halmac_adapter, u32 offset, 48 u8 value); 49 50 enum halmac_ret_status 51 halmac_func_switch_efuse_bank_88xx(struct halmac_adapter *halmac_adapter, 52 enum halmac_efuse_bank efuse_bank); 53 54 enum halmac_ret_status 55 halmac_read_logical_efuse_map_88xx(struct halmac_adapter *halmac_adapter, 56 u8 *map); 57 58 enum halmac_ret_status 59 halmac_func_write_logical_efuse_88xx(struct halmac_adapter *halmac_adapter, 60 u32 offset, u8 value); 61 62 enum halmac_ret_status 63 halmac_func_pg_efuse_by_map_88xx(struct halmac_adapter *halmac_adapter, 64 struct halmac_pg_efuse_info *pg_efuse_info, 65 enum halmac_efuse_read_cfg cfg); 66 67 enum halmac_ret_status 68 halmac_eeprom_parser_88xx(struct halmac_adapter *halmac_adapter, 69 u8 *physical_efuse_map, u8 *logical_efuse_map); 70 71 enum halmac_ret_status 72 halmac_read_hw_efuse_88xx(struct halmac_adapter *halmac_adapter, u32 offset, 73 u32 size, u8 *efuse_map); 74 75 enum halmac_ret_status 76 halmac_dlfw_to_mem_88xx(struct halmac_adapter *halmac_adapter, u8 *ram_code, 77 u32 dest, u32 code_size); 78 79 enum halmac_ret_status 80 halmac_send_fwpkt_88xx(struct halmac_adapter *halmac_adapter, u8 *ram_code, 81 u32 code_size); 82 83 enum halmac_ret_status 84 halmac_iddma_dlfw_88xx(struct halmac_adapter *halmac_adapter, u32 source, 85 u32 dest, u32 length, u8 first); 86 87 enum halmac_ret_status 88 halmac_check_fw_chksum_88xx(struct halmac_adapter *halmac_adapter, 89 u32 memory_address); 90 91 enum halmac_ret_status 92 halmac_dlfw_end_flow_88xx(struct halmac_adapter *halmac_adapter); 93 94 enum halmac_ret_status 95 halmac_free_dl_fw_end_flow_88xx(struct halmac_adapter *halmac_adapter); 96 97 enum halmac_ret_status 98 halmac_pwr_seq_parser_88xx(struct halmac_adapter *halmac_adapter, u8 cut, 99 u8 fab, u8 intf, 100 struct halmac_wl_pwr_cfg_ **pp_pwr_seq_cfg 101 102 ); 103 104 enum halmac_ret_status 105 halmac_get_h2c_buff_free_space_88xx(struct halmac_adapter *halmac_adapter); 106 107 enum halmac_ret_status 108 halmac_send_h2c_set_pwr_mode_88xx(struct halmac_adapter *halmac_adapter, 109 struct halmac_fwlps_option *hal_fw_lps_opt); 110 111 enum halmac_ret_status 112 halmac_func_send_original_h2c_88xx(struct halmac_adapter *halmac_adapter, 113 u8 *original_h2c, u16 *seq, u8 ack); 114 115 enum halmac_ret_status 116 halmac_media_status_rpt_88xx(struct halmac_adapter *halmac_adapter, u8 op_mode, 117 u8 mac_id_ind, u8 mac_id, u8 mac_id_end); 118 119 enum halmac_ret_status halmac_send_h2c_update_datapack_88xx( 120 struct halmac_adapter *halmac_adapter, 121 enum halmac_data_type halmac_data_type, 122 struct halmac_phy_parameter_info *para_info); 123 124 enum halmac_ret_status 125 halmac_send_h2c_run_datapack_88xx(struct halmac_adapter *halmac_adapter, 126 enum halmac_data_type halmac_data_type); 127 128 enum halmac_ret_status 129 halmac_send_bt_coex_cmd_88xx(struct halmac_adapter *halmac_adapter, u8 *bt_buf, 130 u32 bt_size, u8 ack); 131 132 enum halmac_ret_status 133 halmac_func_ctrl_ch_switch_88xx(struct halmac_adapter *halmac_adapter, 134 struct halmac_ch_switch_option *cs_option); 135 136 enum halmac_ret_status 137 halmac_func_send_general_info_88xx(struct halmac_adapter *halmac_adapter, 138 struct halmac_general_info *general_info); 139 140 enum halmac_ret_status 141 halmac_send_h2c_ps_tuning_para_88xx(struct halmac_adapter *halmac_adapter); 142 143 enum halmac_ret_status 144 halmac_parse_c2h_packet_88xx(struct halmac_adapter *halmac_adapter, 145 u8 *halmac_buf, u32 halmac_size); 146 147 enum halmac_ret_status 148 halmac_send_h2c_update_packet_88xx(struct halmac_adapter *halmac_adapter, 149 enum halmac_packet_id pkt_id, u8 *pkt, 150 u32 pkt_size); 151 152 enum halmac_ret_status 153 halmac_send_h2c_phy_parameter_88xx(struct halmac_adapter *halmac_adapter, 154 struct halmac_phy_parameter_info *para_info, 155 bool full_fifo); 156 157 enum halmac_ret_status 158 halmac_dump_physical_efuse_fw_88xx(struct halmac_adapter *halmac_adapter, 159 u32 offset, u32 size, u8 *efuse_map); 160 161 enum halmac_ret_status halmac_send_h2c_update_bcn_parse_info_88xx( 162 struct halmac_adapter *halmac_adapter, 163 struct halmac_bcn_ie_info *bcn_ie_info); 164 165 enum halmac_ret_status 166 halmac_convert_to_sdio_bus_offset_88xx(struct halmac_adapter *halmac_adapter, 167 u32 *halmac_offset); 168 169 enum halmac_ret_status 170 halmac_update_sdio_free_page_88xx(struct halmac_adapter *halmac_adapter); 171 172 enum halmac_ret_status 173 halmac_update_oqt_free_space_88xx(struct halmac_adapter *halmac_adapter); 174 175 enum halmac_efuse_cmd_construct_state 176 halmac_query_efuse_curr_state_88xx(struct halmac_adapter *halmac_adapter); 177 178 enum halmac_ret_status halmac_transition_efuse_state_88xx( 179 struct halmac_adapter *halmac_adapter, 180 enum halmac_efuse_cmd_construct_state dest_state); 181 182 enum halmac_cfg_para_cmd_construct_state 183 halmac_query_cfg_para_curr_state_88xx(struct halmac_adapter *halmac_adapter); 184 185 enum halmac_ret_status halmac_transition_cfg_para_state_88xx( 186 struct halmac_adapter *halmac_adapter, 187 enum halmac_cfg_para_cmd_construct_state dest_state); 188 189 enum halmac_scan_cmd_construct_state 190 halmac_query_scan_curr_state_88xx(struct halmac_adapter *halmac_adapter); 191 192 enum halmac_ret_status halmac_transition_scan_state_88xx( 193 struct halmac_adapter *halmac_adapter, 194 enum halmac_scan_cmd_construct_state dest_state); 195 196 enum halmac_ret_status halmac_query_cfg_para_status_88xx( 197 struct halmac_adapter *halmac_adapter, 198 enum halmac_cmd_process_status *process_status, u8 *data, u32 *size); 199 200 enum halmac_ret_status halmac_query_dump_physical_efuse_status_88xx( 201 struct halmac_adapter *halmac_adapter, 202 enum halmac_cmd_process_status *process_status, u8 *data, u32 *size); 203 204 enum halmac_ret_status halmac_query_dump_logical_efuse_status_88xx( 205 struct halmac_adapter *halmac_adapter, 206 enum halmac_cmd_process_status *process_status, u8 *data, u32 *size); 207 208 enum halmac_ret_status halmac_query_channel_switch_status_88xx( 209 struct halmac_adapter *halmac_adapter, 210 enum halmac_cmd_process_status *process_status, u8 *data, u32 *size); 211 212 enum halmac_ret_status halmac_query_update_packet_status_88xx( 213 struct halmac_adapter *halmac_adapter, 214 enum halmac_cmd_process_status *process_status, u8 *data, u32 *size); 215 216 enum halmac_ret_status 217 halmac_query_iqk_status_88xx(struct halmac_adapter *halmac_adapter, 218 enum halmac_cmd_process_status *process_status, 219 u8 *data, u32 *size); 220 221 enum halmac_ret_status halmac_query_power_tracking_status_88xx( 222 struct halmac_adapter *halmac_adapter, 223 enum halmac_cmd_process_status *process_status, u8 *data, u32 *size); 224 225 enum halmac_ret_status 226 halmac_query_psd_status_88xx(struct halmac_adapter *halmac_adapter, 227 enum halmac_cmd_process_status *process_status, 228 u8 *data, u32 *size); 229 230 enum halmac_ret_status 231 halmac_verify_io_88xx(struct halmac_adapter *halmac_adapter); 232 233 enum halmac_ret_status 234 halmac_verify_send_rsvd_page_88xx(struct halmac_adapter *halmac_adapter); 235 236 void halmac_power_save_cb_88xx(void *cb_data); 237 238 enum halmac_ret_status 239 halmac_buffer_read_88xx(struct halmac_adapter *halmac_adapter, u32 offset, 240 u32 size, enum hal_fifo_sel halmac_fifo_sel, 241 u8 *fifo_map); 242 243 void halmac_restore_mac_register_88xx(struct halmac_adapter *halmac_adapter, 244 struct halmac_restore_info *restore_info, 245 u32 restore_num); 246 247 void halmac_api_record_id_88xx(struct halmac_adapter *halmac_adapter, 248 enum halmac_api_id api_id); 249 250 enum halmac_ret_status 251 halmac_set_usb_mode_88xx(struct halmac_adapter *halmac_adapter, 252 enum halmac_usb_mode usb_mode); 253 254 void halmac_enable_bb_rf_88xx(struct halmac_adapter *halmac_adapter, u8 enable); 255 256 void halmac_config_sdio_tx_page_threshold_88xx( 257 struct halmac_adapter *halmac_adapter, 258 struct halmac_tx_page_threshold_info *threshold_info); 259 260 enum halmac_ret_status 261 halmac_rqpn_parser_88xx(struct halmac_adapter *halmac_adapter, 262 enum halmac_trx_mode halmac_trx_mode, 263 struct halmac_rqpn_ *pwr_seq_cfg); 264 265 enum halmac_ret_status 266 halmac_check_oqt_88xx(struct halmac_adapter *halmac_adapter, u32 tx_agg_num, 267 u8 *halmac_buf); 268 269 enum halmac_ret_status 270 halmac_pg_num_parser_88xx(struct halmac_adapter *halmac_adapter, 271 enum halmac_trx_mode halmac_trx_mode, 272 struct halmac_pg_num_ *pg_num_table); 273 274 enum halmac_ret_status 275 halmac_parse_intf_phy_88xx(struct halmac_adapter *halmac_adapter, 276 struct halmac_intf_phy_para_ *intf_phy_para, 277 enum halmac_intf_phy_platform platform, 278 enum hal_intf_phy intf_phy); 279 280 enum halmac_ret_status 281 halmac_dbi_write32_88xx(struct halmac_adapter *halmac_adapter, u16 addr, 282 u32 data); 283 284 u32 halmac_dbi_read32_88xx(struct halmac_adapter *halmac_adapter, u16 addr); 285 286 enum halmac_ret_status 287 halmac_dbi_write8_88xx(struct halmac_adapter *halmac_adapter, u16 addr, 288 u8 data); 289 290 u8 halmac_dbi_read8_88xx(struct halmac_adapter *halmac_adapter, u16 addr); 291 292 u16 halmac_mdio_read_88xx(struct halmac_adapter *halmac_adapter, u8 addr, 293 u8 speed 294 295 ); 296 297 enum halmac_ret_status 298 halmac_mdio_write_88xx(struct halmac_adapter *halmac_adapter, u8 addr, u16 data, 299 u8 speed); 300 301 void halmac_config_ampdu_88xx(struct halmac_adapter *halmac_adapter, 302 struct halmac_ampdu_config *ampdu_config); 303 304 enum halmac_ret_status 305 halmac_usbphy_write_88xx(struct halmac_adapter *halmac_adapter, u8 addr, 306 u16 data, u8 speed); 307 308 u16 halmac_usbphy_read_88xx(struct halmac_adapter *halmac_adapter, u8 addr, 309 u8 speed); 310 #endif /* _HALMAC_FUNC_88XX_H_ */ 311