/******************************************************************************
|
*
|
* Copyright(c) 2019 Realtek Corporation. All rights reserved.
|
*
|
* This program is free software; you can redistribute it and/or modify it
|
* under the terms of version 2 of the GNU General Public License as
|
* published by the Free Software Foundation.
|
*
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
* more details.
|
*
|
******************************************************************************/
|
|
#include "init_8852b.h"
|
#include "../pwr.h"
|
#include "../efuse.h"
|
#include "../init.h"
|
#include "../trxcfg.h"
|
#include "pwr_seq_8852b.h"
|
#include "pwr_seq_func_8852b.h"
|
#include "../hw.h"
|
#include "../security_cam.h"
|
#include "../trx_desc.h"
|
#include "../../feature_cfg.h"
|
#include "../fwcmd.h"
|
#include "../fwdl.h"
|
#include "../fwofld.h"
|
#include "../role.h"
|
#include "../tblupd.h"
|
#include "../rx_forwarding.h"
|
#include "../rx_filter.h"
|
#include "../phy_rpt.h"
|
#include "../hwamsdu.h"
|
#include "../status.h"
|
#include "../hdr_conv.h"
|
#include "../hw_seq.h"
|
#include "gpio_8852b.h"
|
#include "../gpio.h"
|
#include "../cpuio.h"
|
#include "../sounding.h"
|
#include "../power_saving.h"
|
#include "../wowlan.h"
|
#include "../tcpip_checksum_offload.h"
|
#include "../la_mode.h"
|
#include "../dle.h"
|
#include "../coex.h"
|
#include "../mcc.h"
|
#include "../twt.h"
|
#include "../mport.h"
|
#include "../p2p.h"
|
#include "../flash.h"
|
#include "../dbg_cmd.h"
|
#include "../phy_misc.h"
|
#include "../h2c_agg.h"
|
#include "../dbcc.h"
|
|
#if MAC_AX_SDIO_SUPPORT
|
#include "../_sdio.h"
|
#endif
|
#if MAC_AX_USB_SUPPORT
|
#include "_usb_8852b.h"
|
#endif
|
#if MAC_AX_PCIE_SUPPORT
|
#include "../_pcie.h"
|
#endif
|
#if MAC_AX_FEATURE_DBGPKG
|
#include "../dbgpkg.h"
|
#include "../dbgport_hw.h"
|
#endif
|
|
#if MAC_AX_SDIO_SUPPORT
|
static struct mac_ax_intf_ops mac8852b_sdio_ops = {
|
reg_read8_sdio, /* reg_read8 */
|
reg_write8_sdio, /* reg_write8 */
|
reg_read16_sdio, /* reg_read16 */
|
reg_write16_sdio, /* reg_write16 */
|
reg_read32_sdio, /* reg_read32 */
|
reg_write32_sdio, /* reg_write32 */
|
tx_allow_sdio, /* tx_allow_sdio */
|
tx_cmd_addr_sdio, /* tx_cmd_addr_sdio */
|
sdio_pre_init, /* intf_pre_init */
|
sdio_init, /* intf_init */
|
sdio_deinit, /* intf_init */
|
reg_read_n_sdio, /* reg_read_n_sdio */
|
NULL, /*get_bulkout_id*/
|
NULL, /* ltr_set_pcie */
|
NULL, /*u2u3_switch*/
|
NULL, /*get_usb_mode*/
|
NULL, /*get_usb_support_ability*/
|
NULL, /*usb_tx_agg_cfg*/
|
NULL, /*usb_rx_agg_cfg*/
|
set_sdio_wowlan, /*set_wowlan*/
|
NULL, /*ctrl_txdma_ch*/
|
NULL, /*clr_idx_all*/
|
NULL, /*poll_txdma_ch_idle*/
|
NULL, /*poll_rxdma_ch_idle*/
|
NULL, /*ctrl_txhci*/
|
NULL, /*ctrl_rxhci*/
|
NULL, /*ctrl_dma_io*/
|
NULL, /* get_io_stat */
|
sdio_get_txagg_num, /*get_txagg_num*/
|
NULL, /*get_usb_rx_state*/
|
sdio_autok_counter_avg, /* pcie_autok_counter_avg */
|
};
|
#endif
|
|
#if MAC_AX_USB_SUPPORT
|
static struct mac_ax_intf_ops mac8852b_usb_ops = {
|
reg_read8_usb_8852b, /* reg_read8 */
|
reg_write8_usb_8852b, /* reg_write8 */
|
reg_read16_usb_8852b, /* reg_read16 */
|
reg_write16_usb_8852b, /* reg_write16 */
|
reg_read32_usb_8852b, /* reg_read32 */
|
reg_write32_usb_8852b, /* reg_write32 */
|
NULL, /* tx_allow_sdio */
|
NULL, /* tx_cmd_addr_sdio */
|
usb_pre_init_8852b, /* intf_pre_init */
|
usb_init_8852b, /* intf_init */
|
usb_deinit_8852b, /* intf_init */
|
NULL, /* reg_read_n_sdio */
|
get_bulkout_id_8852b, /*get_bulkout_id*/
|
NULL, /* ltr_set_pcie */
|
u2u3_switch_8852b, /*u2u3_switch*/
|
get_usb_mode, /*get_usb_mode*/
|
get_usb_support_ability_8852b,/*get_usb_support_ability*/
|
usb_tx_agg_cfg_8852b, /*usb_tx_agg_cfg*/
|
usb_rx_agg_cfg_8852b, /*usb_rx_agg_cfg*/
|
set_usb_wowlan_8852b, /*set_wowlan*/
|
NULL, /*ctrl_txdma_ch*/
|
NULL, /*clr_idx_all*/
|
NULL, /*poll_txdma_ch_idle*/
|
NULL, /*poll_rxdma_ch_idle*/
|
NULL, /*ctrl_txhci*/
|
NULL, /*ctrl_rxhci*/
|
NULL, /*ctrl_dma_io*/
|
NULL, /* get_io_stat */
|
usb_get_txagg_num_8852b, /*get_txagg_num*/
|
usb_get_rx_state_8852b, /*get_usb_rx_state*/
|
usb_autok_counter_avg, /* pcie_autok_counter_avg */
|
};
|
#endif
|
|
#if MAC_AX_PCIE_SUPPORT
|
static struct mac_ax_intf_ops mac8852b_pcie_ops = {
|
reg_read8_pcie, /* reg_read8 */
|
reg_write8_pcie, /* reg_write8 */
|
reg_read16_pcie, /* reg_read16 */
|
reg_write16_pcie, /* reg_write16 */
|
reg_read32_pcie, /* reg_read32 */
|
reg_write32_pcie, /* reg_write32 */
|
NULL, /* tx_allow_sdio */
|
NULL, /* tx_cmd_addr_sdio */
|
pcie_pre_init, /* intf_pre_init */
|
pcie_init, /* intf_init */
|
pcie_deinit, /* intf_init */
|
NULL, /* reg_read_n_sdio */
|
NULL, /*get_bulkout_id*/
|
ltr_set_pcie, /* ltr_set_pcie */
|
NULL, /*u2u3_switch*/
|
NULL, /*get_usb_mode*/
|
NULL, /*get_usb_support_ability*/
|
NULL, /*usb_tx_agg_cfg*/
|
NULL, /*usb_rx_agg_cfg*/
|
set_pcie_wowlan, /*set_wowlan*/
|
ctrl_txdma_ch_pcie, /*ctrl_txdma_ch*/
|
clr_idx_all_pcie, /*clr_idx_all*/
|
poll_txdma_ch_idle_pcie, /*poll_txdma_ch_idle*/
|
poll_rxdma_ch_idle_pcie, /*poll_rxdma_ch_idle*/
|
ctrl_txhci_pcie, /*ctrl_txhci*/
|
ctrl_rxhci_pcie, /*ctrl_rxhci*/
|
ctrl_dma_io_pcie, /*ctrl_dma_io*/
|
get_io_stat_pcie, /* get_io_stat */
|
pcie_get_txagg_num, /*get_txagg_num*/
|
NULL, /*get_usb_rx_state*/
|
pcie_autok_counter_avg, /* pcie_autok_counter_avg */
|
};
|
#endif
|
|
static struct mac_ax_ops mac8852b_ops = {
|
NULL, /* intf_ops */
|
/*System level*/
|
mac_hal_init, /* hal_init */
|
mac_hal_fast_init, /* hal_fast_init */
|
mac_hal_deinit, /* hal_deinit */
|
mac_hal_fast_deinit, /*hal_fast_deinit*/
|
mac_add_role, /* add_role */
|
mac_remove_role, /* remove_role */
|
mac_change_role, /* change_role */
|
mac_pwr_switch, /* pwr_switch */
|
mac_sys_init, /* sys_init */
|
mac_trx_init, /* init */
|
mac_romdl, /* romdl */
|
mac_enable_cpu, /* enable_cpu */
|
mac_disable_cpu, /* disable_cpu */
|
mac_fwredl, /* fwredl */
|
mac_fwdl, /* fwdl */
|
mac_enable_fw, /* enable_fw */
|
mac_lv1_rcvy, /* lv1_rcvy */
|
mac_get_macaddr,
|
mac_build_txdesc, /* build_txdesc */
|
mac_refill_txdesc, /*refill txdesc*/
|
mac_parse_rxdesc, /* parse_rxdesc */
|
mac_watchdog, /* watchdog */
|
/*FW offload related*/
|
mac_reset_fwofld_state,
|
mac_check_fwofld_done,
|
mac_read_pkt_ofld,
|
mac_del_pkt_ofld,
|
mac_add_pkt_ofld,
|
mac_pkt_ofld_packet,
|
mac_dump_efuse_ofld,
|
mac_efuse_ofld_map,
|
mac_upd_dctl_info, /*update dmac ctrl info*/
|
mac_upd_cctl_info, /*update cmac ctrl info*/
|
mac_ie_cam_upd, /* ie_cam_upd */
|
mac_twt_info_upd_h2c, /* twt info update h2c */
|
mac_twt_act_h2c, /* twt act h2c */
|
mac_twt_staanno_h2c, /* twt anno h2c */
|
mac_twt_wait_anno,
|
mac_host_getpkt_h2c,
|
mac_p2p_act_h2c, /* p2p_act_h2c */
|
mac_p2p_macid_ctrl_h2c, /* p2p_macid_ctrl_h2c */
|
mac_get_p2p_stat, /* get_p2p_stat */
|
mac_tsf32_togl_h2c, /* tsf32_togl_h2c */
|
mac_get_t32_togl_rpt, /* get_t32_togl_rpt */
|
mac_ccxrpt_parsing,
|
/*Association, de-association related*/
|
mac_sta_add_key, /* add station key */
|
mac_sta_del_key, /* del station key */
|
mac_sta_search_key_idx, /* search station key index */
|
mac_sta_hw_security_support, /* control hw security support */
|
mac_sta_keycam_backup, /* sta keycam backup restore control */
|
mac_set_mu_table, /*set mu score table*/
|
mac_ss_dl_grp_upd, /* update SS dl group info*/
|
mac_ss_ul_grp_upd, /* update SS ul group info*/
|
mac_ss_ul_sta_upd, /* add sta into SS ul link*/
|
mac_bacam_info, /*update BA CAM info*/
|
/*TRX related*/
|
mac_txdesc_len, /* txdesc_len */
|
mac_upd_shcut_mhdr,/*update short cut mac header*/
|
mac_enable_hwmasdu, /* enable_hwmasdu */
|
mac_enable_cut_hwamsdu, /* enable_cut_hwamsdu */
|
mac_hdr_conv, /* hdr_conv */
|
mac_set_hwseq_reg, /* set hw seq by reg */
|
mac_process_c2h, /* process_c2h */
|
mac_parse_dfs, /* parse_dfs */
|
mac_parse_ppdu, /* parse_ppdu */
|
mac_cfg_phy_rpt, /* cfg_phy_rpt */
|
mac_set_rx_forwarding, /*rx_forwarding */
|
mac_get_rx_fltr_opt, /* set rx fltr mac, pclp header opt */
|
mac_set_rx_fltr_opt, /* get rx fltr mac, pclp header opt */
|
mac_set_typ_fltr_opt, /* set machdr type fltr opt */
|
mac_set_typsbtyp_fltr_opt, /* set machdr typ subtyp fltr opt */
|
mac_set_typsbtyp_fltr_detail, /* set detail type subtype filter config*/
|
mac_get_cfg_addr_cam, /* get addrcam setting */
|
mac_get_cfg_addr_cam_dis, /* get addrcam disable default setting */
|
mac_cfg_addr_cam, /* config addrcam setting */
|
mac_cfg_addr_cam_dis, /* config addrcam disable default setting */
|
mac_sr_update, /* set sr parameter */
|
mac_two_nav_cfg, /* config 2NAV hw setting */
|
mac_wde_pkt_drop, /* pkt_drop */
|
mac_send_bcn_h2c, /* send beacon h2c */
|
mac_tx_mode_sel, /*tx mode sel*/
|
mac_tcpip_chksum_ofd, /* tcpip_chksum_ofd */
|
mac_chk_rx_tcpip_chksum_ofd, /* chk_rx_tcpip_chksum_ofd */
|
mac_chk_allq_empty, /*chk_allq_empty*/
|
mac_is_txq_empty, /*is_txq_empty*/
|
mac_is_rxq_empty, /*is_rxq_empty*/
|
mac_parse_bcn_stats_c2h, /*parse tx bcn statistics*/
|
mac_tx_idle_poll, /*tx_idle_poll*/
|
mac_sifs_chk_cca_en, /*mac_sifs_chk_cca_en*/
|
mac_patch_rx_rate, /*for patch rx rate error*/
|
/*frame exchange related*/
|
mac_upd_mudecision_para, /* upd_ba_infotbl */
|
mac_mu_sta_upd, /* upd_mu_sta */
|
mac_upd_ul_fixinfo, /* upd_ul_fixinfo */
|
mac_f2p_test_cmd, /*f2p test cmd para*/
|
mac_snd_test_cmd, /* f2p test cmd para */
|
mac_set_fixmode_mib, /* set_fw_testmode */
|
mac_dumpwlanc,
|
mac_dumpwlans,
|
mac_dumpwland,
|
/*outsrcing related */
|
mac_outsrc_h2c_common, /* outsrc common h2c */
|
mac_read_pwr_reg, /* for read tx power reg*/
|
mac_write_pwr_reg, /* for write tx power reg*/
|
mac_write_msk_pwr_reg, /* for write tx power reg*/
|
mac_write_pwr_ofst_mode, /* for write tx power mode offset reg*/
|
mac_write_pwr_ofst_bw, /* for write tx power BW offset reg*/
|
mac_write_pwr_ref_reg, /* for write tx power ref reg*/
|
mac_write_pwr_limit_en, /* for write tx power limit enable reg*/
|
mac_write_pwr_limit_rua_reg, /* for write tx power limit rua reg*/
|
mac_write_pwr_limit_reg, /* for write tx power limit reg*/
|
mac_write_pwr_by_rate_reg, /* for write tx power by rate reg*/
|
mac_lamode_cfg, /*cfg la mode para*/
|
mac_lamode_trigger, /*trigger la mode start*/
|
mac_lamode_buf_cfg, /*la mode buf size cfg */
|
mac_get_lamode_st, /*get la mode status*/
|
mac_read_xcap_reg_dav, /*read xcap xo/xi reg*/
|
mac_write_xcap_reg_dav, /*write xcap xo/xi reg*/
|
mac_write_bbrst_reg, /*write bb rst reg*/
|
/*sounding related*/
|
mac_get_csi_buffer_index, /* get CSI buffer index */
|
mac_set_csi_buffer_index, /* set CSI buffer index */
|
mac_get_snd_sts_index, /* get MACID SND status */
|
mac_set_snd_sts_index, /* set SND status MACID */
|
mac_init_snd_mer,/* init SND MER */
|
mac_init_snd_mee,/* init SND MEE */
|
mac_csi_force_rate, /*CSI fix rate reg*/
|
mac_csi_rrsc, /*CSI RRSC*/
|
mac_set_snd_para, /*set sound parameter*/
|
mac_set_csi_para_reg, /*set reg csi para*/
|
mac_set_csi_para_cctl, /*set csi para in cmac ctrl info*/
|
mac_hw_snd_pause_release, /*HW SND pause release*/
|
mac_bypass_snd_sts, /*bypass SND status*/
|
mac_deinit_mee, /*deinit mee*/
|
mac_snd_sup, /*bf entry num and SU MU buffer num*/
|
mac_gidpos, /*VHT MU GID position setting*/
|
/*ps related*/
|
mac_cfg_lps, /*config LPS*/
|
mac_ps_pwr_state, /*set or check lps power state*/
|
mac_chk_leave_lps, /*check already leave protocol ps*/
|
mac_cfg_ips, /*config IPS*/
|
mac_chk_leave_ips, /*check already leave IPS protocol*/
|
mac_ps_notify_wake, /*send RPWM to wake up HW/FW*/
|
mac_cfg_ps_advance_parm, /*config advance parameter for power saving*/
|
/* Wowlan related*/
|
mac_cfg_wow_wake, /*config wowlan wake*/
|
mac_cfg_disconnect_det, /*config disconnect det*/
|
mac_cfg_keep_alive, /*config keep alive*/
|
mac_cfg_gtk_ofld, /*config gtk ofld*/
|
mac_cfg_arp_ofld, /*config arp ofld*/
|
mac_cfg_ndp_ofld, /*config ndp ofld*/
|
mac_cfg_realwow, /*config realwow*/
|
mac_cfg_nlo, /*config nlo*/
|
mac_cfg_dev2hst_gpio, /*config dev2hst gpio*/
|
mac_cfg_uphy_ctrl, /*config uphy ctrl*/
|
mac_cfg_wowcam_upd, /*config wowcam update*/
|
mac_get_wow_wake_rsn, /* Get wowlan wakeup reason with reset option */
|
mac_cfg_wow_sleep, /*config wowlan before sleep/after wake*/
|
mac_get_wow_fw_status, /*get wowlan fw status*/
|
mac_request_aoac_report, /* request_aoac_report */
|
mac_read_aoac_report, /* read_aoac_report */
|
mac_check_aoac_report_done, /* check_aoac_report_done */
|
mac_wow_stop_trx, /* wow_stop_trx */
|
/*system related*/
|
mac_dbcc_enable, /*enable / disable dbcc */
|
mac_dbcc_move_macid, /* dbcc_move_macid */
|
mac_port_cfg, /* cofig port para */
|
mac_port_init, /* init port para */
|
mac_enable_imr, /* enable CMAC/DMAC IMR */
|
mac_dump_efuse_map_wl_plus, /* dump_wl_efuse*/
|
mac_dump_efuse_map_bt, /* dump_bt_efuse */
|
mac_write_efuse_plus, /* write_wl_bt_efuse */
|
mac_read_efuse_plus, /* read_wl_bt_efuse */
|
mac_get_efuse_avl_size, /* get_available_efuse_size */
|
mac_get_efuse_avl_size_bt, /* get_available_efuse_size_bt */
|
mac_dump_log_efuse_plus, /* dump_logical_efuse */
|
mac_read_log_efuse_plus, /* read_logical_efuse */
|
mac_write_log_efuse_plus, /* write_logical_efuse */
|
mac_dump_log_efuse_bt, /* dump_logical_efuse_bt */
|
mac_read_log_efuse_bt, /* read_logical_efuse_bt */
|
mac_write_log_efuse_bt, /* write_logical_efuse_bt */
|
mac_pg_efuse_by_map_plus, /* program_efuse_map */
|
mac_pg_efuse_by_map_bt, /* program_efuse_map_bt */
|
mac_mask_log_efuse, /* mask_logical_efuse_map */
|
mac_pg_sec_data_by_map, /* program_secure_data_map */
|
mac_cmp_sec_data_by_map, /* compare_secure_data_map */
|
mac_get_efuse_info, /* get_efuse_info */
|
mac_set_efuse_info, /* set_efuse_info */
|
mac_read_hidden_rpt, /* read_efuse_hidden_report */
|
mac_check_efuse_autoload, /* check_efuse_autoload */
|
mac_pg_simulator_plus, /* efuse pg simulator */
|
mac_checksum_update, /* checksum update */
|
mac_checksum_rpt, /*report checksum comparison result*/
|
mac_disable_rf, /* Disable RF Offload */
|
mac_set_efuse_ctrl, /*set efuse ctrl 0x30 or 0xC30*/
|
mac_otp_test, /*efuse OTP test R/W to 0x7ff*/
|
mac_get_ft_status, /* get_mac_ft_status */
|
mac_fw_log_cfg, /* fw_log_cfg */
|
mac_pinmux_set_func_8852b, /* pinmux_set_func */
|
mac_pinmux_free_func, /* pinmux_free_func */
|
mac_sel_uart_tx_pin, /* sel_uart_tx_pin */
|
mac_sel_uart_rx_pin, /* sel_uart_rx_pin */
|
mac_set_gpio_func_8852b, /* set_gpio_func */
|
mac_get_hw_info, /* get_hw_info */
|
mac_set_hw_value, /* set_hw_value */
|
mac_get_hw_value, /* get_hw_value */
|
mac_get_err_status, /* get_err_status */
|
mac_set_err_status, /* set_err_status */
|
mac_general_pkt_ids, /*general_pkt_ids */
|
mac_coex_init, /* coex_init */
|
mac_read_coex_reg, /* coex_read */
|
mac_write_coex_reg, /* coex_write */
|
mac_trigger_cmac_err, /*trigger_cmac_err*/
|
mac_trigger_cmac1_err, /*trigger_cmac1_err*/
|
mac_trigger_dmac_err, /*trigger_dmac_err*/
|
mac_tsf_sync, /*tsf_sync*/
|
mac_read_xtal_si, /*read_xtal_si*/
|
mac_write_xtal_si, /*write_xtal_si*/
|
mac_io_chk_access, /* io_chk_access */
|
mac_ser_ctrl, /* ser_ctrl */
|
/* mcc */
|
mac_reset_mcc_group,
|
mac_reset_mcc_request,
|
mac_add_mcc, /* add_mcc */
|
mac_start_mcc, /* start_mcc */
|
mac_stop_mcc, /* stop_mcc */
|
mac_del_mcc_group, /* del_mcc_group */
|
mac_mcc_request_tsf, /* mcc_request_tsf */
|
mac_mcc_macid_bitmap, /* mcc_macid_bitmap */
|
mac_mcc_sync_enable, /* mcc_sync_enable */
|
mac_mcc_set_duration, /* mcc_set_duration */
|
mac_get_mcc_tsf_rpt,
|
mac_get_mcc_status_rpt,
|
mac_get_mcc_group,
|
mac_check_add_mcc_done,
|
mac_check_start_mcc_done,
|
mac_check_stop_mcc_done,
|
mac_check_del_mcc_group_done,
|
mac_check_mcc_request_tsf_done,
|
mac_check_mcc_macid_bitmap_done,
|
mac_check_mcc_sync_enable_done,
|
mac_check_mcc_set_duration_done,
|
/* not mcc */
|
mac_check_access,
|
mac_set_led_mode, /* set_led_mode */
|
mac_led_ctrl, /* led_ctrl */
|
mac_set_sw_gpio_mode, /* set_sw_gpio_mode */
|
mac_sw_gpio_ctrl, /* sw_gpio_ctrl */
|
mac_get_c2h_event, /* get_c2h_event */
|
mac_cfg_wps, /* cfg_wps */
|
mac_get_wl_dis_val, /* get_wl_dis_val */
|
#if MAC_AX_FEATURE_DBGPKG
|
mac_fwcmd_lb, /* fwcmd_lb */
|
mac_mem_dump, /* sram mem dump */
|
mac_get_mem_size, /* get mem size */
|
mac_dbg_status_dump, /* mac dbg status dump */
|
mac_reg_dump, /* debug reg dump for MAC/BB/RF*/
|
mac_rx_cnt,
|
mac_dump_fw_rsvd_ple,
|
mac_dump_ple_dbg_page, /* dump_ple_dbg_page */
|
mac_fw_dbg_dump,
|
mac_event_notify,
|
mac_dbgport_hw_set, /* Set debug port for LA */
|
#endif
|
#if MAC_AX_FEATURE_HV
|
mac_ram_boot, /* ram_boot */
|
/*fw offload related*/
|
mac_clear_write_request, /* clear_write_request */
|
mac_add_write_request, /* add_write_request */
|
mac_write_ofld, /* write_ofld */
|
mac_clear_conf_request, /* clear_conf_request */
|
mac_add_conf_request, /* add_conf_request */
|
mac_conf_ofld, /* conf_ofld */
|
mac_clear_read_request, /* clear_read_request */
|
mac_add_read_request, /* add_read_request */
|
mac_read_ofld, /* read_ofld */
|
mac_read_ofld_value, /* read_ofld_value */
|
#endif
|
mac_add_cmd_ofld, /* add_cmd_ofld */
|
mac_flash_erase,
|
mac_flash_read,
|
mac_flash_write,
|
mac_fw_status_cmd, /* fw_status_cmd */
|
mac_fwc2h_ofdma_sts_parse, /* parse c2h fw sts */
|
mac_fw_ofdma_sts_en, /* send fw sts en to fw */
|
mac_tx_duty, /* tx_duty */
|
mac_tx_duty_stop, /* tx_duty _stop */
|
#if MAC_AX_FEATURE_DBGCMD
|
mac_halmac_cmd, /* halmac_cmd */
|
mac_halmac_cmd_parser, /* halmac_cmd_parser */
|
#endif
|
mac_fast_ch_sw,
|
mac_fast_ch_sw_done,
|
mac_get_fast_ch_sw_rpt,
|
mac_write_coex_mask,
|
mac_fw_dbg_dle_cfg,
|
mac_h2c_agg_enable,
|
mac_h2c_agg_flush,
|
mac_h2c_agg_tx,
|
#if MAC_AX_FEATURE_DBGDEC
|
mac_fw_log_set_array,
|
mac_fw_log_unset_array,
|
#endif
|
mac_get_fw_status,
|
mac_add_scanofld_ch,
|
mac_scanofld,
|
mac_scanofld_fw_busy,
|
mac_scanofld_chlist_busy,
|
mac_role_sync,
|
mac_ch_switch_ofld,
|
mac_get_ch_switch_rpt
|
};
|
|
static struct mac_ax_hw_info mac8852b_hw_info = {
|
0, /* done */
|
MAC_AX_CHIP_ID_8852B, /* chip_id */
|
0xFF, /* cv */
|
MAC_AX_INTF_INVALID, /* intf */
|
19, /* tx_ch_num */
|
10, /* tx_data_ch_num */
|
WD_BODY_LEN, /* wd_body_len */
|
WD_INFO_LEN, /* wd_info_len */
|
pwr_on_seq_8852b, /* pwr_on_seq */
|
pwr_off_seq_8852b, /* pwr_off_seq */
|
PWR_SEQ_VER_8852B, /* pwr_seq_ver */
|
196608, /* fifo_size */
|
32, /* macid_num */
|
5, /* port_num */
|
4, /* mbssid_num */
|
20, /* bssid_num */
|
1536, /* wl_efuse_size */
|
1216, /* wl_zone2_efuse_size */
|
2048, /* log_efuse_size */
|
1280, /* limit_efuse_size_PCIE */
|
1280, /* limit_efuse_size_USB */
|
1280, /* limit_efuse_size_SDIO */
|
512, /* bt_efuse_size */
|
1024, /* bt_log_efuse_size */
|
32, /*hidden_efuse_size*/
|
4, /* sec_ctrl_efuse_size */
|
192, /* sec_data_efuse_size */
|
NULL, /* sec_cam_table_t pointer */
|
NULL, /* sec_cam_table_bk pointer */
|
32, /* ple_rsvd_space */
|
24, /* payload_desc_size */
|
8, /* efuse_version_size */
|
128, /* wl_efuse_size_DAV */
|
96, /* wl_zone2_efuse_size_DAV */
|
32, /* hidden_efuse_size_DAV */
|
16, /* log_efuse_size_DAV */
|
0, /* wl_efuse_start_addr */
|
0, /* wl_efuse_start_addr_DAV */
|
0x600, /* bt_efuse_start_addr */
|
0, /* wd_checksum_en */
|
0, /* sw_amsdu_max_size */
|
NULL, /* pwr_on */
|
NULL, /* pwr_off */
|
0, /* ind_aces_cnt */
|
0, /* dbg_port_cnt */
|
0, /* core_swr_volt */
|
MAC_AX_SWR_NORM, /* core_swr_volt_sel */
|
};
|
|
static struct mac_ax_hw_info mac8852b_hw_info_cabv = {
|
0, /* done */
|
MAC_AX_CHIP_ID_8852B, /* chip_id */
|
0xFF, /* cv */
|
MAC_AX_INTF_INVALID, /* intf */
|
19, /* tx_ch_num */
|
10, /* tx_data_ch_num */
|
WD_BODY_LEN, /* wd_body_len */
|
WD_INFO_LEN, /* wd_info_len */
|
pwr_on_seq_8852b, /* pwr_on_seq */
|
pwr_off_seq_8852b, /* pwr_off_seq */
|
PWR_SEQ_VER_8852B, /* pwr_seq_ver */
|
131072, /* fifo_size */
|
32, /* macid_num */
|
5, /* port_num */
|
4, /* mbssid_num */
|
20, /* bssid_num */
|
1536, /* wl_efuse_size */
|
1216, /* wl_zone2_efuse_size */
|
2048, /* log_efuse_size */
|
1280, /* limit_efuse_size_PCIE */
|
1280, /* limit_efuse_size_USB */
|
1280, /* limit_efuse_size_SDIO */
|
512, /* bt_efuse_size */
|
1024, /* bt_log_efuse_size */
|
32, /*hidden_efuse_size*/
|
4, /* sec_ctrl_efuse_size */
|
192, /* sec_data_efuse_size */
|
NULL, /* sec_cam_table_t pointer */
|
NULL, /* sec_cam_table_bk pointer */
|
32, /* ple_rsvd_space */
|
24, /* payload_desc_size */
|
8, /* efuse_version_size */
|
128, /* wl_efuse_size_DAV */
|
96, /* wl_zone2_efuse_size_DAV */
|
32, /* hidden_efuse_size_DAV */
|
16, /* log_efuse_size_DAV */
|
0, /* wl_efuse_start_addr */
|
0, /* wl_efuse_start_addr_DAV */
|
0x600, /* bt_efuse_start_addr */
|
0, /* wd_checksum_en */
|
0, /* sw_amsdu_max_size */
|
NULL, /* pwr_on */
|
NULL, /* pwr_off */
|
0, /* ind_aces_cnt */
|
0, /* dbg_port_cnt */
|
0, /* core_swr_volt */
|
MAC_AX_SWR_NORM, /* core_swr_volt_sel */
|
};
|
|
struct mac_ax_ft_status mac_8852b_ft_status[] = {
|
{MAC_AX_FT_DUMP_EFUSE, MAC_AX_STATUS_IDLE, NULL, 0},
|
{MAC_AX_FT_MAX, MAC_AX_STATUS_ERR, NULL, 0},
|
};
|
|
static struct mac_ax_adapter mac_8852b_adapter = {
|
&mac8852b_ops, /* ops */
|
NULL, /* drv_adapter */
|
NULL, /* phl_adapter */
|
NULL, /* pltfm_cb */
|
MAC_AX_DFLT_SM, /* sm */
|
NULL, /* hw_info */
|
{0}, /* fw_info */
|
{0}, /* efuse_param */
|
{0}, /* mac_pwr_info */
|
mac_8852b_ft_status, /* ft_stat */
|
NULL, /* hfc_param */
|
{MAC_AX_QTA_SCC, 64, 128, 0, 0, 0, 0, 0, 0}, /* dle_info */
|
{0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, DFLT_GPIO_STATE}, /* gpio_info */
|
NULL, /* role table */
|
{NULL, NULL, NULL, 0, 0, 0, 0}, /* read_ofld_info */
|
{0, 0, NULL}, /* read_ofld_value */
|
{NULL, NULL, NULL, 0, 0, 0, 0}, /* write_ofld_info */
|
{NULL}, /* efuse_ofld_info */
|
{NULL, NULL, 0, 0, 0, 0}, /* conf_ofld_info */
|
{PKT_OFLD_OP_MAX, PKT_OFLD_MAX_COUNT, 0, {0}}, /* pkt_ofld_info */
|
{0, 0, 0, NULL}, /* pkt_ofld_pkt */
|
{NULL, NULL, NULL, 0, 0, 0, 0, 0}, /* cmd_ofld_info */
|
{{{0}, {0}, {0}, {0}}}, /* mcc_group_info */
|
{NULL}, /* wowlan_info */
|
NULL, /* p2p_info */
|
NULL, /* t32_togl_rpt */
|
NULL, /* port_info */
|
{0}, /* struct mac_ax_int_stats stats */
|
{0, 0}, /* struct mac_ax_drv_stats drv_stats */
|
{0}, /*h2c_agg_info*/
|
#if MAC_AX_SDIO_SUPPORT
|
{MAC_AX_SDIO_4BYTE_MODE_DISABLE, MAC_AX_SDIO_TX_MODE_AGG,
|
MAC_AX_SDIO_SPEC_VER_2_00, MAC_AX_SDIO_OPN_MODE_BLOCK,
|
512, 1, 8, 0}, /* sdio_info */
|
#endif
|
#if MAC_AX_USB_SUPPORT
|
{0}, /* usb_info */
|
#endif
|
#if MAC_AX_PCIE_SUPPORT
|
{0}, /* pcie_info */
|
#endif
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, NULL}, /*flash_info */
|
{0, 0}, /* fast_ch_sw_info */
|
#if MAC_AX_FEATURE_HV
|
NULL, /*hv_ax_ops*/
|
HV_AX_ASIC, /* env */
|
#endif
|
#if MAC_AX_FEATURE_DBGCMD
|
{NULL}, /*fw_dbgcmd*/
|
#endif
|
#if MAC_AX_FEATURE_DBGDEC
|
NULL, /*fw_log_array*/
|
NULL,
|
0,
|
#endif
|
{0}, /*log_cfg*/
|
{NULL},
|
NULL, /*ch_switch_rpt*/
|
};
|
|
#ifdef CONFIG_NEW_HALMAC_INTERFACE
|
struct mac_ax_adapter *get_mac_8852b_adapter(enum mac_ax_intf intf,
|
u8 cv, void *phl_adapter,
|
void *drv_adapter,
|
struct mac_ax_pltfm_cb *pltfm_cb)
|
{
|
struct mac_ax_adapter *adapter = NULL;
|
struct mac_ax_mac_pwr_info *pwr_info;
|
|
adapter =
|
(struct mac_ax_adapter *)hal_mem_alloc(drv_adapter,
|
sizeof(struct mac_ax_adapter));
|
if (!adapter)
|
return NULL;
|
|
hal_mem_cpy(drv_adapter, adapter, &mac_8852b_adapter,
|
sizeof(struct mac_ax_adapter));
|
pwr_info = &adapter->mac_pwr_info;
|
|
adapter->phl_adapter = phl_adapter;
|
adapter->drv_adapter = drv_adapter;
|
adapter->pltfm_cb = pltfm_cb;
|
adapter->hw_info->cv = cv;
|
adapter->hw_info->intf = intf;
|
adapter->hw_info->done = 1;
|
|
switch (intf) {
|
#if MAC_AX_SDIO_SUPPORT
|
case MAC_AX_INTF_SDIO:
|
adapter->ops->intf_ops = &mac8852b_sdio_ops;
|
pwr_info->intf_pwr_switch = sdio_pwr_switch;
|
break;
|
#endif
|
#if MAC_AX_USB_SUPPORT
|
case MAC_AX_INTF_USB:
|
adapter->ops->intf_ops = &mac8852b_usb_ops;
|
pwr_info->intf_pwr_switch = usb_pwr_switch;
|
break;
|
#endif
|
#if MAC_AX_PCIE_SUPPORT
|
case MAC_AX_INTF_PCIE:
|
adapter->ops->intf_ops = &mac8852b_pcie_ops;
|
pwr_info->intf_pwr_switch = pcie_pwr_switch;
|
break;
|
#endif
|
default:
|
return NULL;
|
}
|
|
return adapter;
|
}
|
#else
|
struct mac_ax_adapter *get_mac_8852b_adapter(enum mac_ax_intf intf,
|
u8 cv, void *drv_adapter,
|
struct mac_ax_pltfm_cb *pltfm_cb)
|
{
|
struct mac_ax_adapter *adapter = NULL;
|
struct mac_ax_hw_info *hw_info = NULL;
|
struct mac_ax_mac_pwr_info *pwr_info;
|
|
if (!pltfm_cb)
|
return NULL;
|
|
adapter = (struct mac_ax_adapter *)pltfm_cb->rtl_malloc(drv_adapter,
|
sizeof(struct mac_ax_adapter));
|
if (!adapter) {
|
pltfm_cb->msg_print(drv_adapter, _PHL_ERR_, "Malloc adapter fail\n");
|
return NULL;
|
}
|
|
pltfm_cb->rtl_memcpy(drv_adapter, adapter, &mac_8852b_adapter,
|
sizeof(struct mac_ax_adapter));
|
|
/*Alloc HW INFO */
|
hw_info = (struct mac_ax_hw_info *)pltfm_cb->rtl_malloc(drv_adapter,
|
sizeof(struct mac_ax_hw_info));
|
|
if (!hw_info) {
|
pltfm_cb->msg_print(drv_adapter, _PHL_ERR_, "Malloc hw info fail\n");
|
return NULL;
|
}
|
|
if ((intf == MAC_AX_INTF_USB || intf == MAC_AX_INTF_PCIE) &&
|
(cv == CAV || cv == CBV))
|
pltfm_cb->rtl_memcpy(drv_adapter, hw_info,
|
&mac8852b_hw_info_cabv,
|
sizeof(struct mac_ax_hw_info));
|
else
|
pltfm_cb->rtl_memcpy(drv_adapter, hw_info,
|
&mac8852b_hw_info,
|
sizeof(struct mac_ax_hw_info));
|
|
pwr_info = &adapter->mac_pwr_info;
|
|
adapter->drv_adapter = drv_adapter;
|
adapter->pltfm_cb = pltfm_cb;
|
adapter->hw_info = hw_info;
|
adapter->hw_info->cv = cv;
|
adapter->hw_info->intf = intf;
|
adapter->hw_info->done = 1;
|
|
switch (intf) {
|
#if MAC_AX_SDIO_SUPPORT
|
case MAC_AX_INTF_SDIO:
|
adapter->ops->intf_ops = &mac8852b_sdio_ops;
|
pwr_info->intf_pwr_switch = sdio_pwr_switch;
|
adapter->hw_info->pwr_on = mac_pwr_on_sdio_8852b;
|
adapter->hw_info->pwr_off = mac_pwr_off_sdio_8852b;
|
break;
|
#endif
|
#if MAC_AX_USB_SUPPORT
|
case MAC_AX_INTF_USB:
|
adapter->ops->intf_ops = &mac8852b_usb_ops;
|
pwr_info->intf_pwr_switch = usb_pwr_switch_8852b;
|
adapter->hw_info->pwr_on = mac_pwr_on_usb_8852b;
|
adapter->hw_info->pwr_off = mac_pwr_off_usb_8852b;
|
break;
|
#endif
|
#if MAC_AX_PCIE_SUPPORT
|
case MAC_AX_INTF_PCIE:
|
adapter->ops->intf_ops = &mac8852b_pcie_ops;
|
pwr_info->intf_pwr_switch = pcie_pwr_switch;
|
adapter->hw_info->pwr_on = mac_pwr_on_pcie_8852b;
|
adapter->hw_info->pwr_off = mac_pwr_off_pcie_8852b;
|
break;
|
#endif
|
default:
|
return NULL;
|
}
|
|
return adapter;
|
}
|
#endif
|