Merge ~vicamo/ubuntu/+source/rtl8821ce-dkms/+git/rtl8821ce-dkms:bug-1861669/new-upstream-release-5.5.2/focal into ~canonical-hwe-team/ubuntu/+source/rtl8821ce-dkms/+git/rtl8821ce-dkms:ubuntu/focal

Proposed by You-Sheng Yang
Status: Merged
Merged at revision: eec16b8cb1ec1f4a36c8df843824f1df1adea408
Proposed branch: ~vicamo/ubuntu/+source/rtl8821ce-dkms/+git/rtl8821ce-dkms:bug-1861669/new-upstream-release-5.5.2/focal
Merge into: ~canonical-hwe-team/ubuntu/+source/rtl8821ce-dkms/+git/rtl8821ce-dkms:ubuntu/focal
Diff against target: 691067 lines (+553381/-58416)
638 files modified
Kconfig (+4/-8)
Makefile (+2283/-78)
clean (+5/-0)
core/efuse/rtw_efuse.c (+2087/-208)
core/mesh/rtw_mesh.c (+4097/-0)
core/mesh/rtw_mesh.h (+534/-0)
core/mesh/rtw_mesh_hwmp.c (+1665/-0)
core/mesh/rtw_mesh_hwmp.h (+60/-0)
core/mesh/rtw_mesh_pathtbl.c (+1185/-0)
core/mesh/rtw_mesh_pathtbl.h (+206/-0)
core/rtw_ap.c (+2773/-590)
core/rtw_beamforming.c (+3155/-0)
core/rtw_br_ext.c (+314/-19)
core/rtw_bt_mp.c (+1575/-0)
core/rtw_btcoex.c (+1417/-10)
core/rtw_btcoex_wifionly.c (+12/-8)
core/rtw_chplan.c (+1184/-0)
core/rtw_chplan.h (+179/-0)
core/rtw_cmd.c (+2833/-479)
core/rtw_debug.c (+6497/-36)
core/rtw_eeprom.c (+369/-0)
core/rtw_ieee80211.c (+771/-129)
core/rtw_io.c (+771/-14)
core/rtw_ioctl_query.c (+150/-8)
core/rtw_ioctl_rtl.c (+901/-0)
core/rtw_ioctl_set.c (+355/-33)
core/rtw_iol.c (+394/-0)
core/rtw_mem.c (+128/-0)
core/rtw_mi.c (+843/-103)
core/rtw_mlme.c (+2163/-415)
core/rtw_mlme_ext.c (+9059/-4295)
core/rtw_mp.c (+2401/-106)
core/rtw_mp_ioctl.c (+2529/-0)
core/rtw_odm.c (+125/-81)
core/rtw_p2p.c (+1936/-115)
core/rtw_pwrctrl.c (+1893/-97)
core/rtw_recv.c (+2326/-491)
core/rtw_rf.c (+746/-299)
core/rtw_rm.c (+2470/-0)
core/rtw_rm_fsm.c (+998/-0)
core/rtw_rson.c (+595/-0)
core/rtw_sdio.c (+130/-0)
core/rtw_security.c (+1395/-25)
core/rtw_sreset.c (+173/-23)
core/rtw_sta_mgt.c (+544/-76)
core/rtw_tdls.c (+3505/-0)
core/rtw_vht.c (+539/-68)
core/rtw_wapi.c (+1312/-0)
core/rtw_wapi_sms4.c (+922/-0)
core/rtw_wlan_util.c (+2457/-437)
core/rtw_xmit.c (+2579/-248)
debian/changelog (+38/-0)
debian/control (+11/-4)
debian/patches/0001-make-support-build-from-multi-arched-debian-based-pl.patch (+67/-0)
debian/patches/0002-Fixes-for-Linux-5.3.patch (+330/-0)
debian/patches/0003-rtl8821ce-use-dma_addr_t.patch (+26/-0)
debian/patches/0004-rtl8821ce-guard-wireless_send_event-with-CONFIG_WIRE.patch (+176/-0)
debian/patches/series (+4/-0)
debian/rtl8821ce-dkms.dkms (+14/-0)
debian/rules (+5/-1)
dev/null (+0/-44)
hal/HalPwrSeqCmd.c (+185/-0)
hal/btc/halbtc8821c1ant.c (+3451/-3083)
hal/btc/halbtc8821c1ant.h (+359/-346)
hal/btc/halbtc8821c2ant.c (+3754/-3313)
hal/btc/halbtc8821c2ant.h (+377/-359)
hal/btc/halbtc8821cwifionly.c (+32/-1)
hal/btc/halbtc8821cwifionly.h (+22/-1)
hal/btc/halbtcoutsrc.h (+292/-3)
hal/btc/mp_precomp.h (+78/-11)
hal/efuse/efuse_mask.h (+154/-5)
hal/efuse/rtl8821c/HalEfuseMask8821C_PCIE.c (+15/-19)
hal/efuse/rtl8821c/HalEfuseMask8821C_PCIE.h (+16/-19)
hal/efuse/rtl8821c/HalEfuseMask8821C_SDIO.c (+95/-0)
hal/efuse/rtl8821c/HalEfuseMask8821C_SDIO.h (+34/-0)
hal/efuse/rtl8821c/HalEfuseMask8821C_USB.c (+95/-0)
hal/efuse/rtl8821c/HalEfuseMask8821C_USB.h (+34/-0)
hal/hal_btcoex.c (+3213/-245)
hal/hal_btcoex_wifionly.c (+160/-5)
hal/hal_com.c (+12406/-1442)
hal/hal_com_c2h.h (+22/-8)
hal/hal_com_phycfg.c (+2187/-992)
hal/hal_dm.c (+1190/-51)
hal/hal_dm.h (+81/-8)
hal/hal_dm_acs.c (+554/-0)
hal/hal_dm_acs.h (+167/-0)
hal/hal_halmac.c (+4464/-1041)
hal/hal_halmac.h (+162/-25)
hal/hal_hci/hal_pci.c (+18/-0)
hal/hal_intf.c (+785/-148)
hal/hal_mcc.c (+3488/-0)
hal/hal_mp.c (+1135/-135)
hal/hal_phy.c (+257/-0)
hal/halmac/halmac_2_platform.h (+22/-15)
hal/halmac/halmac_88xx/halmac_8821c/halmac_8821c_cfg.h (+50/-60)
hal/halmac/halmac_88xx/halmac_8821c/halmac_cfg_wmac_8821c.c (+145/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_cfg_wmac_8821c.h (+40/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_common_8821c.c (+182/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_common_8821c.h (+36/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_gpio_8821c.c (+846/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_gpio_8821c.h (+37/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_init_8821c.c (+890/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_init_8821c.h (+43/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_pcie_8821c.c (+356/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_pcie_8821c.h (+45/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_phy_8821c.c (+76/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_pwr_seq_8821c.c (+905/-0)
hal/halmac/halmac_88xx/halmac_8821c/halmac_pwr_seq_8821c.h (+37/-0)
hal/halmac/halmac_88xx/halmac_88xx_cfg.h (+31/-141)
hal/halmac/halmac_88xx/halmac_bb_rf_88xx.c (+395/-0)
hal/halmac/halmac_88xx/halmac_bb_rf_88xx.h (+57/-0)
hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.c (+1133/-0)
hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.h (+126/-0)
hal/halmac/halmac_88xx/halmac_common_88xx.c (+2895/-0)
hal/halmac/halmac_88xx/halmac_common_88xx.h (+155/-0)
hal/halmac/halmac_88xx/halmac_efuse_88xx.c (+1905/-0)
hal/halmac/halmac_88xx/halmac_efuse_88xx.h (+105/-0)
hal/halmac/halmac_88xx/halmac_flash_88xx.c (+316/-0)
hal/halmac/halmac_88xx/halmac_flash_88xx.h (+39/-0)
hal/halmac/halmac_88xx/halmac_fw_88xx.c (+1167/-0)
hal/halmac/halmac_88xx/halmac_fw_88xx.h (+61/-0)
hal/halmac/halmac_88xx/halmac_gpio_88xx.c (+421/-0)
hal/halmac/halmac_88xx/halmac_gpio_88xx.h (+59/-0)
hal/halmac/halmac_88xx/halmac_init_88xx.c (+992/-0)
hal/halmac/halmac_88xx/halmac_init_88xx.h (+68/-0)
hal/halmac/halmac_88xx/halmac_mimo_88xx.c (+876/-0)
hal/halmac/halmac_88xx/halmac_mimo_88xx.h (+83/-0)
hal/halmac/halmac_88xx/halmac_pcie_88xx.c (+537/-0)
hal/halmac/halmac_88xx/halmac_pcie_88xx.h (+102/-0)
hal/halmac/halmac_api.c (+476/-212)
hal/halmac/halmac_api.h (+79/-43)
hal/halmac/halmac_bit2.h (+72954/-157)
hal/halmac/halmac_bit_8197f.h (+17293/-0)
hal/halmac/halmac_bit_8814b.h (+26515/-0)
hal/halmac/halmac_bit_8821c.h (+12334/-2633)
hal/halmac/halmac_bit_8822b.h (+17870/-0)
hal/halmac/halmac_bit_8822c.h (+21838/-0)
hal/halmac/halmac_fw_info.h (+71/-50)
hal/halmac/halmac_fw_offload_c2h_ap.h (+505/-148)
hal/halmac/halmac_fw_offload_c2h_nic.h (+369/-114)
hal/halmac/halmac_fw_offload_h2c_ap.h (+986/-418)
hal/halmac/halmac_fw_offload_h2c_nic.h (+691/-297)
hal/halmac/halmac_gpio_cmd.h (+101/-0)
hal/halmac/halmac_h2c_extra_info_ap.h (+217/-67)
hal/halmac/halmac_h2c_extra_info_nic.h (+168/-45)
hal/halmac/halmac_hw_cfg.h (+200/-0)
hal/halmac/halmac_intf_phy_cmd.h (+23/-9)
hal/halmac/halmac_original_c2h_ap.h (+647/-334)
hal/halmac/halmac_original_c2h_nic.h (+431/-227)
hal/halmac/halmac_original_h2c_ap.h (+1624/-842)
hal/halmac/halmac_original_h2c_nic.h (+1106/-573)
hal/halmac/halmac_pcie_reg.h (+32/-1)
hal/halmac/halmac_pwr_seq_cmd.h (+65/-74)
hal/halmac/halmac_reg2.h (+8008/-940)
hal/halmac/halmac_reg_8197f.h (+700/-0)
hal/halmac/halmac_reg_8814b.h (+1058/-0)
hal/halmac/halmac_reg_8821c.h (+91/-25)
hal/halmac/halmac_reg_8822b.h (+733/-0)
hal/halmac/halmac_reg_8822c.h (+877/-0)
hal/halmac/halmac_rx_bd_nic.h (+28/-9)
hal/halmac/halmac_rx_desc_ap.h (+599/-58)
hal/halmac/halmac_rx_desc_chip.h (+675/-56)
hal/halmac/halmac_rx_desc_nic.h (+447/-58)
hal/halmac/halmac_sdio_reg.h (+55/-0)
hal/halmac/halmac_state_machine.h (+157/-0)
hal/halmac/halmac_tx_bd_nic.h (+71/-35)
hal/halmac/halmac_tx_desc_ap.h (+1908/-374)
hal/halmac/halmac_tx_desc_buffer_ap.h (+1078/-0)
hal/halmac/halmac_tx_desc_buffer_chip.h (+509/-0)
hal/halmac/halmac_tx_desc_buffer_nic.h (+491/-0)
hal/halmac/halmac_tx_desc_chip.h (+2749/-232)
hal/halmac/halmac_tx_desc_ie_ap.h (+1005/-0)
hal/halmac/halmac_tx_desc_ie_chip.h (+438/-0)
hal/halmac/halmac_tx_desc_ie_nic.h (+450/-0)
hal/halmac/halmac_tx_desc_nic.h (+980/-249)
hal/halmac/halmac_type.h (+1567/-1060)
hal/halmac/halmac_usb_reg.h (+4/-11)
hal/led/hal_led.c (+254/-0)
hal/led/hal_pci_led.c (+2169/-0)
hal/phydm/ap_makefile.mk (+174/-0)
hal/phydm/halhwimg.h (+137/-0)
hal/phydm/halrf/halphyrf_ap.c (+1340/-0)
hal/phydm/halrf/halphyrf_ap.h (+64/-22)
hal/phydm/halrf/halphyrf_ce.c (+918/-0)
hal/phydm/halrf/halphyrf_ce.h (+110/-0)
hal/phydm/halrf/halphyrf_iot.c (+478/-0)
hal/phydm/halrf/halphyrf_iot.h (+44/-21)
hal/phydm/halrf/halphyrf_win.c (+836/-0)
hal/phydm/halrf/halphyrf_win.h (+122/-0)
hal/phydm/halrf/halrf.c (+1806/-0)
hal/phydm/halrf/halrf.h (+471/-0)
hal/phydm/halrf/halrf_debug.c (+259/-0)
hal/phydm/halrf/halrf_debug.h (+123/-0)
hal/phydm/halrf/halrf_dpk.h (+74/-0)
hal/phydm/halrf/halrf_features.h (+43/-0)
hal/phydm/halrf/halrf_iqk.h (+92/-0)
hal/phydm/halrf/halrf_kfree.c (+1013/-0)
hal/phydm/halrf/halrf_kfree.h (+111/-0)
hal/phydm/halrf/halrf_powertracking.c (+152/-0)
hal/phydm/halrf/halrf_powertracking.h (+41/-0)
hal/phydm/halrf/halrf_powertracking_ap.c (+1219/-0)
hal/phydm/halrf/halrf_powertracking_ap.h (+132/-27)
hal/phydm/halrf/halrf_powertracking_ce.c (+840/-0)
hal/phydm/halrf/halrf_powertracking_ce.h (+325/-0)
hal/phydm/halrf/halrf_powertracking_iot.c (+164/-174)
hal/phydm/halrf/halrf_powertracking_iot.h (+85/-25)
hal/phydm/halrf/halrf_powertracking_win.c (+859/-0)
hal/phydm/halrf/halrf_powertracking_win.h (+302/-0)
hal/phydm/halrf/halrf_psd.c (+301/-0)
hal/phydm/halrf/halrf_psd.h (+52/-0)
hal/phydm/halrf/halrf_txgapcal.c (+298/-0)
hal/phydm/halrf/halrf_txgapcal.h (+31/-0)
hal/phydm/halrf/rtl8821c/halrf_8821c.c (+469/-0)
hal/phydm/halrf/rtl8821c/halrf_8821c.h (+60/-0)
hal/phydm/halrf/rtl8821c/halrf_iqk_8821c.c (+3777/-0)
hal/phydm/halrf/rtl8821c/halrf_iqk_8821c.h (+62/-0)
hal/phydm/mp_precomp.h (+11/-7)
hal/phydm/phydm.c (+2687/-1572)
hal/phydm/phydm.h (+946/-633)
hal/phydm/phydm.mk (+217/-0)
hal/phydm/phydm_adaptivity.c (+620/-679)
hal/phydm/phydm_adaptivity.h (+98/-151)
hal/phydm/phydm_adc_sampling.c (+900/-409)
hal/phydm/phydm_adc_sampling.h (+88/-72)
hal/phydm/phydm_antdect.c (+891/-0)
hal/phydm/phydm_antdect.h (+78/-0)
hal/phydm/phydm_antdiv.c (+5433/-0)
hal/phydm/phydm_antdiv.h (+544/-0)
hal/phydm/phydm_api.c (+2410/-0)
hal/phydm/phydm_api.h (+168/-0)
hal/phydm/phydm_auto_dbg.c (+671/-0)
hal/phydm/phydm_auto_dbg.h (+113/-0)
hal/phydm/phydm_beamforming.c (+2054/-0)
hal/phydm/phydm_beamforming.h (+362/-15)
hal/phydm/phydm_cck_pd.c (+1076/-0)
hal/phydm/phydm_cck_pd.h (+154/-0)
hal/phydm/phydm_ccx.c (+1751/-298)
hal/phydm/phydm_ccx.h (+250/-82)
hal/phydm/phydm_cfotracking.c (+405/-220)
hal/phydm/phydm_cfotracking.h (+42/-45)
hal/phydm/phydm_debug.c (+4449/-240)
hal/phydm/phydm_debug.h (+391/-260)
hal/phydm/phydm_dfs.c (+1677/-15)
hal/phydm/phydm_dfs.h (+143/-59)
hal/phydm/phydm_dig.c (+2460/-840)
hal/phydm/phydm_dig.h (+233/-229)
hal/phydm/phydm_dynamictxpower.c (+507/-0)
hal/phydm/phydm_dynamictxpower.h (+103/-0)
hal/phydm/phydm_features.h (+58/-0)
hal/phydm/phydm_features_ap.h (+196/-0)
hal/phydm/phydm_features_ce.h (+205/-0)
hal/phydm/phydm_features_ce2_kernel.h (+84/-0)
hal/phydm/phydm_features_iot.h (+174/-0)
hal/phydm/phydm_features_win.h (+185/-0)
hal/phydm/phydm_hwconfig.c (+1180/-1499)
hal/phydm/phydm_hwconfig.h (+46/-525)
hal/phydm/phydm_interface.c (+1202/-286)
hal/phydm/phydm_interface.h (+258/-294)
hal/phydm/phydm_lna_sat.c (+1354/-0)
hal/phydm/phydm_lna_sat.h (+173/-0)
hal/phydm/phydm_math_lib.c (+211/-0)
hal/phydm/phydm_math_lib.h (+114/-0)
hal/phydm/phydm_mp.c (+317/-0)
hal/phydm/phydm_mp.h (+94/-0)
hal/phydm/phydm_noisemonitor.c (+457/-0)
hal/phydm/phydm_noisemonitor.h (+25/-24)
hal/phydm/phydm_pathdiv.c (+601/-23)
hal/phydm/phydm_pathdiv.h (+104/-40)
hal/phydm/phydm_phystatus.c (+3089/-0)
hal/phydm/phydm_phystatus.h (+1137/-0)
hal/phydm/phydm_pmac_tx_setting.c (+522/-0)
hal/phydm/phydm_pmac_tx_setting.h (+149/-0)
hal/phydm/phydm_pow_train.c (+183/-0)
hal/phydm/phydm_pow_train.h (+84/-0)
hal/phydm/phydm_pre_define.h (+618/-388)
hal/phydm/phydm_precomp.h (+439/-38)
hal/phydm/phydm_primary_cca.c (+173/-0)
hal/phydm/phydm_primary_cca.h (+87/-0)
hal/phydm/phydm_psd.c (+265/-329)
hal/phydm/phydm_psd.h (+30/-62)
hal/phydm/phydm_rainfo.c (+1728/-1199)
hal/phydm/phydm_rainfo.h (+209/-319)
hal/phydm/phydm_reg.h (+166/-57)
hal/phydm/phydm_regdefine11ac.h (+56/-37)
hal/phydm/phydm_regdefine11n.h (+107/-97)
hal/phydm/phydm_regtable.h (+725/-0)
hal/phydm/phydm_rssi_monitor.c (+170/-0)
hal/phydm/phydm_rssi_monitor.h (+55/-0)
hal/phydm/phydm_smt_ant.c (+2253/-0)
hal/phydm/phydm_smt_ant.h (+210/-0)
hal/phydm/phydm_soml.c (+963/-0)
hal/phydm/phydm_soml.h (+210/-0)
hal/phydm/phydm_types.h (+213/-50)
hal/phydm/rtl8821c/halhwimg8821c_bb.c (+1833/-1105)
hal/phydm/rtl8821c/halhwimg8821c_bb.h (+53/-43)
hal/phydm/rtl8821c/halhwimg8821c_mac.c (+87/-89)
hal/phydm/rtl8821c/halhwimg8821c_mac.h (+30/-24)
hal/phydm/rtl8821c/halhwimg8821c_rf.c (+3849/-880)
hal/phydm/rtl8821c/halhwimg8821c_rf.h (+63/-30)
hal/phydm/rtl8821c/mp_precomp.h (+2/-21)
hal/phydm/rtl8821c/phydm_hal_api8821c.c (+894/-411)
hal/phydm/rtl8821c/phydm_hal_api8821c.h (+73/-161)
hal/phydm/rtl8821c/phydm_regconfig8821c.c (+190/-111)
hal/phydm/rtl8821c/phydm_regconfig8821c.h (+24/-75)
hal/phydm/rtl8821c/version_rtl8821c.h (+31/-8)
hal/phydm/sd4_phydm_2_kernel.mk (+188/-0)
hal/phydm/txbf/halcomtxbf.c (+514/-0)
hal/phydm/txbf/halcomtxbf.h (+183/-0)
hal/phydm/txbf/haltxbf8192e.c (+382/-0)
hal/phydm/txbf/haltxbf8192e.h (+71/-0)
hal/phydm/txbf/haltxbf8814a.c (+675/-0)
hal/phydm/txbf/haltxbf8814a.h (+77/-0)
hal/phydm/txbf/haltxbf8822b.c (+1087/-0)
hal/phydm/txbf/haltxbf8822b.h (+78/-0)
hal/phydm/txbf/haltxbfinterface.c (+1484/-0)
hal/phydm/txbf/haltxbfinterface.h (+167/-0)
hal/phydm/txbf/haltxbfjaguar.c (+508/-0)
hal/phydm/txbf/haltxbfjaguar.h (+74/-9)
hal/phydm/txbf/phydm_hal_txbf_api.c (+183/-0)
hal/phydm/txbf/phydm_hal_txbf_api.h (+63/-0)
hal/rtl8821c/hal8821c_fw.c (+48231/-9303)
hal/rtl8821c/hal8821c_fw.h (+20/-9)
hal/rtl8821c/pci/rtl8821ce.h (+28/-10)
hal/rtl8821c/pci/rtl8821ce_halinit.c (+80/-13)
hal/rtl8821c/pci/rtl8821ce_halmac.c (+99/-42)
hal/rtl8821c/pci/rtl8821ce_io.c (+236/-8)
hal/rtl8821c/pci/rtl8821ce_led.c (+161/-0)
hal/rtl8821c/pci/rtl8821ce_ops.c (+164/-16)
hal/rtl8821c/pci/rtl8821ce_recv.c (+54/-22)
hal/rtl8821c/pci/rtl8821ce_xmit.c (+771/-66)
hal/rtl8821c/rtl8821c.h (+43/-42)
hal/rtl8821c/rtl8821c_cmd.c (+206/-560)
hal/rtl8821c/rtl8821c_dm.c (+155/-58)
hal/rtl8821c/rtl8821c_halinit.c (+100/-33)
hal/rtl8821c/rtl8821c_mac.c (+79/-80)
hal/rtl8821c/rtl8821c_ops.c (+1555/-639)
hal/rtl8821c/rtl8821c_phy.c (+594/-97)
halmac.mk (+68/-0)
ifcfg-wlan0 (+4/-0)
include/Hal8188EPhyCfg.h (+260/-0)
include/Hal8188EPhyReg.h (+1100/-0)
include/Hal8188EPwrSeq.h (+170/-0)
include/Hal8188FPhyCfg.h (+134/-0)
include/Hal8188FPhyReg.h (+1165/-0)
include/Hal8188FPwrSeq.h (+212/-0)
include/Hal8192EPhyCfg.h (+148/-0)
include/Hal8192EPhyReg.h (+1146/-0)
include/Hal8192EPwrSeq.h (+169/-0)
include/Hal8192FPhyCfg.h (+131/-0)
include/Hal8192FPhyReg.h (+1134/-0)
include/Hal8192FPwrSeq.h (+221/-0)
include/Hal8703BPhyCfg.h (+132/-0)
include/Hal8703BPhyReg.h (+1133/-0)
include/Hal8703BPwrSeq.h (+198/-0)
include/Hal8710BPhyCfg.h (+127/-0)
include/Hal8710BPhyReg.h (+1134/-0)
include/Hal8710BPwrSeq.h (+167/-0)
include/Hal8723BPhyCfg.h (+132/-0)
include/Hal8723BPhyReg.h (+1131/-0)
include/Hal8723BPwrSeq.h (+246/-0)
include/Hal8723DPhyCfg.h (+131/-0)
include/Hal8723DPhyReg.h (+1134/-0)
include/Hal8723DPwrSeq.h (+206/-0)
include/Hal8723PwrSeq.h (+183/-0)
include/Hal8812PhyCfg.h (+143/-0)
include/Hal8812PhyReg.h (+735/-0)
include/Hal8812PwrSeq.h (+208/-0)
include/Hal8814PhyCfg.h (+264/-0)
include/Hal8814PhyReg.h (+863/-0)
include/Hal8814PwrSeq.h (+231/-0)
include/Hal8821APwrSeq.h (+200/-0)
include/HalPwrSeqCmd.h (+5/-8)
include/HalVerDef.h (+38/-11)
include/autoconf.h (+278/-11)
include/basic_types.h (+150/-29)
include/byteorder/big_endian.h (+2/-8)
include/byteorder/generic.h (+31/-8)
include/byteorder/little_endian.h (+84/-0)
include/byteorder/swab.h (+14/-8)
include/byteorder/swabb.h (+7/-8)
include/circ_buf.h (+3/-9)
include/cmd_osdep.h (+3/-8)
include/cmn_info/rtw_sta_info.h (+250/-0)
include/custom_gpio.h (+23/-1)
include/drv_conf.h (+329/-16)
include/drv_types.h (+880/-65)
include/drv_types_ce.h (+86/-0)
include/drv_types_gspi.h (+49/-0)
include/drv_types_linux.h (+3/-8)
include/drv_types_pci.h (+75/-8)
include/drv_types_sdio.h (+90/-0)
include/drv_types_xp.h (+88/-0)
include/ethernet.h (+3/-8)
include/gspi_hal.h (+30/-0)
include/gspi_ops.h (+180/-0)
include/gspi_ops_linux.h (+18/-0)
include/gspi_osintf.h (+25/-0)
include/h2clbk.h (+4/-8)
include/hal_btcoex.h (+11/-8)
include/hal_btcoex_wifionly.h (+35/-2)
include/hal_com.h (+237/-88)
include/hal_com_h2c.h (+324/-13)
include/hal_com_led.h (+209/-30)
include/hal_com_phycfg.h (+47/-72)
include/hal_com_reg.h (+788/-25)
include/hal_data.h (+327/-85)
include/hal_gspi.h (+26/-0)
include/hal_ic_cfg.h (+262/-9)
include/hal_intf.h (+240/-57)
include/hal_pg.h (+139/-35)
include/hal_phy.h (+30/-31)
include/hal_phy_reg.h (+2/-8)
include/hal_sdio.h (+56/-0)
include/ieee80211.h (+579/-28)
include/ieee80211_ext.h (+192/-10)
include/if_ether.h (+5/-8)
include/ip.h (+5/-8)
include/linux/wireless.h (+16/-8)
include/mlme_osdep.h (+2/-12)
include/mp_custom_oid.h (+6/-8)
include/nic_spec.h (+5/-8)
include/osdep_intf.h (+75/-9)
include/osdep_service.h (+260/-36)
include/osdep_service_bsd.h (+756/-0)
include/osdep_service_ce.h (+200/-0)
include/osdep_service_linux.h (+284/-23)
include/osdep_service_xp.h (+210/-0)
include/pci_hal.h (+34/-8)
include/pci_ops.h (+84/-8)
include/pci_osintf.h (+20/-8)
include/recv_osdep.h (+21/-10)
include/rtl8188e_cmd.h (+165/-0)
include/rtl8188e_dm.h (+27/-0)
include/rtl8188e_hal.h (+316/-0)
include/rtl8188e_led.h (+37/-0)
include/rtl8188e_recv.h (+161/-0)
include/rtl8188e_rf.h (+27/-0)
include/rtl8188e_spec.h (+159/-0)
include/rtl8188e_sreset.h (+24/-0)
include/rtl8188e_xmit.h (+295/-0)
include/rtl8188f_cmd.h (+206/-0)
include/rtl8188f_dm.h (+39/-0)
include/rtl8188f_hal.h (+260/-0)
include/rtl8188f_led.h (+45/-0)
include/rtl8188f_recv.h (+68/-0)
include/rtl8188f_rf.h (+25/-0)
include/rtl8188f_spec.h (+275/-0)
include/rtl8188f_sreset.h (+24/-0)
include/rtl8188f_xmit.h (+336/-0)
include/rtl8192e_cmd.h (+147/-0)
include/rtl8192e_dm.h (+28/-0)
include/rtl8192e_hal.h (+330/-0)
include/rtl8192e_led.h (+36/-0)
include/rtl8192e_recv.h (+179/-0)
include/rtl8192e_rf.h (+28/-0)
include/rtl8192e_spec.h (+313/-0)
include/rtl8192e_sreset.h (+24/-0)
include/rtl8192e_xmit.h (+450/-0)
include/rtl8192f_cmd.h (+194/-0)
include/rtl8192f_dm.h (+28/-0)
include/rtl8192f_hal.h (+315/-0)
include/rtl8192f_led.h (+42/-0)
include/rtl8192f_recv.h (+111/-0)
include/rtl8192f_rf.h (+22/-0)
include/rtl8192f_spec.h (+534/-0)
include/rtl8192f_sreset.h (+24/-0)
include/rtl8192f_xmit.h (+531/-0)
include/rtl8703b_cmd.h (+205/-0)
include/rtl8703b_dm.h (+39/-0)
include/rtl8703b_hal.h (+266/-0)
include/rtl8703b_led.h (+44/-0)
include/rtl8703b_recv.h (+86/-0)
include/rtl8703b_rf.h (+25/-0)
include/rtl8703b_spec.h (+464/-0)
include/rtl8703b_sreset.h (+24/-0)
include/rtl8703b_xmit.h (+335/-0)
include/rtl8710b_cmd.h (+175/-0)
include/rtl8710b_dm.h (+39/-0)
include/rtl8710b_hal.h (+277/-0)
include/rtl8710b_led.h (+44/-0)
include/rtl8710b_lps_poff.h (+56/-0)
include/rtl8710b_recv.h (+85/-0)
include/rtl8710b_rf.h (+20/-0)
include/rtl8710b_spec.h (+481/-0)
include/rtl8710b_sreset.h (+24/-0)
include/rtl8710b_xmit.h (+522/-0)
include/rtl8723b_cmd.h (+205/-0)
include/rtl8723b_dm.h (+38/-0)
include/rtl8723b_hal.h (+274/-0)
include/rtl8723b_led.h (+44/-0)
include/rtl8723b_recv.h (+86/-0)
include/rtl8723b_rf.h (+25/-0)
include/rtl8723b_spec.h (+280/-0)
include/rtl8723b_sreset.h (+24/-0)
include/rtl8723b_xmit.h (+335/-0)
include/rtl8723d_cmd.h (+189/-0)
include/rtl8723d_dm.h (+39/-0)
include/rtl8723d_hal.h (+303/-0)
include/rtl8723d_led.h (+44/-0)
include/rtl8723d_lps_poff.h (+56/-0)
include/rtl8723d_recv.h (+116/-0)
include/rtl8723d_rf.h (+21/-0)
include/rtl8723d_spec.h (+447/-0)
include/rtl8723d_sreset.h (+24/-0)
include/rtl8723d_xmit.h (+523/-0)
include/rtl8812a_cmd.h (+158/-0)
include/rtl8812a_dm.h (+27/-0)
include/rtl8812a_hal.h (+369/-0)
include/rtl8812a_led.h (+41/-0)
include/rtl8812a_recv.h (+153/-0)
include/rtl8812a_rf.h (+28/-0)
include/rtl8812a_spec.h (+263/-0)
include/rtl8812a_sreset.h (+24/-0)
include/rtl8812a_xmit.h (+367/-0)
include/rtl8814a_cmd.h (+162/-0)
include/rtl8814a_dm.h (+23/-0)
include/rtl8814a_hal.h (+330/-0)
include/rtl8814a_led.h (+36/-0)
include/rtl8814a_recv.h (+186/-0)
include/rtl8814a_rf.h (+28/-0)
include/rtl8814a_spec.h (+648/-0)
include/rtl8814a_sreset.h (+24/-0)
include/rtl8814a_xmit.h (+311/-0)
include/rtl8821a_spec.h (+90/-0)
include/rtl8821a_xmit.h (+173/-0)
include/rtl8821c_dm.h (+3/-11)
include/rtl8821c_hal.h (+52/-10)
include/rtl8821c_spec.h (+18/-13)
include/rtl8821ce_hal.h (+2/-8)
include/rtl8821cs_hal.h (+23/-0)
include/rtl8821cu_hal.h (+24/-0)
include/rtl8822b_hal.h (+230/-0)
include/rtl8822be_hal.h (+27/-0)
include/rtl8822bs_hal.h (+31/-0)
include/rtl8822bu_hal.h (+65/-0)
include/rtw_android.h (+43/-8)
include/rtw_ap.h (+52/-14)
include/rtw_beamforming.h (+384/-8)
include/rtw_br_ext.h (+9/-8)
include/rtw_bt_mp.h (+18/-8)
include/rtw_btcoex.h (+333/-8)
include/rtw_btcoex_wifionly.h (+4/-8)
include/rtw_byteorder.h (+7/-10)
include/rtw_cmd.h (+369/-34)
include/rtw_debug.h (+419/-128)
include/rtw_eeprom.h (+10/-8)
include/rtw_efuse.h (+26/-9)
include/rtw_event.h (+24/-8)
include/rtw_ht.h (+33/-34)
include/rtw_io.h (+179/-14)
include/rtw_ioctl.h (+152/-8)
include/rtw_ioctl_query.h (+9/-8)
include/rtw_ioctl_rtl.h (+6/-8)
include/rtw_ioctl_set.h (+27/-12)
include/rtw_iol.h (+16/-8)
include/rtw_mcc.h (+259/-7)
include/rtw_mem.h (+3/-8)
include/rtw_mi.h (+139/-32)
include/rtw_mlme.h (+597/-61)
include/rtw_mlme_ext.h (+436/-241)
include/rtw_mp.h (+153/-44)
include/rtw_mp_ioctl.h (+277/-8)
include/rtw_mp_phy_regdef.h (+31/-8)
include/rtw_odm.h (+62/-14)
include/rtw_p2p.h (+37/-11)
include/rtw_pwrctrl.h (+270/-20)
include/rtw_qos.h (+44/-9)
include/rtw_recv.h (+312/-68)
include/rtw_rf.h (+69/-68)
include/rtw_rm.h (+88/-0)
include/rtw_rm_fsm.h (+389/-0)
include/rtw_rson.h (+61/-0)
include/rtw_sdio.h (+26/-0)
include/rtw_security.h (+105/-24)
include/rtw_sreset.h (+17/-10)
include/rtw_tdls.h (+169/-8)
include/rtw_version.h (+2/-3)
include/rtw_vht.h (+53/-19)
include/rtw_wapi.h (+20/-2)
include/rtw_wifi_regd.h (+12/-4)
include/rtw_xmit.h (+522/-18)
include/sdio_hal.h (+57/-0)
include/sdio_ops.h (+224/-0)
include/sdio_ops_ce.h (+49/-0)
include/sdio_ops_linux.h (+58/-0)
include/sdio_ops_xp.h (+49/-0)
include/sdio_osintf.h (+25/-0)
include/sta_info.h (+296/-97)
include/usb_hal.h (+74/-0)
include/usb_ops.h (+153/-0)
include/usb_ops_linux.h (+98/-0)
include/usb_osintf.h (+26/-0)
include/usb_vendor_req.h (+56/-0)
include/wifi.h (+256/-36)
include/wlan_bssdef.h (+358/-13)
include/xmit_osdep.h (+39/-8)
os_dep/linux/custom_gpio_linux.c (+340/-0)
os_dep/linux/ioctl_cfg80211.c (+9985/-0)
os_dep/linux/ioctl_cfg80211.h (+409/-0)
os_dep/linux/ioctl_linux.c (+4668/-500)
os_dep/linux/ioctl_mp.c (+1057/-449)
os_dep/linux/mlme_linux.c (+244/-16)
os_dep/linux/os_intfs.c (+3158/-374)
os_dep/linux/pci_intf.c (+553/-36)
os_dep/linux/pci_ops_linux.c (+17/-0)
os_dep/linux/recv_linux.c (+297/-129)
os_dep/linux/rhashtable.c (+844/-0)
os_dep/linux/rhashtable.h (+827/-0)
os_dep/linux/rtw_android.c (+881/-34)
os_dep/linux/rtw_cfgvendor.c (+2056/-0)
os_dep/linux/rtw_cfgvendor.h (+633/-0)
os_dep/linux/rtw_proc.c (+4403/-0)
os_dep/linux/rtw_proc.h (+60/-0)
os_dep/linux/rtw_rhashtable.c (+74/-0)
os_dep/linux/rtw_rhashtable.h (+55/-0)
os_dep/linux/wifi_regd.c (+424/-0)
os_dep/linux/xmit_linux.c (+237/-14)
os_dep/osdep_service.c (+1874/-51)
platform/custom_country_chplan.h (+22/-0)
platform/platform_ARM_SUN50IW1P1_sdio.c (+86/-0)
platform/platform_ARM_SUNnI_sdio.c (+130/-0)
platform/platform_ARM_SUNxI_sdio.c (+90/-0)
platform/platform_ARM_SUNxI_usb.c (+136/-0)
platform/platform_ARM_WMT_sdio.c (+46/-0)
platform/platform_RTK_DMP_usb.c (+30/-0)
platform/platform_aml_s905_sdio.c (+54/-0)
platform/platform_aml_s905_sdio.h (+28/-0)
platform/platform_arm_act_sdio.c (+53/-0)
platform/platform_hisilicon_hi3798_sdio.c (+110/-0)
platform/platform_hisilicon_hi3798_sdio.h (+28/-0)
platform/platform_ops.c (+32/-0)
platform/platform_ops.h (+26/-0)
platform/platform_sprd_sdio.c (+84/-0)
platform/platform_zte_zx296716_sdio.c (+53/-0)
platform/platform_zte_zx296716_sdio.h (+25/-0)
rtl8821c.mk (+45/-0)
runwpa (+20/-0)
wlan0dhcp (+16/-0)
Reviewer Review Type Date Requested Status
You-Sheng Yang Approve
Review via email: mp+378529@code.launchpad.net

This proposal supersedes a proposal from 2020-02-03.

Description of the change

Resubmit to refs/heads/ubuntu/focal instead.

To post a comment you must log in.
Revision history for this message
You-Sheng Yang (vicamo) wrote : Posted in a previous version of this proposal

[Build status]

bionic$ dkms status
rtl8821ce, 5.5.2.1, 4.15.0-1067-oem, x86_64: installed
rtl8821ce, 5.5.2.1, 4.15.0-76-generic, x86_64: installed
rtl8821ce, 5.5.2.1, 4.18.0-25-generic, x86_64: installed
rtl8821ce, 5.5.2.1, 5.0.0-1037-oem-osp1, x86_64: installed
rtl8821ce, 5.5.2.1, 5.0.0-37-generic, x86_64: installed
rtl8821ce, 5.5.2.1, 5.3.0-28-generic, x86_64: installed

cosmic$ dkms status
rtl8821ce, 5.5.2.1, 4.15.0-1045-oem, x86_64: installed
rtl8821ce, 5.5.2.1, 4.18.0-25-generic, x86_64: installed
rtl8821ce, 5.5.2.1, 5.0.0-1010-oem-osp1, x86_64: installed

disco$ dkms status
rtl8821ce, 5.5.2.1, 4.15.0-1066-oem, x86_64: installed
rtl8821ce, 5.5.2.1, 5.0.0-1033-oem-osp1, x86_64: installed
rtl8821ce, 5.5.2.1, 5.0.0-38-generic, x86_64: installed

eoan$ dkms status
rtl8821ce, 5.5.2.1, 4.15.0-1066-oem, x86_64: installed
rtl8821ce, 5.5.2.1, 5.0.0-1034-oem-osp1, x86_64: installed
rtl8821ce, 5.5.2.1, 5.3.0-29-generic, x86_64: installed

focal$ dkms status
rtl8821ce, 5.5.2.1, 5.3.0-24-generic, x86_64: installed
rtl8821ce, 5.5.2.1, 5.4.0-9-generic, x86_64: installed

Revision history for this message
You-Sheng Yang (vicamo) : Posted in a previous version of this proposal
review: Needs Resubmitting
Revision history for this message
You-Sheng Yang (vicamo) wrote :

autopkgtest for arm/ppc/s390x failed: https://people.canonical.com/~ubuntu-archive/proposed-migration/eoan/update_excuses.html#rtl8821ce

Added a change to build on amd64 only.

Revision history for this message
You-Sheng Yang (vicamo) wrote :

A new update must build on all the previously enabled architectures, so here are commits to address this. Note this doesn't follow this driver would work on these foreign architectures, it just passes the build and makes the proposed migration checker happy.

Revision history for this message
You-Sheng Yang (vicamo) wrote :

5.5.2.1-0ubuntu3 now in Focal/universe.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/Kconfig b/Kconfig
2index f1581fc..a77ca31 100644
3--- a/Kconfig
4+++ b/Kconfig
5@@ -1,10 +1,6 @@
6-# SPDX-License-Identifier: GPL-2.0
7 config RTL8821CE
8- tristate "Realtek 8821CE PCIE Wireless LAN NIC driver"
9- depends on WLAN && CFG80211
10- depends on m
11- select WIRELESS_EXT
12- select WEXT_PRIV
13+ tristate "Realtek 8821C PCI WiFi"
14+ depends on PCI
15 ---help---
16- This option enables support for RTL8821CE PCI driver. It can be found
17- on many HP and Lenovo Laptops.
18+ Help message of RTL8821CE
19+
20diff --git a/Makefile b/Makefile
21old mode 100644
22new mode 100755
23index a53a29b..b844375
24--- a/Makefile
25+++ b/Makefile
26@@ -1,10 +1,2176 @@
27-# SPDX-License-Identifier: GPL-2.0
28-obj-m := rtl8821ce.o
29+EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
30+EXTRA_CFLAGS += -O1
31+#EXTRA_CFLAGS += -O3
32+#EXTRA_CFLAGS += -Wall
33+#EXTRA_CFLAGS += -Wextra
34+#EXTRA_CFLAGS += -Werror
35+#EXTRA_CFLAGS += -pedantic
36+#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
37
38-rtl8821ce-objs += core/rtw_cmd.o \
39+EXTRA_CFLAGS += -Wno-unused-variable
40+EXTRA_CFLAGS += -Wno-unused-value
41+EXTRA_CFLAGS += -Wno-unused-label
42+EXTRA_CFLAGS += -Wno-unused-parameter
43+EXTRA_CFLAGS += -Wno-unused-function
44+EXTRA_CFLAGS += -Wno-unused
45+#EXTRA_CFLAGS += -Wno-uninitialized
46+
47+GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
48+ifeq ($(GCC_VER_49),1)
49+EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
50+endif
51+
52+EXTRA_CFLAGS += -I$(src)/include
53+
54+EXTRA_LDFLAGS += --strip-debug
55+
56+CONFIG_AUTOCFG_CP = n
57+
58+########################## WIFI IC ############################
59+CONFIG_MULTIDRV = n
60+CONFIG_RTL8188E = n
61+CONFIG_RTL8812A = n
62+CONFIG_RTL8821A = n
63+CONFIG_RTL8192E = n
64+CONFIG_RTL8723B = n
65+CONFIG_RTL8814A = n
66+CONFIG_RTL8723C = n
67+CONFIG_RTL8188F = n
68+CONFIG_RTL8188GTV = n
69+CONFIG_RTL8822B = n
70+CONFIG_RTL8723D = n
71+CONFIG_RTL8821C = y
72+CONFIG_RTL8710B = n
73+CONFIG_RTL8192F = n
74+######################### Interface ###########################
75+CONFIG_USB_HCI = n
76+CONFIG_PCI_HCI = y
77+CONFIG_SDIO_HCI = n
78+CONFIG_GSPI_HCI = n
79+########################## Features ###########################
80+CONFIG_MP_INCLUDED = y
81+CONFIG_POWER_SAVING = y
82+CONFIG_USB_AUTOSUSPEND = n
83+CONFIG_HW_PWRP_DETECTION = n
84+CONFIG_WIFI_TEST = n
85+CONFIG_BT_COEXIST = y
86+CONFIG_INTEL_WIDI = n
87+CONFIG_WAPI_SUPPORT = n
88+CONFIG_EFUSE_CONFIG_FILE = y
89+CONFIG_EXT_CLK = n
90+CONFIG_TRAFFIC_PROTECT = n
91+CONFIG_LOAD_PHY_PARA_FROM_FILE = y
92+CONFIG_TXPWR_BY_RATE_EN = auto
93+CONFIG_TXPWR_LIMIT_EN = auto
94+CONFIG_RTW_CHPLAN = 0xFF
95+CONFIG_RTW_ADAPTIVITY_EN = disable
96+CONFIG_RTW_ADAPTIVITY_MODE = normal
97+CONFIG_SIGNAL_SCALE_MAPPING = n
98+CONFIG_80211W = n
99+CONFIG_REDUCE_TX_CPU_LOADING = n
100+CONFIG_BR_EXT = y
101+CONFIG_TDLS = n
102+CONFIG_WIFI_MONITOR = n
103+CONFIG_MCC_MODE = n
104+CONFIG_APPEND_VENDOR_IE_ENABLE = n
105+CONFIG_RTW_NAPI = y
106+CONFIG_RTW_GRO = y
107+CONFIG_RTW_NETIF_SG = y
108+CONFIG_TX_CSUM_OFFLOAD = n
109+CONFIG_RTW_IPCAM_APPLICATION = n
110+CONFIG_RTW_REPEATER_SON = n
111+CONFIG_RTW_WIFI_HAL = n
112+CONFIG_ICMP_VOQ = n
113+########################## Debug ###########################
114+CONFIG_RTW_DEBUG = y
115+# default log level is _DRV_INFO_ = 4,
116+# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
117+CONFIG_RTW_LOG_LEVEL = 4
118+######################## Wake On Lan ##########################
119+CONFIG_WOWLAN = n
120+#bit2: deauth, bit1: unicast, bit0: magic pkt.
121+CONFIG_WAKEUP_TYPE = 0x7
122+CONFIG_GPIO_WAKEUP = n
123+CONFIG_WAKEUP_GPIO_IDX = default
124+CONFIG_HIGH_ACTIVE_DEV2HST = n
125+######### only for USB #########
126+CONFIG_ONE_PIN_GPIO = n
127+CONFIG_HIGH_ACTIVE_HST2DEV = n
128+CONFIG_PNO_SUPPORT = n
129+CONFIG_PNO_SET_DEBUG = n
130+CONFIG_AP_WOWLAN = n
131+######### Notify SDIO Host Keep Power During Syspend ##########
132+CONFIG_RTW_SDIO_PM_KEEP_POWER = y
133+###################### MP HW TX MODE FOR VHT #######################
134+CONFIG_MP_VHT_HW_TX_MODE = n
135+###################### Platform Related #######################
136+CONFIG_PLATFORM_I386_PC = y
137+CONFIG_PLATFORM_ANDROID_X86 = n
138+CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
139+CONFIG_PLATFORM_JB_X86 = n
140+CONFIG_PLATFORM_ARM_S3C2K4 = n
141+CONFIG_PLATFORM_ARM_PXA2XX = n
142+CONFIG_PLATFORM_ARM_S3C6K4 = n
143+CONFIG_PLATFORM_MIPS_RMI = n
144+CONFIG_PLATFORM_RTD2880B = n
145+CONFIG_PLATFORM_MIPS_AR9132 = n
146+CONFIG_PLATFORM_RTK_DMP = n
147+CONFIG_PLATFORM_MIPS_PLM = n
148+CONFIG_PLATFORM_MSTAR389 = n
149+CONFIG_PLATFORM_MT53XX = n
150+CONFIG_PLATFORM_ARM_MX51_241H = n
151+CONFIG_PLATFORM_FS_MX61 = n
152+CONFIG_PLATFORM_ACTIONS_ATJ227X = n
153+CONFIG_PLATFORM_TEGRA3_CARDHU = n
154+CONFIG_PLATFORM_TEGRA4_DALMORE = n
155+CONFIG_PLATFORM_ARM_TCC8900 = n
156+CONFIG_PLATFORM_ARM_TCC8920 = n
157+CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
158+CONFIG_PLATFORM_ARM_TCC8930_JB42 = n
159+CONFIG_PLATFORM_ARM_RK2818 = n
160+CONFIG_PLATFORM_ARM_RK3066 = n
161+CONFIG_PLATFORM_ARM_RK3188 = n
162+CONFIG_PLATFORM_ARM_URBETTER = n
163+CONFIG_PLATFORM_ARM_TI_PANDA = n
164+CONFIG_PLATFORM_MIPS_JZ4760 = n
165+CONFIG_PLATFORM_DMP_PHILIPS = n
166+CONFIG_PLATFORM_MSTAR_TITANIA12 = n
167+CONFIG_PLATFORM_MSTAR = n
168+CONFIG_PLATFORM_SZEBOOK = n
169+CONFIG_PLATFORM_ARM_SUNxI = n
170+CONFIG_PLATFORM_ARM_SUN6I = n
171+CONFIG_PLATFORM_ARM_SUN7I = n
172+CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n
173+CONFIG_PLATFORM_ARM_SUN8I_W5P1 = n
174+CONFIG_PLATFORM_ACTIONS_ATM702X = n
175+CONFIG_PLATFORM_ACTIONS_ATV5201 = n
176+CONFIG_PLATFORM_ACTIONS_ATM705X = n
177+CONFIG_PLATFORM_ARM_SUN50IW1P1 = n
178+CONFIG_PLATFORM_ARM_RTD299X = n
179+CONFIG_PLATFORM_ARM_LGE = n
180+CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
181+CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
182+CONFIG_PLATFORM_ARM_WMT = n
183+CONFIG_PLATFORM_TI_DM365 = n
184+CONFIG_PLATFORM_MOZART = n
185+CONFIG_PLATFORM_RTK119X = n
186+CONFIG_PLATFORM_RTK119X_AM = n
187+CONFIG_PLATFORM_RTK129X = n
188+CONFIG_PLATFORM_RTK390X = n
189+CONFIG_PLATFORM_NOVATEK_NT72668 = n
190+CONFIG_PLATFORM_HISILICON = n
191+CONFIG_PLATFORM_HISILICON_HI3798 = n
192+CONFIG_PLATFORM_NV_TK1 = n
193+CONFIG_PLATFORM_NV_TK1_UBUNTU = n
194+CONFIG_PLATFORM_RTL8197D = n
195+CONFIG_PLATFORM_AML_S905 = n
196+CONFIG_PLATFORM_ZTE_ZX296716 = n
197+########### CUSTOMER ################################
198+CONFIG_CUSTOMER_HUAWEI_GENERAL = n
199+
200+CONFIG_DRVEXT_MODULE = n
201+
202+export TopDIR ?= $(shell pwd)
203+
204+########### COMMON #################################
205+ifeq ($(CONFIG_GSPI_HCI), y)
206+HCI_NAME = gspi
207+endif
208+
209+ifeq ($(CONFIG_SDIO_HCI), y)
210+HCI_NAME = sdio
211+endif
212+
213+ifeq ($(CONFIG_USB_HCI), y)
214+HCI_NAME = usb
215+endif
216+
217+ifeq ($(CONFIG_PCI_HCI), y)
218+HCI_NAME = pci
219+endif
220+
221+
222+_OS_INTFS_FILES := os_dep/osdep_service.o \
223+ os_dep/linux/os_intfs.o \
224+ os_dep/linux/$(HCI_NAME)_intf.o \
225+ os_dep/linux/$(HCI_NAME)_ops_linux.o \
226+ os_dep/linux/ioctl_linux.o \
227+ os_dep/linux/xmit_linux.o \
228+ os_dep/linux/mlme_linux.o \
229+ os_dep/linux/recv_linux.o \
230+ os_dep/linux/ioctl_cfg80211.o \
231+ os_dep/linux/rtw_cfgvendor.o \
232+ os_dep/linux/wifi_regd.o \
233+ os_dep/linux/rtw_android.o \
234+ os_dep/linux/rtw_proc.o \
235+ os_dep/linux/rtw_rhashtable.o
236+
237+ifeq ($(CONFIG_MP_INCLUDED), y)
238+_OS_INTFS_FILES += os_dep/linux/ioctl_mp.o
239+endif
240+
241+ifeq ($(CONFIG_SDIO_HCI), y)
242+_OS_INTFS_FILES += os_dep/linux/custom_gpio_linux.o
243+_OS_INTFS_FILES += os_dep/linux/$(HCI_NAME)_ops_linux.o
244+endif
245+
246+ifeq ($(CONFIG_GSPI_HCI), y)
247+_OS_INTFS_FILES += os_dep/linux/custom_gpio_linux.o
248+_OS_INTFS_FILES += os_dep/linux/$(HCI_NAME)_ops_linux.o
249+endif
250+
251+
252+_HAL_INTFS_FILES := hal/hal_intf.o \
253+ hal/hal_com.o \
254+ hal/hal_com_phycfg.o \
255+ hal/hal_phy.o \
256+ hal/hal_dm.o \
257+ hal/hal_dm_acs.o \
258+ hal/hal_btcoex_wifionly.o \
259+ hal/hal_btcoex.o \
260+ hal/hal_mp.o \
261+ hal/hal_mcc.o \
262+ hal/hal_hci/hal_$(HCI_NAME).o \
263+ hal/led/hal_led.o \
264+ hal/led/hal_$(HCI_NAME)_led.o
265+
266+
267+EXTRA_CFLAGS += -I$(src)/platform
268+_PLATFORM_FILES := platform/platform_ops.o
269+
270+EXTRA_CFLAGS += -I$(src)/hal/btc
271+
272+########### HAL_RTL8188E #################################
273+ifeq ($(CONFIG_RTL8188E), y)
274+
275+RTL871X = rtl8188e
276+ifeq ($(CONFIG_SDIO_HCI), y)
277+MODULE_NAME = 8189es
278+endif
279+
280+ifeq ($(CONFIG_GSPI_HCI), y)
281+MODULE_NAME = 8189es
282+endif
283+
284+ifeq ($(CONFIG_USB_HCI), y)
285+MODULE_NAME = 8188eu
286+endif
287+
288+ifeq ($(CONFIG_PCI_HCI), y)
289+MODULE_NAME = 8188ee
290+endif
291+EXTRA_CFLAGS += -DCONFIG_RTL8188E
292+
293+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
294+ hal/$(RTL871X)/Hal8188EPwrSeq.o\
295+ hal/$(RTL871X)/$(RTL871X)_xmit.o\
296+ hal/$(RTL871X)/$(RTL871X)_sreset.o
297+
298+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
299+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
300+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
301+ hal/$(RTL871X)/$(RTL871X)_dm.o \
302+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
303+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
304+ hal/$(RTL871X)/hal8188e_s_fw.o \
305+ hal/$(RTL871X)/hal8188e_t_fw.o \
306+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
307+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
308+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
309+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
310+
311+ifeq ($(CONFIG_SDIO_HCI), y)
312+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
313+else
314+ifeq ($(CONFIG_GSPI_HCI), y)
315+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
316+else
317+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
318+endif
319+endif
320+
321+ifeq ($(CONFIG_USB_HCI), y)
322+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_USB.o
323+endif
324+ifeq ($(CONFIG_PCI_HCI), y)
325+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_PCIE.o
326+endif
327+ifeq ($(CONFIG_SDIO_HCI), y)
328+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_SDIO.o
329+endif
330+
331+endif
332+
333+########### HAL_RTL8192E #################################
334+ifeq ($(CONFIG_RTL8192E), y)
335+
336+RTL871X = rtl8192e
337+ifeq ($(CONFIG_SDIO_HCI), y)
338+MODULE_NAME = 8192es
339+endif
340+
341+ifeq ($(CONFIG_USB_HCI), y)
342+MODULE_NAME = 8192eu
343+endif
344+
345+ifeq ($(CONFIG_PCI_HCI), y)
346+MODULE_NAME = 8192ee
347+endif
348+EXTRA_CFLAGS += -DCONFIG_RTL8192E
349+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
350+ hal/$(RTL871X)/Hal8192EPwrSeq.o\
351+ hal/$(RTL871X)/$(RTL871X)_xmit.o\
352+ hal/$(RTL871X)/$(RTL871X)_sreset.o
353+
354+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
355+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
356+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
357+ hal/$(RTL871X)/$(RTL871X)_dm.o \
358+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
359+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
360+ hal/$(RTL871X)/hal8192e_fw.o \
361+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
362+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
363+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
364+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
365+
366+ifeq ($(CONFIG_SDIO_HCI), y)
367+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
368+else
369+ifeq ($(CONFIG_GSPI_HCI), y)
370+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
371+else
372+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
373+endif
374+endif
375+
376+ifeq ($(CONFIG_USB_HCI), y)
377+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_USB.o
378+endif
379+ifeq ($(CONFIG_PCI_HCI), y)
380+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_PCIE.o
381+endif
382+ifeq ($(CONFIG_SDIO_HCI), y)
383+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_SDIO.o
384+endif
385+
386+ifeq ($(CONFIG_BT_COEXIST), y)
387+_BTC_FILES += hal/btc/halbtc8192e1ant.o \
388+ hal/btc/halbtc8192e2ant.o
389+endif
390+
391+endif
392+
393+########### HAL_RTL8812A_RTL8821A #################################
394+
395+ifneq ($(CONFIG_RTL8812A)_$(CONFIG_RTL8821A), n_n)
396+
397+RTL871X = rtl8812a
398+ifeq ($(CONFIG_USB_HCI), y)
399+MODULE_NAME = 8812au
400+endif
401+ifeq ($(CONFIG_PCI_HCI), y)
402+MODULE_NAME = 8812ae
403+endif
404+ifeq ($(CONFIG_SDIO_HCI), y)
405+MODULE_NAME = 8812as
406+endif
407+
408+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
409+ hal/$(RTL871X)/Hal8812PwrSeq.o \
410+ hal/$(RTL871X)/Hal8821APwrSeq.o\
411+ hal/$(RTL871X)/$(RTL871X)_xmit.o\
412+ hal/$(RTL871X)/$(RTL871X)_sreset.o
413+
414+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
415+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
416+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
417+ hal/$(RTL871X)/$(RTL871X)_dm.o \
418+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
419+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
420+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
421+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
422+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
423+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
424+
425+ifeq ($(CONFIG_SDIO_HCI), y)
426+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
427+else
428+ifeq ($(CONFIG_GSPI_HCI), y)
429+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
430+else
431+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
432+endif
433+endif
434+
435+ifeq ($(CONFIG_RTL8812A), y)
436+ifeq ($(CONFIG_USB_HCI), y)
437+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8812A_USB.o
438+endif
439+ifeq ($(CONFIG_PCI_HCI), y)
440+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8812A_PCIE.o
441+endif
442+endif
443+ifeq ($(CONFIG_RTL8821A), y)
444+ifeq ($(CONFIG_USB_HCI), y)
445+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_USB.o
446+endif
447+ifeq ($(CONFIG_PCI_HCI), y)
448+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_PCIE.o
449+endif
450+ifeq ($(CONFIG_SDIO_HCI), y)
451+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_SDIO.o
452+endif
453+endif
454+
455+ifeq ($(CONFIG_RTL8812A), y)
456+EXTRA_CFLAGS += -DCONFIG_RTL8812A
457+_HAL_INTFS_FILES += hal/rtl8812a/hal8812a_fw.o
458+endif
459+
460+ifeq ($(CONFIG_RTL8821A), y)
461+
462+ifeq ($(CONFIG_RTL8812A), n)
463+
464+RTL871X = rtl8821a
465+ifeq ($(CONFIG_USB_HCI), y)
466+ifeq ($(CONFIG_BT_COEXIST), y)
467+MODULE_NAME := 8821au
468+else
469+MODULE_NAME := 8811au
470+endif
471+endif
472+ifeq ($(CONFIG_PCI_HCI), y)
473+MODULE_NAME := 8821ae
474+endif
475+ifeq ($(CONFIG_SDIO_HCI), y)
476+MODULE_NAME := 8821as
477+endif
478+
479+endif
480+
481+EXTRA_CFLAGS += -DCONFIG_RTL8821A
482+
483+_HAL_INTFS_FILES += hal/rtl8812a/hal8821a_fw.o
484+
485+endif
486+
487+ifeq ($(CONFIG_BT_COEXIST), y)
488+ifeq ($(CONFIG_RTL8812A), y)
489+_BTC_FILES += hal/btc/halbtc8812a1ant.o \
490+ hal/btc/halbtc8812a2ant.o
491+endif
492+ifeq ($(CONFIG_RTL8821A), y)
493+_BTC_FILES += hal/btc/halbtc8821a1ant.o \
494+ hal/btc/halbtc8821a2ant.o
495+endif
496+endif
497+
498+endif
499+
500+########### HAL_RTL8723B #################################
501+ifeq ($(CONFIG_RTL8723B), y)
502+
503+RTL871X = rtl8723b
504+ifeq ($(CONFIG_USB_HCI), y)
505+MODULE_NAME = 8723bu
506+endif
507+ifeq ($(CONFIG_PCI_HCI), y)
508+MODULE_NAME = 8723be
509+endif
510+ifeq ($(CONFIG_SDIO_HCI), y)
511+MODULE_NAME = 8723bs
512+endif
513+
514+EXTRA_CFLAGS += -DCONFIG_RTL8723B
515+
516+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
517+ hal/$(RTL871X)/Hal8723BPwrSeq.o\
518+ hal/$(RTL871X)/$(RTL871X)_sreset.o
519+
520+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
521+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
522+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
523+ hal/$(RTL871X)/$(RTL871X)_dm.o \
524+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
525+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
526+ hal/$(RTL871X)/hal8723b_fw.o
527+
528+_HAL_INTFS_FILES += \
529+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
530+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
531+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
532+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
533+
534+ifeq ($(CONFIG_PCI_HCI), y)
535+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
536+else
537+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
538+endif
539+
540+ifeq ($(CONFIG_USB_HCI), y)
541+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_USB.o
542+endif
543+ifeq ($(CONFIG_PCI_HCI), y)
544+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_PCIE.o
545+endif
546+ifeq ($(CONFIG_SDIO_HCI), y)
547+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_SDIO.o
548+endif
549+
550+_BTC_FILES += hal/btc/halbtc8723bwifionly.o
551+ifeq ($(CONFIG_BT_COEXIST), y)
552+_BTC_FILES += hal/btc/halbtc8723b1ant.o \
553+ hal/btc/halbtc8723b2ant.o
554+endif
555+
556+endif
557+
558+########### HAL_RTL8814A #################################
559+ifeq ($(CONFIG_RTL8814A), y)
560+## ADD NEW VHT MP HW TX MODE ##
561+#EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
562+#CONFIG_MP_VHT_HW_TX_MODE = y
563+##########################################
564+RTL871X = rtl8814a
565+ifeq ($(CONFIG_USB_HCI), y)
566+MODULE_NAME = 8814au
567+endif
568+ifeq ($(CONFIG_PCI_HCI), y)
569+MODULE_NAME = 8814ae
570+endif
571+ifeq ($(CONFIG_SDIO_HCI), y)
572+MODULE_NAME = 8814as
573+endif
574+
575+EXTRA_CFLAGS += -DCONFIG_RTL8814A
576+
577+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
578+ hal/$(RTL871X)/Hal8814PwrSeq.o \
579+ hal/$(RTL871X)/$(RTL871X)_xmit.o\
580+ hal/$(RTL871X)/$(RTL871X)_sreset.o
581+
582+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
583+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
584+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
585+ hal/$(RTL871X)/$(RTL871X)_dm.o \
586+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
587+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
588+ hal/$(RTL871X)/hal8814a_fw.o
589+
590+
591+_HAL_INTFS_FILES += \
592+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
593+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
594+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
595+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
596+
597+ifeq ($(CONFIG_SDIO_HCI), y)
598+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
599+else
600+ifeq ($(CONFIG_GSPI_HCI), y)
601+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
602+else
603+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
604+endif
605+endif
606+
607+ifeq ($(CONFIG_USB_HCI), y)
608+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8814A_USB.o
609+endif
610+ifeq ($(CONFIG_PCI_HCI), y)
611+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8814A_PCIE.o
612+endif
613+
614+endif
615+
616+########### HAL_RTL8723C #################################
617+ifeq ($(CONFIG_RTL8723C), y)
618+
619+RTL871X = rtl8703b
620+ifeq ($(CONFIG_USB_HCI), y)
621+MODULE_NAME = 8723cu
622+MODULE_SUB_NAME = 8703bu
623+endif
624+ifeq ($(CONFIG_PCI_HCI), y)
625+MODULE_NAME = 8723ce
626+MODULE_SUB_NAME = 8703be
627+endif
628+ifeq ($(CONFIG_SDIO_HCI), y)
629+MODULE_NAME = 8723cs
630+MODULE_SUB_NAME = 8703bs
631+endif
632+
633+EXTRA_CFLAGS += -DCONFIG_RTL8703B
634+
635+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
636+ hal/$(RTL871X)/Hal8703BPwrSeq.o\
637+ hal/$(RTL871X)/$(RTL871X)_sreset.o
638+
639+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
640+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
641+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
642+ hal/$(RTL871X)/$(RTL871X)_dm.o \
643+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
644+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
645+ hal/$(RTL871X)/hal8703b_fw.o
646+
647+_HAL_INTFS_FILES += \
648+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
649+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
650+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
651+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
652+
653+ifeq ($(CONFIG_PCI_HCI), y)
654+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
655+else
656+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
657+endif
658+
659+ifeq ($(CONFIG_USB_HCI), y)
660+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8703B_USB.o
661+endif
662+ifeq ($(CONFIG_PCI_HCI), y)
663+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8703B_PCIE.o
664+endif
665+
666+ifeq ($(CONFIG_BT_COEXIST), y)
667+_BTC_FILES += hal/btc/halbtc8703b1ant.o
668+endif
669+
670+endif
671+
672+########### HAL_RTL8723D #################################
673+ifeq ($(CONFIG_RTL8723D), y)
674+
675+RTL871X = rtl8723d
676+ifeq ($(CONFIG_USB_HCI), y)
677+MODULE_NAME = 8723du
678+MODULE_SUB_NAME = 8723du
679+endif
680+ifeq ($(CONFIG_PCI_HCI), y)
681+MODULE_NAME = 8723de
682+MODULE_SUB_NAME = 8723de
683+endif
684+ifeq ($(CONFIG_SDIO_HCI), y)
685+MODULE_NAME = 8723ds
686+MODULE_SUB_NAME = 8723ds
687+endif
688+
689+EXTRA_CFLAGS += -DCONFIG_RTL8723D
690+
691+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
692+ hal/$(RTL871X)/Hal8723DPwrSeq.o\
693+ hal/$(RTL871X)/$(RTL871X)_sreset.o
694+
695+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
696+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
697+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
698+ hal/$(RTL871X)/$(RTL871X)_dm.o \
699+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
700+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
701+ hal/$(RTL871X)/hal8723d_fw.o \
702+ hal/$(RTL871X)/$(RTL871X)_lps_poff.o
703+
704+
705+_HAL_INTFS_FILES += \
706+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
707+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
708+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
709+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
710+
711+ifeq ($(CONFIG_PCI_HCI), y)
712+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
713+else
714+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
715+endif
716+
717+ifeq ($(CONFIG_USB_HCI), y)
718+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723D_USB.o
719+endif
720+ifeq ($(CONFIG_PCI_HCI), y)
721+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723D_PCIE.o
722+endif
723+
724+ifeq ($(CONFIG_BT_COEXIST), y)
725+_BTC_FILES += hal/btc/halbtc8723d1ant.o \
726+ hal/btc/halbtc8723d2ant.o
727+endif
728+
729+endif
730+
731+########### HAL_RTL8188F #################################
732+ifeq ($(CONFIG_RTL8188F), y)
733+
734+RTL871X = rtl8188f
735+ifeq ($(CONFIG_USB_HCI), y)
736+MODULE_NAME = 8188fu
737+endif
738+ifeq ($(CONFIG_PCI_HCI), y)
739+MODULE_NAME = 8188fe
740+endif
741+ifeq ($(CONFIG_SDIO_HCI), y)
742+MODULE_NAME = 8189fs
743+endif
744+
745+EXTRA_CFLAGS += -DCONFIG_RTL8188F
746+
747+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
748+ hal/$(RTL871X)/Hal8188FPwrSeq.o\
749+ hal/$(RTL871X)/$(RTL871X)_sreset.o
750+
751+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
752+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
753+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
754+ hal/$(RTL871X)/$(RTL871X)_dm.o \
755+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
756+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
757+ hal/$(RTL871X)/hal8188f_fw.o
758+
759+_HAL_INTFS_FILES += \
760+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
761+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
762+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
763+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
764+
765+ifeq ($(CONFIG_PCI_HCI), y)
766+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
767+else
768+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
769+endif
770+
771+ifeq ($(CONFIG_USB_HCI), y)
772+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188F_USB.o
773+endif
774+
775+ifeq ($(CONFIG_SDIO_HCI), y)
776+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188F_SDIO.o
777+endif
778+
779+endif
780+
781+########### HAL_RTL8188GTV #################################
782+ifeq ($(CONFIG_RTL8188GTV), y)
783+
784+RTL871X = rtl8188gtv
785+ifeq ($(CONFIG_USB_HCI), y)
786+MODULE_NAME = 8188gtvu
787+endif
788+ifeq ($(CONFIG_SDIO_HCI), y)
789+MODULE_NAME = 8189gtvs
790+endif
791+
792+EXTRA_CFLAGS += -DCONFIG_RTL8188GTV
793+
794+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
795+ hal/$(RTL871X)/Hal8188GTVPwrSeq.o\
796+ hal/$(RTL871X)/$(RTL871X)_sreset.o
797+
798+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
799+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
800+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
801+ hal/$(RTL871X)/$(RTL871X)_dm.o \
802+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
803+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
804+ hal/$(RTL871X)/hal8188gtv_fw.o
805+
806+_HAL_INTFS_FILES += \
807+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
808+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
809+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
810+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
811+
812+ifeq ($(CONFIG_PCI_HCI), y)
813+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
814+else
815+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
816+endif
817+
818+ifeq ($(CONFIG_USB_HCI), y)
819+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188GTV_USB.o
820+endif
821+
822+ifeq ($(CONFIG_SDIO_HCI), y)
823+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188GTV_SDIO.o
824+endif
825+
826+endif
827+
828+########### HAL_RTL8822B #################################
829+ifeq ($(CONFIG_RTL8822B), y)
830+RTL871X := rtl8822b
831+ifeq ($(CONFIG_USB_HCI), y)
832+ifeq ($(CONFIG_BT_COEXIST), n)
833+MODULE_NAME = 8812bu
834+else
835+MODULE_NAME = 88x2bu
836+endif
837+endif
838+ifeq ($(CONFIG_PCI_HCI), y)
839+MODULE_NAME = 88x2be
840+endif
841+ifeq ($(CONFIG_SDIO_HCI), y)
842+MODULE_NAME = 88x2bs
843+endif
844+
845+endif
846+########### HAL_RTL8821C #################################
847+ifeq ($(CONFIG_RTL8821C), y)
848+RTL871X := rtl8821c
849+ifeq ($(CONFIG_USB_HCI), y)
850+MODULE_NAME = 8821cu
851+endif
852+ifeq ($(CONFIG_PCI_HCI), y)
853+MODULE_NAME = 8821ce
854+endif
855+ifeq ($(CONFIG_SDIO_HCI), y)
856+MODULE_NAME = 8821cs
857+endif
858+
859+endif
860+
861+########### HAL_RTL8710B #################################
862+ifeq ($(CONFIG_RTL8710B), y)
863+
864+RTL871X = rtl8710b
865+ifeq ($(CONFIG_USB_HCI), y)
866+MODULE_NAME = 8710bu
867+MODULE_SUB_NAME = 8710bu
868+endif
869+
870+EXTRA_CFLAGS += -DCONFIG_RTL8710B
871+
872+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
873+ hal/$(RTL871X)/Hal8710BPwrSeq.o\
874+ hal/$(RTL871X)/$(RTL871X)_sreset.o
875+
876+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
877+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
878+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
879+ hal/$(RTL871X)/$(RTL871X)_dm.o \
880+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
881+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
882+ hal/$(RTL871X)/hal8710b_fw.o \
883+ hal/$(RTL871X)/$(RTL871X)_lps_poff.o
884+
885+
886+_HAL_INTFS_FILES += \
887+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
888+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
889+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
890+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
891+
892+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
893+
894+ifeq ($(CONFIG_USB_HCI), y)
895+_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8710B_USB.o
896+endif
897+
898+endif
899+
900+########### HAL_RTL8192F #################################
901+ifeq ($(CONFIG_RTL8192F), y)
902+
903+RTL871X = rtl8192f
904+ifeq ($(CONFIG_USB_HCI), y)
905+MODULE_NAME = 8192fu
906+MODULE_SUB_NAME = 8192fu
907+endif
908+ifeq ($(CONFIG_PCI_HCI), y)
909+MODULE_NAME = 8192fe
910+MODULE_SUB_NAME = 8192fe
911+endif
912+ifeq ($(CONFIG_SDIO_HCI), y)
913+MODULE_NAME = 8192fs
914+MODULE_SUB_NAME = 8192fs
915+endif
916+
917+EXTRA_CFLAGS += -DCONFIG_RTL8192F
918+
919+_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
920+ hal/$(RTL871X)/Hal8192FPwrSeq.o\
921+ hal/$(RTL871X)/$(RTL871X)_sreset.o
922+
923+_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
924+ hal/$(RTL871X)/$(RTL871X)_phycfg.o \
925+ hal/$(RTL871X)/$(RTL871X)_rf6052.o \
926+ hal/$(RTL871X)/$(RTL871X)_dm.o \
927+ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
928+ hal/$(RTL871X)/$(RTL871X)_cmd.o \
929+ hal/$(RTL871X)/hal8192f_fw.o \
930+ hal/$(RTL871X)/$(RTL871X)_lps_poff.o
931+
932+
933+_HAL_INTFS_FILES += \
934+ hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
935+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
936+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
937+ hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
938+
939+ifeq ($(CONFIG_PCI_HCI), y)
940+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
941+else
942+_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
943+endif
944+
945+ifeq ($(CONFIG_SDIO_HCI), y)
946+_HAL_INTFS_FILES += hal/efuse/$(RTL871X)/HalEfuseMask8192F_SDIO.o
947+endif
948+
949+ifeq ($(CONFIG_USB_HCI), y)
950+_HAL_INTFS_FILES += hal/efuse/$(RTL871X)/HalEfuseMask8192F_USB.o
951+endif
952+
953+ifeq ($(CONFIG_PCI_HCI), y)
954+_HAL_INTFS_FILES += hal/efuse/$(RTL871X)/HalEfuseMask8192F_PCIE.o
955+endif
956+
957+endif
958+########### AUTO_CFG #################################
959+
960+ifeq ($(CONFIG_AUTOCFG_CP), y)
961+
962+ifeq ($(CONFIG_MULTIDRV), y)
963+$(shell cp $(TopDIR)/autoconf_multidrv_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
964+else
965+ifeq ($(CONFIG_RTL8188E)$(CONFIG_SDIO_HCI),yy)
966+$(shell cp $(TopDIR)/autoconf_rtl8189e_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
967+else ifeq ($(CONFIG_RTL8188F)$(CONFIG_SDIO_HCI),yy)
968+$(shell cp $(TopDIR)/autoconf_rtl8189f_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
969+else ifeq ($(CONFIG_RTL8723C),y)
970+$(shell cp $(TopDIR)/autoconf_rtl8723c_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
971+else
972+$(shell cp $(TopDIR)/autoconf_$(RTL871X)_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
973+endif
974+endif
975+
976+endif
977+
978+########### END OF PATH #################################
979+
980+ifeq ($(CONFIG_USB_HCI), y)
981+ifeq ($(CONFIG_USB_AUTOSUSPEND), y)
982+EXTRA_CFLAGS += -DCONFIG_USB_AUTOSUSPEND
983+endif
984+endif
985+
986+ifeq ($(CONFIG_MP_INCLUDED), y)
987+#MODULE_NAME := $(MODULE_NAME)_mp
988+EXTRA_CFLAGS += -DCONFIG_MP_INCLUDED
989+endif
990+
991+ifeq ($(CONFIG_POWER_SAVING), y)
992+EXTRA_CFLAGS += -DCONFIG_POWER_SAVING
993+endif
994+
995+ifeq ($(CONFIG_HW_PWRP_DETECTION), y)
996+EXTRA_CFLAGS += -DCONFIG_HW_PWRP_DETECTION
997+endif
998+
999+ifeq ($(CONFIG_WIFI_TEST), y)
1000+EXTRA_CFLAGS += -DCONFIG_WIFI_TEST
1001+endif
1002+
1003+ifeq ($(CONFIG_BT_COEXIST), y)
1004+EXTRA_CFLAGS += -DCONFIG_BT_COEXIST
1005+endif
1006+
1007+ifeq ($(CONFIG_INTEL_WIDI), y)
1008+EXTRA_CFLAGS += -DCONFIG_INTEL_WIDI
1009+endif
1010+
1011+ifeq ($(CONFIG_WAPI_SUPPORT), y)
1012+EXTRA_CFLAGS += -DCONFIG_WAPI_SUPPORT
1013+endif
1014+
1015+
1016+ifeq ($(CONFIG_EFUSE_CONFIG_FILE), y)
1017+EXTRA_CFLAGS += -DCONFIG_EFUSE_CONFIG_FILE
1018+
1019+#EFUSE_MAP_PATH
1020+USER_EFUSE_MAP_PATH ?=
1021+ifneq ($(USER_EFUSE_MAP_PATH),)
1022+EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"$(USER_EFUSE_MAP_PATH)\"
1023+else ifeq ($(MODULE_NAME), 8189es)
1024+EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_8189e.map\"
1025+else ifeq ($(MODULE_NAME), 8723bs)
1026+EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_8723bs.map\"
1027+else
1028+EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_$(MODULE_NAME).map\"
1029+endif
1030+
1031+#WIFIMAC_PATH
1032+USER_WIFIMAC_PATH ?=
1033+ifneq ($(USER_WIFIMAC_PATH),)
1034+EXTRA_CFLAGS += -DWIFIMAC_PATH=\"$(USER_WIFIMAC_PATH)\"
1035+else
1036+EXTRA_CFLAGS += -DWIFIMAC_PATH=\"/data/wifimac.txt\"
1037+endif
1038+
1039+endif
1040+
1041+ifeq ($(CONFIG_EXT_CLK), y)
1042+EXTRA_CFLAGS += -DCONFIG_EXT_CLK
1043+endif
1044+
1045+ifeq ($(CONFIG_TRAFFIC_PROTECT), y)
1046+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1047+endif
1048+
1049+ifeq ($(CONFIG_LOAD_PHY_PARA_FROM_FILE), y)
1050+EXTRA_CFLAGS += -DCONFIG_LOAD_PHY_PARA_FROM_FILE
1051+#EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH_WITH_IC_NAME_FOLDER
1052+EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH=\"/lib/firmware/\"
1053+endif
1054+
1055+ifeq ($(CONFIG_TXPWR_BY_RATE_EN), n)
1056+EXTRA_CFLAGS += -DCONFIG_TXPWR_BY_RATE_EN=0
1057+else ifeq ($(CONFIG_TXPWR_BY_RATE_EN), y)
1058+EXTRA_CFLAGS += -DCONFIG_TXPWR_BY_RATE_EN=1
1059+else ifeq ($(CONFIG_TXPWR_BY_RATE_EN), auto)
1060+EXTRA_CFLAGS += -DCONFIG_TXPWR_BY_RATE_EN=2
1061+endif
1062+
1063+ifeq ($(CONFIG_TXPWR_LIMIT_EN), n)
1064+EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=0
1065+else ifeq ($(CONFIG_TXPWR_LIMIT_EN), y)
1066+EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=1
1067+else ifeq ($(CONFIG_TXPWR_LIMIT_EN), auto)
1068+EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=2
1069+endif
1070+
1071+ifneq ($(CONFIG_RTW_CHPLAN), 0xFF)
1072+EXTRA_CFLAGS += -DCONFIG_RTW_CHPLAN=$(CONFIG_RTW_CHPLAN)
1073+endif
1074+
1075+ifeq ($(CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY), y)
1076+EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_BY_REGULATORY
1077+endif
1078+
1079+ifeq ($(CONFIG_CALIBRATE_TX_POWER_TO_MAX), y)
1080+EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_TO_MAX
1081+endif
1082+
1083+ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), disable)
1084+EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=0
1085+else ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), enable)
1086+EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=1
1087+endif
1088+
1089+ifeq ($(CONFIG_RTW_ADAPTIVITY_MODE), normal)
1090+EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_MODE=0
1091+else ifeq ($(CONFIG_RTW_ADAPTIVITY_MODE), carrier_sense)
1092+EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_MODE=1
1093+endif
1094+
1095+ifeq ($(CONFIG_SIGNAL_SCALE_MAPPING), y)
1096+EXTRA_CFLAGS += -DCONFIG_SIGNAL_SCALE_MAPPING
1097+endif
1098+
1099+ifeq ($(CONFIG_80211W), y)
1100+EXTRA_CFLAGS += -DCONFIG_IEEE80211W
1101+endif
1102+
1103+ifeq ($(CONFIG_WOWLAN), y)
1104+EXTRA_CFLAGS += -DCONFIG_WOWLAN -DRTW_WAKEUP_EVENT=$(CONFIG_WAKEUP_TYPE)
1105+ifeq ($(CONFIG_SDIO_HCI), y)
1106+EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
1107+endif
1108+endif
1109+
1110+ifeq ($(CONFIG_AP_WOWLAN), y)
1111+EXTRA_CFLAGS += -DCONFIG_AP_WOWLAN
1112+ifeq ($(CONFIG_SDIO_HCI), y)
1113+EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
1114+endif
1115+endif
1116+
1117+ifeq ($(CONFIG_PNO_SUPPORT), y)
1118+EXTRA_CFLAGS += -DCONFIG_PNO_SUPPORT
1119+ifeq ($(CONFIG_PNO_SET_DEBUG), y)
1120+EXTRA_CFLAGS += -DCONFIG_PNO_SET_DEBUG
1121+endif
1122+endif
1123+
1124+ifeq ($(CONFIG_GPIO_WAKEUP), y)
1125+EXTRA_CFLAGS += -DCONFIG_GPIO_WAKEUP
1126+ifeq ($(CONFIG_ONE_PIN_GPIO), y)
1127+EXTRA_CFLAGS += -DCONFIG_RTW_ONE_PIN_GPIO
1128+endif
1129+ifeq ($(CONFIG_HIGH_ACTIVE_DEV2HST), y)
1130+EXTRA_CFLAGS += -DHIGH_ACTIVE_DEV2HST=1
1131+else
1132+EXTRA_CFLAGS += -DHIGH_ACTIVE_DEV2HST=0
1133+endif
1134+endif
1135+
1136+ifeq ($(CONFIG_HIGH_ACTIVE_HST2DEV), y)
1137+EXTRA_CFLAGS += -DHIGH_ACTIVE_HST2DEV=1
1138+else
1139+EXTRA_CFLAGS += -DHIGH_ACTIVE_HST2DEV=0
1140+endif
1141+
1142+ifneq ($(CONFIG_WAKEUP_GPIO_IDX), default)
1143+EXTRA_CFLAGS += -DWAKEUP_GPIO_IDX=$(CONFIG_WAKEUP_GPIO_IDX)
1144+endif
1145+
1146+ifeq ($(CONFIG_RTW_SDIO_PM_KEEP_POWER), y)
1147+ifeq ($(CONFIG_SDIO_HCI), y)
1148+EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
1149+endif
1150+endif
1151+
1152+ifeq ($(CONFIG_REDUCE_TX_CPU_LOADING), y)
1153+EXTRA_CFLAGS += -DCONFIG_REDUCE_TX_CPU_LOADING
1154+endif
1155+
1156+ifeq ($(CONFIG_BR_EXT), y)
1157+BR_NAME = br0
1158+EXTRA_CFLAGS += -DCONFIG_BR_EXT
1159+EXTRA_CFLAGS += '-DCONFIG_BR_EXT_BRNAME="'$(BR_NAME)'"'
1160+endif
1161+
1162+
1163+ifeq ($(CONFIG_TDLS), y)
1164+EXTRA_CFLAGS += -DCONFIG_TDLS
1165+endif
1166+
1167+ifeq ($(CONFIG_WIFI_MONITOR), y)
1168+EXTRA_CFLAGS += -DCONFIG_WIFI_MONITOR
1169+endif
1170+
1171+ifeq ($(CONFIG_MCC_MODE), y)
1172+EXTRA_CFLAGS += -DCONFIG_MCC_MODE
1173+endif
1174+
1175+ifeq ($(CONFIG_RTW_NAPI), y)
1176+EXTRA_CFLAGS += -DCONFIG_RTW_NAPI
1177+endif
1178+
1179+ifeq ($(CONFIG_RTW_GRO), y)
1180+EXTRA_CFLAGS += -DCONFIG_RTW_GRO
1181+endif
1182+
1183+ifeq ($(CONFIG_RTW_REPEATER_SON), y)
1184+EXTRA_CFLAGS += -DCONFIG_RTW_REPEATER_SON
1185+endif
1186+
1187+ifeq ($(CONFIG_RTW_IPCAM_APPLICATION), y)
1188+EXTRA_CFLAGS += -DCONFIG_RTW_IPCAM_APPLICATION
1189+ifeq ($(CONFIG_WIFI_MONITOR), n)
1190+EXTRA_CFLAGS += -DCONFIG_WIFI_MONITOR
1191+endif
1192+endif
1193+
1194+ifeq ($(CONFIG_RTW_NETIF_SG), y)
1195+EXTRA_CFLAGS += -DCONFIG_RTW_NETIF_SG
1196+endif
1197+
1198+ifeq ($(CONFIG_TX_CSUM_OFFLOAD), y)
1199+EXTRA_CFLAGS += -DCONFIG_TX_CSUM_OFFLOAD
1200+endif
1201+
1202+ifeq ($(CONFIG_ICMP_VOQ), y)
1203+EXTRA_CFLAGS += -DCONFIG_ICMP_VOQ
1204+endif
1205+
1206+ifeq ($(CONFIG_RTW_WIFI_HAL), y)
1207+#EXTRA_CFLAGS += -DCONFIG_RTW_WIFI_HAL_DEBUG
1208+EXTRA_CFLAGS += -DCONFIG_RTW_WIFI_HAL
1209+EXTRA_CFLAGS += -DCONFIG_RTW_CFGVEDNOR_LLSTATS
1210+EXTRA_CFLAGS += -DCONFIG_RTW_CFGVENDOR_RANDOM_MAC_OUI
1211+EXTRA_CFLAGS += -DCONFIG_RTW_CFGVEDNOR_RSSIMONITOR
1212+EXTRA_CFLAGS += -DCONFIG_RTW_CFGVENDOR_WIFI_LOGGER
1213+endif
1214+
1215+ifeq ($(CONFIG_MP_VHT_HW_TX_MODE), y)
1216+EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
1217+ifeq ($(CONFIG_PLATFORM_I386_PC), y)
1218+## For I386 X86 ToolChain use Hardware FLOATING
1219+EXTRA_CFLAGS += -mhard-float
1220+else
1221+## For ARM ToolChain use Hardware FLOATING
1222+EXTRA_CFLAGS += -mfloat-abi=hard
1223+endif
1224+endif
1225+
1226+ifeq ($(CONFIG_APPEND_VENDOR_IE_ENABLE), y)
1227+EXTRA_CFLAGS += -DCONFIG_APPEND_VENDOR_IE_ENABLE
1228+endif
1229+
1230+ifeq ($(CONFIG_RTW_DEBUG), y)
1231+EXTRA_CFLAGS += -DCONFIG_RTW_DEBUG
1232+EXTRA_CFLAGS += -DRTW_LOG_LEVEL=$(CONFIG_RTW_LOG_LEVEL)
1233+endif
1234+
1235+EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04
1236+
1237+ifeq ($(CONFIG_PLATFORM_I386_PC), y)
1238+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1239+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1240+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
1241+ARCH ?= $(SUBARCH)
1242+CROSS_COMPILE ?=
1243+KVER := $(shell uname -r)
1244+KSRC := /lib/modules/$(KVER)/build
1245+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
1246+INSTALL_PREFIX :=
1247+STAGINGMODDIR := /lib/modules/$(KVER)/kernel/drivers/staging
1248+endif
1249+
1250+ifeq ($(CONFIG_PLATFORM_NV_TK1), y)
1251+EXTRA_CFLAGS += -DCONFIG_PLATFORM_NV_TK1
1252+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1253+# default setting for Android 4.1, 4.2
1254+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1255+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1256+EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_PLATFORM_ANDROID
1257+# Enable this for Android 5.0
1258+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1259+EXTRA_CFLAGS += -DRTW_VENDOR_EXT_SUPPORT
1260+EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1261+ARCH ?= arm
1262+
1263+CROSS_COMPILE := /mnt/newdisk/android_sdk/nvidia_tk1/android_L/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
1264+KSRC :=/mnt/newdisk/android_sdk/nvidia_tk1/android_L/out/target/product/shieldtablet/obj/KERNEL/
1265+MODULE_NAME = wlan
1266+endif
1267+
1268+ifeq ($(CONFIG_PLATFORM_NV_TK1_UBUNTU), y)
1269+EXTRA_CFLAGS += -DCONFIG_PLATFORM_NV_TK1
1270+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1271+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1272+
1273+ARCH ?= arm
1274+
1275+CROSS_COMPILE ?=
1276+KVER := $(shell uname -r)
1277+KSRC := /lib/modules/$(KVER)/build
1278+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
1279+INSTALL_PREFIX :=
1280+endif
1281+
1282+ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM702X), y)
1283+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ACTIONS_ATM702X
1284+#ARCH := arm
1285+ARCH := $(R_ARCH)
1286+#CROSS_COMPILE := arm-none-linux-gnueabi-
1287+CROSS_COMPILE := $(R_CROSS_COMPILE)
1288+KVER:= 3.4.0
1289+#KSRC := ../../../../build/out/kernel
1290+KSRC := $(KERNEL_BUILD_PATH)
1291+MODULE_NAME :=wlan
1292+endif
1293+
1294+
1295+ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM705X), y)
1296+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1297+#EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1298+# default setting for Android 4.1, 4.2, 4.3, 4.4
1299+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ACTIONS_ATM705X
1300+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1301+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1302+
1303+# Enable this for Android 5.0
1304+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1305+
1306+ifeq ($(CONFIG_SDIO_HCI), y)
1307+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1308+_PLATFORM_FILES += platform/platform_arm_act_sdio.o
1309+endif
1310+
1311+ARCH := arm
1312+CROSS_COMPILE := /opt/arm-2011.09/bin/arm-none-linux-gnueabi-
1313+KSRC := /home/android_sdk/Action-semi/705a_android_L/android/kernel
1314+endif
1315+
1316+ifeq ($(CONFIG_PLATFORM_ARM_SUN50IW1P1), y)
1317+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1318+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN50IW1P1
1319+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1320+# default setting for Android 4.1, 4.2
1321+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1322+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1323+EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
1324+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1325+
1326+# Enable this for Android 5.0
1327+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1328+
1329+ifeq ($(CONFIG_USB_HCI), y)
1330+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1331+_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1332+endif
1333+ifeq ($(CONFIG_SDIO_HCI), y)
1334+_PLATFORM_FILES += platform/platform_ARM_SUN50IW1P1_sdio.o
1335+endif
1336+
1337+ARCH := arm64
1338+# ===Cross compile setting for Android 5.1(64) SDK ===
1339+CROSS_COMPILE := /home/android_sdk/Allwinner/a64/android-51/lichee/out/sun50iw1p1/android/common/buildroot/external-toolchain/bin/aarch64-linux-gnu-
1340+KSRC :=/home/android_sdk/Allwinner/a64/android-51/lichee/linux-3.10/
1341+endif
1342+
1343+ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
1344+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
1345+CROSS_COMPILE := arm-eabi-
1346+KSRC := $(shell pwd)/../../../Android/kernel
1347+ARCH := arm
1348+endif
1349+
1350+ifeq ($(CONFIG_PLATFORM_MSTAR_TITANIA12), y)
1351+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_TITANIA12
1352+ARCH:=mips
1353+CROSS_COMPILE:= /usr/src/Mstar_kernel/mips-4.3/bin/mips-linux-gnu-
1354+KVER:= 2.6.28.9
1355+KSRC:= /usr/src/Mstar_kernel/2.6.28.9/
1356+endif
1357+
1358+ifeq ($(CONFIG_PLATFORM_MSTAR), y)
1359+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1360+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1361+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1362+EXTRA_CFLAGS += -DCONFIG_PLATFORM_MSTAR
1363+EXTRA_CFLAGS += -DCONFIG_PLATFORM_MSTAR_HIGH
1364+ifeq ($(CONFIG_USB_HCI), y)
1365+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX -DCONFIG_FIX_NR_BULKIN_BUFFER
1366+endif
1367+ARCH:=arm
1368+CROSS_COMPILE:= /usr/src/bin/arm-none-linux-gnueabi-
1369+KVER:= 3.1.10
1370+KSRC:= /usr/src/Mstar_kernel/3.1.10/
1371+endif
1372+
1373+ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y)
1374+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1375+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
1376+ARCH := $(SUBARCH)
1377+CROSS_COMPILE := /media/DATA-2/android-x86/ics-x86_20120130/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-
1378+KSRC := /media/DATA-2/android-x86/ics-x86_20120130/out/target/product/generic_x86/obj/kernel
1379+MODULE_NAME :=wlan
1380+endif
1381+
1382+ifeq ($(CONFIG_PLATFORM_ANDROID_INTEL_X86), y)
1383+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ANDROID_INTEL_X86
1384+EXTRA_CFLAGS += -DCONFIG_PLATFORM_INTEL_BYT
1385+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID
1386+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1387+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1388+EXTRA_CFLAGS += -DCONFIG_SKIP_SIGNAL_SCALE_MAPPING
1389+ifeq ($(CONFIG_SDIO_HCI), y)
1390+EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
1391+endif
1392+endif
1393+
1394+ifeq ($(CONFIG_PLATFORM_JB_X86), y)
1395+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1396+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1397+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1398+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
1399+ARCH := $(SUBARCH)
1400+CROSS_COMPILE := /home/android_sdk/android-x86_JB/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.7/bin/i686-linux-android-
1401+KSRC := /home/android_sdk/android-x86_JB/out/target/product/x86/obj/kernel/
1402+MODULE_NAME :=wlan
1403+endif
1404+
1405+ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y)
1406+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1407+ARCH := arm
1408+CROSS_COMPILE := arm-none-linux-gnueabi-
1409+KVER := 2.6.34.1
1410+KSRC ?= /usr/src/linux-2.6.34.1
1411+endif
1412+
1413+ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)
1414+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1415+ARCH := arm
1416+CROSS_COMPILE := arm-linux-
1417+KVER := 2.6.24.7_$(ARCH)
1418+KSRC := /usr/src/kernels/linux-$(KVER)
1419+endif
1420+
1421+ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y)
1422+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1423+ARCH := arm
1424+CROSS_COMPILE := arm-none-linux-gnueabi-
1425+KVER := 2.6.34.1
1426+KSRC ?= /usr/src/linux-2.6.34.1
1427+endif
1428+
1429+ifeq ($(CONFIG_PLATFORM_RTD2880B), y)
1430+EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B
1431+ARCH:=
1432+CROSS_COMPILE:=
1433+KVER:=
1434+KSRC:=
1435+endif
1436+
1437+ifeq ($(CONFIG_PLATFORM_MIPS_RMI), y)
1438+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1439+ARCH:=mips
1440+CROSS_COMPILE:=mipsisa32r2-uclibc-
1441+KVER:=
1442+KSRC:= /root/work/kernel_realtek
1443+endif
1444+
1445+ifeq ($(CONFIG_PLATFORM_MIPS_PLM), y)
1446+EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
1447+ARCH:=mips
1448+CROSS_COMPILE:=mipsisa32r2-uclibc-
1449+KVER:=
1450+KSRC:= /root/work/kernel_realtek
1451+endif
1452+
1453+ifeq ($(CONFIG_PLATFORM_MSTAR389), y)
1454+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR389
1455+ARCH:=mips
1456+CROSS_COMPILE:= mips-linux-gnu-
1457+KVER:= 2.6.28.10
1458+KSRC:= /home/mstar/mstar_linux/2.6.28.9/
1459+endif
1460+
1461+ifeq ($(CONFIG_PLATFORM_MIPS_AR9132), y)
1462+EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
1463+ARCH := mips
1464+CROSS_COMPILE := mips-openwrt-linux-
1465+KSRC := /home/alex/test_openwrt/tmp/linux-2.6.30.9
1466+endif
1467+
1468+ifeq ($(CONFIG_PLATFORM_DMP_PHILIPS), y)
1469+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM
1470+ARCH := mips
1471+#CROSS_COMPILE:=/usr/local/msdk-4.3.6-mips-EL-2.6.12.6-0.9.30.3/bin/mipsel-linux-
1472+CROSS_COMPILE:=/usr/local/toolchain_mipsel/bin/mipsel-linux-
1473+KSRC ?=/usr/local/Jupiter/linux-2.6.12
1474+endif
1475+
1476+ifeq ($(CONFIG_PLATFORM_RTK_DMP), y)
1477+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM -DCONFIG_WIRELESS_EXT
1478+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1479+ifeq ($(CONFIG_USB_HCI), y)
1480+_PLATFORM_FILES += platform/platform_RTK_DMP_usb.o
1481+endif
1482+ARCH:=mips
1483+CROSS_COMPILE:=mipsel-linux-
1484+KVER:=
1485+KSRC ?= /usr/src/DMP_Kernel/jupiter/linux-2.6.12
1486+endif
1487+
1488+ifeq ($(CONFIG_PLATFORM_MT53XX), y)
1489+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MT53XX
1490+ARCH:= arm
1491+CROSS_COMPILE:= arm11_mtk_le-
1492+KVER:= 2.6.27
1493+KSRC?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27
1494+endif
1495+
1496+ifeq ($(CONFIG_PLATFORM_ARM_MX51_241H), y)
1497+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_WISTRON_PLATFORM
1498+ARCH := arm
1499+CROSS_COMPILE := /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
1500+KVER := 2.6.31
1501+KSRC ?= /lib/modules/2.6.31-770-g0e46b52/source
1502+endif
1503+
1504+ifeq ($(CONFIG_PLATFORM_FS_MX61), y)
1505+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1506+ARCH := arm
1507+CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi-
1508+KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env
1509+endif
1510+
1511+
1512+
1513+ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y)
1514+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATJ227X
1515+ARCH := mips
1516+CROSS_COMPILE := /home/cnsd4/project/actions/tools-2.6.27/bin/mipsel-linux-gnu-
1517+KVER := 2.6.27
1518+KSRC := /home/cnsd4/project/actions/linux-2.6.27.28
1519+endif
1520+
1521+ifeq ($(CONFIG_PLATFORM_TI_DM365), y)
1522+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_TI_DM365
1523+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX
1524+EXTRA_CFLAGS += -DCONFIG_SINGLE_XMIT_BUF -DCONFIG_SINGLE_RECV_BUF
1525+ARCH := arm
1526+#CROSS_COMPILE := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-
1527+#KSRC := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/lsp/ti-davinci/linux-dm365
1528+CROSS_COMPILE := /opt/montavista/pro5.0/devkit/arm/v5t_le/bin/arm-linux-
1529+KSRC:= /home/vivotek/lsp/DM365/kernel_platform/kernel/linux-2.6.18
1530+KERNELOUTPUT := ${PRODUCTDIR}/tmp
1531+KVER := 2.6.18
1532+endif
1533+
1534+ifeq ($(CONFIG_PLATFORM_MOZART), y)
1535+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MOZART
1536+ARCH := arm
1537+CROSS_COMPILE := /home/vivotek/lsp/mozart3v2/Mozart3e_Toolchain/build_arm_nofpu/usr/bin/arm-linux-
1538+KVER := $(shell uname -r)
1539+KSRC:= /opt/Vivotek/lsp/mozart3v2/kernel_platform/kernel/mozart_kernel-1.17
1540+KERNELOUTPUT := /home/pink/sample/ODM/IP8136W-VINT/tmp/kernel
1541+endif
1542+
1543+ifeq ($(CONFIG_PLATFORM_TEGRA3_CARDHU), y)
1544+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1545+# default setting for Android 4.1, 4.2
1546+EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1547+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1548+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1549+ARCH := arm
1550+CROSS_COMPILE := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1551+KSRC := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/out/target/product/cardhu/obj/KERNEL
1552+MODULE_NAME := wlan
1553+endif
1554+
1555+ifeq ($(CONFIG_PLATFORM_TEGRA4_DALMORE), y)
1556+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1557+# default setting for Android 4.1, 4.2
1558+EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1559+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1560+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1561+ARCH := arm
1562+CROSS_COMPILE := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
1563+KSRC := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/out/target/product/dalmore/obj/KERNEL
1564+MODULE_NAME := wlan
1565+endif
1566+
1567+ifeq ($(CONFIG_PLATFORM_ARM_TCC8900), y)
1568+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1569+ARCH := arm
1570+CROSS_COMPILE := /home/android_sdk/Telechips/SDK_2304_20110613/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1571+KSRC := /home/android_sdk/Telechips/SDK_2304_20110613/kernel
1572+MODULE_NAME := wlan
1573+endif
1574+
1575+ifeq ($(CONFIG_PLATFORM_ARM_TCC8920), y)
1576+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1577+ARCH := arm
1578+CROSS_COMPILE := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1579+KSRC := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/kernel
1580+MODULE_NAME := wlan
1581+endif
1582+
1583+ifeq ($(CONFIG_PLATFORM_ARM_TCC8920_JB42), y)
1584+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1585+# default setting for Android 4.1, 4.2
1586+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1587+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1588+ARCH := arm
1589+CROSS_COMPILE := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
1590+KSRC := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/kernel
1591+MODULE_NAME := wlan
1592+endif
1593+
1594+ifeq ($(CONFIG_PLATFORM_ARM_RK2818), y)
1595+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
1596+ARCH := arm
1597+CROSS_COMPILE := /usr/src/release_fae_version/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
1598+KSRC := /usr/src/release_fae_version/kernel25_A7_281x
1599+MODULE_NAME := wlan
1600+endif
1601+
1602+ifeq ($(CONFIG_PLATFORM_ARM_RK3188), y)
1603+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
1604+# default setting for Android 4.1, 4.2, 4.3, 4.4
1605+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1606+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1607+# default setting for Power control
1608+EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1609+EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
1610+# default setting for Special function
1611+ARCH := arm
1612+CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3188/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
1613+KSRC := /home/android_sdk/Rockchip/Rk3188/kernel
1614+MODULE_NAME := wlan
1615+endif
1616+
1617+ifeq ($(CONFIG_PLATFORM_ARM_RK3066), y)
1618+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_RK3066
1619+EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1620+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1621+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1622+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
1623+ifeq ($(CONFIG_SDIO_HCI), y)
1624+EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
1625+endif
1626+EXTRA_CFLAGS += -fno-pic
1627+ARCH := arm
1628+CROSS_COMPILE := /home/android_sdk/Rockchip/rk3066_20130607/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
1629+#CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3066sdk/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
1630+KSRC := /home/android_sdk/Rockchip/Rk3066sdk/kernel
1631+MODULE_NAME :=wlan
1632+endif
1633+
1634+ifeq ($(CONFIG_PLATFORM_ARM_URBETTER), y)
1635+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
1636+ARCH := arm
1637+CROSS_COMPILE := /media/DATA-1/urbetter/arm-2009q3/bin/arm-none-linux-gnueabi-
1638+KSRC := /media/DATA-1/urbetter/ics-urbetter/kernel
1639+MODULE_NAME := wlan
1640+endif
1641+
1642+ifeq ($(CONFIG_PLATFORM_ARM_TI_PANDA), y)
1643+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
1644+ARCH := arm
1645+#CROSS_COMPILE := /media/DATA-1/aosp/ics-aosp_20111227/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1646+#KSRC := /media/DATA-1/aosp/android-omap-panda-3.0_20120104
1647+CROSS_COMPILE := /media/DATA-1/android-4.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1648+KSRC := /media/DATA-1/android-4.0/panda_kernel/omap
1649+MODULE_NAME := wlan
1650+endif
1651+
1652+ifeq ($(CONFIG_PLATFORM_MIPS_JZ4760), y)
1653+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_MINIMAL_MEMORY_USAGE
1654+ARCH ?= mips
1655+CROSS_COMPILE ?= /mnt/sdb5/Ingenic/Umido/mips-4.3/bin/mips-linux-gnu-
1656+KSRC ?= /mnt/sdb5/Ingenic/Umido/kernel
1657+endif
1658+
1659+ifeq ($(CONFIG_PLATFORM_SZEBOOK), y)
1660+EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
1661+ARCH:=arm
1662+CROSS_COMPILE:=/opt/crosstool2/bin/armeb-unknown-linux-gnueabi-
1663+KVER:= 2.6.31.6
1664+KSRC:= ../code/linux-2.6.31.6-2020/
1665+endif
1666+
1667+ifeq ($(CONFIG_PLATFORM_ARM_SUNxI), y)
1668+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1669+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUNxI
1670+# default setting for Android 4.1, 4.2
1671+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1672+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1673+
1674+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1675+ifeq ($(CONFIG_USB_HCI), y)
1676+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1677+_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1678+endif
1679+ifeq ($(CONFIG_SDIO_HCI), y)
1680+# default setting for A10-EVB mmc0
1681+#EXTRA_CFLAGS += -DCONFIG_WITS_EVB_V13
1682+_PLATFORM_FILES += platform/platform_ARM_SUNxI_sdio.o
1683+endif
1684+
1685+ARCH := arm
1686+#CROSS_COMPILE := arm-none-linux-gnueabi-
1687+CROSS_COMPILE=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/buildroot/output/external-toolchain/bin/arm-none-linux-gnueabi-
1688+KVER := 3.0.8
1689+#KSRC:= ../lichee/linux-3.0/
1690+KSRC=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/linux-3.0
1691+endif
1692+
1693+ifeq ($(CONFIG_PLATFORM_ARM_SUN6I), y)
1694+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1695+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN6I
1696+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1697+# default setting for Android 4.1, 4.2, 4.3, 4.4
1698+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1699+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1700+EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1701+
1702+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1703+ifeq ($(CONFIG_USB_HCI), y)
1704+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1705+_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1706+endif
1707+ifeq ($(CONFIG_SDIO_HCI), y)
1708+# default setting for A31-EVB mmc0
1709+EXTRA_CFLAGS += -DCONFIG_A31_EVB
1710+_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1711+endif
1712+
1713+ARCH := arm
1714+#Android-JB42
1715+#CROSS_COMPILE := /home/android_sdk/Allwinner/a31/android-jb42/lichee/buildroot/output/external-toolchain/bin/arm-linux-gnueabi-
1716+#KSRC :=/home/android_sdk/Allwinner/a31/android-jb42/lichee/linux-3.3
1717+#ifeq ($(CONFIG_USB_HCI), y)
1718+#MODULE_NAME := 8188eu_sw
1719+#endif
1720+# ==== Cross compile setting for kitkat-a3x_v4.5 =====
1721+CROSS_COMPILE := /home/android_sdk/Allwinner/a31/kitkat-a3x_v4.5/lichee/buildroot/output/external-toolchain/bin/arm-linux-gnueabi-
1722+KSRC :=/home/android_sdk/Allwinner/a31/kitkat-a3x_v4.5/lichee/linux-3.3
1723+endif
1724+
1725+ifeq ($(CONFIG_PLATFORM_ARM_SUN7I), y)
1726+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1727+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN7I
1728+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1729+# default setting for Android 4.1, 4.2, 4.3, 4.4
1730+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1731+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1732+EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1733+
1734+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1735+ifeq ($(CONFIG_USB_HCI), y)
1736+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1737+_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1738+endif
1739+ifeq ($(CONFIG_SDIO_HCI), y)
1740+_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1741+endif
1742+
1743+ARCH := arm
1744+# ===Cross compile setting for Android 4.2 SDK ===
1745+#CROSS_COMPILE := /home/android_sdk/Allwinner/a20_evb/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1746+#KSRC := /home/android_sdk/Allwinner/a20_evb/lichee/linux-3.3
1747+# ==== Cross compile setting for Android 4.3 SDK =====
1748+#CROSS_COMPILE := /home/android_sdk/Allwinner/a20/android-jb43/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1749+#KSRC := /home/android_sdk/Allwinner/a20/android-jb43/lichee/linux-3.4
1750+# ==== Cross compile setting for kitkat-a20_v4.4 =====
1751+CROSS_COMPILE := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1752+KSRC := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/linux-3.4
1753+endif
1754+
1755+ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W3P1), y)
1756+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1757+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I
1758+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I_W3P1
1759+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1760+# default setting for Android 4.1, 4.2
1761+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1762+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1763+
1764+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1765+ifeq ($(CONFIG_USB_HCI), y)
1766+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1767+_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1768+endif
1769+ifeq ($(CONFIG_SDIO_HCI), y)
1770+_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1771+endif
1772+
1773+ARCH := arm
1774+# ===Cross compile setting for Android 4.2 SDK ===
1775+#CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-jb42/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1776+#KSRC :=/home/android_sdk/Allwinner/a23/android-jb42/lichee/linux-3.4
1777+# ===Cross compile setting for Android 4.4 SDK ===
1778+CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-kk44/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1779+KSRC :=/home/android_sdk/Allwinner/a23/android-kk44/lichee/linux-3.4
1780+endif
1781+
1782+ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W5P1), y)
1783+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1784+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I
1785+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I_W5P1
1786+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1787+# default setting for Android 4.1, 4.2
1788+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1789+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1790+
1791+# Enable this for Android 5.0
1792+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1793+
1794+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1795+ifeq ($(CONFIG_USB_HCI), y)
1796+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1797+_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1798+endif
1799+ifeq ($(CONFIG_SDIO_HCI), y)
1800+_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1801+endif
1802+
1803+ARCH := arm
1804+# ===Cross compile setting for Android L SDK ===
1805+CROSS_COMPILE := /home/android_sdk/Allwinner/a33/android-L/lichee/out/sun8iw5p1/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1806+KSRC :=/home/android_sdk/Allwinner/a33/android-L/lichee/linux-3.4
1807+endif
1808+
1809+ifeq ($(CONFIG_PLATFORM_ACTIONS_ATV5201), y)
1810+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATV5201
1811+EXTRA_CFLAGS += -DCONFIG_SDIO_DISABLE_RXFIFO_POLLING_LOOP
1812+ARCH := mips
1813+CROSS_COMPILE := mipsel-linux-gnu-
1814+KVER := $(KERNEL_VER)
1815+KSRC:= $(CFGDIR)/../../kernel/linux-$(KERNEL_VER)
1816+endif
1817+
1818+ifeq ($(CONFIG_PLATFORM_ARM_RTD299X), y)
1819+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1820+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1821+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1822+ifeq ($(CONFIG_ANDROID), y)
1823+# Enable this for Android 5.0
1824+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1825+endif
1826+#ARCH, CROSS_COMPILE, KSRC,and MODDESTDIR are provided by external makefile
1827+INSTALL_PREFIX :=
1828+endif
1829+
1830+ifeq ($(CONFIG_PLATFORM_ARM_RTD299X_LG), y)
1831+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1832+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1833+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1834+EXTRA_CFLAGS += -DRTW_P2P_GROUP_INTERFACE=1
1835+EXTRA_CFLAGS += -DCONFIG_IFACE_NUMBER=3
1836+#EXTRA_CFLAGS += -DCONFIG_FIX_HWPORT
1837+EXTRA_CFLAGS += -DLGE_PRIVATE
1838+EXTRA_CFLAGS += -DPURE_SUPPLICANT
1839+EXTRA_CFLAGS += -DCONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP -DCONFIG_RTW_IOCTL_SET_COUNTRY
1840+EXTRA_CFLAGS += -DDBG_RX_DFRAME_RAW_DATA
1841+EXTRA_CFLAGS += -DRTW_REDUCE_SCAN_SWITCH_CH_TIME
1842+ARCH ?= arm
1843+KVER ?=
1844+
1845+ifneq ($(PLATFORM), WEBOS)
1846+$(info PLATFORM is empty)
1847+CROSS_COMPILE ?= /mnt/newdisk/LGE/arm-lg115x-linux-gnueabi-4.8-2016.03-x86_64/bin/arm-lg115x-linux-gnueabi-
1848+KSRC ?= /mnt/newdisk/LGE/linux-rockhopper_k3lp_drd4tv_423
1849+endif
1850+
1851+CROSS_COMPILE ?=
1852+KSRC ?= $(LINUX_SRC)
1853+INSTALL_PREFIX ?=
1854+endif
1855+
1856+ifeq ($(CONFIG_PLATFORM_HISILICON), y)
1857+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_HISILICON
1858+ifeq ($(SUPPORT_CONCURRENT),y)
1859+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1860+endif
1861+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1862+ARCH := arm
1863+ifeq ($(CROSS_COMPILE),)
1864+ CROSS_COMPILE = arm-hisiv200-linux-
1865+endif
1866+MODULE_NAME := rtl8192eu
1867+ifeq ($(KSRC),)
1868+ KSRC := ../../../../../../kernel/linux-3.4.y
1869+endif
1870+endif
1871+
1872+ifeq ($(CONFIG_PLATFORM_HISILICON_HI3798), y)
1873+EXTRA_CFLAGS += -DCONFIG_PLATFORM_HISILICON
1874+EXTRA_CFLAGS += -DCONFIG_PLATFORM_HISILICON_HI3798
1875+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1876+# default setting for Android
1877+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1878+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
1879+EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
1880+# default setting for Android 5.x and later
1881+#EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1882+
1883+# If system could power on and recognize Wi-Fi SDIO automatically,
1884+# platfrom operations are not necessary.
1885+#ifeq ($(CONFIG_SDIO_HCI), y)
1886+#EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1887+#_PLATFORM_FILES += platform/platform_hisilicon_hi3798_sdio.o
1888+#EXTRA_CFLAGS += -DCONFIG_HISI_SDIO_ID=1
1889+#endif
1890+
1891+ARCH ?= arm
1892+CROSS_COMPILE ?= /HiSTBAndroidV600R003C00SPC021_git_0512/device/hisilicon/bigfish/sdk/tools/linux/toolchains/arm-histbv310-linux/bin/arm-histbv310-linux-
1893+ifndef KSRC
1894+KSRC := /HiSTBAndroidV600R003C00SPC021_git_0512/device/hisilicon/bigfish/sdk/source/kernel/linux-3.18.y
1895+KSRC += O=/HiSTBAndroidV600R003C00SPC021_git_0512/out/target/product/Hi3798MV200/obj/KERNEL_OBJ
1896+endif
1897+
1898+ifeq ($(CONFIG_RTL8822B), y)
1899+ifeq ($(CONFIG_SDIO_HCI), y)
1900+CONFIG_RTL8822BS ?= m
1901+USER_MODULE_NAME := rtl8822bs
1902+endif
1903+endif
1904+
1905+endif
1906+
1907+# Platform setting
1908+ifeq ($(CONFIG_PLATFORM_ARM_SPREADTRUM_6820), y)
1909+ifeq ($(CONFIG_ANDROID_2X), y)
1910+EXTRA_CFLAGS += -DANDROID_2X
1911+endif
1912+EXTRA_CFLAGS += -DCONFIG_PLATFORM_SPRD
1913+EXTRA_CFLAGS += -DPLATFORM_SPREADTRUM_6820
1914+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1915+ifeq ($(RTL871X), rtl8188e)
1916+EXTRA_CFLAGS += -DSOFTAP_PS_DURATION=50
1917+endif
1918+ifeq ($(CONFIG_SDIO_HCI), y)
1919+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1920+_PLATFORM_FILES += platform/platform_sprd_sdio.o
1921+endif
1922+endif
1923+
1924+ifeq ($(CONFIG_PLATFORM_ARM_SPREADTRUM_8810), y)
1925+ifeq ($(CONFIG_ANDROID_2X), y)
1926+EXTRA_CFLAGS += -DANDROID_2X
1927+endif
1928+EXTRA_CFLAGS += -DCONFIG_PLATFORM_SPRD
1929+EXTRA_CFLAGS += -DPLATFORM_SPREADTRUM_8810
1930+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1931+ifeq ($(RTL871X), rtl8188e)
1932+EXTRA_CFLAGS += -DSOFTAP_PS_DURATION=50
1933+endif
1934+ifeq ($(CONFIG_SDIO_HCI), y)
1935+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1936+_PLATFORM_FILES += platform/platform_sprd_sdio.o
1937+endif
1938+endif
1939+
1940+ifeq ($(CONFIG_PLATFORM_ARM_WMT), y)
1941+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1942+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1943+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1944+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1945+ifeq ($(CONFIG_SDIO_HCI), y)
1946+_PLATFORM_FILES += platform/platform_ARM_WMT_sdio.o
1947+endif
1948+ARCH := arm
1949+CROSS_COMPILE := /home/android_sdk/WonderMedia/wm8880-android4.4/toolchain/arm_201103_gcc4.5.2/mybin/arm_1103_le-
1950+KSRC := /home/android_sdk/WonderMedia/wm8880-android4.4/kernel4.4/
1951+MODULE_NAME :=8189es_kk
1952+endif
1953+
1954+ifeq ($(CONFIG_PLATFORM_RTK119X), y)
1955+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1956+#EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN7I
1957+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1958+# default setting for Android 4.1, 4.2
1959+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1960+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1961+#EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1962+EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1963+
1964+#EXTRA_CFLAGS += -DCONFIG_#PLATFORM_OPS
1965+ifeq ($(CONFIG_USB_HCI), y)
1966+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1967+#_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1968+endif
1969+ifeq ($(CONFIG_SDIO_HCI), y)
1970+_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1971+endif
1972+
1973+ARCH := arm
1974+
1975+# ==== Cross compile setting for Android 4.4 SDK =====
1976+#CROSS_COMPILE := arm-linux-gnueabihf-
1977+KVER := 3.10.24
1978+#KSRC :=/home/android_sdk/Allwinner/a20/android-kitkat44/lichee/linux-3.4
1979+CROSS_COMPILE := /home/realtek/software_phoenix/phoenix/toolchain/usr/local/arm-2013.11/bin/arm-linux-gnueabihf-
1980+KSRC := /home/realtek/software_phoenix/linux-kernel
1981+MODULE_NAME := 8192eu
1982+
1983+endif
1984+
1985+ifeq ($(CONFIG_PLATFORM_RTK119X_AM), y)
1986+EXTRA_CFLAGS += -DCONFIG_PLATFORM_RTK119X_AM
1987+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1988+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1989+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE -DCONFIG_FULL_CH_IN_P2P_HANDSHAKE
1990+EXTRA_CFLAGS += -DCONFIG_IFACE_NUMBER=3
1991+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1992+
1993+ifeq ($(CONFIG_USB_HCI), y)
1994+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1995+endif
1996+
1997+ARCH := arm
1998+
1999+#CROSS_COMPILE := arm-linux-gnueabihf-
2000+KVER := 3.10.24
2001+#KSRC :=
2002+CROSS_COMPILE :=
2003+endif
2004+
2005+ifeq ($(CONFIG_PLATFORM_RTK129X), y)
2006+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2007+EXTRA_CFLAGS += -DRTK_129X_PLATFORM
2008+EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
2009+# default setting for Android 4.1, 4.2
2010+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2011+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2012+#EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_QOS_OPTIMIZATION
2013+EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
2014+# Enable this for Android 5.0
2015+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
2016+ifeq ($(CONFIG_RTL8821C)$(CONFIG_SDIO_HCI),yy)
2017+EXTRA_CFLAGS += -DCONFIG_WAKEUP_GPIO_INPUT_MODE
2018+EXTRA_CFLAGS += -DCONFIG_BT_WAKE_HST_OPEN_DRAIN
2019+endif
2020+EXTRA_CFLAGS += -Wno-error=date-time
2021+# default setting for Android 7.0
2022+ifeq ($(RTK_ANDROID_VERSION), nougat)
2023+EXTRA_CFLAGS += -DRTW_P2P_GROUP_INTERFACE=1
2024+endif
2025+#EXTRA_CFLAGS += -DCONFIG_#PLATFORM_OPS
2026+ifeq ($(CONFIG_USB_HCI), y)
2027+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
2028+endif
2029+
2030+ARCH := arm64
2031+
2032+# ==== Cross compile setting for Android 4.4 SDK =====
2033+#CROSS_COMPILE := arm-linux-gnueabihf-
2034+#KVER := 4.1.10
2035+#CROSS_COMPILE := $(CROSS)
2036+#KSRC := $(LINUX_KERNEL_PATH)
2037+CROSS_COMPILE := /home/android_sdk/DHC/trunk-6.0.0_r1-QA160627/phoenix/toolchain/asdk64-4.9.4-a53-EL-3.10-g2.19-a64nt-160307/bin/asdk64-linux-
2038+KSRC := /home/android_sdk/DHC/trunk-6.0.0_r1-QA160627/linux-kernel
2039+endif
2040+
2041+ifeq ($(CONFIG_PLATFORM_RTK390X), y)
2042+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2043+EXTRA_CFLAGS += -DCONFIG_PLATFORM_RTK390X
2044+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2045+EXTRA_CFLAGS += -DCONFIG_RTW_NETIF_SG
2046+ifeq ($(CONFIG_USB_HCI), y)
2047+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
2048+endif
2049+
2050+ARCH:=rlx
2051+
2052+CROSS_COMPILE:=mips-linux-
2053+KSRC:= /home/realtek/share/Develop/IPCAM_SDK/RealSil/rts3901_sdk_v1.2_vanilla/linux-3.10
2054+
2055+endif
2056+
2057+ifeq ($(CONFIG_PLATFORM_NOVATEK_NT72668), y)
2058+EXTRA_CFLAGS += -DCONFIG_PLATFORM_NOVATEK_NT72668
2059+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2060+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2061+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2062+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX
2063+EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
2064+ARCH ?= arm
2065+CROSS_COMPILE := arm-linux-gnueabihf-
2066+KVER := 3.8.0
2067+KSRC := /Custom/Novatek/TCL/linux-3.8_header
2068+#KSRC := $(KERNELDIR)
2069+endif
2070+
2071+ifeq ($(CONFIG_PLATFORM_ARM_TCC8930_JB42), y)
2072+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2073+# default setting for Android 4.1, 4.2
2074+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2075+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2076+ARCH := arm
2077+CROSS_COMPILE := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
2078+KSRC := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/kernel
2079+MODULE_NAME := wlan
2080+endif
2081+
2082+ifeq ($(CONFIG_PLATFORM_RTL8197D), y)
2083+EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTL8197D
2084+export DIR_LINUX=$(shell pwd)/../SDK/rlxlinux-sdk321-v50/linux-2.6.30
2085+ARCH ?= rlx
2086+CROSS_COMPILE:= $(DIR_LINUX)/../toolchain/rsdk-1.5.5-5281-EB-2.6.30-0.9.30.3-110714/bin/rsdk-linux-
2087+KSRC := $(DIR_LINUX)
2088+endif
2089+
2090+ifeq ($(CONFIG_PLATFORM_AML_S905), y)
2091+EXTRA_CFLAGS += -DCONFIG_PLATFORM_AML_S905
2092+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -fno-pic
2093+# default setting for Android
2094+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2095+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
2096+EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
2097+# default setting for Android 5.x and later
2098+EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
2099+
2100+ifeq ($(CONFIG_SDIO_HCI), y)
2101+EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
2102+_PLATFORM_FILES += platform/platform_aml_s905_sdio.o
2103+endif
2104+
2105+ARCH ?= arm64
2106+CROSS_COMPILE ?= /4.4_S905L_8822bs_compile/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-
2107+ifndef KSRC
2108+KSRC := /4.4_S905L_8822bs_compile/common
2109+# To locate output files in a separate directory.
2110+KSRC += O=/4.4_S905L_8822bs_compile/KERNEL_OBJ
2111+endif
2112+
2113+ifeq ($(CONFIG_RTL8822B), y)
2114+ifeq ($(CONFIG_SDIO_HCI), y)
2115+CONFIG_RTL8822BS ?= m
2116+USER_MODULE_NAME := 8822bs
2117+endif
2118+endif
2119+
2120+endif
2121+
2122+ifeq ($(CONFIG_PLATFORM_ZTE_ZX296716), y)
2123+EXTRA_CFLAGS += -Wno-error=date-time
2124+EXTRA_CFLAGS += -DCONFIG_PLATFORM_ZTE_ZX296716
2125+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2126+# default setting for Android
2127+EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2128+EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
2129+EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
2130+# default setting for Android 5.x and later
2131+#EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
2132+
2133+ifeq ($(CONFIG_SDIO_HCI), y)
2134+# mark this temporarily
2135+#EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
2136+#_PLATFORM_FILES += platform/platform_zte_zx296716_sdio.o
2137+endif
2138+
2139+ARCH ?= arm64
2140+CROSS_COMPILE ?=
2141+KSRC ?=
2142+
2143+ifeq ($(CONFIG_RTL8822B), y)
2144+ifeq ($(CONFIG_SDIO_HCI), y)
2145+CONFIG_RTL8822BS ?= m
2146+USER_MODULE_NAME := 8822bs
2147+endif
2148+endif
2149+
2150+endif
2151+
2152+########### CUSTOMER ################################
2153+ifeq ($(CONFIG_CUSTOMER_HUAWEI_GENERAL), y)
2154+CONFIG_CUSTOMER_HUAWEI = y
2155+endif
2156+
2157+ifeq ($(CONFIG_CUSTOMER_HUAWEI), y)
2158+EXTRA_CFLAGS += -DCONFIG_HUAWEI_PROC
2159+endif
2160+
2161+ifeq ($(CONFIG_MULTIDRV), y)
2162+
2163+ifeq ($(CONFIG_SDIO_HCI), y)
2164+MODULE_NAME := rtw_sdio
2165+endif
2166+
2167+ifeq ($(CONFIG_USB_HCI), y)
2168+MODULE_NAME := rtw_usb
2169+endif
2170+
2171+ifeq ($(CONFIG_PCI_HCI), y)
2172+MODULE_NAME := rtw_pci
2173+endif
2174+
2175+
2176+endif
2177+
2178+USER_MODULE_NAME ?=
2179+ifneq ($(USER_MODULE_NAME),)
2180+MODULE_NAME := $(USER_MODULE_NAME)
2181+endif
2182+
2183+ifneq ($(KERNELRELEASE),)
2184+
2185+########### this part for *.mk ############################
2186+include $(src)/hal/phydm/phydm.mk
2187+
2188+########### HAL_RTL8822B #################################
2189+ifeq ($(CONFIG_RTL8822B), y)
2190+include $(src)/rtl8822b.mk
2191+endif
2192+
2193+########### HAL_RTL8821C #################################
2194+ifeq ($(CONFIG_RTL8821C), y)
2195+include $(src)/rtl8821c.mk
2196+endif
2197+
2198+rtk_core := core/rtw_cmd.o \
2199 core/rtw_security.o \
2200 core/rtw_debug.o \
2201 core/rtw_io.o \
2202+ core/rtw_ioctl_query.o \
2203 core/rtw_ioctl_set.o \
2204 core/rtw_ieee80211.o \
2205 core/rtw_mlme.o \
2206@@ -14,88 +2180,127 @@ rtl8821ce-objs += core/rtw_cmd.o \
2207 core/rtw_vht.o \
2208 core/rtw_pwrctrl.o \
2209 core/rtw_rf.o \
2210+ core/rtw_chplan.o \
2211 core/rtw_recv.o \
2212 core/rtw_sta_mgt.o \
2213 core/rtw_ap.o \
2214+ core/mesh/rtw_mesh.o \
2215+ core/mesh/rtw_mesh_pathtbl.o \
2216+ core/mesh/rtw_mesh_hwmp.o \
2217 core/rtw_xmit.o \
2218 core/rtw_p2p.o \
2219+ core/rtw_rson.o \
2220+ core/rtw_tdls.o \
2221 core/rtw_br_ext.o \
2222+ core/rtw_iol.o \
2223 core/rtw_sreset.o \
2224 core/rtw_btcoex_wifionly.o \
2225 core/rtw_btcoex.o \
2226+ core/rtw_beamforming.o \
2227 core/rtw_odm.o \
2228- core/rtw_mp.o \
2229- core/efuse/rtw_efuse.o \
2230- os_dep/osdep_service.o \
2231- os_dep/linux/os_intfs.o \
2232- os_dep/linux/pci_intf.o \
2233- os_dep/linux/ioctl_linux.o \
2234- os_dep/linux/xmit_linux.o \
2235- os_dep/linux/mlme_linux.o \
2236- os_dep/linux/recv_linux.o \
2237- os_dep/linux/rtw_android.o \
2238- os_dep/linux/ioctl_mp.o \
2239- hal/hal_intf.o \
2240- hal/hal_com.o \
2241- hal/hal_com_phycfg.o \
2242- hal/hal_dm.o \
2243- hal/hal_btcoex_wifionly.o \
2244- hal/hal_btcoex.o \
2245- hal/hal_mp.o \
2246- hal/halmac/halmac_api.o \
2247- hal/halmac/halmac_88xx/halmac_api_88xx.o \
2248- hal/halmac/halmac_88xx/halmac_func_88xx.o \
2249- hal/halmac/halmac_88xx/halmac_api_88xx_pcie.o \
2250- hal/halmac/halmac_88xx/halmac_8821c/halmac_8821c_pwr_seq.o \
2251- hal/halmac/halmac_88xx/halmac_8821c/halmac_api_8821c.o \
2252- hal/halmac/halmac_88xx/halmac_8821c/halmac_func_8821c.o \
2253- hal/halmac/halmac_88xx/halmac_8821c/halmac_api_8821c_pcie.o \
2254- hal/halmac/halmac_88xx/halmac_8821c/halmac_8821c_phy.o \
2255- hal/hal_halmac.o \
2256- hal/rtl8821c/rtl8821c_halinit.o \
2257- hal/rtl8821c/rtl8821c_mac.o \
2258- hal/rtl8821c/rtl8821c_cmd.o \
2259- hal/rtl8821c/rtl8821c_phy.o \
2260- hal/rtl8821c/rtl8821c_dm.o \
2261- hal/rtl8821c/rtl8821c_ops.o \
2262- hal/rtl8821c/hal8821c_fw.o \
2263- hal/rtl8821c/pci/rtl8821ce_halinit.o \
2264- hal/rtl8821c/pci/rtl8821ce_halmac.o \
2265- hal/rtl8821c/pci/rtl8821ce_io.o \
2266- hal/rtl8821c/pci/rtl8821ce_xmit.o \
2267- hal/rtl8821c/pci/rtl8821ce_recv.o \
2268- hal/rtl8821c/pci/rtl8821ce_ops.o \
2269- hal/efuse/rtl8821c/HalEfuseMask8821C_PCIE.o \
2270- hal/phydm/phydm_debug.o \
2271- hal/phydm/phydm_interface.o \
2272- hal/phydm/phydm_hwconfig.o \
2273- hal/phydm/phydm.o \
2274- hal/phydm/halphyrf_ce.o \
2275- hal/phydm/phydm_dig.o \
2276- hal/phydm/phydm_pathdiv.o \
2277- hal/phydm/phydm_rainfo.o \
2278- hal/phydm/phydm_dynamicbbpowersaving.o \
2279- hal/phydm/phydm_powertracking_ce.o \
2280- hal/phydm/phydm_adaptivity.o \
2281- hal/phydm/phydm_cfotracking.o \
2282- hal/phydm/phydm_acs.o \
2283- hal/phydm/phydm_dfs.o \
2284- hal/phydm/phydm_adc_sampling.o \
2285- hal/phydm/phydm_kfree.o \
2286- hal/phydm/phydm_ccx.o \
2287- hal/phydm/phydm_psd.o \
2288- hal/btc/halbtc8821cwifionly.o \
2289- hal/btc/halbtc8821c1ant.o \
2290- hal/btc/halbtc8821c2ant.o \
2291- hal/phydm/rtl8821c/halhwimg8821c_bb.o \
2292- hal/phydm/rtl8821c/halhwimg8821c_mac.o \
2293- hal/phydm/rtl8821c/halhwimg8821c_rf.o \
2294- hal/phydm/rtl8821c/phydm_hal_api8821c.o \
2295- hal/phydm/rtl8821c/phydm_regconfig8821c.o \
2296- hal/phydm/rtl8821c/halphyrf_8821c.o \
2297- hal/phydm/rtl8821c/phydm_iqk_8821c.o
2298-
2299-ccflags-y += -I$(src)/include \
2300- -I$(src)/hal/btc \
2301- -I$(src)/hal/phydm \
2302- -I$(src)/platform
2303+ core/rtw_rm.o \
2304+ core/rtw_rm_fsm.o \
2305+ core/efuse/rtw_efuse.o
2306+
2307+ifeq ($(CONFIG_SDIO_HCI), y)
2308+rtk_core += core/rtw_sdio.o
2309+endif
2310+
2311+$(MODULE_NAME)-y += $(rtk_core)
2312+
2313+$(MODULE_NAME)-$(CONFIG_INTEL_WIDI) += core/rtw_intel_widi.o
2314+
2315+$(MODULE_NAME)-$(CONFIG_WAPI_SUPPORT) += core/rtw_wapi.o \
2316+ core/rtw_wapi_sms4.o
2317+
2318+$(MODULE_NAME)-y += $(_OS_INTFS_FILES)
2319+$(MODULE_NAME)-y += $(_HAL_INTFS_FILES)
2320+$(MODULE_NAME)-y += $(_PHYDM_FILES)
2321+$(MODULE_NAME)-y += $(_BTC_FILES)
2322+$(MODULE_NAME)-y += $(_PLATFORM_FILES)
2323+
2324+$(MODULE_NAME)-$(CONFIG_MP_INCLUDED) += core/rtw_mp.o
2325+
2326+ifeq ($(CONFIG_RTL8723B), y)
2327+$(MODULE_NAME)-$(CONFIG_MP_INCLUDED)+= core/rtw_bt_mp.o
2328+endif
2329+
2330+obj-$(CONFIG_RTL8821CE) := $(MODULE_NAME).o
2331+
2332+else
2333+
2334+export CONFIG_RTL8821CE = m
2335+
2336+all: modules
2337+
2338+modules:
2339+ $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules
2340+
2341+strip:
2342+ $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded
2343+
2344+install:
2345+ install -p -m 644 $(MODULE_NAME).ko $(MODDESTDIR)
2346+ /sbin/depmod -a ${KVER}
2347+
2348+uninstall:
2349+ rm -f $(MODDESTDIR)/$(MODULE_NAME).ko
2350+ /sbin/depmod -a ${KVER}
2351+
2352+backup_rtlwifi:
2353+ @echo "Making backup rtlwifi drivers"
2354+ifneq (,$(wildcard $(STAGINGMODDIR)/rtl*))
2355+ @tar cPf $(wildcard $(STAGINGMODDIR))/backup_rtlwifi_driver.tar $(wildcard $(STAGINGMODDIR)/rtl*)
2356+ @rm -rf $(wildcard $(STAGINGMODDIR)/rtl*)
2357+endif
2358+ifneq (,$(wildcard $(MODDESTDIR)realtek))
2359+ @tar cPf $(MODDESTDIR)backup_rtlwifi_driver.tar $(MODDESTDIR)realtek
2360+ @rm -fr $(MODDESTDIR)realtek
2361+endif
2362+ifneq (,$(wildcard $(MODDESTDIR)rtl*))
2363+ @tar cPf $(MODDESTDIR)../backup_rtlwifi_driver.tar $(wildcard $(MODDESTDIR)rtl*)
2364+ @rm -fr $(wildcard $(MODDESTDIR)rtl*)
2365+endif
2366+ @/sbin/depmod -a ${KVER}
2367+ @echo "Please reboot your system"
2368+
2369+restore_rtlwifi:
2370+ @echo "Restoring backups"
2371+ifneq (,$(wildcard $(STAGINGMODDIR)/backup_rtlwifi_driver.tar))
2372+ @tar xPf $(STAGINGMODDIR)/backup_rtlwifi_driver.tar
2373+ @rm $(STAGINGMODDIR)/backup_rtlwifi_driver.tar
2374+endif
2375+ifneq (,$(wildcard $(MODDESTDIR)backup_rtlwifi_driver.tar))
2376+ @tar xPf $(MODDESTDIR)backup_rtlwifi_driver.tar
2377+ @rm $(MODDESTDIR)backup_rtlwifi_driver.tar
2378+endif
2379+ifneq (,$(wildcard $(MODDESTDIR)../backup_rtlwifi_driver.tar))
2380+ @tar xPf $(MODDESTDIR)../backup_rtlwifi_driver.tar
2381+ @rm $(MODDESTDIR)../backup_rtlwifi_driver.tar
2382+endif
2383+ @/sbin/depmod -a ${KVER}
2384+ @echo "Please reboot your system"
2385+
2386+config_r:
2387+ @echo "make config"
2388+ /bin/bash script/Configure script/config.in
2389+
2390+
2391+.PHONY: modules clean
2392+
2393+clean:
2394+ #$(MAKE) -C $(KSRC) M=$(shell pwd) clean
2395+ cd hal ; rm -fr */*/*/*.mod.c */*/*/*.mod */*/*/*.o */*/*/.*.cmd */*/*/*.ko
2396+ cd hal ; rm -fr */*/*.mod.c */*/*.mod */*/*.o */*/.*.cmd */*/*.ko
2397+ cd hal ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
2398+ cd hal ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2399+ cd core ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
2400+ cd core ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2401+ cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2402+ cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2403+ cd platform ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2404+ rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order
2405+ rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
2406+ rm -fr .tmp_versions
2407+endif
2408+
2409diff --git a/clean b/clean
2410new file mode 100644
2411index 0000000..8766421
2412--- /dev/null
2413+++ b/clean
2414@@ -0,0 +1,5 @@
2415+#!/bin/bash
2416+rmmod 8192cu
2417+rmmod 8192ce
2418+rmmod 8192du
2419+rmmod 8192de
2420diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c
2421index e6a805b..dc9ec64 100644
2422--- a/core/efuse/rtw_efuse.c
2423+++ b/core/efuse/rtw_efuse.c
2424@@ -1,7 +1,6 @@
2425-/* SPDX-License-Identifier: GPL-2.0 */
2426 /******************************************************************************
2427 *
2428- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
2429+ * Copyright(c) 2007 - 2017 Realtek Corporation.
2430 *
2431 * This program is free software; you can redistribute it and/or modify it
2432 * under the terms of version 2 of the GNU General Public License as
2433@@ -12,12 +11,7 @@
2434 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
2435 * more details.
2436 *
2437- * You should have received a copy of the GNU General Public License along with
2438- * this program; if not, write to the Free Software Foundation, Inc.,
2439- * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
2440- *
2441- *
2442- ******************************************************************************/
2443+ *****************************************************************************/
2444 #define _RTW_EFUSE_C_
2445
2446 #include <drv_types.h>
2447@@ -63,59 +57,817 @@ BOOLEAN rtw_file_efuse_IsMasked(PADAPTER pAdapter, u16 Offset)
2448
2449 BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset)
2450 {
2451+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
2452+
2453 if (pAdapter->registrypriv.boffefusemask)
2454 return FALSE;
2455
2456- return (IS_MASKED(8821C, _MPCIE, Offset)) ? TRUE : FALSE;
2457+#ifdef CONFIG_USB_HCI
2458+#if defined(CONFIG_RTL8188E)
2459+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2460+ return (IS_MASKED(8188E, _MUSB, Offset)) ? TRUE : FALSE;
2461+#endif
2462+#if defined(CONFIG_RTL8812A)
2463+ if (IS_HARDWARE_TYPE_8812(pAdapter))
2464+ return (IS_MASKED(8812A, _MUSB, Offset)) ? TRUE : FALSE;
2465+#endif
2466+#if defined(CONFIG_RTL8821A)
2467+#if 0
2468+ if (IS_HARDWARE_TYPE_8811AU(pAdapter))
2469+ return (IS_MASKED(8811A, _MUSB, Offset)) ? TRUE : FALSE;
2470+#endif
2471+ if (IS_HARDWARE_TYPE_8821(pAdapter))
2472+ return (IS_MASKED(8821A, _MUSB, Offset)) ? TRUE : FALSE;
2473+#endif
2474+#if defined(CONFIG_RTL8192E)
2475+ if (IS_HARDWARE_TYPE_8192E(pAdapter))
2476+ return (IS_MASKED(8192E, _MUSB, Offset)) ? TRUE : FALSE;
2477+#endif
2478+#if defined(CONFIG_RTL8723B)
2479+ if (IS_HARDWARE_TYPE_8723B(pAdapter))
2480+ return (IS_MASKED(8723B, _MUSB, Offset)) ? TRUE : FALSE;
2481+#endif
2482+#if defined(CONFIG_RTL8703B)
2483+ if (IS_HARDWARE_TYPE_8703B(pAdapter))
2484+ return (IS_MASKED(8703B, _MUSB, Offset)) ? TRUE : FALSE;
2485+#endif
2486+#if defined(CONFIG_RTL8814A)
2487+ if (IS_HARDWARE_TYPE_8814A(pAdapter))
2488+ return (IS_MASKED(8814A, _MUSB, Offset)) ? TRUE : FALSE;
2489+#endif
2490+#if defined(CONFIG_RTL8188F)
2491+ if (IS_HARDWARE_TYPE_8188F(pAdapter))
2492+ return (IS_MASKED(8188F, _MUSB, Offset)) ? TRUE : FALSE;
2493+#endif
2494+#if defined(CONFIG_RTL8188GTV)
2495+ if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
2496+ return (IS_MASKED(8188GTV, _MUSB, Offset)) ? TRUE : FALSE;
2497+#endif
2498+#if defined(CONFIG_RTL8822B)
2499+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2500+ return (IS_MASKED(8822B, _MUSB, Offset)) ? TRUE : FALSE;
2501+#endif
2502+#if defined(CONFIG_RTL8723D)
2503+ if (IS_HARDWARE_TYPE_8723D(pAdapter))
2504+ return (IS_MASKED(8723D, _MUSB, Offset)) ? TRUE : FALSE;
2505+#endif
2506+#if defined(CONFIG_RTL8710B)
2507+ if (IS_HARDWARE_TYPE_8710B(pAdapter))
2508+ return (IS_MASKED(8710B, _MUSB, Offset)) ? TRUE : FALSE;
2509+#endif
2510+#if defined(CONFIG_RTL8821C)
2511+ if (IS_HARDWARE_TYPE_8821CU(pAdapter))
2512+ return (IS_MASKED(8821C, _MUSB, Offset)) ? TRUE : FALSE;
2513+#endif
2514+
2515+#if defined(CONFIG_RTL8192F)
2516+ if (IS_HARDWARE_TYPE_8192FU(pAdapter))
2517+ return (IS_MASKED(8192F, _MUSB, Offset)) ? TRUE : FALSE;
2518+#endif
2519+#endif /*CONFIG_USB_HCI*/
2520+
2521+#ifdef CONFIG_PCI_HCI
2522+#if defined(CONFIG_RTL8188E)
2523+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2524+ return (IS_MASKED(8188E, _MPCIE, Offset)) ? TRUE : FALSE;
2525+#endif
2526+#if defined(CONFIG_RTL8192E)
2527+ if (IS_HARDWARE_TYPE_8192E(pAdapter))
2528+ return (IS_MASKED(8192E, _MPCIE, Offset)) ? TRUE : FALSE;
2529+#endif
2530+#if defined(CONFIG_RTL8812A)
2531+ if (IS_HARDWARE_TYPE_8812(pAdapter))
2532+ return (IS_MASKED(8812A, _MPCIE, Offset)) ? TRUE : FALSE;
2533+#endif
2534+#if defined(CONFIG_RTL8821A)
2535+ if (IS_HARDWARE_TYPE_8821(pAdapter))
2536+ return (IS_MASKED(8821A, _MPCIE, Offset)) ? TRUE : FALSE;
2537+#endif
2538+#if defined(CONFIG_RTL8723B)
2539+ if (IS_HARDWARE_TYPE_8723B(pAdapter))
2540+ return (IS_MASKED(8723B, _MPCIE, Offset)) ? TRUE : FALSE;
2541+#endif
2542+#if defined(CONFIG_RTL8814A)
2543+ if (IS_HARDWARE_TYPE_8814A(pAdapter))
2544+ return (IS_MASKED(8814A, _MPCIE, Offset)) ? TRUE : FALSE;
2545+#endif
2546+#if defined(CONFIG_RTL8822B)
2547+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2548+ return (IS_MASKED(8822B, _MPCIE, Offset)) ? TRUE : FALSE;
2549+#endif
2550+#if defined(CONFIG_RTL8821C)
2551+ if (IS_HARDWARE_TYPE_8821CE(pAdapter))
2552+ return (IS_MASKED(8821C, _MPCIE, Offset)) ? TRUE : FALSE;
2553+#endif
2554+
2555+#if defined(CONFIG_RTL8192F)
2556+ if (IS_HARDWARE_TYPE_8192FE(pAdapter))
2557+ return (IS_MASKED(8192F, _MPCIE, Offset)) ? TRUE : FALSE;
2558+#endif
2559+#endif /*CONFIG_PCI_HCI*/
2560+
2561+#ifdef CONFIG_SDIO_HCI
2562+#ifdef CONFIG_RTL8188E_SDIO
2563+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2564+ return (IS_MASKED(8188E, _MSDIO, Offset)) ? TRUE : FALSE;
2565+#endif
2566+#ifdef CONFIG_RTL8723B
2567+ if (IS_HARDWARE_TYPE_8723BS(pAdapter))
2568+ return (IS_MASKED(8723B, _MSDIO, Offset)) ? TRUE : FALSE;
2569+#endif
2570+#ifdef CONFIG_RTL8188F
2571+ if (IS_HARDWARE_TYPE_8188F(pAdapter))
2572+ return (IS_MASKED(8188F, _MSDIO, Offset)) ? TRUE : FALSE;
2573+#endif
2574+#ifdef CONFIG_RTL8188GTV
2575+ if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
2576+ return (IS_MASKED(8188GTV, _MSDIO, Offset)) ? TRUE : FALSE;
2577+#endif
2578+#ifdef CONFIG_RTL8192E
2579+ if (IS_HARDWARE_TYPE_8192ES(pAdapter))
2580+ return (IS_MASKED(8192E, _MSDIO, Offset)) ? TRUE : FALSE;
2581+#endif
2582+#if defined(CONFIG_RTL8821A)
2583+ if (IS_HARDWARE_TYPE_8821S(pAdapter))
2584+ return (IS_MASKED(8821A, _MSDIO, Offset)) ? TRUE : FALSE;
2585+#endif
2586+#if defined(CONFIG_RTL8821C)
2587+ if (IS_HARDWARE_TYPE_8821CS(pAdapter))
2588+ return (IS_MASKED(8821C, _MSDIO, Offset)) ? TRUE : FALSE;
2589+#endif
2590+#if defined(CONFIG_RTL8822B)
2591+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2592+ return (IS_MASKED(8822B, _MSDIO, Offset)) ? TRUE : FALSE;
2593+#endif
2594+#if defined(CONFIG_RTL8192F)
2595+ if (IS_HARDWARE_TYPE_8192FS(pAdapter))
2596+ return (IS_MASKED(8192F, _MSDIO, Offset)) ? TRUE : FALSE;
2597+#endif
2598+#endif /*CONFIG_SDIO_HCI*/
2599
2600 return FALSE;
2601 }
2602
2603 void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray)
2604 {
2605- GET_MASK_ARRAY(8821C, _MPCIE, pArray);
2606+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
2607+
2608+#ifdef CONFIG_USB_HCI
2609+#if defined(CONFIG_RTL8188E)
2610+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2611+ GET_MASK_ARRAY(8188E, _MUSB, pArray);
2612+#endif
2613+#if defined(CONFIG_RTL8812A)
2614+ if (IS_HARDWARE_TYPE_8812(pAdapter))
2615+ GET_MASK_ARRAY(8812A, _MUSB, pArray);
2616+#endif
2617+#if defined(CONFIG_RTL8821A)
2618+ if (IS_HARDWARE_TYPE_8821(pAdapter))
2619+ GET_MASK_ARRAY(8821A, _MUSB, pArray);
2620+#endif
2621+#if defined(CONFIG_RTL8192E)
2622+ if (IS_HARDWARE_TYPE_8192E(pAdapter))
2623+ GET_MASK_ARRAY(8192E, _MUSB, pArray);
2624+#endif
2625+#if defined(CONFIG_RTL8723B)
2626+ if (IS_HARDWARE_TYPE_8723B(pAdapter))
2627+ GET_MASK_ARRAY(8723B, _MUSB, pArray);
2628+#endif
2629+#if defined(CONFIG_RTL8703B)
2630+ if (IS_HARDWARE_TYPE_8703B(pAdapter))
2631+ GET_MASK_ARRAY(8703B, _MUSB, pArray);
2632+#endif
2633+#if defined(CONFIG_RTL8188F)
2634+ if (IS_HARDWARE_TYPE_8188F(pAdapter))
2635+ GET_MASK_ARRAY(8188F, _MUSB, pArray);
2636+#endif
2637+#if defined(CONFIG_RTL8188GTV)
2638+ if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
2639+ GET_MASK_ARRAY(8188GTV, _MUSB, pArray);
2640+#endif
2641+#if defined(CONFIG_RTL8814A)
2642+ if (IS_HARDWARE_TYPE_8814A(pAdapter))
2643+ GET_MASK_ARRAY(8814A, _MUSB, pArray);
2644+#endif
2645+#if defined(CONFIG_RTL8822B)
2646+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2647+ GET_MASK_ARRAY(8822B, _MUSB, pArray);
2648+#endif
2649+#if defined(CONFIG_RTL8821C)
2650+ if (IS_HARDWARE_TYPE_8821CU(pAdapter))
2651+ GET_MASK_ARRAY(8821C, _MUSB, pArray);
2652+#endif
2653+#if defined(CONFIG_RTL8192F)
2654+ if (IS_HARDWARE_TYPE_8192FU(pAdapter))
2655+ GET_MASK_ARRAY(8192F, _MUSB, pArray);
2656+#endif
2657+#endif /*CONFIG_USB_HCI*/
2658+
2659+#ifdef CONFIG_PCI_HCI
2660+#if defined(CONFIG_RTL8188E)
2661+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2662+ GET_MASK_ARRAY(8188E, _MPCIE, pArray);
2663+#endif
2664+#if defined(CONFIG_RTL8192E)
2665+ if (IS_HARDWARE_TYPE_8192E(pAdapter))
2666+ GET_MASK_ARRAY(8192E, _MPCIE, pArray);
2667+#endif
2668+#if defined(CONFIG_RTL8812A)
2669+ if (IS_HARDWARE_TYPE_8812(pAdapter))
2670+ GET_MASK_ARRAY(8812A, _MPCIE, pArray);
2671+#endif
2672+#if defined(CONFIG_RTL8821A)
2673+ if (IS_HARDWARE_TYPE_8821(pAdapter))
2674+ GET_MASK_ARRAY(8821A, _MPCIE, pArray);
2675+#endif
2676+#if defined(CONFIG_RTL8723B)
2677+ if (IS_HARDWARE_TYPE_8723B(pAdapter))
2678+ GET_MASK_ARRAY(8723B, _MPCIE, pArray);
2679+#endif
2680+#if defined(CONFIG_RTL8814A)
2681+ if (IS_HARDWARE_TYPE_8814A(pAdapter))
2682+ GET_MASK_ARRAY(8814A, _MPCIE, pArray);
2683+#endif
2684+#if defined(CONFIG_RTL8822B)
2685+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2686+ GET_MASK_ARRAY(8822B, _MPCIE, pArray);
2687+#endif
2688+#if defined(CONFIG_RTL8821C)
2689+ if (IS_HARDWARE_TYPE_8821CE(pAdapter))
2690+ GET_MASK_ARRAY(8821C, _MPCIE, pArray);
2691+#endif
2692+#if defined(CONFIG_RTL8192F)
2693+ if (IS_HARDWARE_TYPE_8192FE(pAdapter))
2694+ GET_MASK_ARRAY(8192F, _MPCIE, pArray);
2695+#endif
2696+#endif /*CONFIG_PCI_HCI*/
2697+
2698+#ifdef CONFIG_SDIO_HCI
2699+#if defined(CONFIG_RTL8188E)
2700+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2701+ GET_MASK_ARRAY(8188E, _MSDIO, pArray);
2702+#endif
2703+#if defined(CONFIG_RTL8723B)
2704+ if (IS_HARDWARE_TYPE_8723BS(pAdapter))
2705+ GET_MASK_ARRAY(8723B, _MSDIO, pArray);
2706+#endif
2707+#if defined(CONFIG_RTL8188F)
2708+ if (IS_HARDWARE_TYPE_8188F(pAdapter))
2709+ GET_MASK_ARRAY(8188F, _MSDIO, pArray);
2710+#endif
2711+#if defined(CONFIG_RTL8188GTV)
2712+ if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
2713+ GET_MASK_ARRAY(8188GTV, _MSDIO, pArray);
2714+#endif
2715+#if defined(CONFIG_RTL8192E)
2716+ if (IS_HARDWARE_TYPE_8192ES(pAdapter))
2717+ GET_MASK_ARRAY(8192E, _MSDIO, pArray);
2718+#endif
2719+#if defined(CONFIG_RTL8821A)
2720+ if (IS_HARDWARE_TYPE_8821S(pAdapter))
2721+ GET_MASK_ARRAY(8821A, _MSDIO, pArray);
2722+#endif
2723+#if defined(CONFIG_RTL8821C)
2724+ if (IS_HARDWARE_TYPE_8821CS(pAdapter))
2725+ GET_MASK_ARRAY(8821C , _MSDIO, pArray);
2726+#endif
2727+#if defined(CONFIG_RTL8822B)
2728+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2729+ GET_MASK_ARRAY(8822B , _MSDIO, pArray);
2730+#endif
2731+#if defined(CONFIG_RTL8192F)
2732+ if (IS_HARDWARE_TYPE_8192FS(pAdapter))
2733+ GET_MASK_ARRAY(8192F, _MSDIO, pArray);
2734+#endif
2735+#endif /*CONFIG_SDIO_HCI*/
2736 }
2737
2738 u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter)
2739 {
2740- return GET_MASK_ARRAY_LEN(8821C, _MPCIE);
2741+ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
2742+
2743+#ifdef CONFIG_USB_HCI
2744+#if defined(CONFIG_RTL8188E)
2745+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2746+ return GET_MASK_ARRAY_LEN(8188E, _MUSB);
2747+#endif
2748+#if defined(CONFIG_RTL8812A)
2749+ if (IS_HARDWARE_TYPE_8812(pAdapter))
2750+ return GET_MASK_ARRAY_LEN(8812A, _MUSB);
2751+#endif
2752+#if defined(CONFIG_RTL8821A)
2753+ if (IS_HARDWARE_TYPE_8821(pAdapter))
2754+ return GET_MASK_ARRAY_LEN(8821A, _MUSB);
2755+#endif
2756+#if defined(CONFIG_RTL8192E)
2757+ if (IS_HARDWARE_TYPE_8192E(pAdapter))
2758+ return GET_MASK_ARRAY_LEN(8192E, _MUSB);
2759+#endif
2760+#if defined(CONFIG_RTL8723B)
2761+ if (IS_HARDWARE_TYPE_8723B(pAdapter))
2762+ return GET_MASK_ARRAY_LEN(8723B, _MUSB);
2763+#endif
2764+#if defined(CONFIG_RTL8703B)
2765+ if (IS_HARDWARE_TYPE_8703B(pAdapter))
2766+ return GET_MASK_ARRAY_LEN(8703B, _MUSB);
2767+#endif
2768+#if defined(CONFIG_RTL8188F)
2769+ if (IS_HARDWARE_TYPE_8188F(pAdapter))
2770+ return GET_MASK_ARRAY_LEN(8188F, _MUSB);
2771+#endif
2772+#if defined(CONFIG_RTL8188GTV)
2773+ if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
2774+ return GET_MASK_ARRAY_LEN(8188GTV, _MUSB);
2775+#endif
2776+#if defined(CONFIG_RTL8814A)
2777+ if (IS_HARDWARE_TYPE_8814A(pAdapter))
2778+ return GET_MASK_ARRAY_LEN(8814A, _MUSB);
2779+#endif
2780+#if defined(CONFIG_RTL8822B)
2781+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2782+ return GET_MASK_ARRAY_LEN(8822B, _MUSB);
2783+#endif
2784+#if defined(CONFIG_RTL8821C)
2785+ if (IS_HARDWARE_TYPE_8821CU(pAdapter))
2786+ return GET_MASK_ARRAY_LEN(8821C, _MUSB);
2787+#endif
2788+#if defined(CONFIG_RTL8192F)
2789+ if (IS_HARDWARE_TYPE_8192FU(pAdapter))
2790+ return GET_MASK_ARRAY_LEN(8192F, _MUSB);
2791+#endif
2792+#endif /*CONFIG_USB_HCI*/
2793+
2794+#ifdef CONFIG_PCI_HCI
2795+#if defined(CONFIG_RTL8188E)
2796+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2797+ return GET_MASK_ARRAY_LEN(8188E, _MPCIE);
2798+#endif
2799+#if defined(CONFIG_RTL8192E)
2800+ if (IS_HARDWARE_TYPE_8192E(pAdapter))
2801+ return GET_MASK_ARRAY_LEN(8192E, _MPCIE);
2802+#endif
2803+#if defined(CONFIG_RTL8812A)
2804+ if (IS_HARDWARE_TYPE_8812(pAdapter))
2805+ return GET_MASK_ARRAY_LEN(8812A, _MPCIE);
2806+#endif
2807+#if defined(CONFIG_RTL8821A)
2808+ if (IS_HARDWARE_TYPE_8821(pAdapter))
2809+ return GET_MASK_ARRAY_LEN(8821A, _MPCIE);
2810+#endif
2811+#if defined(CONFIG_RTL8723B)
2812+ if (IS_HARDWARE_TYPE_8723B(pAdapter))
2813+ return GET_MASK_ARRAY_LEN(8723B, _MPCIE);
2814+#endif
2815+#if defined(CONFIG_RTL8814A)
2816+ if (IS_HARDWARE_TYPE_8814A(pAdapter))
2817+ return GET_MASK_ARRAY_LEN(8814A, _MPCIE);
2818+#endif
2819+#if defined(CONFIG_RTL8822B)
2820+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2821+ return GET_MASK_ARRAY_LEN(8822B, _MPCIE);
2822+#endif
2823+#if defined(CONFIG_RTL8821C)
2824+ if (IS_HARDWARE_TYPE_8821CE(pAdapter))
2825+ return GET_MASK_ARRAY_LEN(8821C, _MPCIE);
2826+#endif
2827+#if defined(CONFIG_RTL8192F)
2828+ if (IS_HARDWARE_TYPE_8192FE(pAdapter))
2829+ return GET_MASK_ARRAY_LEN(8192F, _MPCIE);
2830+#endif
2831+#endif /*CONFIG_PCI_HCI*/
2832+
2833+#ifdef CONFIG_SDIO_HCI
2834+#if defined(CONFIG_RTL8188E)
2835+ if (IS_HARDWARE_TYPE_8188E(pAdapter))
2836+ return GET_MASK_ARRAY_LEN(8188E, _MSDIO);
2837+#endif
2838+#if defined(CONFIG_RTL8723B)
2839+ if (IS_HARDWARE_TYPE_8723BS(pAdapter))
2840+ return GET_MASK_ARRAY_LEN(8723B, _MSDIO);
2841+#endif
2842+#if defined(CONFIG_RTL8188F)
2843+ if (IS_HARDWARE_TYPE_8188F(pAdapter))
2844+ return GET_MASK_ARRAY_LEN(8188F, _MSDIO);
2845+#endif
2846+#if defined(CONFIG_RTL8188GTV)
2847+ if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
2848+ return GET_MASK_ARRAY_LEN(8188GTV, _MSDIO);
2849+#endif
2850+#if defined(CONFIG_RTL8192E)
2851+ if (IS_HARDWARE_TYPE_8192ES(pAdapter))
2852+ return GET_MASK_ARRAY_LEN(8192E, _MSDIO);
2853+#endif
2854+#if defined(CONFIG_RTL8821A)
2855+ if (IS_HARDWARE_TYPE_8821S(pAdapter))
2856+ return GET_MASK_ARRAY_LEN(8821A, _MSDIO);
2857+#endif
2858+#if defined(CONFIG_RTL8821C)
2859+ if (IS_HARDWARE_TYPE_8821CS(pAdapter))
2860+ return GET_MASK_ARRAY_LEN(8821C, _MSDIO);
2861+#endif
2862+#if defined(CONFIG_RTL8822B)
2863+ if (IS_HARDWARE_TYPE_8822B(pAdapter))
2864+ return GET_MASK_ARRAY_LEN(8822B, _MSDIO);
2865+#endif
2866+#if defined(CONFIG_RTL8192F)
2867+ if (IS_HARDWARE_TYPE_8192FS(pAdapter))
2868+ return GET_MASK_ARRAY_LEN(8192F, _MSDIO);
2869+#endif
2870+#endif/*CONFIG_SDIO_HCI*/
2871+ return 0;
2872+}
2873+
2874+static void rtw_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
2875+{
2876+ u16 i = 0;
2877+
2878+ if (padapter->registrypriv.boffefusemask == 0) {
2879+
2880+ for (i = 0; i < cnts; i++) {
2881+ if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {
2882+ if (rtw_file_efuse_IsMasked(padapter, addr + i)) /*use file efuse mask.*/
2883+ data[i] = 0xff;
2884+ } else {
2885+ /*RTW_INFO(" %s , data[%d] = %x\n", __func__, i, data[i]);*/
2886+ if (efuse_IsMasked(padapter, addr + i)) {
2887+ data[i] = 0xff;
2888+ /*RTW_INFO(" %s ,mask data[%d] = %x\n", __func__, i, data[i]);*/
2889+ }
2890+ }
2891+ }
2892+
2893+ }
2894 }
2895
2896 u8 rtw_efuse_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
2897 {
2898 u8 ret = _SUCCESS;
2899- u16 mapLen = 0, i = 0;
2900+ u16 mapLen = 0;
2901
2902 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
2903
2904 ret = rtw_efuse_map_read(padapter, addr, cnts , data);
2905
2906- if (padapter->registrypriv.boffefusemask == 0) {
2907+ rtw_mask_map_read(padapter, addr, cnts , data);
2908
2909- for (i = 0; i < cnts; i++) {
2910- if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {
2911- if (rtw_file_efuse_IsMasked(padapter, addr + i)) /*use file efuse mask.*/
2912- data[i] = 0xff;
2913+ return ret;
2914+
2915+}
2916+
2917+/* ***********************************************************
2918+ * Efuse related code
2919+ * *********************************************************** */
2920+static u8 hal_EfuseSwitchToBank(
2921+ PADAPTER padapter,
2922+ u8 bank,
2923+ u8 bPseudoTest)
2924+{
2925+ u8 bRet = _FALSE;
2926+ u32 value32 = 0;
2927+#ifdef HAL_EFUSE_MEMORY
2928+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
2929+ PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
2930+#endif
2931+
2932+
2933+ RTW_INFO("%s: Efuse switch bank to %d\n", __FUNCTION__, bank);
2934+ if (bPseudoTest) {
2935+#ifdef HAL_EFUSE_MEMORY
2936+ pEfuseHal->fakeEfuseBank = bank;
2937+#else
2938+ fakeEfuseBank = bank;
2939+#endif
2940+ bRet = _TRUE;
2941+ } else {
2942+ value32 = rtw_read32(padapter, 0x34);
2943+ bRet = _TRUE;
2944+ switch (bank) {
2945+ case 0:
2946+ value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
2947+ break;
2948+ case 1:
2949+ value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_0);
2950+ break;
2951+ case 2:
2952+ value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_1);
2953+ break;
2954+ case 3:
2955+ value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_2);
2956+ break;
2957+ default:
2958+ value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
2959+ bRet = _FALSE;
2960+ break;
2961+ }
2962+ rtw_write32(padapter, 0x34, value32);
2963+ }
2964+
2965+ return bRet;
2966+}
2967+
2968+void rtw_efuse_analyze(PADAPTER padapter, u8 Type, u8 Fake)
2969+{
2970+ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
2971+ PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal);
2972+ u16 eFuse_Addr = 0;
2973+ u8 offset, wden;
2974+ u16 i, j;
2975+ u8 u1temp = 0;
2976+ u8 efuseHeader = 0, efuseExtHdr = 0, efuseData[EFUSE_MAX_WORD_UNIT*2] = {0}, dataCnt = 0;
2977+ u16 efuseHeader2Byte = 0;
2978+ u8 *eFuseWord = NULL;// [EFUSE_MAX_SECTION_NUM][EFUSE_MAX_WORD_UNIT];
2979+ u8 offset_2_0 = 0;
2980+ u8 pgSectionCnt = 0;
2981+ u8 wd_cnt = 0;
2982+ u8 max_section = 64;
2983+ u16 mapLen = 0, maprawlen = 0;
2984+ boolean bExtHeader = _FALSE;
2985+ u8 efuseType = EFUSE_WIFI;
2986+ boolean bPseudoTest = _FALSE;
2987+ u8 bank = 0, startBank = 0, endBank = 1-1;
2988+ boolean bCheckNextBank = FALSE;
2989+ u8 protectBytesBank = 0;
2990+ u16 efuse_max = 0;
2991+ u8 ParseEfuseExtHdr, ParseEfuseHeader, ParseOffset, ParseWDEN, ParseOffset2_0;
2992+
2993+ eFuseWord = rtw_zmalloc(EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
2994+
2995+ RTW_INFO("\n");
2996+ if (Type == 0) {
2997+ if (Fake == 0) {
2998+ RTW_INFO("\n\tEFUSE_Analyze Wifi Content\n");
2999+ efuseType = EFUSE_WIFI;
3000+ bPseudoTest = FALSE;
3001+ startBank = 0;
3002+ endBank = 0;
3003+ } else {
3004+ RTW_INFO("\n\tEFUSE_Analyze Wifi Pseudo Content\n");
3005+ efuseType = EFUSE_WIFI;
3006+ bPseudoTest = TRUE;
3007+ startBank = 0;
3008+ endBank = 0;
3009+ }
3010+ } else {
3011+ if (Fake == 0) {
3012+ RTW_INFO("\n\tEFUSE_Analyze BT Content\n");
3013+ efuseType = EFUSE_BT;
3014+ bPseudoTest = FALSE;
3015+ startBank = 1;
3016+ endBank = EFUSE_MAX_BANK - 1;
3017+ } else {
3018+ RTW_INFO("\n\tEFUSE_Analyze BT Pseudo Content\n");
3019+ efuseType = EFUSE_BT;
3020+ bPseudoTest = TRUE;
3021+ startBank = 1;
3022+ endBank = EFUSE_MAX_BANK - 1;
3023+ if (IS_HARDWARE_TYPE_8821(padapter))
3024+ endBank = 3 - 1;/*EFUSE_MAX_BANK_8821A - 1;*/
3025+ }
3026+ }
3027+
3028+ RTW_INFO("\n\r 1Byte header, [7:4]=offset, [3:0]=word enable\n");
3029+ RTW_INFO("\n\r 2Byte header, header[7:5]=offset[2:0], header[4:0]=0x0F\n");
3030+ RTW_INFO("\n\r 2Byte header, extHeader[7:4]=offset[6:3], extHeader[3:0]=word enable\n");
3031+
3032+ EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);
3033+ EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_MAX_SECTION, (PVOID)&max_section, bPseudoTest);
3034+ EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_PROTECT_BYTES_BANK, (PVOID)&protectBytesBank, bPseudoTest);
3035+ EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, (PVOID)&efuse_max, bPseudoTest);
3036+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&maprawlen, _FALSE);
3037+
3038+ _rtw_memset(eFuseWord, 0xff, EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
3039+ _rtw_memset(pEfuseHal->fakeEfuseInitMap, 0xff, EFUSE_MAX_MAP_LEN);
3040+
3041+ if (IS_HARDWARE_TYPE_8821(padapter))
3042+ endBank = 3 - 1;/*EFUSE_MAX_BANK_8821A - 1;*/
3043+
3044+ for (bank = startBank; bank <= endBank; bank++) {
3045+ if (!hal_EfuseSwitchToBank(padapter, bank, bPseudoTest)) {
3046+ RTW_INFO("EFUSE_SwitchToBank() Fail!!\n");
3047+ return;
3048+ }
3049+
3050+ eFuse_Addr = bank * EFUSE_MAX_BANK_SIZE;
3051+
3052+ efuse_OneByteRead(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
3053+
3054+ if (efuseHeader == 0xFF && bank == startBank && Fake != TRUE) {
3055+ RTW_INFO("Non-PGed Efuse\n");
3056+ return;
3057+ }
3058+ RTW_INFO("EFUSE_REAL_CONTENT_LEN = %d\n", maprawlen);
3059+
3060+ while ((efuseHeader != 0xFF) && ((efuseType == EFUSE_WIFI && (eFuse_Addr < maprawlen)) || (efuseType == EFUSE_BT && (eFuse_Addr < (endBank + 1) * EFUSE_MAX_BANK_SIZE)))) {
3061+
3062+ RTW_INFO("Analyzing: Offset: 0x%X\n", eFuse_Addr);
3063+
3064+ /* Check PG header for section num.*/
3065+ if (EXT_HEADER(efuseHeader)) {
3066+ bExtHeader = TRUE;
3067+ offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader);
3068+ efuse_OneByteRead(padapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest);
3069+
3070+ if (efuseExtHdr != 0xff) {
3071+ if (ALL_WORDS_DISABLED(efuseExtHdr)) {
3072+ /* Read next pg header*/
3073+ efuse_OneByteRead(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
3074+ continue;
3075+ } else {
3076+ offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0;
3077+ wden = (efuseExtHdr & 0x0F);
3078+ efuseHeader2Byte = (efuseExtHdr<<8)|efuseHeader;
3079+ RTW_INFO("Find efuseHeader2Byte = 0x%04X, offset=%d, wden=0x%x\n",
3080+ efuseHeader2Byte, offset, wden);
3081+ }
3082+ } else {
3083+ RTW_INFO("Error, efuse[%d]=0xff, efuseExtHdr=0xff\n", eFuse_Addr-1);
3084+ break;
3085+ }
3086+ } else {
3087+ offset = ((efuseHeader >> 4) & 0x0f);
3088+ wden = (efuseHeader & 0x0f);
3089+ }
3090+
3091+ _rtw_memset(efuseData, '\0', EFUSE_MAX_WORD_UNIT * 2);
3092+ dataCnt = 0;
3093+
3094+ if (offset < max_section) {
3095+ for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
3096+ /* Check word enable condition in the section */
3097+ if (!(wden & (0x01<<i))) {
3098+ if (!((efuseType == EFUSE_WIFI && (eFuse_Addr + 2 < maprawlen)) ||
3099+ (efuseType == EFUSE_BT && (eFuse_Addr + 2 < (endBank + 1) * EFUSE_MAX_BANK_SIZE)))) {
3100+ RTW_INFO("eFuse_Addr exceeds, break\n");
3101+ break;
3102+ }
3103+ efuse_OneByteRead(padapter, eFuse_Addr++, &efuseData[dataCnt++], bPseudoTest);
3104+ eFuseWord[(offset * 8) + (i * 2)] = (efuseData[dataCnt - 1]);
3105+ efuse_OneByteRead(padapter, eFuse_Addr++, &efuseData[dataCnt++], bPseudoTest);
3106+ eFuseWord[(offset * 8) + (i * 2 + 1)] = (efuseData[dataCnt - 1]);
3107+ }
3108+ }
3109+ }
3110+
3111+ if (bExtHeader) {
3112+ RTW_INFO("Efuse PG Section (%d) = ", pgSectionCnt);
3113+ RTW_INFO("[ %04X ], [", efuseHeader2Byte);
3114+
3115+ } else {
3116+ RTW_INFO("Efuse PG Section (%d) = ", pgSectionCnt);
3117+ RTW_INFO("[ %02X ], [", efuseHeader);
3118+ }
3119+
3120+ for (j = 0; j < dataCnt; j++)
3121+ RTW_INFO(" %02X ", efuseData[j]);
3122+
3123+ RTW_INFO("]\n");
3124+
3125+
3126+ if (bExtHeader) {
3127+ ParseEfuseExtHdr = (efuseHeader2Byte & 0xff00) >> 8;
3128+ ParseEfuseHeader = (efuseHeader2Byte & 0xff);
3129+ ParseOffset2_0 = GET_HDR_OFFSET_2_0(ParseEfuseHeader);
3130+ ParseOffset = ((ParseEfuseExtHdr & 0xF0) >> 1) | ParseOffset2_0;
3131+ ParseWDEN = (ParseEfuseExtHdr & 0x0F);
3132+ RTW_INFO("Header=0x%x, ExtHeader=0x%x, ", ParseEfuseHeader, ParseEfuseExtHdr);
3133 } else {
3134- /*RTW_INFO(" %s , data[%d] = %x\n", __func__, i, data[i]);*/
3135- if (efuse_IsMasked(padapter, addr + i)) {
3136- data[i] = 0xff;
3137- /*RTW_INFO(" %s ,mask data[%d] = %x\n", __func__, i, data[i]);*/
3138+ ParseEfuseHeader = efuseHeader;
3139+ ParseOffset = ((ParseEfuseHeader >> 4) & 0x0f);
3140+ ParseWDEN = (ParseEfuseHeader & 0x0f);
3141+ RTW_INFO("Header=0x%x, ", ParseEfuseHeader);
3142+ }
3143+ RTW_INFO("offset=0x%x(%d), word enable=0x%x\n", ParseOffset, ParseOffset, ParseWDEN);
3144+
3145+ wd_cnt = 0;
3146+ for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
3147+ if (!(wden & (0x01 << i))) {
3148+ RTW_INFO("Map[ %02X ] = %02X %02X\n", ((offset * EFUSE_MAX_WORD_UNIT * 2) + (i * 2)), efuseData[wd_cnt * 2 + 0], efuseData[wd_cnt * 2 + 1]);
3149+ wd_cnt++;
3150 }
3151 }
3152- }
3153
3154+ pgSectionCnt++;
3155+ bExtHeader = FALSE;
3156+ efuse_OneByteRead(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
3157+ if (efuseHeader == 0xFF) {
3158+ if ((eFuse_Addr + protectBytesBank) >= efuse_max)
3159+ bCheckNextBank = TRUE;
3160+ else
3161+ bCheckNextBank = FALSE;
3162+ }
3163+ }
3164+ if (!bCheckNextBank) {
3165+ RTW_INFO("Not need to check next bank, eFuse_Addr=%d, protectBytesBank=%d, efuse_max=%d\n",
3166+ eFuse_Addr, protectBytesBank, efuse_max);
3167+ break;
3168+ }
3169 }
3170- return ret;
3171+ /* switch bank back to 0 for BT/wifi later use*/
3172+ hal_EfuseSwitchToBank(padapter, 0, bPseudoTest);
3173+
3174+ /* 3. Collect 16 sections and 4 word unit into Efuse map.*/
3175+ for (i = 0; i < max_section; i++) {
3176+ for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) {
3177+ pEfuseHal->fakeEfuseInitMap[(i*8)+(j*2)] = (eFuseWord[(i*8)+(j*2)]);
3178+ pEfuseHal->fakeEfuseInitMap[(i*8)+((j*2)+1)] = (eFuseWord[(i*8)+((j*2)+1)]);
3179+ }
3180+ }
3181+
3182+ RTW_INFO("\n\tEFUSE Analyze Map\n");
3183+ i = 0;
3184+ j = 0;
3185+
3186+ for (i = 0; i < mapLen; i++) {
3187+ if (i % 16 == 0)
3188+ RTW_PRINT_SEL(RTW_DBGDUMP, "0x%03x: ", i);
3189+ _RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s"
3190+ , pEfuseHal->fakeEfuseInitMap[i]
3191+ , ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? " " : " ")
3192+ );
3193+ }
3194+ _RTW_PRINT_SEL(RTW_DBGDUMP, "\n");
3195+ if (eFuseWord)
3196+ rtw_mfree((u8 *)eFuseWord, EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
3197+}
3198+
3199+VOID efuse_PreUpdateAction(
3200+ PADAPTER pAdapter,
3201+ pu4Byte BackupRegs)
3202+{
3203+ if (IS_HARDWARE_TYPE_8812AU(pAdapter) || IS_HARDWARE_TYPE_8822BU(pAdapter)) {
3204+ /* <20131115, Kordan> Turn off Rx to prevent from being busy when writing the EFUSE. (Asked by Chunchu.)*/
3205+ BackupRegs[0] = phy_query_mac_reg(pAdapter, REG_RCR, bMaskDWord);
3206+ BackupRegs[1] = phy_query_mac_reg(pAdapter, REG_RXFLTMAP0, bMaskDWord);
3207+ BackupRegs[2] = phy_query_mac_reg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord);
3208+#ifdef CONFIG_RTL8812A
3209+ BackupRegs[3] = phy_query_mac_reg(pAdapter, REG_AFE_MISC, bMaskDWord);
3210+#endif
3211+ PlatformEFIOWrite4Byte(pAdapter, REG_RCR, 0x1);
3212+ PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0, 0);
3213+ PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+1, 0);
3214+ PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+2, 0);
3215+ PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+3, 0);
3216+ PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+4, 0);
3217+ PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+5, 0);
3218+#ifdef CONFIG_RTL8812A
3219+ /* <20140410, Kordan> 0x11 = 0x4E, lower down LX_SPS0 voltage. (Asked by Chunchu)*/
3220+ phy_set_mac_reg(pAdapter, REG_AFE_MISC, bMaskByte1, 0x4E);
3221+#endif
3222+ RTW_INFO(" %s , done\n", __func__);
3223+
3224+ }
3225+}
3226+
3227
3228+VOID efuse_PostUpdateAction(
3229+ PADAPTER pAdapter,
3230+ pu4Byte BackupRegs)
3231+{
3232+ if (IS_HARDWARE_TYPE_8812AU(pAdapter) || IS_HARDWARE_TYPE_8822BU(pAdapter)) {
3233+ /* <20131115, Kordan> Turn on Rx and restore the registers. (Asked by Chunchu.)*/
3234+ phy_set_mac_reg(pAdapter, REG_RCR, bMaskDWord, BackupRegs[0]);
3235+ phy_set_mac_reg(pAdapter, REG_RXFLTMAP0, bMaskDWord, BackupRegs[1]);
3236+ phy_set_mac_reg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord, BackupRegs[2]);
3237+#ifdef CONFIG_RTL8812A
3238+ phy_set_mac_reg(pAdapter, REG_AFE_MISC, bMaskDWord, BackupRegs[3]);
3239+#endif
3240+ RTW_INFO(" %s , done\n", __func__);
3241+ }
3242 }
3243
3244+
3245+#ifdef RTW_HALMAC
3246 #include "../../hal/hal_halmac.h"
3247
3248+void Efuse_PowerSwitch(PADAPTER adapter, u8 write, u8 pwrstate)
3249+{
3250+}
3251+
3252 void BTEfuse_PowerSwitch(PADAPTER adapter, u8 write, u8 pwrstate)
3253 {
3254 }
3255
3256+u8 efuse_GetCurrentSize(PADAPTER adapter, u16 *size)
3257+{
3258+ *size = 0;
3259+
3260+ return _FAIL;
3261+}
3262+
3263+u16 efuse_GetMaxSize(PADAPTER adapter)
3264+{
3265+ struct dvobj_priv *d;
3266+ u32 size = 0;
3267+ int err;
3268+
3269+ d = adapter_to_dvobj(adapter);
3270+ err = rtw_halmac_get_physical_efuse_size(d, &size);
3271+ if (err)
3272+ return 0;
3273+
3274+ return size;
3275+}
3276+
3277 u16 efuse_GetavailableSize(PADAPTER adapter)
3278 {
3279 struct dvobj_priv *d;
3280@@ -130,6 +882,7 @@ u16 efuse_GetavailableSize(PADAPTER adapter)
3281 return size;
3282 }
3283
3284+
3285 u8 efuse_bt_GetCurrentSize(PADAPTER adapter, u16 *usesize)
3286 {
3287 u8 *efuse_map;
3288@@ -161,6 +914,7 @@ void EFUSE_GetEfuseDefinition(PADAPTER adapter, u8 efusetype, u8 type, void *out
3289 struct dvobj_priv *d;
3290 u32 v32 = 0;
3291
3292+
3293 d = adapter_to_dvobj(adapter);
3294
3295 if (adapter->hal_func.EFUSEGetEfuseDefinition) {
3296@@ -200,9 +954,10 @@ u8 rtw_efuse_access(PADAPTER adapter, u8 write, u16 addr, u16 cnts, u8 *data)
3297 {
3298 struct dvobj_priv *d;
3299 u8 *efuse = NULL;
3300- u32 size;
3301+ u32 size, i;
3302 int err;
3303
3304+
3305 d = adapter_to_dvobj(adapter);
3306 err = rtw_halmac_get_physical_efuse_size(d, &size);
3307 if (err)
3308@@ -255,9 +1010,10 @@ u8 rtw_efuse_bt_access(PADAPTER adapter, u8 write, u16 addr, u16 cnts, u8 *data)
3309 {
3310 struct dvobj_priv *d;
3311 u8 *efuse = NULL;
3312- u32 size;
3313+ u32 size, i;
3314 int err = _FAIL;
3315
3316+
3317 d = adapter_to_dvobj(adapter);
3318
3319 size = EFUSE_BT_REAL_CONTENT_LEN;
3320@@ -299,68 +1055,92 @@ u8 rtw_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
3321 {
3322 struct dvobj_priv *d;
3323 u8 *efuse = NULL;
3324- u32 size;
3325+ u32 size, i;
3326 int err;
3327+ u32 backupRegs[4] = {0};
3328+ u8 status = _SUCCESS;
3329+
3330+ efuse_PreUpdateAction(adapter, backupRegs);
3331
3332 d = adapter_to_dvobj(adapter);
3333 err = rtw_halmac_get_logical_efuse_size(d, &size);
3334- if (err)
3335- return _FAIL;
3336-
3337+ if (err) {
3338+ status = _FAIL;
3339+ goto exit;
3340+ }
3341 /* size error handle */
3342 if ((addr + cnts) > size) {
3343 if (addr < size)
3344 cnts = size - addr;
3345- else
3346- return _FAIL;
3347+ else {
3348+ status = _FAIL;
3349+ goto exit;
3350+ }
3351 }
3352
3353 if (cnts > 16)
3354 efuse = rtw_zmalloc(size);
3355
3356 if (efuse) {
3357- err = rtw_halmac_read_logical_efuse_map(d, efuse, size);
3358+ err = rtw_halmac_read_logical_efuse_map(d, efuse, size, NULL, 0);
3359 if (err) {
3360 rtw_mfree(efuse, size);
3361- return _FAIL;
3362+ status = _FAIL;
3363+ goto exit;
3364 }
3365
3366 _rtw_memcpy(data, efuse + addr, cnts);
3367 rtw_mfree(efuse, size);
3368 } else {
3369 err = rtw_halmac_read_logical_efuse(d, addr, cnts, data);
3370- if (err)
3371- return _FAIL;
3372+ if (err) {
3373+ status = _FAIL;
3374+ goto exit;
3375+ }
3376 }
3377+ status = _SUCCESS;
3378+exit:
3379+ efuse_PostUpdateAction(adapter, backupRegs);
3380
3381- return _SUCCESS;
3382+ return status;
3383 }
3384
3385 u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
3386 {
3387 struct dvobj_priv *d;
3388 u8 *efuse = NULL;
3389- u32 size;
3390+ u32 size, i;
3391 int err;
3392 u8 mask_buf[64] = "";
3393 u16 mask_len = sizeof(u8) * rtw_get_efuse_mask_arraylen(adapter);
3394+ u32 backupRegs[4] = {0};
3395+ u8 status = _SUCCESS;;
3396+
3397+ efuse_PreUpdateAction(adapter, backupRegs);
3398
3399 d = adapter_to_dvobj(adapter);
3400 err = rtw_halmac_get_logical_efuse_size(d, &size);
3401- if (err)
3402- return _FAIL;
3403+ if (err) {
3404+ status = _FAIL;
3405+ goto exit;
3406+ }
3407
3408- if ((addr + cnts) > size)
3409- return _FAIL;
3410+ if ((addr + cnts) > size) {
3411+ status = _FAIL;
3412+ goto exit;
3413+ }
3414
3415 efuse = rtw_zmalloc(size);
3416- if (!efuse)
3417- return _FAIL;
3418+ if (!efuse) {
3419+ status = _FAIL;
3420+ goto exit;
3421+ }
3422
3423- err = rtw_halmac_read_logical_efuse_map(d, efuse, size);
3424+ err = rtw_halmac_read_logical_efuse_map(d, efuse, size, NULL, 0);
3425 if (err) {
3426 rtw_mfree(efuse, size);
3427- return _FAIL;
3428+ status = _FAIL;
3429+ goto exit;
3430 }
3431
3432 _rtw_memcpy(efuse + addr, data, cnts);
3433@@ -385,12 +1165,26 @@ u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
3434
3435 if (err) {
3436 rtw_mfree(efuse, size);
3437- return _FAIL;
3438+ status = _FAIL;
3439+ goto exit;
3440 }
3441
3442 rtw_mfree(efuse, size);
3443+ status = _SUCCESS;
3444+exit :
3445+ efuse_PostUpdateAction(adapter, backupRegs);
3446
3447- return _SUCCESS;
3448+ return status;
3449+}
3450+
3451+int Efuse_PgPacketRead(PADAPTER adapter, u8 offset, u8 *data, BOOLEAN test)
3452+{
3453+ return _FALSE;
3454+}
3455+
3456+int Efuse_PgPacketWrite(PADAPTER adapter, u8 offset, u8 word_en, u8 *data, BOOLEAN test)
3457+{
3458+ return _FALSE;
3459 }
3460
3461 u8 rtw_BT_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
3462@@ -479,6 +1273,10 @@ VOID hal_ReadEFuse_BT_logic_map(
3463 u8 *pbuf
3464 )
3465 {
3466+
3467+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
3468+ PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
3469+
3470 u8 *efuseTbl, *phyefuse;
3471 u8 bank;
3472 u16 eFuse_Addr = 0;
3473@@ -487,6 +1285,7 @@ VOID hal_ReadEFuse_BT_logic_map(
3474 u16 i, total, used;
3475 u8 efuse_usage;
3476
3477+
3478 /* */
3479 /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */
3480 /* */
3481@@ -604,6 +1403,7 @@ exit:
3482 rtw_mfree(phyefuse, EFUSE_BT_REAL_BANK_CONTENT_LEN);
3483 }
3484
3485+
3486 static u8 hal_EfusePartialWriteCheck(
3487 PADAPTER padapter,
3488 u8 efuseType,
3489@@ -611,6 +1411,8 @@ static u8 hal_EfusePartialWriteCheck(
3490 PPGPKT_STRUCT pTargetPkt,
3491 u8 bPseudoTest)
3492 {
3493+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
3494+ PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
3495 u8 bRet = _FALSE;
3496 u16 startAddr = 0, efuse_max_available_len = EFUSE_BT_REAL_BANK_CONTENT_LEN, efuse_max = EFUSE_BT_REAL_BANK_CONTENT_LEN;
3497 u8 efuse_data = 0;
3498@@ -644,6 +1446,7 @@ static u8 hal_EfusePartialWriteCheck(
3499 return bRet;
3500 }
3501
3502+
3503 static u8 hal_EfusePgPacketWrite2ByteHeader(
3504 PADAPTER padapter,
3505 u8 efuseType,
3506@@ -710,6 +1513,7 @@ static u8 hal_EfusePgPacketWrite2ByteHeader(
3507 return _TRUE;
3508 }
3509
3510+
3511 static u8 hal_EfusePgPacketWrite1ByteHeader(
3512 PADAPTER pAdapter,
3513 u8 efuseType,
3514@@ -717,10 +1521,12 @@ static u8 hal_EfusePgPacketWrite1ByteHeader(
3515 PPGPKT_STRUCT pTargetPkt,
3516 u8 bPseudoTest)
3517 {
3518+ u8 bRet = _FALSE;
3519 u8 pg_header = 0, tmp_header = 0;
3520 u16 efuse_addr = *pAddr;
3521 u8 repeatcnt = 0;
3522
3523+
3524 /* RTW_INFO("%s\n", __FUNCTION__); */
3525 pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en;
3526
3527@@ -763,6 +1569,7 @@ static u8 hal_EfusePgPacketWriteHeader(
3528 return bRet;
3529 }
3530
3531+
3532 static u8
3533 Hal_EfuseWordEnableDataWrite(
3534 PADAPTER padapter,
3535@@ -776,6 +1583,7 @@ Hal_EfuseWordEnableDataWrite(
3536 u8 badworden = 0x0F;
3537 u8 tmpdata[PGPKT_DATA_SIZE];
3538
3539+
3540 /* RTW_INFO("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en); */
3541 _rtw_memset(tmpdata, 0xFF, PGPKT_DATA_SIZE);
3542
3543@@ -856,50 +1664,384 @@ hal_EfusePgPacketWriteData(
3544 return _TRUE;
3545 }
3546
3547-/* ***********************************************************
3548- * Efuse related code
3549- * *********************************************************** */
3550-static u8
3551-hal_EfuseSwitchToBank(
3552- PADAPTER padapter,
3553- u8 bank,
3554- u8 bPseudoTest)
3555+u8 efuse_OneByteRead(struct _ADAPTER *a, u16 addr, u8 *data, u8 bPseudoTest)
3556 {
3557- u8 bRet = _FALSE;
3558- u32 value32 = 0;
3559+ struct dvobj_priv *d;
3560+ int err;
3561+ u8 ret = _TRUE;
3562
3563- RTW_INFO("%s: Efuse switch bank to %d\n", __FUNCTION__, bank);
3564- if (bPseudoTest) {
3565- fakeEfuseBank = bank;
3566- bRet = _TRUE;
3567- } else {
3568- value32 = rtw_read32(padapter, 0x34);
3569- bRet = _TRUE;
3570- switch (bank) {
3571- case 0:
3572- value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
3573- break;
3574- case 1:
3575- value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_0);
3576- break;
3577- case 2:
3578- value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_1);
3579- break;
3580- case 3:
3581- value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_2);
3582- break;
3583- default:
3584- value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
3585- bRet = _FALSE;
3586- break;
3587+ d = adapter_to_dvobj(a);
3588+ err = rtw_halmac_read_physical_efuse(d, addr, 1, data);
3589+ if (err) {
3590+ RTW_ERR("%s: addr=0x%x FAIL!!!\n", __FUNCTION__, addr);
3591+ ret = _FALSE;
3592 }
3593- rtw_write32(padapter, 0x34, value32);
3594- }
3595
3596- return bRet;
3597+ return ret;
3598+
3599+}
3600+
3601+static u16
3602+hal_EfuseGetCurrentSize_BT(
3603+ PADAPTER padapter,
3604+ u8 bPseudoTest)
3605+{
3606+#ifdef HAL_EFUSE_MEMORY
3607+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
3608+ PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
3609+#endif
3610+ u16 btusedbytes;
3611+ u16 efuse_addr;
3612+ u8 bank, startBank;
3613+ u8 hoffset = 0, hworden = 0;
3614+ u8 efuse_data, word_cnts = 0;
3615+ u16 retU2 = 0;
3616+ u8 bContinual = _TRUE;
3617+
3618+
3619+ btusedbytes = fakeBTEfuseUsedBytes;
3620+
3621+ efuse_addr = (u16)((btusedbytes % EFUSE_BT_REAL_BANK_CONTENT_LEN));
3622+ startBank = (u8)(1 + (btusedbytes / EFUSE_BT_REAL_BANK_CONTENT_LEN));
3623+
3624+ RTW_INFO("%s: start from bank=%d addr=0x%X\n", __FUNCTION__, startBank, efuse_addr);
3625+ retU2 = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
3626+
3627+ for (bank = startBank; bank < 3; bank++) {
3628+ if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == _FALSE) {
3629+ RTW_ERR("%s: switch bank(%d) Fail!!\n", __FUNCTION__, bank);
3630+ /* bank = EFUSE_MAX_BANK; */
3631+ break;
3632+ }
3633+
3634+ /* only when bank is switched we have to reset the efuse_addr. */
3635+ if (bank != startBank)
3636+ efuse_addr = 0;
3637+
3638+
3639+ while (AVAILABLE_EFUSE_ADDR(efuse_addr)) {
3640+ if (rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data) == _FALSE) {
3641+ RTW_ERR("%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
3642+ /* bank = EFUSE_MAX_BANK; */
3643+ break;
3644+ }
3645+ RTW_INFO("%s: efuse_OneByteRead ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
3646+
3647+ if (efuse_data == 0xFF)
3648+ break;
3649+
3650+ if (EXT_HEADER(efuse_data)) {
3651+ hoffset = GET_HDR_OFFSET_2_0(efuse_data);
3652+ efuse_addr++;
3653+ rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data);
3654+ RTW_INFO("%s: efuse_OneByteRead EXT_HEADER ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
3655+
3656+ if (ALL_WORDS_DISABLED(efuse_data)) {
3657+ efuse_addr++;
3658+ continue;
3659+ }
3660+
3661+ /* hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); */
3662+ hoffset |= ((efuse_data & 0xF0) >> 1);
3663+ hworden = efuse_data & 0x0F;
3664+ } else {
3665+ hoffset = (efuse_data >> 4) & 0x0F;
3666+ hworden = efuse_data & 0x0F;
3667+ }
3668+
3669+ RTW_INFO(FUNC_ADPT_FMT": Offset=%d Worden=%#X\n",
3670+ FUNC_ADPT_ARG(padapter), hoffset, hworden);
3671+
3672+ word_cnts = Efuse_CalculateWordCnts(hworden);
3673+ /* read next header */
3674+ efuse_addr += (word_cnts * 2) + 1;
3675+ }
3676+ /* Check if we need to check next bank efuse */
3677+ if (efuse_addr < retU2)
3678+ break;/* don't need to check next bank. */
3679+ }
3680+ retU2 = ((bank - 1) * EFUSE_BT_REAL_BANK_CONTENT_LEN) + efuse_addr;
3681+
3682+ fakeBTEfuseUsedBytes = retU2;
3683+ RTW_INFO("%s: CurrentSize=%d\n", __FUNCTION__, retU2);
3684+ return retU2;
3685+}
3686+
3687+
3688+static u8
3689+hal_BT_EfusePgCheckAvailableAddr(
3690+ PADAPTER pAdapter,
3691+ u8 bPseudoTest)
3692+{
3693+ u16 max_available = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
3694+ u16 current_size = 0;
3695+
3696+ RTW_INFO("%s: max_available=%d\n", __FUNCTION__, max_available);
3697+ current_size = hal_EfuseGetCurrentSize_BT(pAdapter, bPseudoTest);
3698+ if (current_size >= max_available) {
3699+ RTW_INFO("%s: Error!! current_size(%d)>max_available(%d)\n", __FUNCTION__, current_size, max_available);
3700+ return _FALSE;
3701+ }
3702+ return _TRUE;
3703+}
3704+
3705+u8 EfusePgPacketWrite_BT(
3706+ PADAPTER pAdapter,
3707+ u8 offset,
3708+ u8 word_en,
3709+ u8 *pData,
3710+ u8 bPseudoTest)
3711+{
3712+ PGPKT_STRUCT targetPkt;
3713+ u16 startAddr = 0;
3714+ u8 efuseType = EFUSE_BT;
3715+
3716+ if (!hal_BT_EfusePgCheckAvailableAddr(pAdapter, bPseudoTest))
3717+ return _FALSE;
3718+
3719+ hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt);
3720+
3721+ if (!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
3722+ return _FALSE;
3723+
3724+ if (!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
3725+ return _FALSE;
3726+
3727+ if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
3728+ return _FALSE;
3729+
3730+ return _TRUE;
3731+}
3732+
3733+
3734+#else /* !RTW_HALMAC */
3735+/* ------------------------------------------------------------------------------ */
3736+#define REG_EFUSE_CTRL 0x0030
3737+#define EFUSE_CTRL REG_EFUSE_CTRL /* E-Fuse Control. */
3738+/* ------------------------------------------------------------------------------ */
3739+
3740+
3741+BOOLEAN
3742+Efuse_Read1ByteFromFakeContent(
3743+ IN PADAPTER pAdapter,
3744+ IN u16 Offset,
3745+ IN OUT u8 *Value);
3746+BOOLEAN
3747+Efuse_Read1ByteFromFakeContent(
3748+ IN PADAPTER pAdapter,
3749+ IN u16 Offset,
3750+ IN OUT u8 *Value)
3751+{
3752+ if (Offset >= EFUSE_MAX_HW_SIZE)
3753+ return _FALSE;
3754+ /* DbgPrint("Read fake content, offset = %d\n", Offset); */
3755+ if (fakeEfuseBank == 0)
3756+ *Value = fakeEfuseContent[Offset];
3757+ else
3758+ *Value = fakeBTEfuseContent[fakeEfuseBank - 1][Offset];
3759+ return _TRUE;
3760+}
3761+
3762+BOOLEAN
3763+Efuse_Write1ByteToFakeContent(
3764+ IN PADAPTER pAdapter,
3765+ IN u16 Offset,
3766+ IN u8 Value);
3767+BOOLEAN
3768+Efuse_Write1ByteToFakeContent(
3769+ IN PADAPTER pAdapter,
3770+ IN u16 Offset,
3771+ IN u8 Value)
3772+{
3773+ if (Offset >= EFUSE_MAX_HW_SIZE)
3774+ return _FALSE;
3775+ if (fakeEfuseBank == 0)
3776+ fakeEfuseContent[Offset] = Value;
3777+ else
3778+ fakeBTEfuseContent[fakeEfuseBank - 1][Offset] = Value;
3779+ return _TRUE;
3780+}
3781+
3782+/*-----------------------------------------------------------------------------
3783+ * Function: Efuse_PowerSwitch
3784+ *
3785+ * Overview: When we want to enable write operation, we should change to
3786+ * pwr on state. When we stop write, we should switch to 500k mode
3787+ * and disable LDO 2.5V.
3788+ *
3789+ * Input: NONE
3790+ *
3791+ * Output: NONE
3792+ *
3793+ * Return: NONE
3794+ *
3795+ * Revised History:
3796+ * When Who Remark
3797+ * 11/17/2008 MHC Create Version 0.
3798+ *
3799+ *---------------------------------------------------------------------------*/
3800+VOID
3801+Efuse_PowerSwitch(
3802+ IN PADAPTER pAdapter,
3803+ IN u8 bWrite,
3804+ IN u8 PwrState)
3805+{
3806+ pAdapter->hal_func.EfusePowerSwitch(pAdapter, bWrite, PwrState);
3807+}
3808+
3809+VOID
3810+BTEfuse_PowerSwitch(
3811+ IN PADAPTER pAdapter,
3812+ IN u8 bWrite,
3813+ IN u8 PwrState)
3814+{
3815+ if (pAdapter->hal_func.BTEfusePowerSwitch)
3816+ pAdapter->hal_func.BTEfusePowerSwitch(pAdapter, bWrite, PwrState);
3817+}
3818+
3819+/*-----------------------------------------------------------------------------
3820+ * Function: efuse_GetCurrentSize
3821+ *
3822+ * Overview: Get current efuse size!!!
3823+ *
3824+ * Input: NONE
3825+ *
3826+ * Output: NONE
3827+ *
3828+ * Return: NONE
3829+ *
3830+ * Revised History:
3831+ * When Who Remark
3832+ * 11/16/2008 MHC Create Version 0.
3833+ *
3834+ *---------------------------------------------------------------------------*/
3835+u16
3836+Efuse_GetCurrentSize(
3837+ IN PADAPTER pAdapter,
3838+ IN u8 efuseType,
3839+ IN BOOLEAN bPseudoTest)
3840+{
3841+ u16 ret = 0;
3842+
3843+ ret = pAdapter->hal_func.EfuseGetCurrentSize(pAdapter, efuseType, bPseudoTest);
3844+
3845+ return ret;
3846+}
3847+
3848+/*
3849+ * Description:
3850+ * Execute E-Fuse read byte operation.
3851+ * Refered from SD1 Richard.
3852+ *
3853+ * Assumption:
3854+ * 1. Boot from E-Fuse and successfully auto-load.
3855+ * 2. PASSIVE_LEVEL (USB interface)
3856+ *
3857+ * Created by Roger, 2008.10.21.
3858+ * */
3859+VOID
3860+ReadEFuseByte(
3861+ PADAPTER Adapter,
3862+ u16 _offset,
3863+ u8 *pbuf,
3864+ IN BOOLEAN bPseudoTest)
3865+{
3866+ u32 value32;
3867+ u8 readbyte;
3868+ u16 retry;
3869+ /* systime start=rtw_get_current_time(); */
3870+
3871+ if (bPseudoTest) {
3872+ Efuse_Read1ByteFromFakeContent(Adapter, _offset, pbuf);
3873+ return;
3874+ }
3875+ if (IS_HARDWARE_TYPE_8723B(Adapter)) {
3876+ /* <20130121, Kordan> For SMIC S55 EFUSE specificatoin. */
3877+ /* 0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8]) */
3878+ phy_set_mac_reg(Adapter, EFUSE_TEST, BIT11, 0);
3879+ }
3880+ /* Write Address */
3881+ rtw_write8(Adapter, EFUSE_CTRL + 1, (_offset & 0xff));
3882+ readbyte = rtw_read8(Adapter, EFUSE_CTRL + 2);
3883+ rtw_write8(Adapter, EFUSE_CTRL + 2, ((_offset >> 8) & 0x03) | (readbyte & 0xfc));
3884+
3885+ /* Write bit 32 0 */
3886+ readbyte = rtw_read8(Adapter, EFUSE_CTRL + 3);
3887+ rtw_write8(Adapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
3888+
3889+ /* Check bit 32 read-ready */
3890+ retry = 0;
3891+ value32 = rtw_read32(Adapter, EFUSE_CTRL);
3892+ /* while(!(((value32 >> 24) & 0xff) & 0x80) && (retry<10)) */
3893+ while (!(((value32 >> 24) & 0xff) & 0x80) && (retry < 10000)) {
3894+ value32 = rtw_read32(Adapter, EFUSE_CTRL);
3895+ retry++;
3896+ }
3897+
3898+ /* 20100205 Joseph: Add delay suggested by SD1 Victor. */
3899+ /* This fix the problem that Efuse read error in high temperature condition. */
3900+ /* Designer says that there shall be some delay after ready bit is set, or the */
3901+ /* result will always stay on last data we read. */
3902+ rtw_udelay_os(50);
3903+ value32 = rtw_read32(Adapter, EFUSE_CTRL);
3904+
3905+ *pbuf = (u8)(value32 & 0xff);
3906+ /* RTW_INFO("ReadEFuseByte _offset:%08u, in %d ms\n",_offset ,rtw_get_passing_time_ms(start)); */
3907+
3908+}
3909+
3910+/*
3911+ * Description:
3912+ * 1. Execute E-Fuse read byte operation according as map offset and
3913+ * save to E-Fuse table.
3914+ * 2. Refered from SD1 Richard.
3915+ *
3916+ * Assumption:
3917+ * 1. Boot from E-Fuse and successfully auto-load.
3918+ * 2. PASSIVE_LEVEL (USB interface)
3919+ *
3920+ * Created by Roger, 2008.10.21.
3921+ *
3922+ * 2008/12/12 MH 1. Reorganize code flow and reserve bytes. and add description.
3923+ * 2. Add efuse utilization collect.
3924+ * 2008/12/22 MH Read Efuse must check if we write section 1 data again!!! Sec1
3925+ * write addr must be after sec5.
3926+ * */
3927+
3928+VOID
3929+efuse_ReadEFuse(
3930+ PADAPTER Adapter,
3931+ u8 efuseType,
3932+ u16 _offset,
3933+ u16 _size_byte,
3934+ u8 *pbuf,
3935+ IN BOOLEAN bPseudoTest
3936+);
3937+VOID
3938+efuse_ReadEFuse(
3939+ PADAPTER Adapter,
3940+ u8 efuseType,
3941+ u16 _offset,
3942+ u16 _size_byte,
3943+ u8 *pbuf,
3944+ IN BOOLEAN bPseudoTest
3945+)
3946+{
3947+ Adapter->hal_func.ReadEFuse(Adapter, efuseType, _offset, _size_byte, pbuf, bPseudoTest);
3948+}
3949+
3950+VOID
3951+EFUSE_GetEfuseDefinition(
3952+ IN PADAPTER pAdapter,
3953+ IN u8 efuseType,
3954+ IN u8 type,
3955+ OUT void *pOut,
3956+ IN BOOLEAN bPseudoTest
3957+)
3958+{
3959+ pAdapter->hal_func.EFUSEGetEfuseDefinition(pAdapter, efuseType, type, pOut, bPseudoTest);
3960 }
3961
3962-#define EFUSE_CTRL 0x30 /* E-Fuse Control. */
3963
3964 /* 11/16/2008 MH Read one byte from real Efuse. */
3965 u8
3966@@ -914,6 +2056,22 @@ efuse_OneByteRead(
3967 u8 readbyte;
3968 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
3969
3970+ /* RTW_INFO("===> EFUSE_OneByteRead(), addr = %x\n", addr); */
3971+ /* RTW_INFO("===> EFUSE_OneByteRead() start, 0x34 = 0x%X\n", rtw_read32(pAdapter, EFUSE_TEST)); */
3972+
3973+ if (bPseudoTest) {
3974+ bResult = Efuse_Read1ByteFromFakeContent(pAdapter, addr, data);
3975+ return bResult;
3976+ }
3977+
3978+#ifdef CONFIG_RTL8710B
3979+ /* <20171208, Peter>, Dont do the following write16(0x34) */
3980+ if (IS_HARDWARE_TYPE_8710B(pAdapter)) {
3981+ bResult = pAdapter->hal_func.efuse_indirect_read4(pAdapter, addr, data);
3982+ return bResult;
3983+ }
3984+#endif
3985+
3986 if (IS_HARDWARE_TYPE_8723B(pAdapter) ||
3987 (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||
3988 (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))
3989@@ -924,157 +2082,793 @@ efuse_OneByteRead(
3990 rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter, 0x34) & (~BIT11));
3991 }
3992
3993- /* -----------------e-fuse reg ctrl --------------------------------- */
3994- /* address */
3995- rtw_write8(pAdapter, EFUSE_CTRL + 1, (u8)(addr & 0xff));
3996- rtw_write8(pAdapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |
3997- (rtw_read8(pAdapter, EFUSE_CTRL + 2) & 0xFC));
3998+ /* -----------------e-fuse reg ctrl --------------------------------- */
3999+ /* address */
4000+ rtw_write8(pAdapter, EFUSE_CTRL + 1, (u8)(addr & 0xff));
4001+ rtw_write8(pAdapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |
4002+ (rtw_read8(pAdapter, EFUSE_CTRL + 2) & 0xFC));
4003+
4004+ /* rtw_write8(pAdapter, EFUSE_CTRL+3, 0x72); */ /* read cmd */
4005+ /* Write bit 32 0 */
4006+ readbyte = rtw_read8(pAdapter, EFUSE_CTRL + 3);
4007+ rtw_write8(pAdapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
4008+
4009+ while (!(0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 1000)) {
4010+ rtw_mdelay_os(1);
4011+ tmpidx++;
4012+ }
4013+ if (tmpidx < 100) {
4014+ *data = rtw_read8(pAdapter, EFUSE_CTRL);
4015+ bResult = _TRUE;
4016+ } else {
4017+ *data = 0xff;
4018+ bResult = _FALSE;
4019+ RTW_INFO("%s: [ERROR] addr=0x%x bResult=%d time out 1s !!!\n", __FUNCTION__, addr, bResult);
4020+ RTW_INFO("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
4021+ }
4022+
4023+ return bResult;
4024+}
4025+
4026+/* 11/16/2008 MH Write one byte to reald Efuse. */
4027+u8
4028+efuse_OneByteWrite(
4029+ IN PADAPTER pAdapter,
4030+ IN u16 addr,
4031+ IN u8 data,
4032+ IN BOOLEAN bPseudoTest)
4033+{
4034+ u8 tmpidx = 0;
4035+ u8 bResult = _FALSE;
4036+ u32 efuseValue = 0;
4037+ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
4038+
4039+ /* RTW_INFO("===> EFUSE_OneByteWrite(), addr = %x data=%x\n", addr, data); */
4040+ /* RTW_INFO("===> EFUSE_OneByteWrite() start, 0x34 = 0x%X\n", rtw_read32(pAdapter, EFUSE_TEST)); */
4041+
4042+ if (bPseudoTest) {
4043+ bResult = Efuse_Write1ByteToFakeContent(pAdapter, addr, data);
4044+ return bResult;
4045+ }
4046+
4047+ Efuse_PowerSwitch(pAdapter, _TRUE, _TRUE);
4048+
4049+ /* -----------------e-fuse reg ctrl --------------------------------- */
4050+ /* address */
4051+
4052+
4053+ efuseValue = rtw_read32(pAdapter, EFUSE_CTRL);
4054+ efuseValue |= (BIT21 | BIT31);
4055+ efuseValue &= ~(0x3FFFF);
4056+ efuseValue |= ((addr << 8 | data) & 0x3FFFF);
4057+
4058+ /* <20130227, Kordan> 8192E MP chip A-cut had better not set 0x34[11] until B-Cut. */
4059+ if (IS_HARDWARE_TYPE_8723B(pAdapter) ||
4060+ (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||
4061+ (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))
4062+ ) {
4063+ /* <20130121, Kordan> For SMIC EFUSE specificatoin. */
4064+ /* 0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8]) */
4065+ /* phy_set_mac_reg(pAdapter, 0x34, BIT11, 1); */
4066+ rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter, 0x34) | (BIT11));
4067+ rtw_write32(pAdapter, EFUSE_CTRL, 0x90600000 | ((addr << 8 | data)));
4068+ } else
4069+ rtw_write32(pAdapter, EFUSE_CTRL, efuseValue);
4070+
4071+ rtw_mdelay_os(1);
4072+
4073+ while ((0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 100)) {
4074+ rtw_mdelay_os(1);
4075+ tmpidx++;
4076+ }
4077+
4078+ if (tmpidx < 100)
4079+ bResult = _TRUE;
4080+ else {
4081+ bResult = _FALSE;
4082+ RTW_INFO("%s: [ERROR] addr=0x%x ,efuseValue=0x%x ,bResult=%d time out 1s !!!\n",
4083+ __FUNCTION__, addr, efuseValue, bResult);
4084+ RTW_INFO("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
4085+ }
4086+
4087+ /* disable Efuse program enable */
4088+ if (IS_HARDWARE_TYPE_8723B(pAdapter) ||
4089+ (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||
4090+ (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))
4091+ )
4092+ phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT(11), 0);
4093+
4094+ Efuse_PowerSwitch(pAdapter, _TRUE, _FALSE);
4095+
4096+ return bResult;
4097+}
4098+
4099+int
4100+Efuse_PgPacketRead(IN PADAPTER pAdapter,
4101+ IN u8 offset,
4102+ IN u8 *data,
4103+ IN BOOLEAN bPseudoTest)
4104+{
4105+ int ret = 0;
4106+
4107+ ret = pAdapter->hal_func.Efuse_PgPacketRead(pAdapter, offset, data, bPseudoTest);
4108+
4109+ return ret;
4110+}
4111+
4112+int
4113+Efuse_PgPacketWrite(IN PADAPTER pAdapter,
4114+ IN u8 offset,
4115+ IN u8 word_en,
4116+ IN u8 *data,
4117+ IN BOOLEAN bPseudoTest)
4118+{
4119+ int ret;
4120+
4121+ ret = pAdapter->hal_func.Efuse_PgPacketWrite(pAdapter, offset, word_en, data, bPseudoTest);
4122+
4123+ return ret;
4124+}
4125+
4126+
4127+int
4128+Efuse_PgPacketWrite_BT(IN PADAPTER pAdapter,
4129+ IN u8 offset,
4130+ IN u8 word_en,
4131+ IN u8 *data,
4132+ IN BOOLEAN bPseudoTest)
4133+{
4134+ int ret;
4135+
4136+ ret = pAdapter->hal_func.Efuse_PgPacketWrite_BT(pAdapter, offset, word_en, data, bPseudoTest);
4137+
4138+ return ret;
4139+}
4140+
4141+
4142+u8
4143+Efuse_WordEnableDataWrite(IN PADAPTER pAdapter,
4144+ IN u16 efuse_addr,
4145+ IN u8 word_en,
4146+ IN u8 *data,
4147+ IN BOOLEAN bPseudoTest)
4148+{
4149+ u8 ret = 0;
4150+
4151+ ret = pAdapter->hal_func.Efuse_WordEnableDataWrite(pAdapter, efuse_addr, word_en, data, bPseudoTest);
4152+
4153+ return ret;
4154+}
4155+
4156+static u8 efuse_read8(PADAPTER padapter, u16 address, u8 *value)
4157+{
4158+ return efuse_OneByteRead(padapter, address, value, _FALSE);
4159+}
4160+
4161+static u8 efuse_write8(PADAPTER padapter, u16 address, u8 *value)
4162+{
4163+ return efuse_OneByteWrite(padapter, address, *value, _FALSE);
4164+}
4165+
4166+/*
4167+ * read/wirte raw efuse data
4168+ */
4169+u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 *data)
4170+{
4171+ int i = 0;
4172+ u16 real_content_len = 0, max_available_size = 0;
4173+ u8 res = _FAIL ;
4174+ u8(*rw8)(PADAPTER, u16, u8 *);
4175+ u32 backupRegs[4] = {0};
4176+
4177+
4178+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&real_content_len, _FALSE);
4179+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE);
4180+
4181+ if (start_addr > real_content_len)
4182+ return _FAIL;
4183+
4184+ if (_TRUE == bWrite) {
4185+ if ((start_addr + cnts) > max_available_size)
4186+ return _FAIL;
4187+ rw8 = &efuse_write8;
4188+ } else
4189+ rw8 = &efuse_read8;
4190+
4191+ efuse_PreUpdateAction(padapter, backupRegs);
4192+
4193+ Efuse_PowerSwitch(padapter, bWrite, _TRUE);
4194+
4195+ /* e-fuse one byte read / write */
4196+ for (i = 0; i < cnts; i++) {
4197+ if (start_addr >= real_content_len) {
4198+ res = _FAIL;
4199+ break;
4200+ }
4201+
4202+ res = rw8(padapter, start_addr++, data++);
4203+ if (_FAIL == res)
4204+ break;
4205+ }
4206+
4207+ Efuse_PowerSwitch(padapter, bWrite, _FALSE);
4208+
4209+ efuse_PostUpdateAction(padapter, backupRegs);
4210+
4211+ return res;
4212+}
4213+/* ------------------------------------------------------------------------------ */
4214+u16 efuse_GetMaxSize(PADAPTER padapter)
4215+{
4216+ u16 max_size;
4217+
4218+ max_size = 0;
4219+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI , TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_size, _FALSE);
4220+ return max_size;
4221+}
4222+/* ------------------------------------------------------------------------------ */
4223+u8 efuse_GetCurrentSize(PADAPTER padapter, u16 *size)
4224+{
4225+ Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
4226+ *size = Efuse_GetCurrentSize(padapter, EFUSE_WIFI, _FALSE);
4227+ Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
4228+
4229+ return _SUCCESS;
4230+}
4231+/* ------------------------------------------------------------------------------ */
4232+u16 efuse_bt_GetMaxSize(PADAPTER padapter)
4233+{
4234+ u16 max_size;
4235+
4236+ max_size = 0;
4237+ EFUSE_GetEfuseDefinition(padapter, EFUSE_BT , TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_size, _FALSE);
4238+ return max_size;
4239+}
4240+
4241+u8 efuse_bt_GetCurrentSize(PADAPTER padapter, u16 *size)
4242+{
4243+ Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
4244+ *size = Efuse_GetCurrentSize(padapter, EFUSE_BT, _FALSE);
4245+ Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
4246+
4247+ return _SUCCESS;
4248+}
4249+
4250+u8 rtw_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
4251+{
4252+ u16 mapLen = 0;
4253+
4254+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
4255+
4256+ if ((addr + cnts) > mapLen)
4257+ return _FAIL;
4258+
4259+ Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
4260+
4261+ efuse_ReadEFuse(padapter, EFUSE_WIFI, addr, cnts, data, _FALSE);
4262+
4263+ Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
4264+
4265+ return _SUCCESS;
4266+}
4267+
4268+u8 rtw_BT_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
4269+{
4270+ u16 mapLen = 0;
4271+
4272+ EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
4273+
4274+ if ((addr + cnts) > mapLen)
4275+ return _FAIL;
4276+
4277+ Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
4278+
4279+ efuse_ReadEFuse(padapter, EFUSE_BT, addr, cnts, data, _FALSE);
4280+
4281+ Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
4282+
4283+ return _SUCCESS;
4284+}
4285+
4286+/* ------------------------------------------------------------------------------ */
4287+u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
4288+{
4289+#define RT_ASSERT_RET(expr) \
4290+ if (!(expr)) { \
4291+ printk("Assertion failed! %s at ......\n", #expr); \
4292+ printk(" ......%s,%s, line=%d\n",__FILE__, __FUNCTION__, __LINE__); \
4293+ return _FAIL; \
4294+ }
4295+
4296+ u8 *efuse = NULL;
4297+ u8 offset, word_en;
4298+ u8 *map = NULL;
4299+ u8 newdata[PGPKT_DATA_SIZE];
4300+ s32 i, j, idx, chk_total_byte;
4301+ u8 ret = _SUCCESS;
4302+ u16 mapLen = 0, startAddr = 0, efuse_max_available_len = 0;
4303+ u32 backupRegs[4] = {0};
4304+ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
4305+ PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
4306+
4307+
4308+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
4309+ EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, _FALSE);
4310+
4311+ if ((addr + cnts) > mapLen)
4312+ return _FAIL;
4313+
4314+ RT_ASSERT_RET(PGPKT_DATA_SIZE == 8); /* have to be 8 byte alignment */
4315+ RT_ASSERT_RET((mapLen & 0x7) == 0); /* have to be PGPKT_DATA_SIZE alignment for memcpy */
4316+
4317+ efuse = rtw_zmalloc(mapLen);
4318+ if (!efuse)
4319+ return _FAIL;
4320+
4321+ map = rtw_zmalloc(mapLen);
4322+ if (map == NULL) {
4323+ rtw_mfree(efuse, mapLen);
4324+ return _FAIL;
4325+ }
4326+
4327+ _rtw_memset(map, 0xFF, mapLen);
4328+
4329+ ret = rtw_efuse_map_read(padapter, 0, mapLen, map);
4330+
4331+ if (ret == _FAIL)
4332+ goto exit;
4333+
4334+ _rtw_memcpy(efuse , map, mapLen);
4335+ _rtw_memcpy(efuse + addr, data, cnts);
4336+
4337+ if (padapter->registrypriv.boffefusemask == 0) {
4338+ for (i = 0; i < cnts; i++) {
4339+ if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {
4340+ if (rtw_file_efuse_IsMasked(padapter, addr + i)) /*use file efuse mask. */
4341+ efuse[addr + i] = map[addr + i];
4342+ } else {
4343+ if (efuse_IsMasked(padapter, addr + i))
4344+ efuse[addr + i] = map[addr + i];
4345+ }
4346+ RTW_INFO("%s ,Write data[%d] = %x, map[%d]= %x\n", __func__, addr + i, efuse[ addr + i], addr + i, map[addr + i]);
4347+ }
4348+ }
4349+ /*Efuse_PowerSwitch(padapter, _TRUE, _TRUE);*/
4350+
4351+ chk_total_byte = 0;
4352+ idx = 0;
4353+ offset = (addr >> 3);
4354+
4355+ while (idx < cnts) {
4356+ word_en = 0xF;
4357+ j = (addr + idx) & 0x7;
4358+ for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
4359+ if (efuse[addr + idx] != map[addr + idx])
4360+ word_en &= ~BIT(i >> 1);
4361+ }
4362+
4363+ if (word_en != 0xF) {
4364+ chk_total_byte += Efuse_CalculateWordCnts(word_en) * 2;
4365+
4366+ if (offset >= EFUSE_MAX_SECTION_BASE) /* Over EFUSE_MAX_SECTION 16 for 2 ByteHeader */
4367+ chk_total_byte += 2;
4368+ else
4369+ chk_total_byte += 1;
4370+ }
4371+
4372+ offset++;
4373+ }
4374+
4375+ RTW_INFO("Total PG bytes Count = %d\n", chk_total_byte);
4376+ rtw_hal_get_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8 *)&startAddr);
4377+
4378+ if (startAddr == 0) {
4379+ startAddr = Efuse_GetCurrentSize(padapter, EFUSE_WIFI, _FALSE);
4380+ RTW_INFO("%s: Efuse_GetCurrentSize startAddr=%#X\n", __func__, startAddr);
4381+ }
4382+ RTW_DBG("%s: startAddr=%#X\n", __func__, startAddr);
4383+
4384+ if ((startAddr + chk_total_byte) >= efuse_max_available_len) {
4385+ RTW_INFO("%s: startAddr(0x%X) + PG data len %d >= efuse_max_available_len(0x%X)\n",
4386+ __func__, startAddr, chk_total_byte, efuse_max_available_len);
4387+ ret = _FAIL;
4388+ goto exit;
4389+ }
4390+
4391+ efuse_PreUpdateAction(padapter, backupRegs);
4392+
4393+ idx = 0;
4394+ offset = (addr >> 3);
4395+ while (idx < cnts) {
4396+ word_en = 0xF;
4397+ j = (addr + idx) & 0x7;
4398+ _rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
4399+ for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
4400+ if (efuse[addr + idx] != map[addr + idx]) {
4401+ word_en &= ~BIT(i >> 1);
4402+ newdata[i] = efuse[addr + idx];
4403+#ifdef CONFIG_RTL8723B
4404+ if (addr + idx == 0x8) {
4405+ if (IS_C_CUT(pHalData->version_id) || IS_B_CUT(pHalData->version_id)) {
4406+ if (pHalData->adjuseVoltageVal == 6) {
4407+ newdata[i] = map[addr + idx];
4408+ RTW_INFO(" %s ,\n adjuseVoltageVal = %d ,newdata[%d] = %x\n", __func__, pHalData->adjuseVoltageVal, i, newdata[i]);
4409+ }
4410+ }
4411+ }
4412+#endif
4413+ }
4414+ }
4415+
4416+ if (word_en != 0xF) {
4417+ ret = Efuse_PgPacketWrite(padapter, offset, word_en, newdata, _FALSE);
4418+ RTW_INFO("offset=%x\n", offset);
4419+ RTW_INFO("word_en=%x\n", word_en);
4420+
4421+ for (i = 0; i < PGPKT_DATA_SIZE; i++)
4422+ RTW_INFO("data=%x \t", newdata[i]);
4423+ if (ret == _FAIL)
4424+ break;
4425+ }
4426+
4427+ offset++;
4428+ }
4429+
4430+ /*Efuse_PowerSwitch(padapter, _TRUE, _FALSE);*/
4431+
4432+ efuse_PostUpdateAction(padapter, backupRegs);
4433+
4434+exit:
4435+
4436+ rtw_mfree(map, mapLen);
4437+ rtw_mfree(efuse, mapLen);
4438+
4439+ return ret;
4440+}
4441+
4442+
4443+u8 rtw_BT_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
4444+{
4445+#define RT_ASSERT_RET(expr) \
4446+ if (!(expr)) { \
4447+ printk("Assertion failed! %s at ......\n", #expr); \
4448+ printk(" ......%s,%s, line=%d\n",__FILE__, __FUNCTION__, __LINE__); \
4449+ return _FAIL; \
4450+ }
4451+
4452+ u8 offset, word_en;
4453+ u8 *map;
4454+ u8 newdata[PGPKT_DATA_SIZE];
4455+ s32 i = 0, j = 0, idx;
4456+ u8 ret = _SUCCESS;
4457+ u16 mapLen = 0;
4458+
4459+ EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
4460+
4461+ if ((addr + cnts) > mapLen)
4462+ return _FAIL;
4463+
4464+ RT_ASSERT_RET(PGPKT_DATA_SIZE == 8); /* have to be 8 byte alignment */
4465+ RT_ASSERT_RET((mapLen & 0x7) == 0); /* have to be PGPKT_DATA_SIZE alignment for memcpy */
4466+
4467+ map = rtw_zmalloc(mapLen);
4468+ if (map == NULL)
4469+ return _FAIL;
4470+
4471+ ret = rtw_BT_efuse_map_read(padapter, 0, mapLen, map);
4472+ if (ret == _FAIL)
4473+ goto exit;
4474+ RTW_INFO("OFFSET\tVALUE(hex)\n");
4475+ for (i = 0; i < 1024; i += 16) { /* set 512 because the iwpriv's extra size have limit 0x7FF */
4476+ RTW_INFO("0x%03x\t", i);
4477+ for (j = 0; j < 8; j++)
4478+ RTW_INFO("%02X ", map[i + j]);
4479+ RTW_INFO("\t");
4480+ for (; j < 16; j++)
4481+ RTW_INFO("%02X ", map[i + j]);
4482+ RTW_INFO("\n");
4483+ }
4484+ RTW_INFO("\n");
4485+ Efuse_PowerSwitch(padapter, _TRUE, _TRUE);
4486+
4487+ idx = 0;
4488+ offset = (addr >> 3);
4489+ while (idx < cnts) {
4490+ word_en = 0xF;
4491+ j = (addr + idx) & 0x7;
4492+ _rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
4493+ for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
4494+ if (data[idx] != map[addr + idx]) {
4495+ word_en &= ~BIT(i >> 1);
4496+ newdata[i] = data[idx];
4497+ }
4498+ }
4499+
4500+ if (word_en != 0xF) {
4501+ RTW_INFO("offset=%x\n", offset);
4502+ RTW_INFO("word_en=%x\n", word_en);
4503+ RTW_INFO("%s: data=", __FUNCTION__);
4504+ for (i = 0; i < PGPKT_DATA_SIZE; i++)
4505+ RTW_INFO("0x%02X ", newdata[i]);
4506+ RTW_INFO("\n");
4507+ ret = Efuse_PgPacketWrite_BT(padapter, offset, word_en, newdata, _FALSE);
4508+ if (ret == _FAIL)
4509+ break;
4510+ }
4511+
4512+ offset++;
4513+ }
4514+
4515+ Efuse_PowerSwitch(padapter, _TRUE, _FALSE);
4516
4517- /* rtw_write8(pAdapter, EFUSE_CTRL+3, 0x72); */ /* read cmd */
4518- /* Write bit 32 0 */
4519- readbyte = rtw_read8(pAdapter, EFUSE_CTRL + 3);
4520- rtw_write8(pAdapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
4521+exit:
4522
4523- while (!(0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 1000)) {
4524- rtw_mdelay_os(1);
4525- tmpidx++;
4526- }
4527- if (tmpidx < 100) {
4528- *data = rtw_read8(pAdapter, EFUSE_CTRL);
4529- bResult = _TRUE;
4530- } else {
4531- *data = 0xff;
4532- bResult = _FALSE;
4533- RTW_INFO("%s: [ERROR] addr=0x%x bResult=%d time out 1s !!!\n", __FUNCTION__, addr, bResult);
4534- RTW_INFO("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
4535- }
4536+ rtw_mfree(map, mapLen);
4537
4538- return bResult;
4539+ return ret;
4540 }
4541
4542-static u16
4543-hal_EfuseGetCurrentSize_BT(
4544- PADAPTER padapter,
4545- u8 bPseudoTest)
4546+/*-----------------------------------------------------------------------------
4547+ * Function: Efuse_ReadAllMap
4548+ *
4549+ * Overview: Read All Efuse content
4550+ *
4551+ * Input: NONE
4552+ *
4553+ * Output: NONE
4554+ *
4555+ * Return: NONE
4556+ *
4557+ * Revised History:
4558+ * When Who Remark
4559+ * 11/11/2008 MHC Create Version 0.
4560+ *
4561+ *---------------------------------------------------------------------------*/
4562+VOID
4563+Efuse_ReadAllMap(
4564+ IN PADAPTER pAdapter,
4565+ IN u8 efuseType,
4566+ IN OUT u8 *Efuse,
4567+ IN BOOLEAN bPseudoTest);
4568+VOID
4569+Efuse_ReadAllMap(
4570+ IN PADAPTER pAdapter,
4571+ IN u8 efuseType,
4572+ IN OUT u8 *Efuse,
4573+ IN BOOLEAN bPseudoTest)
4574 {
4575- u16 btusedbytes;
4576- u16 efuse_addr;
4577- u8 bank, startBank;
4578- u8 hoffset = 0, hworden = 0;
4579- u8 efuse_data, word_cnts = 0;
4580- u16 retU2 = 0;
4581+ u16 mapLen = 0;
4582
4583- btusedbytes = fakeBTEfuseUsedBytes;
4584+ Efuse_PowerSwitch(pAdapter, _FALSE, _TRUE);
4585
4586- efuse_addr = (u16)((btusedbytes % EFUSE_BT_REAL_BANK_CONTENT_LEN));
4587- startBank = (u8)(1 + (btusedbytes / EFUSE_BT_REAL_BANK_CONTENT_LEN));
4588+ EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);
4589
4590- RTW_INFO("%s: start from bank=%d addr=0x%X\n", __FUNCTION__, startBank, efuse_addr);
4591- retU2 = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
4592+ efuse_ReadEFuse(pAdapter, efuseType, 0, mapLen, Efuse, bPseudoTest);
4593
4594- for (bank = startBank; bank < 3; bank++) {
4595- if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == _FALSE) {
4596- RTW_ERR("%s: switch bank(%d) Fail!!\n", __FUNCTION__, bank);
4597- /* bank = EFUSE_MAX_BANK; */
4598- break;
4599- }
4600+ Efuse_PowerSwitch(pAdapter, _FALSE, _FALSE);
4601+}
4602
4603- /* only when bank is switched we have to reset the efuse_addr. */
4604- if (bank != startBank)
4605- efuse_addr = 0;
4606+/*-----------------------------------------------------------------------------
4607+ * Function: efuse_ShadowWrite1Byte
4608+ * efuse_ShadowWrite2Byte
4609+ * efuse_ShadowWrite4Byte
4610+ *
4611+ * Overview: Write efuse modify map by one/two/four byte.
4612+ *
4613+ * Input: NONE
4614+ *
4615+ * Output: NONE
4616+ *
4617+ * Return: NONE
4618+ *
4619+ * Revised History:
4620+ * When Who Remark
4621+ * 11/12/2008 MHC Create Version 0.
4622+ *
4623+ *---------------------------------------------------------------------------*/
4624+#ifdef PLATFORM
4625+static VOID
4626+efuse_ShadowWrite1Byte(
4627+ IN PADAPTER pAdapter,
4628+ IN u16 Offset,
4629+ IN u8 Value);
4630+#endif /* PLATFORM */
4631+static VOID
4632+efuse_ShadowWrite1Byte(
4633+ IN PADAPTER pAdapter,
4634+ IN u16 Offset,
4635+ IN u8 Value)
4636+{
4637+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4638
4639- while (AVAILABLE_EFUSE_ADDR(efuse_addr)) {
4640- if (rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data) == _FALSE) {
4641- RTW_ERR("%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
4642- /* bank = EFUSE_MAX_BANK; */
4643- break;
4644- }
4645- RTW_INFO("%s: efuse_OneByteRead ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
4646+ pHalData->efuse_eeprom_data[Offset] = Value;
4647
4648- if (efuse_data == 0xFF)
4649- break;
4650+} /* efuse_ShadowWrite1Byte */
4651
4652- if (EXT_HEADER(efuse_data)) {
4653- hoffset = GET_HDR_OFFSET_2_0(efuse_data);
4654- efuse_addr++;
4655- rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data);
4656- RTW_INFO("%s: efuse_OneByteRead EXT_HEADER ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
4657+/* ---------------Write Two Bytes */
4658+static VOID
4659+efuse_ShadowWrite2Byte(
4660+ IN PADAPTER pAdapter,
4661+ IN u16 Offset,
4662+ IN u16 Value)
4663+{
4664
4665- if (ALL_WORDS_DISABLED(efuse_data)) {
4666- efuse_addr++;
4667- continue;
4668- }
4669+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4670
4671- /* hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); */
4672- hoffset |= ((efuse_data & 0xF0) >> 1);
4673- hworden = efuse_data & 0x0F;
4674- } else {
4675- hoffset = (efuse_data >> 4) & 0x0F;
4676- hworden = efuse_data & 0x0F;
4677- }
4678
4679- RTW_INFO(FUNC_ADPT_FMT": Offset=%d Worden=%#X\n",
4680- FUNC_ADPT_ARG(padapter), hoffset, hworden);
4681+ pHalData->efuse_eeprom_data[Offset] = Value & 0x00FF;
4682+ pHalData->efuse_eeprom_data[Offset + 1] = Value >> 8;
4683
4684- word_cnts = Efuse_CalculateWordCnts(hworden);
4685- /* read next header */
4686- efuse_addr += (word_cnts * 2) + 1;
4687- }
4688- /* Check if we need to check next bank efuse */
4689- if (efuse_addr < retU2)
4690- break;/* don't need to check next bank. */
4691- }
4692- retU2 = ((bank - 1) * EFUSE_BT_REAL_BANK_CONTENT_LEN) + efuse_addr;
4693+} /* efuse_ShadowWrite1Byte */
4694
4695- fakeBTEfuseUsedBytes = retU2;
4696- RTW_INFO("%s: CurrentSize=%d\n", __FUNCTION__, retU2);
4697- return retU2;
4698-}
4699+/* ---------------Write Four Bytes */
4700+static VOID
4701+efuse_ShadowWrite4Byte(
4702+ IN PADAPTER pAdapter,
4703+ IN u16 Offset,
4704+ IN u32 Value)
4705+{
4706+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4707
4708-static u8
4709-hal_BT_EfusePgCheckAvailableAddr(
4710- PADAPTER pAdapter,
4711- u8 bPseudoTest)
4712+ pHalData->efuse_eeprom_data[Offset] = (u8)(Value & 0x000000FF);
4713+ pHalData->efuse_eeprom_data[Offset + 1] = (u8)((Value >> 8) & 0x0000FF);
4714+ pHalData->efuse_eeprom_data[Offset + 2] = (u8)((Value >> 16) & 0x00FF);
4715+ pHalData->efuse_eeprom_data[Offset + 3] = (u8)((Value >> 24) & 0xFF);
4716+
4717+} /* efuse_ShadowWrite1Byte */
4718+
4719+
4720+/*-----------------------------------------------------------------------------
4721+ * Function: EFUSE_ShadowWrite
4722+ *
4723+ * Overview: Write efuse modify map for later update operation to use!!!!!
4724+ *
4725+ * Input: NONE
4726+ *
4727+ * Output: NONE
4728+ *
4729+ * Return: NONE
4730+ *
4731+ * Revised History:
4732+ * When Who Remark
4733+ * 11/12/2008 MHC Create Version 0.
4734+ *
4735+ *---------------------------------------------------------------------------*/
4736+VOID
4737+EFUSE_ShadowWrite(
4738+ IN PADAPTER pAdapter,
4739+ IN u8 Type,
4740+ IN u16 Offset,
4741+ IN OUT u32 Value);
4742+VOID
4743+EFUSE_ShadowWrite(
4744+ IN PADAPTER pAdapter,
4745+ IN u8 Type,
4746+ IN u16 Offset,
4747+ IN OUT u32 Value)
4748 {
4749- u16 max_available = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
4750- u16 current_size = 0;
4751+#if (MP_DRIVER == 0)
4752+ return;
4753+#endif
4754+ if (pAdapter->registrypriv.mp_mode == 0)
4755+ return;
4756
4757- RTW_INFO("%s: max_available=%d\n", __FUNCTION__, max_available);
4758- current_size = hal_EfuseGetCurrentSize_BT(pAdapter, bPseudoTest);
4759- if (current_size >= max_available) {
4760- RTW_INFO("%s: Error!! current_size(%d)>max_available(%d)\n", __FUNCTION__, current_size, max_available);
4761- return _FALSE;
4762- }
4763- return _TRUE;
4764+
4765+ if (Type == 1)
4766+ efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value);
4767+ else if (Type == 2)
4768+ efuse_ShadowWrite2Byte(pAdapter, Offset, (u16)Value);
4769+ else if (Type == 4)
4770+ efuse_ShadowWrite4Byte(pAdapter, Offset, (u32)Value);
4771+
4772+} /* EFUSE_ShadowWrite */
4773+
4774+VOID
4775+Efuse_InitSomeVar(
4776+ IN PADAPTER pAdapter
4777+);
4778+VOID
4779+Efuse_InitSomeVar(
4780+ IN PADAPTER pAdapter
4781+)
4782+{
4783+ u8 i;
4784+
4785+ _rtw_memset((PVOID)&fakeEfuseContent[0], 0xff, EFUSE_MAX_HW_SIZE);
4786+ _rtw_memset((PVOID)&fakeEfuseInitMap[0], 0xff, EFUSE_MAX_MAP_LEN);
4787+ _rtw_memset((PVOID)&fakeEfuseModifiedMap[0], 0xff, EFUSE_MAX_MAP_LEN);
4788+
4789+ for (i = 0; i < EFUSE_MAX_BT_BANK; i++)
4790+ _rtw_memset((PVOID)&BTEfuseContent[i][0], EFUSE_MAX_HW_SIZE, 0xff);
4791+ _rtw_memset((PVOID)&BTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
4792+ _rtw_memset((PVOID)&BTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
4793+
4794+ for (i = 0; i < EFUSE_MAX_BT_BANK; i++)
4795+ _rtw_memset((PVOID)&fakeBTEfuseContent[i][0], 0xff, EFUSE_MAX_HW_SIZE);
4796+ _rtw_memset((PVOID)&fakeBTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
4797+ _rtw_memset((PVOID)&fakeBTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
4798 }
4799+#endif /* !RTW_HALMAC */
4800+/*-----------------------------------------------------------------------------
4801+ * Function: efuse_ShadowRead1Byte
4802+ * efuse_ShadowRead2Byte
4803+ * efuse_ShadowRead4Byte
4804+ *
4805+ * Overview: Read from efuse init map by one/two/four bytes !!!!!
4806+ *
4807+ * Input: NONE
4808+ *
4809+ * Output: NONE
4810+ *
4811+ * Return: NONE
4812+ *
4813+ * Revised History:
4814+ * When Who Remark
4815+ * 11/12/2008 MHC Create Version 0.
4816+ *
4817+ *---------------------------------------------------------------------------*/
4818+static VOID
4819+efuse_ShadowRead1Byte(
4820+ IN PADAPTER pAdapter,
4821+ IN u16 Offset,
4822+ IN OUT u8 *Value)
4823+{
4824+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4825
4826-u8 EfusePgPacketWrite_BT(
4827- PADAPTER pAdapter,
4828- u8 offset,
4829- u8 word_en,
4830- u8 *pData,
4831- u8 bPseudoTest)
4832+ *Value = pHalData->efuse_eeprom_data[Offset];
4833+
4834+} /* EFUSE_ShadowRead1Byte */
4835+
4836+/* ---------------Read Two Bytes */
4837+static VOID
4838+efuse_ShadowRead2Byte(
4839+ IN PADAPTER pAdapter,
4840+ IN u16 Offset,
4841+ IN OUT u16 *Value)
4842 {
4843- PGPKT_STRUCT targetPkt;
4844- u16 startAddr = 0;
4845- u8 efuseType = EFUSE_BT;
4846+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4847
4848- if (!hal_BT_EfusePgCheckAvailableAddr(pAdapter, bPseudoTest))
4849- return _FALSE;
4850+ *Value = pHalData->efuse_eeprom_data[Offset];
4851+ *Value |= pHalData->efuse_eeprom_data[Offset + 1] << 8;
4852
4853- hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt);
4854+} /* EFUSE_ShadowRead2Byte */
4855
4856- if (!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
4857- return _FALSE;
4858+/* ---------------Read Four Bytes */
4859+static VOID
4860+efuse_ShadowRead4Byte(
4861+ IN PADAPTER pAdapter,
4862+ IN u16 Offset,
4863+ IN OUT u32 *Value)
4864+{
4865+ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4866
4867- if (!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
4868- return _FALSE;
4869+ *Value = pHalData->efuse_eeprom_data[Offset];
4870+ *Value |= pHalData->efuse_eeprom_data[Offset + 1] << 8;
4871+ *Value |= pHalData->efuse_eeprom_data[Offset + 2] << 16;
4872+ *Value |= pHalData->efuse_eeprom_data[Offset + 3] << 24;
4873
4874- if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
4875- return _FALSE;
4876+} /* efuse_ShadowRead4Byte */
4877
4878- return _TRUE;
4879-}
4880+/*-----------------------------------------------------------------------------
4881+ * Function: EFUSE_ShadowRead
4882+ *
4883+ * Overview: Read from pHalData->efuse_eeprom_data
4884+ *---------------------------------------------------------------------------*/
4885+void
4886+EFUSE_ShadowRead(
4887+ IN PADAPTER pAdapter,
4888+ IN u8 Type,
4889+ IN u16 Offset,
4890+ IN OUT u32 *Value)
4891+{
4892+ if (Type == 1)
4893+ efuse_ShadowRead1Byte(pAdapter, Offset, (u8 *)Value);
4894+ else if (Type == 2)
4895+ efuse_ShadowRead2Byte(pAdapter, Offset, (u16 *)Value);
4896+ else if (Type == 4)
4897+ efuse_ShadowRead4Byte(pAdapter, Offset, (u32 *)Value);
4898+
4899+} /* EFUSE_ShadowRead */
4900
4901 /* 11/16/2008 MH Add description. Get current efuse area enabled word!!. */
4902 u8
4903@@ -1155,9 +2949,11 @@ void EFUSE_ShadowMapUpdate(
4904 {
4905 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
4906 u16 mapLen = 0;
4907+#ifdef RTW_HALMAC
4908 u8 *efuse_map = NULL;
4909 int err;
4910
4911+
4912 mapLen = EEPROM_MAX_SIZE;
4913 efuse_map = pHalData->efuse_eeprom_data;
4914 /* efuse default content is 0xFF */
4915@@ -1175,10 +2971,33 @@ void EFUSE_ShadowMapUpdate(
4916 }
4917
4918 if (pHalData->bautoload_fail_flag == _FALSE) {
4919- err = rtw_halmac_read_logical_efuse_map(adapter_to_dvobj(pAdapter), efuse_map, mapLen);
4920+ err = rtw_halmac_read_logical_efuse_map(adapter_to_dvobj(pAdapter), efuse_map, mapLen, NULL, 0);
4921 if (err)
4922 RTW_ERR("%s: <ERROR> fail to get efuse map!\n", __FUNCTION__);
4923 }
4924+#else /* !RTW_HALMAC */
4925+ EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);
4926+
4927+ if (pHalData->bautoload_fail_flag == _TRUE)
4928+ _rtw_memset(pHalData->efuse_eeprom_data, 0xFF, mapLen);
4929+ else {
4930+#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
4931+ if (_SUCCESS != retriveAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pHalData->efuse_eeprom_data)) {
4932+#endif
4933+
4934+ Efuse_ReadAllMap(pAdapter, efuseType, pHalData->efuse_eeprom_data, bPseudoTest);
4935+
4936+#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
4937+ storeAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pHalData->efuse_eeprom_data);
4938+ }
4939+#endif
4940+ }
4941+
4942+ /* PlatformMoveMemory((PVOID)&pHalData->EfuseMap[EFUSE_MODIFY_MAP][0], */
4943+ /* (PVOID)&pHalData->EfuseMap[EFUSE_INIT_MAP][0], mapLen); */
4944+#endif /* !RTW_HALMAC */
4945+
4946+ rtw_mask_map_read(pAdapter, 0x00, mapLen, pHalData->efuse_eeprom_data);
4947
4948 rtw_dump_cur_efuse(pAdapter);
4949 } /* EFUSE_ShadowMapUpdate */
4950@@ -1217,6 +3036,61 @@ u8 mac_hidden_wl_func_to_hal_wl_func(u8 func)
4951 return wl_func;
4952 }
4953
4954+#ifdef PLATFORM_LINUX
4955+#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
4956+/* #include <rtw_eeprom.h> */
4957+
4958+int isAdaptorInfoFileValid(void)
4959+{
4960+ return _TRUE;
4961+}
4962+
4963+int storeAdaptorInfoFile(char *path, u8 *efuse_data)
4964+{
4965+ int ret = _SUCCESS;
4966+
4967+ if (path && efuse_data) {
4968+ ret = rtw_store_to_file(path, efuse_data, EEPROM_MAX_SIZE_512);
4969+ if (ret == EEPROM_MAX_SIZE)
4970+ ret = _SUCCESS;
4971+ else
4972+ ret = _FAIL;
4973+ } else {
4974+ RTW_INFO("%s NULL pointer\n", __FUNCTION__);
4975+ ret = _FAIL;
4976+ }
4977+ return ret;
4978+}
4979+
4980+int retriveAdaptorInfoFile(char *path, u8 *efuse_data)
4981+{
4982+ int ret = _SUCCESS;
4983+ mm_segment_t oldfs;
4984+ struct file *fp;
4985+
4986+ if (path && efuse_data) {
4987+
4988+ ret = rtw_retrieve_from_file(path, efuse_data, EEPROM_MAX_SIZE);
4989+
4990+ if (ret == EEPROM_MAX_SIZE)
4991+ ret = _SUCCESS;
4992+ else
4993+ ret = _FAIL;
4994+
4995+#if 0
4996+ if (isAdaptorInfoFileValid())
4997+ return 0;
4998+ else
4999+ return _FAIL;
5000+#endif
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches