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
diff --git a/Kconfig b/Kconfig
index f1581fc..a77ca31 100644
--- a/Kconfig
+++ b/Kconfig
@@ -1,10 +1,6 @@
1# SPDX-License-Identifier: GPL-2.0
2config RTL8821CE1config RTL8821CE
3 tristate "Realtek 8821CE PCIE Wireless LAN NIC driver"2 tristate "Realtek 8821C PCI WiFi"
4 depends on WLAN && CFG802113 depends on PCI
5 depends on m
6 select WIRELESS_EXT
7 select WEXT_PRIV
8 ---help---4 ---help---
9 This option enables support for RTL8821CE PCI driver. It can be found5 Help message of RTL8821CE
10 on many HP and Lenovo Laptops.6
diff --git a/Makefile b/Makefile
11old mode 1006447old mode 100644
12new mode 1007558new mode 100755
index a53a29b..b844375
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,2176 @@
1# SPDX-License-Identifier: GPL-2.01EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
2obj-m := rtl8821ce.o2EXTRA_CFLAGS += -O1
3#EXTRA_CFLAGS += -O3
4#EXTRA_CFLAGS += -Wall
5#EXTRA_CFLAGS += -Wextra
6#EXTRA_CFLAGS += -Werror
7#EXTRA_CFLAGS += -pedantic
8#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
39
4rtl8821ce-objs += core/rtw_cmd.o \10EXTRA_CFLAGS += -Wno-unused-variable
11EXTRA_CFLAGS += -Wno-unused-value
12EXTRA_CFLAGS += -Wno-unused-label
13EXTRA_CFLAGS += -Wno-unused-parameter
14EXTRA_CFLAGS += -Wno-unused-function
15EXTRA_CFLAGS += -Wno-unused
16#EXTRA_CFLAGS += -Wno-uninitialized
17
18GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
19ifeq ($(GCC_VER_49),1)
20EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
21endif
22
23EXTRA_CFLAGS += -I$(src)/include
24
25EXTRA_LDFLAGS += --strip-debug
26
27CONFIG_AUTOCFG_CP = n
28
29########################## WIFI IC ############################
30CONFIG_MULTIDRV = n
31CONFIG_RTL8188E = n
32CONFIG_RTL8812A = n
33CONFIG_RTL8821A = n
34CONFIG_RTL8192E = n
35CONFIG_RTL8723B = n
36CONFIG_RTL8814A = n
37CONFIG_RTL8723C = n
38CONFIG_RTL8188F = n
39CONFIG_RTL8188GTV = n
40CONFIG_RTL8822B = n
41CONFIG_RTL8723D = n
42CONFIG_RTL8821C = y
43CONFIG_RTL8710B = n
44CONFIG_RTL8192F = n
45######################### Interface ###########################
46CONFIG_USB_HCI = n
47CONFIG_PCI_HCI = y
48CONFIG_SDIO_HCI = n
49CONFIG_GSPI_HCI = n
50########################## Features ###########################
51CONFIG_MP_INCLUDED = y
52CONFIG_POWER_SAVING = y
53CONFIG_USB_AUTOSUSPEND = n
54CONFIG_HW_PWRP_DETECTION = n
55CONFIG_WIFI_TEST = n
56CONFIG_BT_COEXIST = y
57CONFIG_INTEL_WIDI = n
58CONFIG_WAPI_SUPPORT = n
59CONFIG_EFUSE_CONFIG_FILE = y
60CONFIG_EXT_CLK = n
61CONFIG_TRAFFIC_PROTECT = n
62CONFIG_LOAD_PHY_PARA_FROM_FILE = y
63CONFIG_TXPWR_BY_RATE_EN = auto
64CONFIG_TXPWR_LIMIT_EN = auto
65CONFIG_RTW_CHPLAN = 0xFF
66CONFIG_RTW_ADAPTIVITY_EN = disable
67CONFIG_RTW_ADAPTIVITY_MODE = normal
68CONFIG_SIGNAL_SCALE_MAPPING = n
69CONFIG_80211W = n
70CONFIG_REDUCE_TX_CPU_LOADING = n
71CONFIG_BR_EXT = y
72CONFIG_TDLS = n
73CONFIG_WIFI_MONITOR = n
74CONFIG_MCC_MODE = n
75CONFIG_APPEND_VENDOR_IE_ENABLE = n
76CONFIG_RTW_NAPI = y
77CONFIG_RTW_GRO = y
78CONFIG_RTW_NETIF_SG = y
79CONFIG_TX_CSUM_OFFLOAD = n
80CONFIG_RTW_IPCAM_APPLICATION = n
81CONFIG_RTW_REPEATER_SON = n
82CONFIG_RTW_WIFI_HAL = n
83CONFIG_ICMP_VOQ = n
84########################## Debug ###########################
85CONFIG_RTW_DEBUG = y
86# default log level is _DRV_INFO_ = 4,
87# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
88CONFIG_RTW_LOG_LEVEL = 4
89######################## Wake On Lan ##########################
90CONFIG_WOWLAN = n
91#bit2: deauth, bit1: unicast, bit0: magic pkt.
92CONFIG_WAKEUP_TYPE = 0x7
93CONFIG_GPIO_WAKEUP = n
94CONFIG_WAKEUP_GPIO_IDX = default
95CONFIG_HIGH_ACTIVE_DEV2HST = n
96######### only for USB #########
97CONFIG_ONE_PIN_GPIO = n
98CONFIG_HIGH_ACTIVE_HST2DEV = n
99CONFIG_PNO_SUPPORT = n
100CONFIG_PNO_SET_DEBUG = n
101CONFIG_AP_WOWLAN = n
102######### Notify SDIO Host Keep Power During Syspend ##########
103CONFIG_RTW_SDIO_PM_KEEP_POWER = y
104###################### MP HW TX MODE FOR VHT #######################
105CONFIG_MP_VHT_HW_TX_MODE = n
106###################### Platform Related #######################
107CONFIG_PLATFORM_I386_PC = y
108CONFIG_PLATFORM_ANDROID_X86 = n
109CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
110CONFIG_PLATFORM_JB_X86 = n
111CONFIG_PLATFORM_ARM_S3C2K4 = n
112CONFIG_PLATFORM_ARM_PXA2XX = n
113CONFIG_PLATFORM_ARM_S3C6K4 = n
114CONFIG_PLATFORM_MIPS_RMI = n
115CONFIG_PLATFORM_RTD2880B = n
116CONFIG_PLATFORM_MIPS_AR9132 = n
117CONFIG_PLATFORM_RTK_DMP = n
118CONFIG_PLATFORM_MIPS_PLM = n
119CONFIG_PLATFORM_MSTAR389 = n
120CONFIG_PLATFORM_MT53XX = n
121CONFIG_PLATFORM_ARM_MX51_241H = n
122CONFIG_PLATFORM_FS_MX61 = n
123CONFIG_PLATFORM_ACTIONS_ATJ227X = n
124CONFIG_PLATFORM_TEGRA3_CARDHU = n
125CONFIG_PLATFORM_TEGRA4_DALMORE = n
126CONFIG_PLATFORM_ARM_TCC8900 = n
127CONFIG_PLATFORM_ARM_TCC8920 = n
128CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
129CONFIG_PLATFORM_ARM_TCC8930_JB42 = n
130CONFIG_PLATFORM_ARM_RK2818 = n
131CONFIG_PLATFORM_ARM_RK3066 = n
132CONFIG_PLATFORM_ARM_RK3188 = n
133CONFIG_PLATFORM_ARM_URBETTER = n
134CONFIG_PLATFORM_ARM_TI_PANDA = n
135CONFIG_PLATFORM_MIPS_JZ4760 = n
136CONFIG_PLATFORM_DMP_PHILIPS = n
137CONFIG_PLATFORM_MSTAR_TITANIA12 = n
138CONFIG_PLATFORM_MSTAR = n
139CONFIG_PLATFORM_SZEBOOK = n
140CONFIG_PLATFORM_ARM_SUNxI = n
141CONFIG_PLATFORM_ARM_SUN6I = n
142CONFIG_PLATFORM_ARM_SUN7I = n
143CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n
144CONFIG_PLATFORM_ARM_SUN8I_W5P1 = n
145CONFIG_PLATFORM_ACTIONS_ATM702X = n
146CONFIG_PLATFORM_ACTIONS_ATV5201 = n
147CONFIG_PLATFORM_ACTIONS_ATM705X = n
148CONFIG_PLATFORM_ARM_SUN50IW1P1 = n
149CONFIG_PLATFORM_ARM_RTD299X = n
150CONFIG_PLATFORM_ARM_LGE = n
151CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
152CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
153CONFIG_PLATFORM_ARM_WMT = n
154CONFIG_PLATFORM_TI_DM365 = n
155CONFIG_PLATFORM_MOZART = n
156CONFIG_PLATFORM_RTK119X = n
157CONFIG_PLATFORM_RTK119X_AM = n
158CONFIG_PLATFORM_RTK129X = n
159CONFIG_PLATFORM_RTK390X = n
160CONFIG_PLATFORM_NOVATEK_NT72668 = n
161CONFIG_PLATFORM_HISILICON = n
162CONFIG_PLATFORM_HISILICON_HI3798 = n
163CONFIG_PLATFORM_NV_TK1 = n
164CONFIG_PLATFORM_NV_TK1_UBUNTU = n
165CONFIG_PLATFORM_RTL8197D = n
166CONFIG_PLATFORM_AML_S905 = n
167CONFIG_PLATFORM_ZTE_ZX296716 = n
168########### CUSTOMER ################################
169CONFIG_CUSTOMER_HUAWEI_GENERAL = n
170
171CONFIG_DRVEXT_MODULE = n
172
173export TopDIR ?= $(shell pwd)
174
175########### COMMON #################################
176ifeq ($(CONFIG_GSPI_HCI), y)
177HCI_NAME = gspi
178endif
179
180ifeq ($(CONFIG_SDIO_HCI), y)
181HCI_NAME = sdio
182endif
183
184ifeq ($(CONFIG_USB_HCI), y)
185HCI_NAME = usb
186endif
187
188ifeq ($(CONFIG_PCI_HCI), y)
189HCI_NAME = pci
190endif
191
192
193_OS_INTFS_FILES := os_dep/osdep_service.o \
194 os_dep/linux/os_intfs.o \
195 os_dep/linux/$(HCI_NAME)_intf.o \
196 os_dep/linux/$(HCI_NAME)_ops_linux.o \
197 os_dep/linux/ioctl_linux.o \
198 os_dep/linux/xmit_linux.o \
199 os_dep/linux/mlme_linux.o \
200 os_dep/linux/recv_linux.o \
201 os_dep/linux/ioctl_cfg80211.o \
202 os_dep/linux/rtw_cfgvendor.o \
203 os_dep/linux/wifi_regd.o \
204 os_dep/linux/rtw_android.o \
205 os_dep/linux/rtw_proc.o \
206 os_dep/linux/rtw_rhashtable.o
207
208ifeq ($(CONFIG_MP_INCLUDED), y)
209_OS_INTFS_FILES += os_dep/linux/ioctl_mp.o
210endif
211
212ifeq ($(CONFIG_SDIO_HCI), y)
213_OS_INTFS_FILES += os_dep/linux/custom_gpio_linux.o
214_OS_INTFS_FILES += os_dep/linux/$(HCI_NAME)_ops_linux.o
215endif
216
217ifeq ($(CONFIG_GSPI_HCI), y)
218_OS_INTFS_FILES += os_dep/linux/custom_gpio_linux.o
219_OS_INTFS_FILES += os_dep/linux/$(HCI_NAME)_ops_linux.o
220endif
221
222
223_HAL_INTFS_FILES := hal/hal_intf.o \
224 hal/hal_com.o \
225 hal/hal_com_phycfg.o \
226 hal/hal_phy.o \
227 hal/hal_dm.o \
228 hal/hal_dm_acs.o \
229 hal/hal_btcoex_wifionly.o \
230 hal/hal_btcoex.o \
231 hal/hal_mp.o \
232 hal/hal_mcc.o \
233 hal/hal_hci/hal_$(HCI_NAME).o \
234 hal/led/hal_led.o \
235 hal/led/hal_$(HCI_NAME)_led.o
236
237
238EXTRA_CFLAGS += -I$(src)/platform
239_PLATFORM_FILES := platform/platform_ops.o
240
241EXTRA_CFLAGS += -I$(src)/hal/btc
242
243########### HAL_RTL8188E #################################
244ifeq ($(CONFIG_RTL8188E), y)
245
246RTL871X = rtl8188e
247ifeq ($(CONFIG_SDIO_HCI), y)
248MODULE_NAME = 8189es
249endif
250
251ifeq ($(CONFIG_GSPI_HCI), y)
252MODULE_NAME = 8189es
253endif
254
255ifeq ($(CONFIG_USB_HCI), y)
256MODULE_NAME = 8188eu
257endif
258
259ifeq ($(CONFIG_PCI_HCI), y)
260MODULE_NAME = 8188ee
261endif
262EXTRA_CFLAGS += -DCONFIG_RTL8188E
263
264_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
265 hal/$(RTL871X)/Hal8188EPwrSeq.o\
266 hal/$(RTL871X)/$(RTL871X)_xmit.o\
267 hal/$(RTL871X)/$(RTL871X)_sreset.o
268
269_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
270 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
271 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
272 hal/$(RTL871X)/$(RTL871X)_dm.o \
273 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
274 hal/$(RTL871X)/$(RTL871X)_cmd.o \
275 hal/$(RTL871X)/hal8188e_s_fw.o \
276 hal/$(RTL871X)/hal8188e_t_fw.o \
277 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
278 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
279 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
280 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
281
282ifeq ($(CONFIG_SDIO_HCI), y)
283_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
284else
285ifeq ($(CONFIG_GSPI_HCI), y)
286_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
287else
288_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
289endif
290endif
291
292ifeq ($(CONFIG_USB_HCI), y)
293_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_USB.o
294endif
295ifeq ($(CONFIG_PCI_HCI), y)
296_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_PCIE.o
297endif
298ifeq ($(CONFIG_SDIO_HCI), y)
299_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_SDIO.o
300endif
301
302endif
303
304########### HAL_RTL8192E #################################
305ifeq ($(CONFIG_RTL8192E), y)
306
307RTL871X = rtl8192e
308ifeq ($(CONFIG_SDIO_HCI), y)
309MODULE_NAME = 8192es
310endif
311
312ifeq ($(CONFIG_USB_HCI), y)
313MODULE_NAME = 8192eu
314endif
315
316ifeq ($(CONFIG_PCI_HCI), y)
317MODULE_NAME = 8192ee
318endif
319EXTRA_CFLAGS += -DCONFIG_RTL8192E
320_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
321 hal/$(RTL871X)/Hal8192EPwrSeq.o\
322 hal/$(RTL871X)/$(RTL871X)_xmit.o\
323 hal/$(RTL871X)/$(RTL871X)_sreset.o
324
325_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
326 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
327 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
328 hal/$(RTL871X)/$(RTL871X)_dm.o \
329 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
330 hal/$(RTL871X)/$(RTL871X)_cmd.o \
331 hal/$(RTL871X)/hal8192e_fw.o \
332 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
333 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
334 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
335 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
336
337ifeq ($(CONFIG_SDIO_HCI), y)
338_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
339else
340ifeq ($(CONFIG_GSPI_HCI), y)
341_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
342else
343_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
344endif
345endif
346
347ifeq ($(CONFIG_USB_HCI), y)
348_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_USB.o
349endif
350ifeq ($(CONFIG_PCI_HCI), y)
351_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_PCIE.o
352endif
353ifeq ($(CONFIG_SDIO_HCI), y)
354_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_SDIO.o
355endif
356
357ifeq ($(CONFIG_BT_COEXIST), y)
358_BTC_FILES += hal/btc/halbtc8192e1ant.o \
359 hal/btc/halbtc8192e2ant.o
360endif
361
362endif
363
364########### HAL_RTL8812A_RTL8821A #################################
365
366ifneq ($(CONFIG_RTL8812A)_$(CONFIG_RTL8821A), n_n)
367
368RTL871X = rtl8812a
369ifeq ($(CONFIG_USB_HCI), y)
370MODULE_NAME = 8812au
371endif
372ifeq ($(CONFIG_PCI_HCI), y)
373MODULE_NAME = 8812ae
374endif
375ifeq ($(CONFIG_SDIO_HCI), y)
376MODULE_NAME = 8812as
377endif
378
379_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
380 hal/$(RTL871X)/Hal8812PwrSeq.o \
381 hal/$(RTL871X)/Hal8821APwrSeq.o\
382 hal/$(RTL871X)/$(RTL871X)_xmit.o\
383 hal/$(RTL871X)/$(RTL871X)_sreset.o
384
385_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
386 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
387 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
388 hal/$(RTL871X)/$(RTL871X)_dm.o \
389 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
390 hal/$(RTL871X)/$(RTL871X)_cmd.o \
391 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
392 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
393 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
394 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
395
396ifeq ($(CONFIG_SDIO_HCI), y)
397_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
398else
399ifeq ($(CONFIG_GSPI_HCI), y)
400_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
401else
402_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
403endif
404endif
405
406ifeq ($(CONFIG_RTL8812A), y)
407ifeq ($(CONFIG_USB_HCI), y)
408_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8812A_USB.o
409endif
410ifeq ($(CONFIG_PCI_HCI), y)
411_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8812A_PCIE.o
412endif
413endif
414ifeq ($(CONFIG_RTL8821A), y)
415ifeq ($(CONFIG_USB_HCI), y)
416_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_USB.o
417endif
418ifeq ($(CONFIG_PCI_HCI), y)
419_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_PCIE.o
420endif
421ifeq ($(CONFIG_SDIO_HCI), y)
422_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_SDIO.o
423endif
424endif
425
426ifeq ($(CONFIG_RTL8812A), y)
427EXTRA_CFLAGS += -DCONFIG_RTL8812A
428_HAL_INTFS_FILES += hal/rtl8812a/hal8812a_fw.o
429endif
430
431ifeq ($(CONFIG_RTL8821A), y)
432
433ifeq ($(CONFIG_RTL8812A), n)
434
435RTL871X = rtl8821a
436ifeq ($(CONFIG_USB_HCI), y)
437ifeq ($(CONFIG_BT_COEXIST), y)
438MODULE_NAME := 8821au
439else
440MODULE_NAME := 8811au
441endif
442endif
443ifeq ($(CONFIG_PCI_HCI), y)
444MODULE_NAME := 8821ae
445endif
446ifeq ($(CONFIG_SDIO_HCI), y)
447MODULE_NAME := 8821as
448endif
449
450endif
451
452EXTRA_CFLAGS += -DCONFIG_RTL8821A
453
454_HAL_INTFS_FILES += hal/rtl8812a/hal8821a_fw.o
455
456endif
457
458ifeq ($(CONFIG_BT_COEXIST), y)
459ifeq ($(CONFIG_RTL8812A), y)
460_BTC_FILES += hal/btc/halbtc8812a1ant.o \
461 hal/btc/halbtc8812a2ant.o
462endif
463ifeq ($(CONFIG_RTL8821A), y)
464_BTC_FILES += hal/btc/halbtc8821a1ant.o \
465 hal/btc/halbtc8821a2ant.o
466endif
467endif
468
469endif
470
471########### HAL_RTL8723B #################################
472ifeq ($(CONFIG_RTL8723B), y)
473
474RTL871X = rtl8723b
475ifeq ($(CONFIG_USB_HCI), y)
476MODULE_NAME = 8723bu
477endif
478ifeq ($(CONFIG_PCI_HCI), y)
479MODULE_NAME = 8723be
480endif
481ifeq ($(CONFIG_SDIO_HCI), y)
482MODULE_NAME = 8723bs
483endif
484
485EXTRA_CFLAGS += -DCONFIG_RTL8723B
486
487_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
488 hal/$(RTL871X)/Hal8723BPwrSeq.o\
489 hal/$(RTL871X)/$(RTL871X)_sreset.o
490
491_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
492 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
493 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
494 hal/$(RTL871X)/$(RTL871X)_dm.o \
495 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
496 hal/$(RTL871X)/$(RTL871X)_cmd.o \
497 hal/$(RTL871X)/hal8723b_fw.o
498
499_HAL_INTFS_FILES += \
500 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
501 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
502 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
503 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
504
505ifeq ($(CONFIG_PCI_HCI), y)
506_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
507else
508_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
509endif
510
511ifeq ($(CONFIG_USB_HCI), y)
512_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_USB.o
513endif
514ifeq ($(CONFIG_PCI_HCI), y)
515_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_PCIE.o
516endif
517ifeq ($(CONFIG_SDIO_HCI), y)
518_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_SDIO.o
519endif
520
521_BTC_FILES += hal/btc/halbtc8723bwifionly.o
522ifeq ($(CONFIG_BT_COEXIST), y)
523_BTC_FILES += hal/btc/halbtc8723b1ant.o \
524 hal/btc/halbtc8723b2ant.o
525endif
526
527endif
528
529########### HAL_RTL8814A #################################
530ifeq ($(CONFIG_RTL8814A), y)
531## ADD NEW VHT MP HW TX MODE ##
532#EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
533#CONFIG_MP_VHT_HW_TX_MODE = y
534##########################################
535RTL871X = rtl8814a
536ifeq ($(CONFIG_USB_HCI), y)
537MODULE_NAME = 8814au
538endif
539ifeq ($(CONFIG_PCI_HCI), y)
540MODULE_NAME = 8814ae
541endif
542ifeq ($(CONFIG_SDIO_HCI), y)
543MODULE_NAME = 8814as
544endif
545
546EXTRA_CFLAGS += -DCONFIG_RTL8814A
547
548_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
549 hal/$(RTL871X)/Hal8814PwrSeq.o \
550 hal/$(RTL871X)/$(RTL871X)_xmit.o\
551 hal/$(RTL871X)/$(RTL871X)_sreset.o
552
553_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
554 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
555 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
556 hal/$(RTL871X)/$(RTL871X)_dm.o \
557 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
558 hal/$(RTL871X)/$(RTL871X)_cmd.o \
559 hal/$(RTL871X)/hal8814a_fw.o
560
561
562_HAL_INTFS_FILES += \
563 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
564 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
565 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
566 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
567
568ifeq ($(CONFIG_SDIO_HCI), y)
569_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
570else
571ifeq ($(CONFIG_GSPI_HCI), y)
572_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
573else
574_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
575endif
576endif
577
578ifeq ($(CONFIG_USB_HCI), y)
579_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8814A_USB.o
580endif
581ifeq ($(CONFIG_PCI_HCI), y)
582_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8814A_PCIE.o
583endif
584
585endif
586
587########### HAL_RTL8723C #################################
588ifeq ($(CONFIG_RTL8723C), y)
589
590RTL871X = rtl8703b
591ifeq ($(CONFIG_USB_HCI), y)
592MODULE_NAME = 8723cu
593MODULE_SUB_NAME = 8703bu
594endif
595ifeq ($(CONFIG_PCI_HCI), y)
596MODULE_NAME = 8723ce
597MODULE_SUB_NAME = 8703be
598endif
599ifeq ($(CONFIG_SDIO_HCI), y)
600MODULE_NAME = 8723cs
601MODULE_SUB_NAME = 8703bs
602endif
603
604EXTRA_CFLAGS += -DCONFIG_RTL8703B
605
606_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
607 hal/$(RTL871X)/Hal8703BPwrSeq.o\
608 hal/$(RTL871X)/$(RTL871X)_sreset.o
609
610_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
611 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
612 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
613 hal/$(RTL871X)/$(RTL871X)_dm.o \
614 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
615 hal/$(RTL871X)/$(RTL871X)_cmd.o \
616 hal/$(RTL871X)/hal8703b_fw.o
617
618_HAL_INTFS_FILES += \
619 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
620 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
621 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
622 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
623
624ifeq ($(CONFIG_PCI_HCI), y)
625_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
626else
627_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
628endif
629
630ifeq ($(CONFIG_USB_HCI), y)
631_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8703B_USB.o
632endif
633ifeq ($(CONFIG_PCI_HCI), y)
634_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8703B_PCIE.o
635endif
636
637ifeq ($(CONFIG_BT_COEXIST), y)
638_BTC_FILES += hal/btc/halbtc8703b1ant.o
639endif
640
641endif
642
643########### HAL_RTL8723D #################################
644ifeq ($(CONFIG_RTL8723D), y)
645
646RTL871X = rtl8723d
647ifeq ($(CONFIG_USB_HCI), y)
648MODULE_NAME = 8723du
649MODULE_SUB_NAME = 8723du
650endif
651ifeq ($(CONFIG_PCI_HCI), y)
652MODULE_NAME = 8723de
653MODULE_SUB_NAME = 8723de
654endif
655ifeq ($(CONFIG_SDIO_HCI), y)
656MODULE_NAME = 8723ds
657MODULE_SUB_NAME = 8723ds
658endif
659
660EXTRA_CFLAGS += -DCONFIG_RTL8723D
661
662_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
663 hal/$(RTL871X)/Hal8723DPwrSeq.o\
664 hal/$(RTL871X)/$(RTL871X)_sreset.o
665
666_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
667 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
668 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
669 hal/$(RTL871X)/$(RTL871X)_dm.o \
670 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
671 hal/$(RTL871X)/$(RTL871X)_cmd.o \
672 hal/$(RTL871X)/hal8723d_fw.o \
673 hal/$(RTL871X)/$(RTL871X)_lps_poff.o
674
675
676_HAL_INTFS_FILES += \
677 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
678 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
679 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
680 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
681
682ifeq ($(CONFIG_PCI_HCI), y)
683_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
684else
685_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
686endif
687
688ifeq ($(CONFIG_USB_HCI), y)
689_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723D_USB.o
690endif
691ifeq ($(CONFIG_PCI_HCI), y)
692_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723D_PCIE.o
693endif
694
695ifeq ($(CONFIG_BT_COEXIST), y)
696_BTC_FILES += hal/btc/halbtc8723d1ant.o \
697 hal/btc/halbtc8723d2ant.o
698endif
699
700endif
701
702########### HAL_RTL8188F #################################
703ifeq ($(CONFIG_RTL8188F), y)
704
705RTL871X = rtl8188f
706ifeq ($(CONFIG_USB_HCI), y)
707MODULE_NAME = 8188fu
708endif
709ifeq ($(CONFIG_PCI_HCI), y)
710MODULE_NAME = 8188fe
711endif
712ifeq ($(CONFIG_SDIO_HCI), y)
713MODULE_NAME = 8189fs
714endif
715
716EXTRA_CFLAGS += -DCONFIG_RTL8188F
717
718_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
719 hal/$(RTL871X)/Hal8188FPwrSeq.o\
720 hal/$(RTL871X)/$(RTL871X)_sreset.o
721
722_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
723 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
724 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
725 hal/$(RTL871X)/$(RTL871X)_dm.o \
726 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
727 hal/$(RTL871X)/$(RTL871X)_cmd.o \
728 hal/$(RTL871X)/hal8188f_fw.o
729
730_HAL_INTFS_FILES += \
731 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
732 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
733 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
734 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
735
736ifeq ($(CONFIG_PCI_HCI), y)
737_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
738else
739_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
740endif
741
742ifeq ($(CONFIG_USB_HCI), y)
743_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188F_USB.o
744endif
745
746ifeq ($(CONFIG_SDIO_HCI), y)
747_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188F_SDIO.o
748endif
749
750endif
751
752########### HAL_RTL8188GTV #################################
753ifeq ($(CONFIG_RTL8188GTV), y)
754
755RTL871X = rtl8188gtv
756ifeq ($(CONFIG_USB_HCI), y)
757MODULE_NAME = 8188gtvu
758endif
759ifeq ($(CONFIG_SDIO_HCI), y)
760MODULE_NAME = 8189gtvs
761endif
762
763EXTRA_CFLAGS += -DCONFIG_RTL8188GTV
764
765_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
766 hal/$(RTL871X)/Hal8188GTVPwrSeq.o\
767 hal/$(RTL871X)/$(RTL871X)_sreset.o
768
769_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
770 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
771 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
772 hal/$(RTL871X)/$(RTL871X)_dm.o \
773 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
774 hal/$(RTL871X)/$(RTL871X)_cmd.o \
775 hal/$(RTL871X)/hal8188gtv_fw.o
776
777_HAL_INTFS_FILES += \
778 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
779 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
780 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
781 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o
782
783ifeq ($(CONFIG_PCI_HCI), y)
784_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
785else
786_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
787endif
788
789ifeq ($(CONFIG_USB_HCI), y)
790_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188GTV_USB.o
791endif
792
793ifeq ($(CONFIG_SDIO_HCI), y)
794_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188GTV_SDIO.o
795endif
796
797endif
798
799########### HAL_RTL8822B #################################
800ifeq ($(CONFIG_RTL8822B), y)
801RTL871X := rtl8822b
802ifeq ($(CONFIG_USB_HCI), y)
803ifeq ($(CONFIG_BT_COEXIST), n)
804MODULE_NAME = 8812bu
805else
806MODULE_NAME = 88x2bu
807endif
808endif
809ifeq ($(CONFIG_PCI_HCI), y)
810MODULE_NAME = 88x2be
811endif
812ifeq ($(CONFIG_SDIO_HCI), y)
813MODULE_NAME = 88x2bs
814endif
815
816endif
817########### HAL_RTL8821C #################################
818ifeq ($(CONFIG_RTL8821C), y)
819RTL871X := rtl8821c
820ifeq ($(CONFIG_USB_HCI), y)
821MODULE_NAME = 8821cu
822endif
823ifeq ($(CONFIG_PCI_HCI), y)
824MODULE_NAME = 8821ce
825endif
826ifeq ($(CONFIG_SDIO_HCI), y)
827MODULE_NAME = 8821cs
828endif
829
830endif
831
832########### HAL_RTL8710B #################################
833ifeq ($(CONFIG_RTL8710B), y)
834
835RTL871X = rtl8710b
836ifeq ($(CONFIG_USB_HCI), y)
837MODULE_NAME = 8710bu
838MODULE_SUB_NAME = 8710bu
839endif
840
841EXTRA_CFLAGS += -DCONFIG_RTL8710B
842
843_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
844 hal/$(RTL871X)/Hal8710BPwrSeq.o\
845 hal/$(RTL871X)/$(RTL871X)_sreset.o
846
847_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
848 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
849 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
850 hal/$(RTL871X)/$(RTL871X)_dm.o \
851 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
852 hal/$(RTL871X)/$(RTL871X)_cmd.o \
853 hal/$(RTL871X)/hal8710b_fw.o \
854 hal/$(RTL871X)/$(RTL871X)_lps_poff.o
855
856
857_HAL_INTFS_FILES += \
858 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
859 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
860 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
861 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
862
863_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
864
865ifeq ($(CONFIG_USB_HCI), y)
866_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8710B_USB.o
867endif
868
869endif
870
871########### HAL_RTL8192F #################################
872ifeq ($(CONFIG_RTL8192F), y)
873
874RTL871X = rtl8192f
875ifeq ($(CONFIG_USB_HCI), y)
876MODULE_NAME = 8192fu
877MODULE_SUB_NAME = 8192fu
878endif
879ifeq ($(CONFIG_PCI_HCI), y)
880MODULE_NAME = 8192fe
881MODULE_SUB_NAME = 8192fe
882endif
883ifeq ($(CONFIG_SDIO_HCI), y)
884MODULE_NAME = 8192fs
885MODULE_SUB_NAME = 8192fs
886endif
887
888EXTRA_CFLAGS += -DCONFIG_RTL8192F
889
890_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
891 hal/$(RTL871X)/Hal8192FPwrSeq.o\
892 hal/$(RTL871X)/$(RTL871X)_sreset.o
893
894_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \
895 hal/$(RTL871X)/$(RTL871X)_phycfg.o \
896 hal/$(RTL871X)/$(RTL871X)_rf6052.o \
897 hal/$(RTL871X)/$(RTL871X)_dm.o \
898 hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
899 hal/$(RTL871X)/$(RTL871X)_cmd.o \
900 hal/$(RTL871X)/hal8192f_fw.o \
901 hal/$(RTL871X)/$(RTL871X)_lps_poff.o
902
903
904_HAL_INTFS_FILES += \
905 hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
906 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
907 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
908 hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o
909
910ifeq ($(CONFIG_PCI_HCI), y)
911_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
912else
913_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
914endif
915
916ifeq ($(CONFIG_SDIO_HCI), y)
917_HAL_INTFS_FILES += hal/efuse/$(RTL871X)/HalEfuseMask8192F_SDIO.o
918endif
919
920ifeq ($(CONFIG_USB_HCI), y)
921_HAL_INTFS_FILES += hal/efuse/$(RTL871X)/HalEfuseMask8192F_USB.o
922endif
923
924ifeq ($(CONFIG_PCI_HCI), y)
925_HAL_INTFS_FILES += hal/efuse/$(RTL871X)/HalEfuseMask8192F_PCIE.o
926endif
927
928endif
929########### AUTO_CFG #################################
930
931ifeq ($(CONFIG_AUTOCFG_CP), y)
932
933ifeq ($(CONFIG_MULTIDRV), y)
934$(shell cp $(TopDIR)/autoconf_multidrv_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
935else
936ifeq ($(CONFIG_RTL8188E)$(CONFIG_SDIO_HCI),yy)
937$(shell cp $(TopDIR)/autoconf_rtl8189e_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
938else ifeq ($(CONFIG_RTL8188F)$(CONFIG_SDIO_HCI),yy)
939$(shell cp $(TopDIR)/autoconf_rtl8189f_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
940else ifeq ($(CONFIG_RTL8723C),y)
941$(shell cp $(TopDIR)/autoconf_rtl8723c_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
942else
943$(shell cp $(TopDIR)/autoconf_$(RTL871X)_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
944endif
945endif
946
947endif
948
949########### END OF PATH #################################
950
951ifeq ($(CONFIG_USB_HCI), y)
952ifeq ($(CONFIG_USB_AUTOSUSPEND), y)
953EXTRA_CFLAGS += -DCONFIG_USB_AUTOSUSPEND
954endif
955endif
956
957ifeq ($(CONFIG_MP_INCLUDED), y)
958#MODULE_NAME := $(MODULE_NAME)_mp
959EXTRA_CFLAGS += -DCONFIG_MP_INCLUDED
960endif
961
962ifeq ($(CONFIG_POWER_SAVING), y)
963EXTRA_CFLAGS += -DCONFIG_POWER_SAVING
964endif
965
966ifeq ($(CONFIG_HW_PWRP_DETECTION), y)
967EXTRA_CFLAGS += -DCONFIG_HW_PWRP_DETECTION
968endif
969
970ifeq ($(CONFIG_WIFI_TEST), y)
971EXTRA_CFLAGS += -DCONFIG_WIFI_TEST
972endif
973
974ifeq ($(CONFIG_BT_COEXIST), y)
975EXTRA_CFLAGS += -DCONFIG_BT_COEXIST
976endif
977
978ifeq ($(CONFIG_INTEL_WIDI), y)
979EXTRA_CFLAGS += -DCONFIG_INTEL_WIDI
980endif
981
982ifeq ($(CONFIG_WAPI_SUPPORT), y)
983EXTRA_CFLAGS += -DCONFIG_WAPI_SUPPORT
984endif
985
986
987ifeq ($(CONFIG_EFUSE_CONFIG_FILE), y)
988EXTRA_CFLAGS += -DCONFIG_EFUSE_CONFIG_FILE
989
990#EFUSE_MAP_PATH
991USER_EFUSE_MAP_PATH ?=
992ifneq ($(USER_EFUSE_MAP_PATH),)
993EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"$(USER_EFUSE_MAP_PATH)\"
994else ifeq ($(MODULE_NAME), 8189es)
995EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_8189e.map\"
996else ifeq ($(MODULE_NAME), 8723bs)
997EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_8723bs.map\"
998else
999EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_$(MODULE_NAME).map\"
1000endif
1001
1002#WIFIMAC_PATH
1003USER_WIFIMAC_PATH ?=
1004ifneq ($(USER_WIFIMAC_PATH),)
1005EXTRA_CFLAGS += -DWIFIMAC_PATH=\"$(USER_WIFIMAC_PATH)\"
1006else
1007EXTRA_CFLAGS += -DWIFIMAC_PATH=\"/data/wifimac.txt\"
1008endif
1009
1010endif
1011
1012ifeq ($(CONFIG_EXT_CLK), y)
1013EXTRA_CFLAGS += -DCONFIG_EXT_CLK
1014endif
1015
1016ifeq ($(CONFIG_TRAFFIC_PROTECT), y)
1017EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1018endif
1019
1020ifeq ($(CONFIG_LOAD_PHY_PARA_FROM_FILE), y)
1021EXTRA_CFLAGS += -DCONFIG_LOAD_PHY_PARA_FROM_FILE
1022#EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH_WITH_IC_NAME_FOLDER
1023EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH=\"/lib/firmware/\"
1024endif
1025
1026ifeq ($(CONFIG_TXPWR_BY_RATE_EN), n)
1027EXTRA_CFLAGS += -DCONFIG_TXPWR_BY_RATE_EN=0
1028else ifeq ($(CONFIG_TXPWR_BY_RATE_EN), y)
1029EXTRA_CFLAGS += -DCONFIG_TXPWR_BY_RATE_EN=1
1030else ifeq ($(CONFIG_TXPWR_BY_RATE_EN), auto)
1031EXTRA_CFLAGS += -DCONFIG_TXPWR_BY_RATE_EN=2
1032endif
1033
1034ifeq ($(CONFIG_TXPWR_LIMIT_EN), n)
1035EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=0
1036else ifeq ($(CONFIG_TXPWR_LIMIT_EN), y)
1037EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=1
1038else ifeq ($(CONFIG_TXPWR_LIMIT_EN), auto)
1039EXTRA_CFLAGS += -DCONFIG_TXPWR_LIMIT_EN=2
1040endif
1041
1042ifneq ($(CONFIG_RTW_CHPLAN), 0xFF)
1043EXTRA_CFLAGS += -DCONFIG_RTW_CHPLAN=$(CONFIG_RTW_CHPLAN)
1044endif
1045
1046ifeq ($(CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY), y)
1047EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_BY_REGULATORY
1048endif
1049
1050ifeq ($(CONFIG_CALIBRATE_TX_POWER_TO_MAX), y)
1051EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_TO_MAX
1052endif
1053
1054ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), disable)
1055EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=0
1056else ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), enable)
1057EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=1
1058endif
1059
1060ifeq ($(CONFIG_RTW_ADAPTIVITY_MODE), normal)
1061EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_MODE=0
1062else ifeq ($(CONFIG_RTW_ADAPTIVITY_MODE), carrier_sense)
1063EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_MODE=1
1064endif
1065
1066ifeq ($(CONFIG_SIGNAL_SCALE_MAPPING), y)
1067EXTRA_CFLAGS += -DCONFIG_SIGNAL_SCALE_MAPPING
1068endif
1069
1070ifeq ($(CONFIG_80211W), y)
1071EXTRA_CFLAGS += -DCONFIG_IEEE80211W
1072endif
1073
1074ifeq ($(CONFIG_WOWLAN), y)
1075EXTRA_CFLAGS += -DCONFIG_WOWLAN -DRTW_WAKEUP_EVENT=$(CONFIG_WAKEUP_TYPE)
1076ifeq ($(CONFIG_SDIO_HCI), y)
1077EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
1078endif
1079endif
1080
1081ifeq ($(CONFIG_AP_WOWLAN), y)
1082EXTRA_CFLAGS += -DCONFIG_AP_WOWLAN
1083ifeq ($(CONFIG_SDIO_HCI), y)
1084EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
1085endif
1086endif
1087
1088ifeq ($(CONFIG_PNO_SUPPORT), y)
1089EXTRA_CFLAGS += -DCONFIG_PNO_SUPPORT
1090ifeq ($(CONFIG_PNO_SET_DEBUG), y)
1091EXTRA_CFLAGS += -DCONFIG_PNO_SET_DEBUG
1092endif
1093endif
1094
1095ifeq ($(CONFIG_GPIO_WAKEUP), y)
1096EXTRA_CFLAGS += -DCONFIG_GPIO_WAKEUP
1097ifeq ($(CONFIG_ONE_PIN_GPIO), y)
1098EXTRA_CFLAGS += -DCONFIG_RTW_ONE_PIN_GPIO
1099endif
1100ifeq ($(CONFIG_HIGH_ACTIVE_DEV2HST), y)
1101EXTRA_CFLAGS += -DHIGH_ACTIVE_DEV2HST=1
1102else
1103EXTRA_CFLAGS += -DHIGH_ACTIVE_DEV2HST=0
1104endif
1105endif
1106
1107ifeq ($(CONFIG_HIGH_ACTIVE_HST2DEV), y)
1108EXTRA_CFLAGS += -DHIGH_ACTIVE_HST2DEV=1
1109else
1110EXTRA_CFLAGS += -DHIGH_ACTIVE_HST2DEV=0
1111endif
1112
1113ifneq ($(CONFIG_WAKEUP_GPIO_IDX), default)
1114EXTRA_CFLAGS += -DWAKEUP_GPIO_IDX=$(CONFIG_WAKEUP_GPIO_IDX)
1115endif
1116
1117ifeq ($(CONFIG_RTW_SDIO_PM_KEEP_POWER), y)
1118ifeq ($(CONFIG_SDIO_HCI), y)
1119EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
1120endif
1121endif
1122
1123ifeq ($(CONFIG_REDUCE_TX_CPU_LOADING), y)
1124EXTRA_CFLAGS += -DCONFIG_REDUCE_TX_CPU_LOADING
1125endif
1126
1127ifeq ($(CONFIG_BR_EXT), y)
1128BR_NAME = br0
1129EXTRA_CFLAGS += -DCONFIG_BR_EXT
1130EXTRA_CFLAGS += '-DCONFIG_BR_EXT_BRNAME="'$(BR_NAME)'"'
1131endif
1132
1133
1134ifeq ($(CONFIG_TDLS), y)
1135EXTRA_CFLAGS += -DCONFIG_TDLS
1136endif
1137
1138ifeq ($(CONFIG_WIFI_MONITOR), y)
1139EXTRA_CFLAGS += -DCONFIG_WIFI_MONITOR
1140endif
1141
1142ifeq ($(CONFIG_MCC_MODE), y)
1143EXTRA_CFLAGS += -DCONFIG_MCC_MODE
1144endif
1145
1146ifeq ($(CONFIG_RTW_NAPI), y)
1147EXTRA_CFLAGS += -DCONFIG_RTW_NAPI
1148endif
1149
1150ifeq ($(CONFIG_RTW_GRO), y)
1151EXTRA_CFLAGS += -DCONFIG_RTW_GRO
1152endif
1153
1154ifeq ($(CONFIG_RTW_REPEATER_SON), y)
1155EXTRA_CFLAGS += -DCONFIG_RTW_REPEATER_SON
1156endif
1157
1158ifeq ($(CONFIG_RTW_IPCAM_APPLICATION), y)
1159EXTRA_CFLAGS += -DCONFIG_RTW_IPCAM_APPLICATION
1160ifeq ($(CONFIG_WIFI_MONITOR), n)
1161EXTRA_CFLAGS += -DCONFIG_WIFI_MONITOR
1162endif
1163endif
1164
1165ifeq ($(CONFIG_RTW_NETIF_SG), y)
1166EXTRA_CFLAGS += -DCONFIG_RTW_NETIF_SG
1167endif
1168
1169ifeq ($(CONFIG_TX_CSUM_OFFLOAD), y)
1170EXTRA_CFLAGS += -DCONFIG_TX_CSUM_OFFLOAD
1171endif
1172
1173ifeq ($(CONFIG_ICMP_VOQ), y)
1174EXTRA_CFLAGS += -DCONFIG_ICMP_VOQ
1175endif
1176
1177ifeq ($(CONFIG_RTW_WIFI_HAL), y)
1178#EXTRA_CFLAGS += -DCONFIG_RTW_WIFI_HAL_DEBUG
1179EXTRA_CFLAGS += -DCONFIG_RTW_WIFI_HAL
1180EXTRA_CFLAGS += -DCONFIG_RTW_CFGVEDNOR_LLSTATS
1181EXTRA_CFLAGS += -DCONFIG_RTW_CFGVENDOR_RANDOM_MAC_OUI
1182EXTRA_CFLAGS += -DCONFIG_RTW_CFGVEDNOR_RSSIMONITOR
1183EXTRA_CFLAGS += -DCONFIG_RTW_CFGVENDOR_WIFI_LOGGER
1184endif
1185
1186ifeq ($(CONFIG_MP_VHT_HW_TX_MODE), y)
1187EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
1188ifeq ($(CONFIG_PLATFORM_I386_PC), y)
1189## For I386 X86 ToolChain use Hardware FLOATING
1190EXTRA_CFLAGS += -mhard-float
1191else
1192## For ARM ToolChain use Hardware FLOATING
1193EXTRA_CFLAGS += -mfloat-abi=hard
1194endif
1195endif
1196
1197ifeq ($(CONFIG_APPEND_VENDOR_IE_ENABLE), y)
1198EXTRA_CFLAGS += -DCONFIG_APPEND_VENDOR_IE_ENABLE
1199endif
1200
1201ifeq ($(CONFIG_RTW_DEBUG), y)
1202EXTRA_CFLAGS += -DCONFIG_RTW_DEBUG
1203EXTRA_CFLAGS += -DRTW_LOG_LEVEL=$(CONFIG_RTW_LOG_LEVEL)
1204endif
1205
1206EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04
1207
1208ifeq ($(CONFIG_PLATFORM_I386_PC), y)
1209EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1210EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1211SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
1212ARCH ?= $(SUBARCH)
1213CROSS_COMPILE ?=
1214KVER := $(shell uname -r)
1215KSRC := /lib/modules/$(KVER)/build
1216MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
1217INSTALL_PREFIX :=
1218STAGINGMODDIR := /lib/modules/$(KVER)/kernel/drivers/staging
1219endif
1220
1221ifeq ($(CONFIG_PLATFORM_NV_TK1), y)
1222EXTRA_CFLAGS += -DCONFIG_PLATFORM_NV_TK1
1223EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1224# default setting for Android 4.1, 4.2
1225EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1226EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1227EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_PLATFORM_ANDROID
1228# Enable this for Android 5.0
1229EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1230EXTRA_CFLAGS += -DRTW_VENDOR_EXT_SUPPORT
1231EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1232ARCH ?= arm
1233
1234CROSS_COMPILE := /mnt/newdisk/android_sdk/nvidia_tk1/android_L/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
1235KSRC :=/mnt/newdisk/android_sdk/nvidia_tk1/android_L/out/target/product/shieldtablet/obj/KERNEL/
1236MODULE_NAME = wlan
1237endif
1238
1239ifeq ($(CONFIG_PLATFORM_NV_TK1_UBUNTU), y)
1240EXTRA_CFLAGS += -DCONFIG_PLATFORM_NV_TK1
1241EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1242EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1243
1244ARCH ?= arm
1245
1246CROSS_COMPILE ?=
1247KVER := $(shell uname -r)
1248KSRC := /lib/modules/$(KVER)/build
1249MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
1250INSTALL_PREFIX :=
1251endif
1252
1253ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM702X), y)
1254EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ACTIONS_ATM702X
1255#ARCH := arm
1256ARCH := $(R_ARCH)
1257#CROSS_COMPILE := arm-none-linux-gnueabi-
1258CROSS_COMPILE := $(R_CROSS_COMPILE)
1259KVER:= 3.4.0
1260#KSRC := ../../../../build/out/kernel
1261KSRC := $(KERNEL_BUILD_PATH)
1262MODULE_NAME :=wlan
1263endif
1264
1265
1266ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM705X), y)
1267EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1268#EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1269# default setting for Android 4.1, 4.2, 4.3, 4.4
1270EXTRA_CFLAGS += -DCONFIG_PLATFORM_ACTIONS_ATM705X
1271EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1272EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1273
1274# Enable this for Android 5.0
1275EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1276
1277ifeq ($(CONFIG_SDIO_HCI), y)
1278EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1279_PLATFORM_FILES += platform/platform_arm_act_sdio.o
1280endif
1281
1282ARCH := arm
1283CROSS_COMPILE := /opt/arm-2011.09/bin/arm-none-linux-gnueabi-
1284KSRC := /home/android_sdk/Action-semi/705a_android_L/android/kernel
1285endif
1286
1287ifeq ($(CONFIG_PLATFORM_ARM_SUN50IW1P1), y)
1288EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1289EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN50IW1P1
1290EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1291# default setting for Android 4.1, 4.2
1292EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1293EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1294EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
1295EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1296
1297# Enable this for Android 5.0
1298EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1299
1300ifeq ($(CONFIG_USB_HCI), y)
1301EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1302_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1303endif
1304ifeq ($(CONFIG_SDIO_HCI), y)
1305_PLATFORM_FILES += platform/platform_ARM_SUN50IW1P1_sdio.o
1306endif
1307
1308ARCH := arm64
1309# ===Cross compile setting for Android 5.1(64) SDK ===
1310CROSS_COMPILE := /home/android_sdk/Allwinner/a64/android-51/lichee/out/sun50iw1p1/android/common/buildroot/external-toolchain/bin/aarch64-linux-gnu-
1311KSRC :=/home/android_sdk/Allwinner/a64/android-51/lichee/linux-3.10/
1312endif
1313
1314ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
1315EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
1316CROSS_COMPILE := arm-eabi-
1317KSRC := $(shell pwd)/../../../Android/kernel
1318ARCH := arm
1319endif
1320
1321ifeq ($(CONFIG_PLATFORM_MSTAR_TITANIA12), y)
1322EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_TITANIA12
1323ARCH:=mips
1324CROSS_COMPILE:= /usr/src/Mstar_kernel/mips-4.3/bin/mips-linux-gnu-
1325KVER:= 2.6.28.9
1326KSRC:= /usr/src/Mstar_kernel/2.6.28.9/
1327endif
1328
1329ifeq ($(CONFIG_PLATFORM_MSTAR), y)
1330EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1331EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1332EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1333EXTRA_CFLAGS += -DCONFIG_PLATFORM_MSTAR
1334EXTRA_CFLAGS += -DCONFIG_PLATFORM_MSTAR_HIGH
1335ifeq ($(CONFIG_USB_HCI), y)
1336EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX -DCONFIG_FIX_NR_BULKIN_BUFFER
1337endif
1338ARCH:=arm
1339CROSS_COMPILE:= /usr/src/bin/arm-none-linux-gnueabi-
1340KVER:= 3.1.10
1341KSRC:= /usr/src/Mstar_kernel/3.1.10/
1342endif
1343
1344ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y)
1345EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1346SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
1347ARCH := $(SUBARCH)
1348CROSS_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-
1349KSRC := /media/DATA-2/android-x86/ics-x86_20120130/out/target/product/generic_x86/obj/kernel
1350MODULE_NAME :=wlan
1351endif
1352
1353ifeq ($(CONFIG_PLATFORM_ANDROID_INTEL_X86), y)
1354EXTRA_CFLAGS += -DCONFIG_PLATFORM_ANDROID_INTEL_X86
1355EXTRA_CFLAGS += -DCONFIG_PLATFORM_INTEL_BYT
1356EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID
1357EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1358EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1359EXTRA_CFLAGS += -DCONFIG_SKIP_SIGNAL_SCALE_MAPPING
1360ifeq ($(CONFIG_SDIO_HCI), y)
1361EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
1362endif
1363endif
1364
1365ifeq ($(CONFIG_PLATFORM_JB_X86), y)
1366EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1367EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1368EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1369SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
1370ARCH := $(SUBARCH)
1371CROSS_COMPILE := /home/android_sdk/android-x86_JB/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.7/bin/i686-linux-android-
1372KSRC := /home/android_sdk/android-x86_JB/out/target/product/x86/obj/kernel/
1373MODULE_NAME :=wlan
1374endif
1375
1376ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y)
1377EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1378ARCH := arm
1379CROSS_COMPILE := arm-none-linux-gnueabi-
1380KVER := 2.6.34.1
1381KSRC ?= /usr/src/linux-2.6.34.1
1382endif
1383
1384ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)
1385EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1386ARCH := arm
1387CROSS_COMPILE := arm-linux-
1388KVER := 2.6.24.7_$(ARCH)
1389KSRC := /usr/src/kernels/linux-$(KVER)
1390endif
1391
1392ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y)
1393EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1394ARCH := arm
1395CROSS_COMPILE := arm-none-linux-gnueabi-
1396KVER := 2.6.34.1
1397KSRC ?= /usr/src/linux-2.6.34.1
1398endif
1399
1400ifeq ($(CONFIG_PLATFORM_RTD2880B), y)
1401EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B
1402ARCH:=
1403CROSS_COMPILE:=
1404KVER:=
1405KSRC:=
1406endif
1407
1408ifeq ($(CONFIG_PLATFORM_MIPS_RMI), y)
1409EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1410ARCH:=mips
1411CROSS_COMPILE:=mipsisa32r2-uclibc-
1412KVER:=
1413KSRC:= /root/work/kernel_realtek
1414endif
1415
1416ifeq ($(CONFIG_PLATFORM_MIPS_PLM), y)
1417EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
1418ARCH:=mips
1419CROSS_COMPILE:=mipsisa32r2-uclibc-
1420KVER:=
1421KSRC:= /root/work/kernel_realtek
1422endif
1423
1424ifeq ($(CONFIG_PLATFORM_MSTAR389), y)
1425EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR389
1426ARCH:=mips
1427CROSS_COMPILE:= mips-linux-gnu-
1428KVER:= 2.6.28.10
1429KSRC:= /home/mstar/mstar_linux/2.6.28.9/
1430endif
1431
1432ifeq ($(CONFIG_PLATFORM_MIPS_AR9132), y)
1433EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
1434ARCH := mips
1435CROSS_COMPILE := mips-openwrt-linux-
1436KSRC := /home/alex/test_openwrt/tmp/linux-2.6.30.9
1437endif
1438
1439ifeq ($(CONFIG_PLATFORM_DMP_PHILIPS), y)
1440EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM
1441ARCH := mips
1442#CROSS_COMPILE:=/usr/local/msdk-4.3.6-mips-EL-2.6.12.6-0.9.30.3/bin/mipsel-linux-
1443CROSS_COMPILE:=/usr/local/toolchain_mipsel/bin/mipsel-linux-
1444KSRC ?=/usr/local/Jupiter/linux-2.6.12
1445endif
1446
1447ifeq ($(CONFIG_PLATFORM_RTK_DMP), y)
1448EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM -DCONFIG_WIRELESS_EXT
1449EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1450ifeq ($(CONFIG_USB_HCI), y)
1451_PLATFORM_FILES += platform/platform_RTK_DMP_usb.o
1452endif
1453ARCH:=mips
1454CROSS_COMPILE:=mipsel-linux-
1455KVER:=
1456KSRC ?= /usr/src/DMP_Kernel/jupiter/linux-2.6.12
1457endif
1458
1459ifeq ($(CONFIG_PLATFORM_MT53XX), y)
1460EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MT53XX
1461ARCH:= arm
1462CROSS_COMPILE:= arm11_mtk_le-
1463KVER:= 2.6.27
1464KSRC?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27
1465endif
1466
1467ifeq ($(CONFIG_PLATFORM_ARM_MX51_241H), y)
1468EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_WISTRON_PLATFORM
1469ARCH := arm
1470CROSS_COMPILE := /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
1471KVER := 2.6.31
1472KSRC ?= /lib/modules/2.6.31-770-g0e46b52/source
1473endif
1474
1475ifeq ($(CONFIG_PLATFORM_FS_MX61), y)
1476EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1477ARCH := arm
1478CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi-
1479KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env
1480endif
1481
1482
1483
1484ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y)
1485EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATJ227X
1486ARCH := mips
1487CROSS_COMPILE := /home/cnsd4/project/actions/tools-2.6.27/bin/mipsel-linux-gnu-
1488KVER := 2.6.27
1489KSRC := /home/cnsd4/project/actions/linux-2.6.27.28
1490endif
1491
1492ifeq ($(CONFIG_PLATFORM_TI_DM365), y)
1493EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_TI_DM365
1494EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX
1495EXTRA_CFLAGS += -DCONFIG_SINGLE_XMIT_BUF -DCONFIG_SINGLE_RECV_BUF
1496ARCH := arm
1497#CROSS_COMPILE := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-
1498#KSRC := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/lsp/ti-davinci/linux-dm365
1499CROSS_COMPILE := /opt/montavista/pro5.0/devkit/arm/v5t_le/bin/arm-linux-
1500KSRC:= /home/vivotek/lsp/DM365/kernel_platform/kernel/linux-2.6.18
1501KERNELOUTPUT := ${PRODUCTDIR}/tmp
1502KVER := 2.6.18
1503endif
1504
1505ifeq ($(CONFIG_PLATFORM_MOZART), y)
1506EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MOZART
1507ARCH := arm
1508CROSS_COMPILE := /home/vivotek/lsp/mozart3v2/Mozart3e_Toolchain/build_arm_nofpu/usr/bin/arm-linux-
1509KVER := $(shell uname -r)
1510KSRC:= /opt/Vivotek/lsp/mozart3v2/kernel_platform/kernel/mozart_kernel-1.17
1511KERNELOUTPUT := /home/pink/sample/ODM/IP8136W-VINT/tmp/kernel
1512endif
1513
1514ifeq ($(CONFIG_PLATFORM_TEGRA3_CARDHU), y)
1515EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1516# default setting for Android 4.1, 4.2
1517EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1518EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1519EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1520ARCH := arm
1521CROSS_COMPILE := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1522KSRC := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/out/target/product/cardhu/obj/KERNEL
1523MODULE_NAME := wlan
1524endif
1525
1526ifeq ($(CONFIG_PLATFORM_TEGRA4_DALMORE), y)
1527EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1528# default setting for Android 4.1, 4.2
1529EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1530EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1531EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1532ARCH := arm
1533CROSS_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-
1534KSRC := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/out/target/product/dalmore/obj/KERNEL
1535MODULE_NAME := wlan
1536endif
1537
1538ifeq ($(CONFIG_PLATFORM_ARM_TCC8900), y)
1539EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1540ARCH := arm
1541CROSS_COMPILE := /home/android_sdk/Telechips/SDK_2304_20110613/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1542KSRC := /home/android_sdk/Telechips/SDK_2304_20110613/kernel
1543MODULE_NAME := wlan
1544endif
1545
1546ifeq ($(CONFIG_PLATFORM_ARM_TCC8920), y)
1547EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1548ARCH := arm
1549CROSS_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-
1550KSRC := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/kernel
1551MODULE_NAME := wlan
1552endif
1553
1554ifeq ($(CONFIG_PLATFORM_ARM_TCC8920_JB42), y)
1555EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1556# default setting for Android 4.1, 4.2
1557EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1558EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1559ARCH := arm
1560CROSS_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-
1561KSRC := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/kernel
1562MODULE_NAME := wlan
1563endif
1564
1565ifeq ($(CONFIG_PLATFORM_ARM_RK2818), y)
1566EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
1567ARCH := arm
1568CROSS_COMPILE := /usr/src/release_fae_version/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
1569KSRC := /usr/src/release_fae_version/kernel25_A7_281x
1570MODULE_NAME := wlan
1571endif
1572
1573ifeq ($(CONFIG_PLATFORM_ARM_RK3188), y)
1574EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
1575# default setting for Android 4.1, 4.2, 4.3, 4.4
1576EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1577EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1578# default setting for Power control
1579EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1580EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
1581# default setting for Special function
1582ARCH := arm
1583CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3188/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
1584KSRC := /home/android_sdk/Rockchip/Rk3188/kernel
1585MODULE_NAME := wlan
1586endif
1587
1588ifeq ($(CONFIG_PLATFORM_ARM_RK3066), y)
1589EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_RK3066
1590EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
1591EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1592EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1593EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
1594ifeq ($(CONFIG_SDIO_HCI), y)
1595EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
1596endif
1597EXTRA_CFLAGS += -fno-pic
1598ARCH := arm
1599CROSS_COMPILE := /home/android_sdk/Rockchip/rk3066_20130607/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
1600#CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3066sdk/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
1601KSRC := /home/android_sdk/Rockchip/Rk3066sdk/kernel
1602MODULE_NAME :=wlan
1603endif
1604
1605ifeq ($(CONFIG_PLATFORM_ARM_URBETTER), y)
1606EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
1607ARCH := arm
1608CROSS_COMPILE := /media/DATA-1/urbetter/arm-2009q3/bin/arm-none-linux-gnueabi-
1609KSRC := /media/DATA-1/urbetter/ics-urbetter/kernel
1610MODULE_NAME := wlan
1611endif
1612
1613ifeq ($(CONFIG_PLATFORM_ARM_TI_PANDA), y)
1614EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
1615ARCH := arm
1616#CROSS_COMPILE := /media/DATA-1/aosp/ics-aosp_20111227/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1617#KSRC := /media/DATA-1/aosp/android-omap-panda-3.0_20120104
1618CROSS_COMPILE := /media/DATA-1/android-4.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
1619KSRC := /media/DATA-1/android-4.0/panda_kernel/omap
1620MODULE_NAME := wlan
1621endif
1622
1623ifeq ($(CONFIG_PLATFORM_MIPS_JZ4760), y)
1624EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_MINIMAL_MEMORY_USAGE
1625ARCH ?= mips
1626CROSS_COMPILE ?= /mnt/sdb5/Ingenic/Umido/mips-4.3/bin/mips-linux-gnu-
1627KSRC ?= /mnt/sdb5/Ingenic/Umido/kernel
1628endif
1629
1630ifeq ($(CONFIG_PLATFORM_SZEBOOK), y)
1631EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
1632ARCH:=arm
1633CROSS_COMPILE:=/opt/crosstool2/bin/armeb-unknown-linux-gnueabi-
1634KVER:= 2.6.31.6
1635KSRC:= ../code/linux-2.6.31.6-2020/
1636endif
1637
1638ifeq ($(CONFIG_PLATFORM_ARM_SUNxI), y)
1639EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1640EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUNxI
1641# default setting for Android 4.1, 4.2
1642EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1643EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1644
1645EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1646ifeq ($(CONFIG_USB_HCI), y)
1647EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1648_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1649endif
1650ifeq ($(CONFIG_SDIO_HCI), y)
1651# default setting for A10-EVB mmc0
1652#EXTRA_CFLAGS += -DCONFIG_WITS_EVB_V13
1653_PLATFORM_FILES += platform/platform_ARM_SUNxI_sdio.o
1654endif
1655
1656ARCH := arm
1657#CROSS_COMPILE := arm-none-linux-gnueabi-
1658CROSS_COMPILE=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/buildroot/output/external-toolchain/bin/arm-none-linux-gnueabi-
1659KVER := 3.0.8
1660#KSRC:= ../lichee/linux-3.0/
1661KSRC=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/linux-3.0
1662endif
1663
1664ifeq ($(CONFIG_PLATFORM_ARM_SUN6I), y)
1665EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1666EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN6I
1667EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1668# default setting for Android 4.1, 4.2, 4.3, 4.4
1669EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1670EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1671EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1672
1673EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1674ifeq ($(CONFIG_USB_HCI), y)
1675EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1676_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1677endif
1678ifeq ($(CONFIG_SDIO_HCI), y)
1679# default setting for A31-EVB mmc0
1680EXTRA_CFLAGS += -DCONFIG_A31_EVB
1681_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1682endif
1683
1684ARCH := arm
1685#Android-JB42
1686#CROSS_COMPILE := /home/android_sdk/Allwinner/a31/android-jb42/lichee/buildroot/output/external-toolchain/bin/arm-linux-gnueabi-
1687#KSRC :=/home/android_sdk/Allwinner/a31/android-jb42/lichee/linux-3.3
1688#ifeq ($(CONFIG_USB_HCI), y)
1689#MODULE_NAME := 8188eu_sw
1690#endif
1691# ==== Cross compile setting for kitkat-a3x_v4.5 =====
1692CROSS_COMPILE := /home/android_sdk/Allwinner/a31/kitkat-a3x_v4.5/lichee/buildroot/output/external-toolchain/bin/arm-linux-gnueabi-
1693KSRC :=/home/android_sdk/Allwinner/a31/kitkat-a3x_v4.5/lichee/linux-3.3
1694endif
1695
1696ifeq ($(CONFIG_PLATFORM_ARM_SUN7I), y)
1697EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1698EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN7I
1699EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1700# default setting for Android 4.1, 4.2, 4.3, 4.4
1701EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1702EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1703EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1704
1705EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1706ifeq ($(CONFIG_USB_HCI), y)
1707EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1708_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1709endif
1710ifeq ($(CONFIG_SDIO_HCI), y)
1711_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1712endif
1713
1714ARCH := arm
1715# ===Cross compile setting for Android 4.2 SDK ===
1716#CROSS_COMPILE := /home/android_sdk/Allwinner/a20_evb/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1717#KSRC := /home/android_sdk/Allwinner/a20_evb/lichee/linux-3.3
1718# ==== Cross compile setting for Android 4.3 SDK =====
1719#CROSS_COMPILE := /home/android_sdk/Allwinner/a20/android-jb43/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1720#KSRC := /home/android_sdk/Allwinner/a20/android-jb43/lichee/linux-3.4
1721# ==== Cross compile setting for kitkat-a20_v4.4 =====
1722CROSS_COMPILE := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1723KSRC := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/linux-3.4
1724endif
1725
1726ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W3P1), y)
1727EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1728EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I
1729EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I_W3P1
1730EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1731# default setting for Android 4.1, 4.2
1732EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1733EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1734
1735EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1736ifeq ($(CONFIG_USB_HCI), y)
1737EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1738_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1739endif
1740ifeq ($(CONFIG_SDIO_HCI), y)
1741_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1742endif
1743
1744ARCH := arm
1745# ===Cross compile setting for Android 4.2 SDK ===
1746#CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-jb42/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1747#KSRC :=/home/android_sdk/Allwinner/a23/android-jb42/lichee/linux-3.4
1748# ===Cross compile setting for Android 4.4 SDK ===
1749CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-kk44/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1750KSRC :=/home/android_sdk/Allwinner/a23/android-kk44/lichee/linux-3.4
1751endif
1752
1753ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W5P1), y)
1754EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1755EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I
1756EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I_W5P1
1757EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1758# default setting for Android 4.1, 4.2
1759EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1760EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1761
1762# Enable this for Android 5.0
1763EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1764
1765EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1766ifeq ($(CONFIG_USB_HCI), y)
1767EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1768_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1769endif
1770ifeq ($(CONFIG_SDIO_HCI), y)
1771_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1772endif
1773
1774ARCH := arm
1775# ===Cross compile setting for Android L SDK ===
1776CROSS_COMPILE := /home/android_sdk/Allwinner/a33/android-L/lichee/out/sun8iw5p1/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
1777KSRC :=/home/android_sdk/Allwinner/a33/android-L/lichee/linux-3.4
1778endif
1779
1780ifeq ($(CONFIG_PLATFORM_ACTIONS_ATV5201), y)
1781EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATV5201
1782EXTRA_CFLAGS += -DCONFIG_SDIO_DISABLE_RXFIFO_POLLING_LOOP
1783ARCH := mips
1784CROSS_COMPILE := mipsel-linux-gnu-
1785KVER := $(KERNEL_VER)
1786KSRC:= $(CFGDIR)/../../kernel/linux-$(KERNEL_VER)
1787endif
1788
1789ifeq ($(CONFIG_PLATFORM_ARM_RTD299X), y)
1790EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1791EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1792EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1793ifeq ($(CONFIG_ANDROID), y)
1794# Enable this for Android 5.0
1795EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1796endif
1797#ARCH, CROSS_COMPILE, KSRC,and MODDESTDIR are provided by external makefile
1798INSTALL_PREFIX :=
1799endif
1800
1801ifeq ($(CONFIG_PLATFORM_ARM_RTD299X_LG), y)
1802EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1803EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1804EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1805EXTRA_CFLAGS += -DRTW_P2P_GROUP_INTERFACE=1
1806EXTRA_CFLAGS += -DCONFIG_IFACE_NUMBER=3
1807#EXTRA_CFLAGS += -DCONFIG_FIX_HWPORT
1808EXTRA_CFLAGS += -DLGE_PRIVATE
1809EXTRA_CFLAGS += -DPURE_SUPPLICANT
1810EXTRA_CFLAGS += -DCONFIG_CUSTOMIZED_COUNTRY_CHPLAN_MAP -DCONFIG_RTW_IOCTL_SET_COUNTRY
1811EXTRA_CFLAGS += -DDBG_RX_DFRAME_RAW_DATA
1812EXTRA_CFLAGS += -DRTW_REDUCE_SCAN_SWITCH_CH_TIME
1813ARCH ?= arm
1814KVER ?=
1815
1816ifneq ($(PLATFORM), WEBOS)
1817$(info PLATFORM is empty)
1818CROSS_COMPILE ?= /mnt/newdisk/LGE/arm-lg115x-linux-gnueabi-4.8-2016.03-x86_64/bin/arm-lg115x-linux-gnueabi-
1819KSRC ?= /mnt/newdisk/LGE/linux-rockhopper_k3lp_drd4tv_423
1820endif
1821
1822CROSS_COMPILE ?=
1823KSRC ?= $(LINUX_SRC)
1824INSTALL_PREFIX ?=
1825endif
1826
1827ifeq ($(CONFIG_PLATFORM_HISILICON), y)
1828EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_HISILICON
1829ifeq ($(SUPPORT_CONCURRENT),y)
1830EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1831endif
1832EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1833ARCH := arm
1834ifeq ($(CROSS_COMPILE),)
1835 CROSS_COMPILE = arm-hisiv200-linux-
1836endif
1837MODULE_NAME := rtl8192eu
1838ifeq ($(KSRC),)
1839 KSRC := ../../../../../../kernel/linux-3.4.y
1840endif
1841endif
1842
1843ifeq ($(CONFIG_PLATFORM_HISILICON_HI3798), y)
1844EXTRA_CFLAGS += -DCONFIG_PLATFORM_HISILICON
1845EXTRA_CFLAGS += -DCONFIG_PLATFORM_HISILICON_HI3798
1846EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1847# default setting for Android
1848EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1849EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
1850EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
1851# default setting for Android 5.x and later
1852#EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1853
1854# If system could power on and recognize Wi-Fi SDIO automatically,
1855# platfrom operations are not necessary.
1856#ifeq ($(CONFIG_SDIO_HCI), y)
1857#EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1858#_PLATFORM_FILES += platform/platform_hisilicon_hi3798_sdio.o
1859#EXTRA_CFLAGS += -DCONFIG_HISI_SDIO_ID=1
1860#endif
1861
1862ARCH ?= arm
1863CROSS_COMPILE ?= /HiSTBAndroidV600R003C00SPC021_git_0512/device/hisilicon/bigfish/sdk/tools/linux/toolchains/arm-histbv310-linux/bin/arm-histbv310-linux-
1864ifndef KSRC
1865KSRC := /HiSTBAndroidV600R003C00SPC021_git_0512/device/hisilicon/bigfish/sdk/source/kernel/linux-3.18.y
1866KSRC += O=/HiSTBAndroidV600R003C00SPC021_git_0512/out/target/product/Hi3798MV200/obj/KERNEL_OBJ
1867endif
1868
1869ifeq ($(CONFIG_RTL8822B), y)
1870ifeq ($(CONFIG_SDIO_HCI), y)
1871CONFIG_RTL8822BS ?= m
1872USER_MODULE_NAME := rtl8822bs
1873endif
1874endif
1875
1876endif
1877
1878# Platform setting
1879ifeq ($(CONFIG_PLATFORM_ARM_SPREADTRUM_6820), y)
1880ifeq ($(CONFIG_ANDROID_2X), y)
1881EXTRA_CFLAGS += -DANDROID_2X
1882endif
1883EXTRA_CFLAGS += -DCONFIG_PLATFORM_SPRD
1884EXTRA_CFLAGS += -DPLATFORM_SPREADTRUM_6820
1885EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1886ifeq ($(RTL871X), rtl8188e)
1887EXTRA_CFLAGS += -DSOFTAP_PS_DURATION=50
1888endif
1889ifeq ($(CONFIG_SDIO_HCI), y)
1890EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1891_PLATFORM_FILES += platform/platform_sprd_sdio.o
1892endif
1893endif
1894
1895ifeq ($(CONFIG_PLATFORM_ARM_SPREADTRUM_8810), y)
1896ifeq ($(CONFIG_ANDROID_2X), y)
1897EXTRA_CFLAGS += -DANDROID_2X
1898endif
1899EXTRA_CFLAGS += -DCONFIG_PLATFORM_SPRD
1900EXTRA_CFLAGS += -DPLATFORM_SPREADTRUM_8810
1901EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1902ifeq ($(RTL871X), rtl8188e)
1903EXTRA_CFLAGS += -DSOFTAP_PS_DURATION=50
1904endif
1905ifeq ($(CONFIG_SDIO_HCI), y)
1906EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1907_PLATFORM_FILES += platform/platform_sprd_sdio.o
1908endif
1909endif
1910
1911ifeq ($(CONFIG_PLATFORM_ARM_WMT), y)
1912EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1913EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1914EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1915EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
1916ifeq ($(CONFIG_SDIO_HCI), y)
1917_PLATFORM_FILES += platform/platform_ARM_WMT_sdio.o
1918endif
1919ARCH := arm
1920CROSS_COMPILE := /home/android_sdk/WonderMedia/wm8880-android4.4/toolchain/arm_201103_gcc4.5.2/mybin/arm_1103_le-
1921KSRC := /home/android_sdk/WonderMedia/wm8880-android4.4/kernel4.4/
1922MODULE_NAME :=8189es_kk
1923endif
1924
1925ifeq ($(CONFIG_PLATFORM_RTK119X), y)
1926EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1927#EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN7I
1928EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1929# default setting for Android 4.1, 4.2
1930EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1931EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1932#EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1933EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1934
1935#EXTRA_CFLAGS += -DCONFIG_#PLATFORM_OPS
1936ifeq ($(CONFIG_USB_HCI), y)
1937EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1938#_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
1939endif
1940ifeq ($(CONFIG_SDIO_HCI), y)
1941_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
1942endif
1943
1944ARCH := arm
1945
1946# ==== Cross compile setting for Android 4.4 SDK =====
1947#CROSS_COMPILE := arm-linux-gnueabihf-
1948KVER := 3.10.24
1949#KSRC :=/home/android_sdk/Allwinner/a20/android-kitkat44/lichee/linux-3.4
1950CROSS_COMPILE := /home/realtek/software_phoenix/phoenix/toolchain/usr/local/arm-2013.11/bin/arm-linux-gnueabihf-
1951KSRC := /home/realtek/software_phoenix/linux-kernel
1952MODULE_NAME := 8192eu
1953
1954endif
1955
1956ifeq ($(CONFIG_PLATFORM_RTK119X_AM), y)
1957EXTRA_CFLAGS += -DCONFIG_PLATFORM_RTK119X_AM
1958EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1959EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1960EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE -DCONFIG_FULL_CH_IN_P2P_HANDSHAKE
1961EXTRA_CFLAGS += -DCONFIG_IFACE_NUMBER=3
1962EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1963
1964ifeq ($(CONFIG_USB_HCI), y)
1965EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1966endif
1967
1968ARCH := arm
1969
1970#CROSS_COMPILE := arm-linux-gnueabihf-
1971KVER := 3.10.24
1972#KSRC :=
1973CROSS_COMPILE :=
1974endif
1975
1976ifeq ($(CONFIG_PLATFORM_RTK129X), y)
1977EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
1978EXTRA_CFLAGS += -DRTK_129X_PLATFORM
1979EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
1980# default setting for Android 4.1, 4.2
1981EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
1982EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
1983#EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_QOS_OPTIMIZATION
1984EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION
1985# Enable this for Android 5.0
1986EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
1987ifeq ($(CONFIG_RTL8821C)$(CONFIG_SDIO_HCI),yy)
1988EXTRA_CFLAGS += -DCONFIG_WAKEUP_GPIO_INPUT_MODE
1989EXTRA_CFLAGS += -DCONFIG_BT_WAKE_HST_OPEN_DRAIN
1990endif
1991EXTRA_CFLAGS += -Wno-error=date-time
1992# default setting for Android 7.0
1993ifeq ($(RTK_ANDROID_VERSION), nougat)
1994EXTRA_CFLAGS += -DRTW_P2P_GROUP_INTERFACE=1
1995endif
1996#EXTRA_CFLAGS += -DCONFIG_#PLATFORM_OPS
1997ifeq ($(CONFIG_USB_HCI), y)
1998EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
1999endif
2000
2001ARCH := arm64
2002
2003# ==== Cross compile setting for Android 4.4 SDK =====
2004#CROSS_COMPILE := arm-linux-gnueabihf-
2005#KVER := 4.1.10
2006#CROSS_COMPILE := $(CROSS)
2007#KSRC := $(LINUX_KERNEL_PATH)
2008CROSS_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-
2009KSRC := /home/android_sdk/DHC/trunk-6.0.0_r1-QA160627/linux-kernel
2010endif
2011
2012ifeq ($(CONFIG_PLATFORM_RTK390X), y)
2013EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2014EXTRA_CFLAGS += -DCONFIG_PLATFORM_RTK390X
2015EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2016EXTRA_CFLAGS += -DCONFIG_RTW_NETIF_SG
2017ifeq ($(CONFIG_USB_HCI), y)
2018EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
2019endif
2020
2021ARCH:=rlx
2022
2023CROSS_COMPILE:=mips-linux-
2024KSRC:= /home/realtek/share/Develop/IPCAM_SDK/RealSil/rts3901_sdk_v1.2_vanilla/linux-3.10
2025
2026endif
2027
2028ifeq ($(CONFIG_PLATFORM_NOVATEK_NT72668), y)
2029EXTRA_CFLAGS += -DCONFIG_PLATFORM_NOVATEK_NT72668
2030EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2031EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2032EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2033EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX
2034EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
2035ARCH ?= arm
2036CROSS_COMPILE := arm-linux-gnueabihf-
2037KVER := 3.8.0
2038KSRC := /Custom/Novatek/TCL/linux-3.8_header
2039#KSRC := $(KERNELDIR)
2040endif
2041
2042ifeq ($(CONFIG_PLATFORM_ARM_TCC8930_JB42), y)
2043EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2044# default setting for Android 4.1, 4.2
2045EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2046EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
2047ARCH := arm
2048CROSS_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-
2049KSRC := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/kernel
2050MODULE_NAME := wlan
2051endif
2052
2053ifeq ($(CONFIG_PLATFORM_RTL8197D), y)
2054EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTL8197D
2055export DIR_LINUX=$(shell pwd)/../SDK/rlxlinux-sdk321-v50/linux-2.6.30
2056ARCH ?= rlx
2057CROSS_COMPILE:= $(DIR_LINUX)/../toolchain/rsdk-1.5.5-5281-EB-2.6.30-0.9.30.3-110714/bin/rsdk-linux-
2058KSRC := $(DIR_LINUX)
2059endif
2060
2061ifeq ($(CONFIG_PLATFORM_AML_S905), y)
2062EXTRA_CFLAGS += -DCONFIG_PLATFORM_AML_S905
2063EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -fno-pic
2064# default setting for Android
2065EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2066EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
2067EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
2068# default setting for Android 5.x and later
2069EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
2070
2071ifeq ($(CONFIG_SDIO_HCI), y)
2072EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
2073_PLATFORM_FILES += platform/platform_aml_s905_sdio.o
2074endif
2075
2076ARCH ?= arm64
2077CROSS_COMPILE ?= /4.4_S905L_8822bs_compile/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-
2078ifndef KSRC
2079KSRC := /4.4_S905L_8822bs_compile/common
2080# To locate output files in a separate directory.
2081KSRC += O=/4.4_S905L_8822bs_compile/KERNEL_OBJ
2082endif
2083
2084ifeq ($(CONFIG_RTL8822B), y)
2085ifeq ($(CONFIG_SDIO_HCI), y)
2086CONFIG_RTL8822BS ?= m
2087USER_MODULE_NAME := 8822bs
2088endif
2089endif
2090
2091endif
2092
2093ifeq ($(CONFIG_PLATFORM_ZTE_ZX296716), y)
2094EXTRA_CFLAGS += -Wno-error=date-time
2095EXTRA_CFLAGS += -DCONFIG_PLATFORM_ZTE_ZX296716
2096EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
2097# default setting for Android
2098EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
2099EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
2100EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
2101# default setting for Android 5.x and later
2102#EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
2103
2104ifeq ($(CONFIG_SDIO_HCI), y)
2105# mark this temporarily
2106#EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
2107#_PLATFORM_FILES += platform/platform_zte_zx296716_sdio.o
2108endif
2109
2110ARCH ?= arm64
2111CROSS_COMPILE ?=
2112KSRC ?=
2113
2114ifeq ($(CONFIG_RTL8822B), y)
2115ifeq ($(CONFIG_SDIO_HCI), y)
2116CONFIG_RTL8822BS ?= m
2117USER_MODULE_NAME := 8822bs
2118endif
2119endif
2120
2121endif
2122
2123########### CUSTOMER ################################
2124ifeq ($(CONFIG_CUSTOMER_HUAWEI_GENERAL), y)
2125CONFIG_CUSTOMER_HUAWEI = y
2126endif
2127
2128ifeq ($(CONFIG_CUSTOMER_HUAWEI), y)
2129EXTRA_CFLAGS += -DCONFIG_HUAWEI_PROC
2130endif
2131
2132ifeq ($(CONFIG_MULTIDRV), y)
2133
2134ifeq ($(CONFIG_SDIO_HCI), y)
2135MODULE_NAME := rtw_sdio
2136endif
2137
2138ifeq ($(CONFIG_USB_HCI), y)
2139MODULE_NAME := rtw_usb
2140endif
2141
2142ifeq ($(CONFIG_PCI_HCI), y)
2143MODULE_NAME := rtw_pci
2144endif
2145
2146
2147endif
2148
2149USER_MODULE_NAME ?=
2150ifneq ($(USER_MODULE_NAME),)
2151MODULE_NAME := $(USER_MODULE_NAME)
2152endif
2153
2154ifneq ($(KERNELRELEASE),)
2155
2156########### this part for *.mk ############################
2157include $(src)/hal/phydm/phydm.mk
2158
2159########### HAL_RTL8822B #################################
2160ifeq ($(CONFIG_RTL8822B), y)
2161include $(src)/rtl8822b.mk
2162endif
2163
2164########### HAL_RTL8821C #################################
2165ifeq ($(CONFIG_RTL8821C), y)
2166include $(src)/rtl8821c.mk
2167endif
2168
2169rtk_core := core/rtw_cmd.o \
5 core/rtw_security.o \2170 core/rtw_security.o \
6 core/rtw_debug.o \2171 core/rtw_debug.o \
7 core/rtw_io.o \2172 core/rtw_io.o \
2173 core/rtw_ioctl_query.o \
8 core/rtw_ioctl_set.o \2174 core/rtw_ioctl_set.o \
9 core/rtw_ieee80211.o \2175 core/rtw_ieee80211.o \
10 core/rtw_mlme.o \2176 core/rtw_mlme.o \
@@ -14,88 +2180,127 @@ rtl8821ce-objs += core/rtw_cmd.o \
14 core/rtw_vht.o \2180 core/rtw_vht.o \
15 core/rtw_pwrctrl.o \2181 core/rtw_pwrctrl.o \
16 core/rtw_rf.o \2182 core/rtw_rf.o \
2183 core/rtw_chplan.o \
17 core/rtw_recv.o \2184 core/rtw_recv.o \
18 core/rtw_sta_mgt.o \2185 core/rtw_sta_mgt.o \
19 core/rtw_ap.o \2186 core/rtw_ap.o \
2187 core/mesh/rtw_mesh.o \
2188 core/mesh/rtw_mesh_pathtbl.o \
2189 core/mesh/rtw_mesh_hwmp.o \
20 core/rtw_xmit.o \2190 core/rtw_xmit.o \
21 core/rtw_p2p.o \2191 core/rtw_p2p.o \
2192 core/rtw_rson.o \
2193 core/rtw_tdls.o \
22 core/rtw_br_ext.o \2194 core/rtw_br_ext.o \
2195 core/rtw_iol.o \
23 core/rtw_sreset.o \2196 core/rtw_sreset.o \
24 core/rtw_btcoex_wifionly.o \2197 core/rtw_btcoex_wifionly.o \
25 core/rtw_btcoex.o \2198 core/rtw_btcoex.o \
2199 core/rtw_beamforming.o \
26 core/rtw_odm.o \2200 core/rtw_odm.o \
27 core/rtw_mp.o \2201 core/rtw_rm.o \
28 core/efuse/rtw_efuse.o \2202 core/rtw_rm_fsm.o \
29 os_dep/osdep_service.o \2203 core/efuse/rtw_efuse.o
30 os_dep/linux/os_intfs.o \2204
31 os_dep/linux/pci_intf.o \2205ifeq ($(CONFIG_SDIO_HCI), y)
32 os_dep/linux/ioctl_linux.o \2206rtk_core += core/rtw_sdio.o
33 os_dep/linux/xmit_linux.o \2207endif
34 os_dep/linux/mlme_linux.o \2208
35 os_dep/linux/recv_linux.o \2209$(MODULE_NAME)-y += $(rtk_core)
36 os_dep/linux/rtw_android.o \2210
37 os_dep/linux/ioctl_mp.o \2211$(MODULE_NAME)-$(CONFIG_INTEL_WIDI) += core/rtw_intel_widi.o
38 hal/hal_intf.o \2212
39 hal/hal_com.o \2213$(MODULE_NAME)-$(CONFIG_WAPI_SUPPORT) += core/rtw_wapi.o \
40 hal/hal_com_phycfg.o \2214 core/rtw_wapi_sms4.o
41 hal/hal_dm.o \2215
42 hal/hal_btcoex_wifionly.o \2216$(MODULE_NAME)-y += $(_OS_INTFS_FILES)
43 hal/hal_btcoex.o \2217$(MODULE_NAME)-y += $(_HAL_INTFS_FILES)
44 hal/hal_mp.o \2218$(MODULE_NAME)-y += $(_PHYDM_FILES)
45 hal/halmac/halmac_api.o \2219$(MODULE_NAME)-y += $(_BTC_FILES)
46 hal/halmac/halmac_88xx/halmac_api_88xx.o \2220$(MODULE_NAME)-y += $(_PLATFORM_FILES)
47 hal/halmac/halmac_88xx/halmac_func_88xx.o \2221
48 hal/halmac/halmac_88xx/halmac_api_88xx_pcie.o \2222$(MODULE_NAME)-$(CONFIG_MP_INCLUDED) += core/rtw_mp.o
49 hal/halmac/halmac_88xx/halmac_8821c/halmac_8821c_pwr_seq.o \2223
50 hal/halmac/halmac_88xx/halmac_8821c/halmac_api_8821c.o \2224ifeq ($(CONFIG_RTL8723B), y)
51 hal/halmac/halmac_88xx/halmac_8821c/halmac_func_8821c.o \2225$(MODULE_NAME)-$(CONFIG_MP_INCLUDED)+= core/rtw_bt_mp.o
52 hal/halmac/halmac_88xx/halmac_8821c/halmac_api_8821c_pcie.o \2226endif
53 hal/halmac/halmac_88xx/halmac_8821c/halmac_8821c_phy.o \2227
54 hal/hal_halmac.o \2228obj-$(CONFIG_RTL8821CE) := $(MODULE_NAME).o
55 hal/rtl8821c/rtl8821c_halinit.o \2229
56 hal/rtl8821c/rtl8821c_mac.o \2230else
57 hal/rtl8821c/rtl8821c_cmd.o \2231
58 hal/rtl8821c/rtl8821c_phy.o \2232export CONFIG_RTL8821CE = m
59 hal/rtl8821c/rtl8821c_dm.o \2233
60 hal/rtl8821c/rtl8821c_ops.o \2234all: modules
61 hal/rtl8821c/hal8821c_fw.o \2235
62 hal/rtl8821c/pci/rtl8821ce_halinit.o \2236modules:
63 hal/rtl8821c/pci/rtl8821ce_halmac.o \2237 $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules
64 hal/rtl8821c/pci/rtl8821ce_io.o \2238
65 hal/rtl8821c/pci/rtl8821ce_xmit.o \2239strip:
66 hal/rtl8821c/pci/rtl8821ce_recv.o \2240 $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded
67 hal/rtl8821c/pci/rtl8821ce_ops.o \2241
68 hal/efuse/rtl8821c/HalEfuseMask8821C_PCIE.o \2242install:
69 hal/phydm/phydm_debug.o \2243 install -p -m 644 $(MODULE_NAME).ko $(MODDESTDIR)
70 hal/phydm/phydm_interface.o \2244 /sbin/depmod -a ${KVER}
71 hal/phydm/phydm_hwconfig.o \2245
72 hal/phydm/phydm.o \2246uninstall:
73 hal/phydm/halphyrf_ce.o \2247 rm -f $(MODDESTDIR)/$(MODULE_NAME).ko
74 hal/phydm/phydm_dig.o \2248 /sbin/depmod -a ${KVER}
75 hal/phydm/phydm_pathdiv.o \2249
76 hal/phydm/phydm_rainfo.o \2250backup_rtlwifi:
77 hal/phydm/phydm_dynamicbbpowersaving.o \2251 @echo "Making backup rtlwifi drivers"
78 hal/phydm/phydm_powertracking_ce.o \2252ifneq (,$(wildcard $(STAGINGMODDIR)/rtl*))
79 hal/phydm/phydm_adaptivity.o \2253 @tar cPf $(wildcard $(STAGINGMODDIR))/backup_rtlwifi_driver.tar $(wildcard $(STAGINGMODDIR)/rtl*)
80 hal/phydm/phydm_cfotracking.o \2254 @rm -rf $(wildcard $(STAGINGMODDIR)/rtl*)
81 hal/phydm/phydm_acs.o \2255endif
82 hal/phydm/phydm_dfs.o \2256ifneq (,$(wildcard $(MODDESTDIR)realtek))
83 hal/phydm/phydm_adc_sampling.o \2257 @tar cPf $(MODDESTDIR)backup_rtlwifi_driver.tar $(MODDESTDIR)realtek
84 hal/phydm/phydm_kfree.o \2258 @rm -fr $(MODDESTDIR)realtek
85 hal/phydm/phydm_ccx.o \2259endif
86 hal/phydm/phydm_psd.o \2260ifneq (,$(wildcard $(MODDESTDIR)rtl*))
87 hal/btc/halbtc8821cwifionly.o \2261 @tar cPf $(MODDESTDIR)../backup_rtlwifi_driver.tar $(wildcard $(MODDESTDIR)rtl*)
88 hal/btc/halbtc8821c1ant.o \2262 @rm -fr $(wildcard $(MODDESTDIR)rtl*)
89 hal/btc/halbtc8821c2ant.o \2263endif
90 hal/phydm/rtl8821c/halhwimg8821c_bb.o \2264 @/sbin/depmod -a ${KVER}
91 hal/phydm/rtl8821c/halhwimg8821c_mac.o \2265 @echo "Please reboot your system"
92 hal/phydm/rtl8821c/halhwimg8821c_rf.o \2266
93 hal/phydm/rtl8821c/phydm_hal_api8821c.o \2267restore_rtlwifi:
94 hal/phydm/rtl8821c/phydm_regconfig8821c.o \2268 @echo "Restoring backups"
95 hal/phydm/rtl8821c/halphyrf_8821c.o \2269ifneq (,$(wildcard $(STAGINGMODDIR)/backup_rtlwifi_driver.tar))
96 hal/phydm/rtl8821c/phydm_iqk_8821c.o2270 @tar xPf $(STAGINGMODDIR)/backup_rtlwifi_driver.tar
972271 @rm $(STAGINGMODDIR)/backup_rtlwifi_driver.tar
98ccflags-y += -I$(src)/include \2272endif
99 -I$(src)/hal/btc \2273ifneq (,$(wildcard $(MODDESTDIR)backup_rtlwifi_driver.tar))
100 -I$(src)/hal/phydm \2274 @tar xPf $(MODDESTDIR)backup_rtlwifi_driver.tar
101 -I$(src)/platform2275 @rm $(MODDESTDIR)backup_rtlwifi_driver.tar
2276endif
2277ifneq (,$(wildcard $(MODDESTDIR)../backup_rtlwifi_driver.tar))
2278 @tar xPf $(MODDESTDIR)../backup_rtlwifi_driver.tar
2279 @rm $(MODDESTDIR)../backup_rtlwifi_driver.tar
2280endif
2281 @/sbin/depmod -a ${KVER}
2282 @echo "Please reboot your system"
2283
2284config_r:
2285 @echo "make config"
2286 /bin/bash script/Configure script/config.in
2287
2288
2289.PHONY: modules clean
2290
2291clean:
2292 #$(MAKE) -C $(KSRC) M=$(shell pwd) clean
2293 cd hal ; rm -fr */*/*/*.mod.c */*/*/*.mod */*/*/*.o */*/*/.*.cmd */*/*/*.ko
2294 cd hal ; rm -fr */*/*.mod.c */*/*.mod */*/*.o */*/.*.cmd */*/*.ko
2295 cd hal ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
2296 cd hal ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2297 cd core ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
2298 cd core ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2299 cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2300 cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2301 cd platform ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
2302 rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order
2303 rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
2304 rm -fr .tmp_versions
2305endif
2306
diff --git a/clean b/clean
102new file mode 1006442307new file mode 100644
index 0000000..8766421
--- /dev/null
+++ b/clean
@@ -0,0 +1,5 @@
1#!/bin/bash
2rmmod 8192cu
3rmmod 8192ce
4rmmod 8192du
5rmmod 8192de
diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c
index e6a805b..dc9ec64 100644
--- a/core/efuse/rtw_efuse.c
+++ b/core/efuse/rtw_efuse.c
@@ -1,7 +1,6 @@
1/* SPDX-License-Identifier: GPL-2.0 */
2/******************************************************************************1/******************************************************************************
3 *2 *
4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.3 * Copyright(c) 2007 - 2017 Realtek Corporation.
5 *4 *
6 * This program is free software; you can redistribute it and/or modify it5 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of version 2 of the GNU General Public License as6 * under the terms of version 2 of the GNU General Public License as
@@ -12,12 +11,7 @@
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * more details.12 * more details.
14 *13 *
15 * You should have received a copy of the GNU General Public License along with14 *****************************************************************************/
16 * this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 *
19 *
20 ******************************************************************************/
21#define _RTW_EFUSE_C_15#define _RTW_EFUSE_C_
2216
23#include <drv_types.h>17#include <drv_types.h>
@@ -63,59 +57,817 @@ BOOLEAN rtw_file_efuse_IsMasked(PADAPTER pAdapter, u16 Offset)
6357
64BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset)58BOOLEAN efuse_IsMasked(PADAPTER pAdapter, u16 Offset)
65{59{
60 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
61
66 if (pAdapter->registrypriv.boffefusemask)62 if (pAdapter->registrypriv.boffefusemask)
67 return FALSE;63 return FALSE;
6864
69 return (IS_MASKED(8821C, _MPCIE, Offset)) ? TRUE : FALSE;65#ifdef CONFIG_USB_HCI
66#if defined(CONFIG_RTL8188E)
67 if (IS_HARDWARE_TYPE_8188E(pAdapter))
68 return (IS_MASKED(8188E, _MUSB, Offset)) ? TRUE : FALSE;
69#endif
70#if defined(CONFIG_RTL8812A)
71 if (IS_HARDWARE_TYPE_8812(pAdapter))
72 return (IS_MASKED(8812A, _MUSB, Offset)) ? TRUE : FALSE;
73#endif
74#if defined(CONFIG_RTL8821A)
75#if 0
76 if (IS_HARDWARE_TYPE_8811AU(pAdapter))
77 return (IS_MASKED(8811A, _MUSB, Offset)) ? TRUE : FALSE;
78#endif
79 if (IS_HARDWARE_TYPE_8821(pAdapter))
80 return (IS_MASKED(8821A, _MUSB, Offset)) ? TRUE : FALSE;
81#endif
82#if defined(CONFIG_RTL8192E)
83 if (IS_HARDWARE_TYPE_8192E(pAdapter))
84 return (IS_MASKED(8192E, _MUSB, Offset)) ? TRUE : FALSE;
85#endif
86#if defined(CONFIG_RTL8723B)
87 if (IS_HARDWARE_TYPE_8723B(pAdapter))
88 return (IS_MASKED(8723B, _MUSB, Offset)) ? TRUE : FALSE;
89#endif
90#if defined(CONFIG_RTL8703B)
91 if (IS_HARDWARE_TYPE_8703B(pAdapter))
92 return (IS_MASKED(8703B, _MUSB, Offset)) ? TRUE : FALSE;
93#endif
94#if defined(CONFIG_RTL8814A)
95 if (IS_HARDWARE_TYPE_8814A(pAdapter))
96 return (IS_MASKED(8814A, _MUSB, Offset)) ? TRUE : FALSE;
97#endif
98#if defined(CONFIG_RTL8188F)
99 if (IS_HARDWARE_TYPE_8188F(pAdapter))
100 return (IS_MASKED(8188F, _MUSB, Offset)) ? TRUE : FALSE;
101#endif
102#if defined(CONFIG_RTL8188GTV)
103 if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
104 return (IS_MASKED(8188GTV, _MUSB, Offset)) ? TRUE : FALSE;
105#endif
106#if defined(CONFIG_RTL8822B)
107 if (IS_HARDWARE_TYPE_8822B(pAdapter))
108 return (IS_MASKED(8822B, _MUSB, Offset)) ? TRUE : FALSE;
109#endif
110#if defined(CONFIG_RTL8723D)
111 if (IS_HARDWARE_TYPE_8723D(pAdapter))
112 return (IS_MASKED(8723D, _MUSB, Offset)) ? TRUE : FALSE;
113#endif
114#if defined(CONFIG_RTL8710B)
115 if (IS_HARDWARE_TYPE_8710B(pAdapter))
116 return (IS_MASKED(8710B, _MUSB, Offset)) ? TRUE : FALSE;
117#endif
118#if defined(CONFIG_RTL8821C)
119 if (IS_HARDWARE_TYPE_8821CU(pAdapter))
120 return (IS_MASKED(8821C, _MUSB, Offset)) ? TRUE : FALSE;
121#endif
122
123#if defined(CONFIG_RTL8192F)
124 if (IS_HARDWARE_TYPE_8192FU(pAdapter))
125 return (IS_MASKED(8192F, _MUSB, Offset)) ? TRUE : FALSE;
126#endif
127#endif /*CONFIG_USB_HCI*/
128
129#ifdef CONFIG_PCI_HCI
130#if defined(CONFIG_RTL8188E)
131 if (IS_HARDWARE_TYPE_8188E(pAdapter))
132 return (IS_MASKED(8188E, _MPCIE, Offset)) ? TRUE : FALSE;
133#endif
134#if defined(CONFIG_RTL8192E)
135 if (IS_HARDWARE_TYPE_8192E(pAdapter))
136 return (IS_MASKED(8192E, _MPCIE, Offset)) ? TRUE : FALSE;
137#endif
138#if defined(CONFIG_RTL8812A)
139 if (IS_HARDWARE_TYPE_8812(pAdapter))
140 return (IS_MASKED(8812A, _MPCIE, Offset)) ? TRUE : FALSE;
141#endif
142#if defined(CONFIG_RTL8821A)
143 if (IS_HARDWARE_TYPE_8821(pAdapter))
144 return (IS_MASKED(8821A, _MPCIE, Offset)) ? TRUE : FALSE;
145#endif
146#if defined(CONFIG_RTL8723B)
147 if (IS_HARDWARE_TYPE_8723B(pAdapter))
148 return (IS_MASKED(8723B, _MPCIE, Offset)) ? TRUE : FALSE;
149#endif
150#if defined(CONFIG_RTL8814A)
151 if (IS_HARDWARE_TYPE_8814A(pAdapter))
152 return (IS_MASKED(8814A, _MPCIE, Offset)) ? TRUE : FALSE;
153#endif
154#if defined(CONFIG_RTL8822B)
155 if (IS_HARDWARE_TYPE_8822B(pAdapter))
156 return (IS_MASKED(8822B, _MPCIE, Offset)) ? TRUE : FALSE;
157#endif
158#if defined(CONFIG_RTL8821C)
159 if (IS_HARDWARE_TYPE_8821CE(pAdapter))
160 return (IS_MASKED(8821C, _MPCIE, Offset)) ? TRUE : FALSE;
161#endif
162
163#if defined(CONFIG_RTL8192F)
164 if (IS_HARDWARE_TYPE_8192FE(pAdapter))
165 return (IS_MASKED(8192F, _MPCIE, Offset)) ? TRUE : FALSE;
166#endif
167#endif /*CONFIG_PCI_HCI*/
168
169#ifdef CONFIG_SDIO_HCI
170#ifdef CONFIG_RTL8188E_SDIO
171 if (IS_HARDWARE_TYPE_8188E(pAdapter))
172 return (IS_MASKED(8188E, _MSDIO, Offset)) ? TRUE : FALSE;
173#endif
174#ifdef CONFIG_RTL8723B
175 if (IS_HARDWARE_TYPE_8723BS(pAdapter))
176 return (IS_MASKED(8723B, _MSDIO, Offset)) ? TRUE : FALSE;
177#endif
178#ifdef CONFIG_RTL8188F
179 if (IS_HARDWARE_TYPE_8188F(pAdapter))
180 return (IS_MASKED(8188F, _MSDIO, Offset)) ? TRUE : FALSE;
181#endif
182#ifdef CONFIG_RTL8188GTV
183 if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
184 return (IS_MASKED(8188GTV, _MSDIO, Offset)) ? TRUE : FALSE;
185#endif
186#ifdef CONFIG_RTL8192E
187 if (IS_HARDWARE_TYPE_8192ES(pAdapter))
188 return (IS_MASKED(8192E, _MSDIO, Offset)) ? TRUE : FALSE;
189#endif
190#if defined(CONFIG_RTL8821A)
191 if (IS_HARDWARE_TYPE_8821S(pAdapter))
192 return (IS_MASKED(8821A, _MSDIO, Offset)) ? TRUE : FALSE;
193#endif
194#if defined(CONFIG_RTL8821C)
195 if (IS_HARDWARE_TYPE_8821CS(pAdapter))
196 return (IS_MASKED(8821C, _MSDIO, Offset)) ? TRUE : FALSE;
197#endif
198#if defined(CONFIG_RTL8822B)
199 if (IS_HARDWARE_TYPE_8822B(pAdapter))
200 return (IS_MASKED(8822B, _MSDIO, Offset)) ? TRUE : FALSE;
201#endif
202#if defined(CONFIG_RTL8192F)
203 if (IS_HARDWARE_TYPE_8192FS(pAdapter))
204 return (IS_MASKED(8192F, _MSDIO, Offset)) ? TRUE : FALSE;
205#endif
206#endif /*CONFIG_SDIO_HCI*/
70207
71 return FALSE;208 return FALSE;
72}209}
73210
74void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray)211void rtw_efuse_mask_array(PADAPTER pAdapter, u8 *pArray)
75{212{
76 GET_MASK_ARRAY(8821C, _MPCIE, pArray);213 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
214
215#ifdef CONFIG_USB_HCI
216#if defined(CONFIG_RTL8188E)
217 if (IS_HARDWARE_TYPE_8188E(pAdapter))
218 GET_MASK_ARRAY(8188E, _MUSB, pArray);
219#endif
220#if defined(CONFIG_RTL8812A)
221 if (IS_HARDWARE_TYPE_8812(pAdapter))
222 GET_MASK_ARRAY(8812A, _MUSB, pArray);
223#endif
224#if defined(CONFIG_RTL8821A)
225 if (IS_HARDWARE_TYPE_8821(pAdapter))
226 GET_MASK_ARRAY(8821A, _MUSB, pArray);
227#endif
228#if defined(CONFIG_RTL8192E)
229 if (IS_HARDWARE_TYPE_8192E(pAdapter))
230 GET_MASK_ARRAY(8192E, _MUSB, pArray);
231#endif
232#if defined(CONFIG_RTL8723B)
233 if (IS_HARDWARE_TYPE_8723B(pAdapter))
234 GET_MASK_ARRAY(8723B, _MUSB, pArray);
235#endif
236#if defined(CONFIG_RTL8703B)
237 if (IS_HARDWARE_TYPE_8703B(pAdapter))
238 GET_MASK_ARRAY(8703B, _MUSB, pArray);
239#endif
240#if defined(CONFIG_RTL8188F)
241 if (IS_HARDWARE_TYPE_8188F(pAdapter))
242 GET_MASK_ARRAY(8188F, _MUSB, pArray);
243#endif
244#if defined(CONFIG_RTL8188GTV)
245 if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
246 GET_MASK_ARRAY(8188GTV, _MUSB, pArray);
247#endif
248#if defined(CONFIG_RTL8814A)
249 if (IS_HARDWARE_TYPE_8814A(pAdapter))
250 GET_MASK_ARRAY(8814A, _MUSB, pArray);
251#endif
252#if defined(CONFIG_RTL8822B)
253 if (IS_HARDWARE_TYPE_8822B(pAdapter))
254 GET_MASK_ARRAY(8822B, _MUSB, pArray);
255#endif
256#if defined(CONFIG_RTL8821C)
257 if (IS_HARDWARE_TYPE_8821CU(pAdapter))
258 GET_MASK_ARRAY(8821C, _MUSB, pArray);
259#endif
260#if defined(CONFIG_RTL8192F)
261 if (IS_HARDWARE_TYPE_8192FU(pAdapter))
262 GET_MASK_ARRAY(8192F, _MUSB, pArray);
263#endif
264#endif /*CONFIG_USB_HCI*/
265
266#ifdef CONFIG_PCI_HCI
267#if defined(CONFIG_RTL8188E)
268 if (IS_HARDWARE_TYPE_8188E(pAdapter))
269 GET_MASK_ARRAY(8188E, _MPCIE, pArray);
270#endif
271#if defined(CONFIG_RTL8192E)
272 if (IS_HARDWARE_TYPE_8192E(pAdapter))
273 GET_MASK_ARRAY(8192E, _MPCIE, pArray);
274#endif
275#if defined(CONFIG_RTL8812A)
276 if (IS_HARDWARE_TYPE_8812(pAdapter))
277 GET_MASK_ARRAY(8812A, _MPCIE, pArray);
278#endif
279#if defined(CONFIG_RTL8821A)
280 if (IS_HARDWARE_TYPE_8821(pAdapter))
281 GET_MASK_ARRAY(8821A, _MPCIE, pArray);
282#endif
283#if defined(CONFIG_RTL8723B)
284 if (IS_HARDWARE_TYPE_8723B(pAdapter))
285 GET_MASK_ARRAY(8723B, _MPCIE, pArray);
286#endif
287#if defined(CONFIG_RTL8814A)
288 if (IS_HARDWARE_TYPE_8814A(pAdapter))
289 GET_MASK_ARRAY(8814A, _MPCIE, pArray);
290#endif
291#if defined(CONFIG_RTL8822B)
292 if (IS_HARDWARE_TYPE_8822B(pAdapter))
293 GET_MASK_ARRAY(8822B, _MPCIE, pArray);
294#endif
295#if defined(CONFIG_RTL8821C)
296 if (IS_HARDWARE_TYPE_8821CE(pAdapter))
297 GET_MASK_ARRAY(8821C, _MPCIE, pArray);
298#endif
299#if defined(CONFIG_RTL8192F)
300 if (IS_HARDWARE_TYPE_8192FE(pAdapter))
301 GET_MASK_ARRAY(8192F, _MPCIE, pArray);
302#endif
303#endif /*CONFIG_PCI_HCI*/
304
305#ifdef CONFIG_SDIO_HCI
306#if defined(CONFIG_RTL8188E)
307 if (IS_HARDWARE_TYPE_8188E(pAdapter))
308 GET_MASK_ARRAY(8188E, _MSDIO, pArray);
309#endif
310#if defined(CONFIG_RTL8723B)
311 if (IS_HARDWARE_TYPE_8723BS(pAdapter))
312 GET_MASK_ARRAY(8723B, _MSDIO, pArray);
313#endif
314#if defined(CONFIG_RTL8188F)
315 if (IS_HARDWARE_TYPE_8188F(pAdapter))
316 GET_MASK_ARRAY(8188F, _MSDIO, pArray);
317#endif
318#if defined(CONFIG_RTL8188GTV)
319 if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
320 GET_MASK_ARRAY(8188GTV, _MSDIO, pArray);
321#endif
322#if defined(CONFIG_RTL8192E)
323 if (IS_HARDWARE_TYPE_8192ES(pAdapter))
324 GET_MASK_ARRAY(8192E, _MSDIO, pArray);
325#endif
326#if defined(CONFIG_RTL8821A)
327 if (IS_HARDWARE_TYPE_8821S(pAdapter))
328 GET_MASK_ARRAY(8821A, _MSDIO, pArray);
329#endif
330#if defined(CONFIG_RTL8821C)
331 if (IS_HARDWARE_TYPE_8821CS(pAdapter))
332 GET_MASK_ARRAY(8821C , _MSDIO, pArray);
333#endif
334#if defined(CONFIG_RTL8822B)
335 if (IS_HARDWARE_TYPE_8822B(pAdapter))
336 GET_MASK_ARRAY(8822B , _MSDIO, pArray);
337#endif
338#if defined(CONFIG_RTL8192F)
339 if (IS_HARDWARE_TYPE_8192FS(pAdapter))
340 GET_MASK_ARRAY(8192F, _MSDIO, pArray);
341#endif
342#endif /*CONFIG_SDIO_HCI*/
77}343}
78344
79u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter)345u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter)
80{346{
81 return GET_MASK_ARRAY_LEN(8821C, _MPCIE);347 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
348
349#ifdef CONFIG_USB_HCI
350#if defined(CONFIG_RTL8188E)
351 if (IS_HARDWARE_TYPE_8188E(pAdapter))
352 return GET_MASK_ARRAY_LEN(8188E, _MUSB);
353#endif
354#if defined(CONFIG_RTL8812A)
355 if (IS_HARDWARE_TYPE_8812(pAdapter))
356 return GET_MASK_ARRAY_LEN(8812A, _MUSB);
357#endif
358#if defined(CONFIG_RTL8821A)
359 if (IS_HARDWARE_TYPE_8821(pAdapter))
360 return GET_MASK_ARRAY_LEN(8821A, _MUSB);
361#endif
362#if defined(CONFIG_RTL8192E)
363 if (IS_HARDWARE_TYPE_8192E(pAdapter))
364 return GET_MASK_ARRAY_LEN(8192E, _MUSB);
365#endif
366#if defined(CONFIG_RTL8723B)
367 if (IS_HARDWARE_TYPE_8723B(pAdapter))
368 return GET_MASK_ARRAY_LEN(8723B, _MUSB);
369#endif
370#if defined(CONFIG_RTL8703B)
371 if (IS_HARDWARE_TYPE_8703B(pAdapter))
372 return GET_MASK_ARRAY_LEN(8703B, _MUSB);
373#endif
374#if defined(CONFIG_RTL8188F)
375 if (IS_HARDWARE_TYPE_8188F(pAdapter))
376 return GET_MASK_ARRAY_LEN(8188F, _MUSB);
377#endif
378#if defined(CONFIG_RTL8188GTV)
379 if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
380 return GET_MASK_ARRAY_LEN(8188GTV, _MUSB);
381#endif
382#if defined(CONFIG_RTL8814A)
383 if (IS_HARDWARE_TYPE_8814A(pAdapter))
384 return GET_MASK_ARRAY_LEN(8814A, _MUSB);
385#endif
386#if defined(CONFIG_RTL8822B)
387 if (IS_HARDWARE_TYPE_8822B(pAdapter))
388 return GET_MASK_ARRAY_LEN(8822B, _MUSB);
389#endif
390#if defined(CONFIG_RTL8821C)
391 if (IS_HARDWARE_TYPE_8821CU(pAdapter))
392 return GET_MASK_ARRAY_LEN(8821C, _MUSB);
393#endif
394#if defined(CONFIG_RTL8192F)
395 if (IS_HARDWARE_TYPE_8192FU(pAdapter))
396 return GET_MASK_ARRAY_LEN(8192F, _MUSB);
397#endif
398#endif /*CONFIG_USB_HCI*/
399
400#ifdef CONFIG_PCI_HCI
401#if defined(CONFIG_RTL8188E)
402 if (IS_HARDWARE_TYPE_8188E(pAdapter))
403 return GET_MASK_ARRAY_LEN(8188E, _MPCIE);
404#endif
405#if defined(CONFIG_RTL8192E)
406 if (IS_HARDWARE_TYPE_8192E(pAdapter))
407 return GET_MASK_ARRAY_LEN(8192E, _MPCIE);
408#endif
409#if defined(CONFIG_RTL8812A)
410 if (IS_HARDWARE_TYPE_8812(pAdapter))
411 return GET_MASK_ARRAY_LEN(8812A, _MPCIE);
412#endif
413#if defined(CONFIG_RTL8821A)
414 if (IS_HARDWARE_TYPE_8821(pAdapter))
415 return GET_MASK_ARRAY_LEN(8821A, _MPCIE);
416#endif
417#if defined(CONFIG_RTL8723B)
418 if (IS_HARDWARE_TYPE_8723B(pAdapter))
419 return GET_MASK_ARRAY_LEN(8723B, _MPCIE);
420#endif
421#if defined(CONFIG_RTL8814A)
422 if (IS_HARDWARE_TYPE_8814A(pAdapter))
423 return GET_MASK_ARRAY_LEN(8814A, _MPCIE);
424#endif
425#if defined(CONFIG_RTL8822B)
426 if (IS_HARDWARE_TYPE_8822B(pAdapter))
427 return GET_MASK_ARRAY_LEN(8822B, _MPCIE);
428#endif
429#if defined(CONFIG_RTL8821C)
430 if (IS_HARDWARE_TYPE_8821CE(pAdapter))
431 return GET_MASK_ARRAY_LEN(8821C, _MPCIE);
432#endif
433#if defined(CONFIG_RTL8192F)
434 if (IS_HARDWARE_TYPE_8192FE(pAdapter))
435 return GET_MASK_ARRAY_LEN(8192F, _MPCIE);
436#endif
437#endif /*CONFIG_PCI_HCI*/
438
439#ifdef CONFIG_SDIO_HCI
440#if defined(CONFIG_RTL8188E)
441 if (IS_HARDWARE_TYPE_8188E(pAdapter))
442 return GET_MASK_ARRAY_LEN(8188E, _MSDIO);
443#endif
444#if defined(CONFIG_RTL8723B)
445 if (IS_HARDWARE_TYPE_8723BS(pAdapter))
446 return GET_MASK_ARRAY_LEN(8723B, _MSDIO);
447#endif
448#if defined(CONFIG_RTL8188F)
449 if (IS_HARDWARE_TYPE_8188F(pAdapter))
450 return GET_MASK_ARRAY_LEN(8188F, _MSDIO);
451#endif
452#if defined(CONFIG_RTL8188GTV)
453 if (IS_HARDWARE_TYPE_8188GTV(pAdapter))
454 return GET_MASK_ARRAY_LEN(8188GTV, _MSDIO);
455#endif
456#if defined(CONFIG_RTL8192E)
457 if (IS_HARDWARE_TYPE_8192ES(pAdapter))
458 return GET_MASK_ARRAY_LEN(8192E, _MSDIO);
459#endif
460#if defined(CONFIG_RTL8821A)
461 if (IS_HARDWARE_TYPE_8821S(pAdapter))
462 return GET_MASK_ARRAY_LEN(8821A, _MSDIO);
463#endif
464#if defined(CONFIG_RTL8821C)
465 if (IS_HARDWARE_TYPE_8821CS(pAdapter))
466 return GET_MASK_ARRAY_LEN(8821C, _MSDIO);
467#endif
468#if defined(CONFIG_RTL8822B)
469 if (IS_HARDWARE_TYPE_8822B(pAdapter))
470 return GET_MASK_ARRAY_LEN(8822B, _MSDIO);
471#endif
472#if defined(CONFIG_RTL8192F)
473 if (IS_HARDWARE_TYPE_8192FS(pAdapter))
474 return GET_MASK_ARRAY_LEN(8192F, _MSDIO);
475#endif
476#endif/*CONFIG_SDIO_HCI*/
477 return 0;
478}
479
480static void rtw_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
481{
482 u16 i = 0;
483
484 if (padapter->registrypriv.boffefusemask == 0) {
485
486 for (i = 0; i < cnts; i++) {
487 if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {
488 if (rtw_file_efuse_IsMasked(padapter, addr + i)) /*use file efuse mask.*/
489 data[i] = 0xff;
490 } else {
491 /*RTW_INFO(" %s , data[%d] = %x\n", __func__, i, data[i]);*/
492 if (efuse_IsMasked(padapter, addr + i)) {
493 data[i] = 0xff;
494 /*RTW_INFO(" %s ,mask data[%d] = %x\n", __func__, i, data[i]);*/
495 }
496 }
497 }
498
499 }
82}500}
83501
84u8 rtw_efuse_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)502u8 rtw_efuse_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
85{503{
86 u8 ret = _SUCCESS;504 u8 ret = _SUCCESS;
87 u16 mapLen = 0, i = 0;505 u16 mapLen = 0;
88506
89 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);507 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
90508
91 ret = rtw_efuse_map_read(padapter, addr, cnts , data);509 ret = rtw_efuse_map_read(padapter, addr, cnts , data);
92510
93 if (padapter->registrypriv.boffefusemask == 0) {511 rtw_mask_map_read(padapter, addr, cnts , data);
94512
95 for (i = 0; i < cnts; i++) {513 return ret;
96 if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {514
97 if (rtw_file_efuse_IsMasked(padapter, addr + i)) /*use file efuse mask.*/515}
98 data[i] = 0xff;516
517/* ***********************************************************
518 * Efuse related code
519 * *********************************************************** */
520static u8 hal_EfuseSwitchToBank(
521 PADAPTER padapter,
522 u8 bank,
523 u8 bPseudoTest)
524{
525 u8 bRet = _FALSE;
526 u32 value32 = 0;
527#ifdef HAL_EFUSE_MEMORY
528 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
529 PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
530#endif
531
532
533 RTW_INFO("%s: Efuse switch bank to %d\n", __FUNCTION__, bank);
534 if (bPseudoTest) {
535#ifdef HAL_EFUSE_MEMORY
536 pEfuseHal->fakeEfuseBank = bank;
537#else
538 fakeEfuseBank = bank;
539#endif
540 bRet = _TRUE;
541 } else {
542 value32 = rtw_read32(padapter, 0x34);
543 bRet = _TRUE;
544 switch (bank) {
545 case 0:
546 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
547 break;
548 case 1:
549 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_0);
550 break;
551 case 2:
552 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_1);
553 break;
554 case 3:
555 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_2);
556 break;
557 default:
558 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
559 bRet = _FALSE;
560 break;
561 }
562 rtw_write32(padapter, 0x34, value32);
563 }
564
565 return bRet;
566}
567
568void rtw_efuse_analyze(PADAPTER padapter, u8 Type, u8 Fake)
569{
570 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
571 PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal);
572 u16 eFuse_Addr = 0;
573 u8 offset, wden;
574 u16 i, j;
575 u8 u1temp = 0;
576 u8 efuseHeader = 0, efuseExtHdr = 0, efuseData[EFUSE_MAX_WORD_UNIT*2] = {0}, dataCnt = 0;
577 u16 efuseHeader2Byte = 0;
578 u8 *eFuseWord = NULL;// [EFUSE_MAX_SECTION_NUM][EFUSE_MAX_WORD_UNIT];
579 u8 offset_2_0 = 0;
580 u8 pgSectionCnt = 0;
581 u8 wd_cnt = 0;
582 u8 max_section = 64;
583 u16 mapLen = 0, maprawlen = 0;
584 boolean bExtHeader = _FALSE;
585 u8 efuseType = EFUSE_WIFI;
586 boolean bPseudoTest = _FALSE;
587 u8 bank = 0, startBank = 0, endBank = 1-1;
588 boolean bCheckNextBank = FALSE;
589 u8 protectBytesBank = 0;
590 u16 efuse_max = 0;
591 u8 ParseEfuseExtHdr, ParseEfuseHeader, ParseOffset, ParseWDEN, ParseOffset2_0;
592
593 eFuseWord = rtw_zmalloc(EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
594
595 RTW_INFO("\n");
596 if (Type == 0) {
597 if (Fake == 0) {
598 RTW_INFO("\n\tEFUSE_Analyze Wifi Content\n");
599 efuseType = EFUSE_WIFI;
600 bPseudoTest = FALSE;
601 startBank = 0;
602 endBank = 0;
603 } else {
604 RTW_INFO("\n\tEFUSE_Analyze Wifi Pseudo Content\n");
605 efuseType = EFUSE_WIFI;
606 bPseudoTest = TRUE;
607 startBank = 0;
608 endBank = 0;
609 }
610 } else {
611 if (Fake == 0) {
612 RTW_INFO("\n\tEFUSE_Analyze BT Content\n");
613 efuseType = EFUSE_BT;
614 bPseudoTest = FALSE;
615 startBank = 1;
616 endBank = EFUSE_MAX_BANK - 1;
617 } else {
618 RTW_INFO("\n\tEFUSE_Analyze BT Pseudo Content\n");
619 efuseType = EFUSE_BT;
620 bPseudoTest = TRUE;
621 startBank = 1;
622 endBank = EFUSE_MAX_BANK - 1;
623 if (IS_HARDWARE_TYPE_8821(padapter))
624 endBank = 3 - 1;/*EFUSE_MAX_BANK_8821A - 1;*/
625 }
626 }
627
628 RTW_INFO("\n\r 1Byte header, [7:4]=offset, [3:0]=word enable\n");
629 RTW_INFO("\n\r 2Byte header, header[7:5]=offset[2:0], header[4:0]=0x0F\n");
630 RTW_INFO("\n\r 2Byte header, extHeader[7:4]=offset[6:3], extHeader[3:0]=word enable\n");
631
632 EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);
633 EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_MAX_SECTION, (PVOID)&max_section, bPseudoTest);
634 EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_PROTECT_BYTES_BANK, (PVOID)&protectBytesBank, bPseudoTest);
635 EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, (PVOID)&efuse_max, bPseudoTest);
636 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&maprawlen, _FALSE);
637
638 _rtw_memset(eFuseWord, 0xff, EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
639 _rtw_memset(pEfuseHal->fakeEfuseInitMap, 0xff, EFUSE_MAX_MAP_LEN);
640
641 if (IS_HARDWARE_TYPE_8821(padapter))
642 endBank = 3 - 1;/*EFUSE_MAX_BANK_8821A - 1;*/
643
644 for (bank = startBank; bank <= endBank; bank++) {
645 if (!hal_EfuseSwitchToBank(padapter, bank, bPseudoTest)) {
646 RTW_INFO("EFUSE_SwitchToBank() Fail!!\n");
647 return;
648 }
649
650 eFuse_Addr = bank * EFUSE_MAX_BANK_SIZE;
651
652 efuse_OneByteRead(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
653
654 if (efuseHeader == 0xFF && bank == startBank && Fake != TRUE) {
655 RTW_INFO("Non-PGed Efuse\n");
656 return;
657 }
658 RTW_INFO("EFUSE_REAL_CONTENT_LEN = %d\n", maprawlen);
659
660 while ((efuseHeader != 0xFF) && ((efuseType == EFUSE_WIFI && (eFuse_Addr < maprawlen)) || (efuseType == EFUSE_BT && (eFuse_Addr < (endBank + 1) * EFUSE_MAX_BANK_SIZE)))) {
661
662 RTW_INFO("Analyzing: Offset: 0x%X\n", eFuse_Addr);
663
664 /* Check PG header for section num.*/
665 if (EXT_HEADER(efuseHeader)) {
666 bExtHeader = TRUE;
667 offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader);
668 efuse_OneByteRead(padapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest);
669
670 if (efuseExtHdr != 0xff) {
671 if (ALL_WORDS_DISABLED(efuseExtHdr)) {
672 /* Read next pg header*/
673 efuse_OneByteRead(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
674 continue;
675 } else {
676 offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0;
677 wden = (efuseExtHdr & 0x0F);
678 efuseHeader2Byte = (efuseExtHdr<<8)|efuseHeader;
679 RTW_INFO("Find efuseHeader2Byte = 0x%04X, offset=%d, wden=0x%x\n",
680 efuseHeader2Byte, offset, wden);
681 }
682 } else {
683 RTW_INFO("Error, efuse[%d]=0xff, efuseExtHdr=0xff\n", eFuse_Addr-1);
684 break;
685 }
686 } else {
687 offset = ((efuseHeader >> 4) & 0x0f);
688 wden = (efuseHeader & 0x0f);
689 }
690
691 _rtw_memset(efuseData, '\0', EFUSE_MAX_WORD_UNIT * 2);
692 dataCnt = 0;
693
694 if (offset < max_section) {
695 for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
696 /* Check word enable condition in the section */
697 if (!(wden & (0x01<<i))) {
698 if (!((efuseType == EFUSE_WIFI && (eFuse_Addr + 2 < maprawlen)) ||
699 (efuseType == EFUSE_BT && (eFuse_Addr + 2 < (endBank + 1) * EFUSE_MAX_BANK_SIZE)))) {
700 RTW_INFO("eFuse_Addr exceeds, break\n");
701 break;
702 }
703 efuse_OneByteRead(padapter, eFuse_Addr++, &efuseData[dataCnt++], bPseudoTest);
704 eFuseWord[(offset * 8) + (i * 2)] = (efuseData[dataCnt - 1]);
705 efuse_OneByteRead(padapter, eFuse_Addr++, &efuseData[dataCnt++], bPseudoTest);
706 eFuseWord[(offset * 8) + (i * 2 + 1)] = (efuseData[dataCnt - 1]);
707 }
708 }
709 }
710
711 if (bExtHeader) {
712 RTW_INFO("Efuse PG Section (%d) = ", pgSectionCnt);
713 RTW_INFO("[ %04X ], [", efuseHeader2Byte);
714
715 } else {
716 RTW_INFO("Efuse PG Section (%d) = ", pgSectionCnt);
717 RTW_INFO("[ %02X ], [", efuseHeader);
718 }
719
720 for (j = 0; j < dataCnt; j++)
721 RTW_INFO(" %02X ", efuseData[j]);
722
723 RTW_INFO("]\n");
724
725
726 if (bExtHeader) {
727 ParseEfuseExtHdr = (efuseHeader2Byte & 0xff00) >> 8;
728 ParseEfuseHeader = (efuseHeader2Byte & 0xff);
729 ParseOffset2_0 = GET_HDR_OFFSET_2_0(ParseEfuseHeader);
730 ParseOffset = ((ParseEfuseExtHdr & 0xF0) >> 1) | ParseOffset2_0;
731 ParseWDEN = (ParseEfuseExtHdr & 0x0F);
732 RTW_INFO("Header=0x%x, ExtHeader=0x%x, ", ParseEfuseHeader, ParseEfuseExtHdr);
99 } else {733 } else {
100 /*RTW_INFO(" %s , data[%d] = %x\n", __func__, i, data[i]);*/734 ParseEfuseHeader = efuseHeader;
101 if (efuse_IsMasked(padapter, addr + i)) {735 ParseOffset = ((ParseEfuseHeader >> 4) & 0x0f);
102 data[i] = 0xff;736 ParseWDEN = (ParseEfuseHeader & 0x0f);
103 /*RTW_INFO(" %s ,mask data[%d] = %x\n", __func__, i, data[i]);*/737 RTW_INFO("Header=0x%x, ", ParseEfuseHeader);
738 }
739 RTW_INFO("offset=0x%x(%d), word enable=0x%x\n", ParseOffset, ParseOffset, ParseWDEN);
740
741 wd_cnt = 0;
742 for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
743 if (!(wden & (0x01 << i))) {
744 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]);
745 wd_cnt++;
104 }746 }
105 }747 }
106 }
107748
749 pgSectionCnt++;
750 bExtHeader = FALSE;
751 efuse_OneByteRead(padapter, eFuse_Addr++, &efuseHeader, bPseudoTest);
752 if (efuseHeader == 0xFF) {
753 if ((eFuse_Addr + protectBytesBank) >= efuse_max)
754 bCheckNextBank = TRUE;
755 else
756 bCheckNextBank = FALSE;
757 }
758 }
759 if (!bCheckNextBank) {
760 RTW_INFO("Not need to check next bank, eFuse_Addr=%d, protectBytesBank=%d, efuse_max=%d\n",
761 eFuse_Addr, protectBytesBank, efuse_max);
762 break;
763 }
108 }764 }
109 return ret;765 /* switch bank back to 0 for BT/wifi later use*/
766 hal_EfuseSwitchToBank(padapter, 0, bPseudoTest);
767
768 /* 3. Collect 16 sections and 4 word unit into Efuse map.*/
769 for (i = 0; i < max_section; i++) {
770 for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) {
771 pEfuseHal->fakeEfuseInitMap[(i*8)+(j*2)] = (eFuseWord[(i*8)+(j*2)]);
772 pEfuseHal->fakeEfuseInitMap[(i*8)+((j*2)+1)] = (eFuseWord[(i*8)+((j*2)+1)]);
773 }
774 }
775
776 RTW_INFO("\n\tEFUSE Analyze Map\n");
777 i = 0;
778 j = 0;
779
780 for (i = 0; i < mapLen; i++) {
781 if (i % 16 == 0)
782 RTW_PRINT_SEL(RTW_DBGDUMP, "0x%03x: ", i);
783 _RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s"
784 , pEfuseHal->fakeEfuseInitMap[i]
785 , ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? " " : " ")
786 );
787 }
788 _RTW_PRINT_SEL(RTW_DBGDUMP, "\n");
789 if (eFuseWord)
790 rtw_mfree((u8 *)eFuseWord, EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
791}
792
793VOID efuse_PreUpdateAction(
794 PADAPTER pAdapter,
795 pu4Byte BackupRegs)
796{
797 if (IS_HARDWARE_TYPE_8812AU(pAdapter) || IS_HARDWARE_TYPE_8822BU(pAdapter)) {
798 /* <20131115, Kordan> Turn off Rx to prevent from being busy when writing the EFUSE. (Asked by Chunchu.)*/
799 BackupRegs[0] = phy_query_mac_reg(pAdapter, REG_RCR, bMaskDWord);
800 BackupRegs[1] = phy_query_mac_reg(pAdapter, REG_RXFLTMAP0, bMaskDWord);
801 BackupRegs[2] = phy_query_mac_reg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord);
802#ifdef CONFIG_RTL8812A
803 BackupRegs[3] = phy_query_mac_reg(pAdapter, REG_AFE_MISC, bMaskDWord);
804#endif
805 PlatformEFIOWrite4Byte(pAdapter, REG_RCR, 0x1);
806 PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0, 0);
807 PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+1, 0);
808 PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+2, 0);
809 PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+3, 0);
810 PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+4, 0);
811 PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+5, 0);
812#ifdef CONFIG_RTL8812A
813 /* <20140410, Kordan> 0x11 = 0x4E, lower down LX_SPS0 voltage. (Asked by Chunchu)*/
814 phy_set_mac_reg(pAdapter, REG_AFE_MISC, bMaskByte1, 0x4E);
815#endif
816 RTW_INFO(" %s , done\n", __func__);
817
818 }
819}
820
110821
822VOID efuse_PostUpdateAction(
823 PADAPTER pAdapter,
824 pu4Byte BackupRegs)
825{
826 if (IS_HARDWARE_TYPE_8812AU(pAdapter) || IS_HARDWARE_TYPE_8822BU(pAdapter)) {
827 /* <20131115, Kordan> Turn on Rx and restore the registers. (Asked by Chunchu.)*/
828 phy_set_mac_reg(pAdapter, REG_RCR, bMaskDWord, BackupRegs[0]);
829 phy_set_mac_reg(pAdapter, REG_RXFLTMAP0, bMaskDWord, BackupRegs[1]);
830 phy_set_mac_reg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord, BackupRegs[2]);
831#ifdef CONFIG_RTL8812A
832 phy_set_mac_reg(pAdapter, REG_AFE_MISC, bMaskDWord, BackupRegs[3]);
833#endif
834 RTW_INFO(" %s , done\n", __func__);
835 }
111}836}
112837
838
839#ifdef RTW_HALMAC
113#include "../../hal/hal_halmac.h"840#include "../../hal/hal_halmac.h"
114841
842void Efuse_PowerSwitch(PADAPTER adapter, u8 write, u8 pwrstate)
843{
844}
845
115void BTEfuse_PowerSwitch(PADAPTER adapter, u8 write, u8 pwrstate)846void BTEfuse_PowerSwitch(PADAPTER adapter, u8 write, u8 pwrstate)
116{847{
117}848}
118849
850u8 efuse_GetCurrentSize(PADAPTER adapter, u16 *size)
851{
852 *size = 0;
853
854 return _FAIL;
855}
856
857u16 efuse_GetMaxSize(PADAPTER adapter)
858{
859 struct dvobj_priv *d;
860 u32 size = 0;
861 int err;
862
863 d = adapter_to_dvobj(adapter);
864 err = rtw_halmac_get_physical_efuse_size(d, &size);
865 if (err)
866 return 0;
867
868 return size;
869}
870
119u16 efuse_GetavailableSize(PADAPTER adapter)871u16 efuse_GetavailableSize(PADAPTER adapter)
120{872{
121 struct dvobj_priv *d;873 struct dvobj_priv *d;
@@ -130,6 +882,7 @@ u16 efuse_GetavailableSize(PADAPTER adapter)
130 return size;882 return size;
131}883}
132884
885
133u8 efuse_bt_GetCurrentSize(PADAPTER adapter, u16 *usesize)886u8 efuse_bt_GetCurrentSize(PADAPTER adapter, u16 *usesize)
134{887{
135 u8 *efuse_map;888 u8 *efuse_map;
@@ -161,6 +914,7 @@ void EFUSE_GetEfuseDefinition(PADAPTER adapter, u8 efusetype, u8 type, void *out
161 struct dvobj_priv *d;914 struct dvobj_priv *d;
162 u32 v32 = 0;915 u32 v32 = 0;
163916
917
164 d = adapter_to_dvobj(adapter);918 d = adapter_to_dvobj(adapter);
165919
166 if (adapter->hal_func.EFUSEGetEfuseDefinition) {920 if (adapter->hal_func.EFUSEGetEfuseDefinition) {
@@ -200,9 +954,10 @@ u8 rtw_efuse_access(PADAPTER adapter, u8 write, u16 addr, u16 cnts, u8 *data)
200{954{
201 struct dvobj_priv *d;955 struct dvobj_priv *d;
202 u8 *efuse = NULL;956 u8 *efuse = NULL;
203 u32 size;957 u32 size, i;
204 int err;958 int err;
205959
960
206 d = adapter_to_dvobj(adapter);961 d = adapter_to_dvobj(adapter);
207 err = rtw_halmac_get_physical_efuse_size(d, &size);962 err = rtw_halmac_get_physical_efuse_size(d, &size);
208 if (err)963 if (err)
@@ -255,9 +1010,10 @@ u8 rtw_efuse_bt_access(PADAPTER adapter, u8 write, u16 addr, u16 cnts, u8 *data)
255{1010{
256 struct dvobj_priv *d;1011 struct dvobj_priv *d;
257 u8 *efuse = NULL;1012 u8 *efuse = NULL;
258 u32 size;1013 u32 size, i;
259 int err = _FAIL;1014 int err = _FAIL;
2601015
1016
261 d = adapter_to_dvobj(adapter);1017 d = adapter_to_dvobj(adapter);
2621018
263 size = EFUSE_BT_REAL_CONTENT_LEN;1019 size = EFUSE_BT_REAL_CONTENT_LEN;
@@ -299,68 +1055,92 @@ u8 rtw_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
299{1055{
300 struct dvobj_priv *d;1056 struct dvobj_priv *d;
301 u8 *efuse = NULL;1057 u8 *efuse = NULL;
302 u32 size;1058 u32 size, i;
303 int err;1059 int err;
1060 u32 backupRegs[4] = {0};
1061 u8 status = _SUCCESS;
1062
1063 efuse_PreUpdateAction(adapter, backupRegs);
3041064
305 d = adapter_to_dvobj(adapter);1065 d = adapter_to_dvobj(adapter);
306 err = rtw_halmac_get_logical_efuse_size(d, &size);1066 err = rtw_halmac_get_logical_efuse_size(d, &size);
307 if (err)1067 if (err) {
308 return _FAIL;1068 status = _FAIL;
3091069 goto exit;
1070 }
310 /* size error handle */1071 /* size error handle */
311 if ((addr + cnts) > size) {1072 if ((addr + cnts) > size) {
312 if (addr < size)1073 if (addr < size)
313 cnts = size - addr;1074 cnts = size - addr;
314 else1075 else {
315 return _FAIL;1076 status = _FAIL;
1077 goto exit;
1078 }
316 }1079 }
3171080
318 if (cnts > 16)1081 if (cnts > 16)
319 efuse = rtw_zmalloc(size);1082 efuse = rtw_zmalloc(size);
3201083
321 if (efuse) {1084 if (efuse) {
322 err = rtw_halmac_read_logical_efuse_map(d, efuse, size);1085 err = rtw_halmac_read_logical_efuse_map(d, efuse, size, NULL, 0);
323 if (err) {1086 if (err) {
324 rtw_mfree(efuse, size);1087 rtw_mfree(efuse, size);
325 return _FAIL;1088 status = _FAIL;
1089 goto exit;
326 }1090 }
3271091
328 _rtw_memcpy(data, efuse + addr, cnts);1092 _rtw_memcpy(data, efuse + addr, cnts);
329 rtw_mfree(efuse, size);1093 rtw_mfree(efuse, size);
330 } else {1094 } else {
331 err = rtw_halmac_read_logical_efuse(d, addr, cnts, data);1095 err = rtw_halmac_read_logical_efuse(d, addr, cnts, data);
332 if (err)1096 if (err) {
333 return _FAIL;1097 status = _FAIL;
1098 goto exit;
1099 }
334 }1100 }
1101 status = _SUCCESS;
1102exit:
1103 efuse_PostUpdateAction(adapter, backupRegs);
3351104
336 return _SUCCESS;1105 return status;
337}1106}
3381107
339u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)1108u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
340{1109{
341 struct dvobj_priv *d;1110 struct dvobj_priv *d;
342 u8 *efuse = NULL;1111 u8 *efuse = NULL;
343 u32 size;1112 u32 size, i;
344 int err;1113 int err;
345 u8 mask_buf[64] = "";1114 u8 mask_buf[64] = "";
346 u16 mask_len = sizeof(u8) * rtw_get_efuse_mask_arraylen(adapter);1115 u16 mask_len = sizeof(u8) * rtw_get_efuse_mask_arraylen(adapter);
1116 u32 backupRegs[4] = {0};
1117 u8 status = _SUCCESS;;
1118
1119 efuse_PreUpdateAction(adapter, backupRegs);
3471120
348 d = adapter_to_dvobj(adapter);1121 d = adapter_to_dvobj(adapter);
349 err = rtw_halmac_get_logical_efuse_size(d, &size);1122 err = rtw_halmac_get_logical_efuse_size(d, &size);
350 if (err)1123 if (err) {
351 return _FAIL;1124 status = _FAIL;
1125 goto exit;
1126 }
3521127
353 if ((addr + cnts) > size)1128 if ((addr + cnts) > size) {
354 return _FAIL;1129 status = _FAIL;
1130 goto exit;
1131 }
3551132
356 efuse = rtw_zmalloc(size);1133 efuse = rtw_zmalloc(size);
357 if (!efuse)1134 if (!efuse) {
358 return _FAIL;1135 status = _FAIL;
1136 goto exit;
1137 }
3591138
360 err = rtw_halmac_read_logical_efuse_map(d, efuse, size);1139 err = rtw_halmac_read_logical_efuse_map(d, efuse, size, NULL, 0);
361 if (err) {1140 if (err) {
362 rtw_mfree(efuse, size);1141 rtw_mfree(efuse, size);
363 return _FAIL;1142 status = _FAIL;
1143 goto exit;
364 }1144 }
3651145
366 _rtw_memcpy(efuse + addr, data, cnts);1146 _rtw_memcpy(efuse + addr, data, cnts);
@@ -385,12 +1165,26 @@ u8 rtw_efuse_map_write(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
3851165
386 if (err) {1166 if (err) {
387 rtw_mfree(efuse, size);1167 rtw_mfree(efuse, size);
388 return _FAIL;1168 status = _FAIL;
1169 goto exit;
389 }1170 }
3901171
391 rtw_mfree(efuse, size);1172 rtw_mfree(efuse, size);
1173 status = _SUCCESS;
1174exit :
1175 efuse_PostUpdateAction(adapter, backupRegs);
3921176
393 return _SUCCESS;1177 return status;
1178}
1179
1180int Efuse_PgPacketRead(PADAPTER adapter, u8 offset, u8 *data, BOOLEAN test)
1181{
1182 return _FALSE;
1183}
1184
1185int Efuse_PgPacketWrite(PADAPTER adapter, u8 offset, u8 word_en, u8 *data, BOOLEAN test)
1186{
1187 return _FALSE;
394}1188}
3951189
396u8 rtw_BT_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)1190u8 rtw_BT_efuse_map_read(PADAPTER adapter, u16 addr, u16 cnts, u8 *data)
@@ -479,6 +1273,10 @@ VOID hal_ReadEFuse_BT_logic_map(
479 u8 *pbuf1273 u8 *pbuf
480)1274)
481{1275{
1276
1277 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
1278 PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
1279
482 u8 *efuseTbl, *phyefuse;1280 u8 *efuseTbl, *phyefuse;
483 u8 bank;1281 u8 bank;
484 u16 eFuse_Addr = 0;1282 u16 eFuse_Addr = 0;
@@ -487,6 +1285,7 @@ VOID hal_ReadEFuse_BT_logic_map(
487 u16 i, total, used;1285 u16 i, total, used;
488 u8 efuse_usage;1286 u8 efuse_usage;
4891287
1288
490 /* */1289 /* */
491 /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */1290 /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */
492 /* */1291 /* */
@@ -604,6 +1403,7 @@ exit:
604 rtw_mfree(phyefuse, EFUSE_BT_REAL_BANK_CONTENT_LEN);1403 rtw_mfree(phyefuse, EFUSE_BT_REAL_BANK_CONTENT_LEN);
605}1404}
6061405
1406
607static u8 hal_EfusePartialWriteCheck(1407static u8 hal_EfusePartialWriteCheck(
608 PADAPTER padapter,1408 PADAPTER padapter,
609 u8 efuseType,1409 u8 efuseType,
@@ -611,6 +1411,8 @@ static u8 hal_EfusePartialWriteCheck(
611 PPGPKT_STRUCT pTargetPkt,1411 PPGPKT_STRUCT pTargetPkt,
612 u8 bPseudoTest)1412 u8 bPseudoTest)
613{1413{
1414 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
1415 PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
614 u8 bRet = _FALSE;1416 u8 bRet = _FALSE;
615 u16 startAddr = 0, efuse_max_available_len = EFUSE_BT_REAL_BANK_CONTENT_LEN, efuse_max = EFUSE_BT_REAL_BANK_CONTENT_LEN;1417 u16 startAddr = 0, efuse_max_available_len = EFUSE_BT_REAL_BANK_CONTENT_LEN, efuse_max = EFUSE_BT_REAL_BANK_CONTENT_LEN;
616 u8 efuse_data = 0;1418 u8 efuse_data = 0;
@@ -644,6 +1446,7 @@ static u8 hal_EfusePartialWriteCheck(
644 return bRet;1446 return bRet;
645}1447}
6461448
1449
647static u8 hal_EfusePgPacketWrite2ByteHeader(1450static u8 hal_EfusePgPacketWrite2ByteHeader(
648 PADAPTER padapter,1451 PADAPTER padapter,
649 u8 efuseType,1452 u8 efuseType,
@@ -710,6 +1513,7 @@ static u8 hal_EfusePgPacketWrite2ByteHeader(
710 return _TRUE;1513 return _TRUE;
711}1514}
7121515
1516
713static u8 hal_EfusePgPacketWrite1ByteHeader(1517static u8 hal_EfusePgPacketWrite1ByteHeader(
714 PADAPTER pAdapter,1518 PADAPTER pAdapter,
715 u8 efuseType,1519 u8 efuseType,
@@ -717,10 +1521,12 @@ static u8 hal_EfusePgPacketWrite1ByteHeader(
717 PPGPKT_STRUCT pTargetPkt,1521 PPGPKT_STRUCT pTargetPkt,
718 u8 bPseudoTest)1522 u8 bPseudoTest)
719{1523{
1524 u8 bRet = _FALSE;
720 u8 pg_header = 0, tmp_header = 0;1525 u8 pg_header = 0, tmp_header = 0;
721 u16 efuse_addr = *pAddr;1526 u16 efuse_addr = *pAddr;
722 u8 repeatcnt = 0;1527 u8 repeatcnt = 0;
7231528
1529
724 /* RTW_INFO("%s\n", __FUNCTION__); */1530 /* RTW_INFO("%s\n", __FUNCTION__); */
725 pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en;1531 pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en;
7261532
@@ -763,6 +1569,7 @@ static u8 hal_EfusePgPacketWriteHeader(
763 return bRet;1569 return bRet;
764}1570}
7651571
1572
766static u81573static u8
767Hal_EfuseWordEnableDataWrite(1574Hal_EfuseWordEnableDataWrite(
768 PADAPTER padapter,1575 PADAPTER padapter,
@@ -776,6 +1583,7 @@ Hal_EfuseWordEnableDataWrite(
776 u8 badworden = 0x0F;1583 u8 badworden = 0x0F;
777 u8 tmpdata[PGPKT_DATA_SIZE];1584 u8 tmpdata[PGPKT_DATA_SIZE];
7781585
1586
779 /* RTW_INFO("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en); */1587 /* RTW_INFO("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en); */
780 _rtw_memset(tmpdata, 0xFF, PGPKT_DATA_SIZE);1588 _rtw_memset(tmpdata, 0xFF, PGPKT_DATA_SIZE);
7811589
@@ -856,50 +1664,384 @@ hal_EfusePgPacketWriteData(
856 return _TRUE;1664 return _TRUE;
857}1665}
8581666
859/* ***********************************************************1667u8 efuse_OneByteRead(struct _ADAPTER *a, u16 addr, u8 *data, u8 bPseudoTest)
860 * Efuse related code
861 * *********************************************************** */
862static u8
863hal_EfuseSwitchToBank(
864 PADAPTER padapter,
865 u8 bank,
866 u8 bPseudoTest)
867{1668{
868 u8 bRet = _FALSE;1669 struct dvobj_priv *d;
869 u32 value32 = 0;1670 int err;
1671 u8 ret = _TRUE;
8701672
871 RTW_INFO("%s: Efuse switch bank to %d\n", __FUNCTION__, bank);1673 d = adapter_to_dvobj(a);
872 if (bPseudoTest) {1674 err = rtw_halmac_read_physical_efuse(d, addr, 1, data);
873 fakeEfuseBank = bank;1675 if (err) {
874 bRet = _TRUE;1676 RTW_ERR("%s: addr=0x%x FAIL!!!\n", __FUNCTION__, addr);
875 } else {1677 ret = _FALSE;
876 value32 = rtw_read32(padapter, 0x34);
877 bRet = _TRUE;
878 switch (bank) {
879 case 0:
880 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
881 break;
882 case 1:
883 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_0);
884 break;
885 case 2:
886 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_1);
887 break;
888 case 3:
889 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_2);
890 break;
891 default:
892 value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0);
893 bRet = _FALSE;
894 break;
895 }1678 }
896 rtw_write32(padapter, 0x34, value32);
897 }
8981679
899 return bRet;1680 return ret;
1681
1682}
1683
1684static u16
1685hal_EfuseGetCurrentSize_BT(
1686 PADAPTER padapter,
1687 u8 bPseudoTest)
1688{
1689#ifdef HAL_EFUSE_MEMORY
1690 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
1691 PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
1692#endif
1693 u16 btusedbytes;
1694 u16 efuse_addr;
1695 u8 bank, startBank;
1696 u8 hoffset = 0, hworden = 0;
1697 u8 efuse_data, word_cnts = 0;
1698 u16 retU2 = 0;
1699 u8 bContinual = _TRUE;
1700
1701
1702 btusedbytes = fakeBTEfuseUsedBytes;
1703
1704 efuse_addr = (u16)((btusedbytes % EFUSE_BT_REAL_BANK_CONTENT_LEN));
1705 startBank = (u8)(1 + (btusedbytes / EFUSE_BT_REAL_BANK_CONTENT_LEN));
1706
1707 RTW_INFO("%s: start from bank=%d addr=0x%X\n", __FUNCTION__, startBank, efuse_addr);
1708 retU2 = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
1709
1710 for (bank = startBank; bank < 3; bank++) {
1711 if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == _FALSE) {
1712 RTW_ERR("%s: switch bank(%d) Fail!!\n", __FUNCTION__, bank);
1713 /* bank = EFUSE_MAX_BANK; */
1714 break;
1715 }
1716
1717 /* only when bank is switched we have to reset the efuse_addr. */
1718 if (bank != startBank)
1719 efuse_addr = 0;
1720
1721
1722 while (AVAILABLE_EFUSE_ADDR(efuse_addr)) {
1723 if (rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data) == _FALSE) {
1724 RTW_ERR("%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
1725 /* bank = EFUSE_MAX_BANK; */
1726 break;
1727 }
1728 RTW_INFO("%s: efuse_OneByteRead ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
1729
1730 if (efuse_data == 0xFF)
1731 break;
1732
1733 if (EXT_HEADER(efuse_data)) {
1734 hoffset = GET_HDR_OFFSET_2_0(efuse_data);
1735 efuse_addr++;
1736 rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data);
1737 RTW_INFO("%s: efuse_OneByteRead EXT_HEADER ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
1738
1739 if (ALL_WORDS_DISABLED(efuse_data)) {
1740 efuse_addr++;
1741 continue;
1742 }
1743
1744 /* hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); */
1745 hoffset |= ((efuse_data & 0xF0) >> 1);
1746 hworden = efuse_data & 0x0F;
1747 } else {
1748 hoffset = (efuse_data >> 4) & 0x0F;
1749 hworden = efuse_data & 0x0F;
1750 }
1751
1752 RTW_INFO(FUNC_ADPT_FMT": Offset=%d Worden=%#X\n",
1753 FUNC_ADPT_ARG(padapter), hoffset, hworden);
1754
1755 word_cnts = Efuse_CalculateWordCnts(hworden);
1756 /* read next header */
1757 efuse_addr += (word_cnts * 2) + 1;
1758 }
1759 /* Check if we need to check next bank efuse */
1760 if (efuse_addr < retU2)
1761 break;/* don't need to check next bank. */
1762 }
1763 retU2 = ((bank - 1) * EFUSE_BT_REAL_BANK_CONTENT_LEN) + efuse_addr;
1764
1765 fakeBTEfuseUsedBytes = retU2;
1766 RTW_INFO("%s: CurrentSize=%d\n", __FUNCTION__, retU2);
1767 return retU2;
1768}
1769
1770
1771static u8
1772hal_BT_EfusePgCheckAvailableAddr(
1773 PADAPTER pAdapter,
1774 u8 bPseudoTest)
1775{
1776 u16 max_available = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
1777 u16 current_size = 0;
1778
1779 RTW_INFO("%s: max_available=%d\n", __FUNCTION__, max_available);
1780 current_size = hal_EfuseGetCurrentSize_BT(pAdapter, bPseudoTest);
1781 if (current_size >= max_available) {
1782 RTW_INFO("%s: Error!! current_size(%d)>max_available(%d)\n", __FUNCTION__, current_size, max_available);
1783 return _FALSE;
1784 }
1785 return _TRUE;
1786}
1787
1788u8 EfusePgPacketWrite_BT(
1789 PADAPTER pAdapter,
1790 u8 offset,
1791 u8 word_en,
1792 u8 *pData,
1793 u8 bPseudoTest)
1794{
1795 PGPKT_STRUCT targetPkt;
1796 u16 startAddr = 0;
1797 u8 efuseType = EFUSE_BT;
1798
1799 if (!hal_BT_EfusePgCheckAvailableAddr(pAdapter, bPseudoTest))
1800 return _FALSE;
1801
1802 hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt);
1803
1804 if (!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
1805 return _FALSE;
1806
1807 if (!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
1808 return _FALSE;
1809
1810 if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))
1811 return _FALSE;
1812
1813 return _TRUE;
1814}
1815
1816
1817#else /* !RTW_HALMAC */
1818/* ------------------------------------------------------------------------------ */
1819#define REG_EFUSE_CTRL 0x0030
1820#define EFUSE_CTRL REG_EFUSE_CTRL /* E-Fuse Control. */
1821/* ------------------------------------------------------------------------------ */
1822
1823
1824BOOLEAN
1825Efuse_Read1ByteFromFakeContent(
1826 IN PADAPTER pAdapter,
1827 IN u16 Offset,
1828 IN OUT u8 *Value);
1829BOOLEAN
1830Efuse_Read1ByteFromFakeContent(
1831 IN PADAPTER pAdapter,
1832 IN u16 Offset,
1833 IN OUT u8 *Value)
1834{
1835 if (Offset >= EFUSE_MAX_HW_SIZE)
1836 return _FALSE;
1837 /* DbgPrint("Read fake content, offset = %d\n", Offset); */
1838 if (fakeEfuseBank == 0)
1839 *Value = fakeEfuseContent[Offset];
1840 else
1841 *Value = fakeBTEfuseContent[fakeEfuseBank - 1][Offset];
1842 return _TRUE;
1843}
1844
1845BOOLEAN
1846Efuse_Write1ByteToFakeContent(
1847 IN PADAPTER pAdapter,
1848 IN u16 Offset,
1849 IN u8 Value);
1850BOOLEAN
1851Efuse_Write1ByteToFakeContent(
1852 IN PADAPTER pAdapter,
1853 IN u16 Offset,
1854 IN u8 Value)
1855{
1856 if (Offset >= EFUSE_MAX_HW_SIZE)
1857 return _FALSE;
1858 if (fakeEfuseBank == 0)
1859 fakeEfuseContent[Offset] = Value;
1860 else
1861 fakeBTEfuseContent[fakeEfuseBank - 1][Offset] = Value;
1862 return _TRUE;
1863}
1864
1865/*-----------------------------------------------------------------------------
1866 * Function: Efuse_PowerSwitch
1867 *
1868 * Overview: When we want to enable write operation, we should change to
1869 * pwr on state. When we stop write, we should switch to 500k mode
1870 * and disable LDO 2.5V.
1871 *
1872 * Input: NONE
1873 *
1874 * Output: NONE
1875 *
1876 * Return: NONE
1877 *
1878 * Revised History:
1879 * When Who Remark
1880 * 11/17/2008 MHC Create Version 0.
1881 *
1882 *---------------------------------------------------------------------------*/
1883VOID
1884Efuse_PowerSwitch(
1885 IN PADAPTER pAdapter,
1886 IN u8 bWrite,
1887 IN u8 PwrState)
1888{
1889 pAdapter->hal_func.EfusePowerSwitch(pAdapter, bWrite, PwrState);
1890}
1891
1892VOID
1893BTEfuse_PowerSwitch(
1894 IN PADAPTER pAdapter,
1895 IN u8 bWrite,
1896 IN u8 PwrState)
1897{
1898 if (pAdapter->hal_func.BTEfusePowerSwitch)
1899 pAdapter->hal_func.BTEfusePowerSwitch(pAdapter, bWrite, PwrState);
1900}
1901
1902/*-----------------------------------------------------------------------------
1903 * Function: efuse_GetCurrentSize
1904 *
1905 * Overview: Get current efuse size!!!
1906 *
1907 * Input: NONE
1908 *
1909 * Output: NONE
1910 *
1911 * Return: NONE
1912 *
1913 * Revised History:
1914 * When Who Remark
1915 * 11/16/2008 MHC Create Version 0.
1916 *
1917 *---------------------------------------------------------------------------*/
1918u16
1919Efuse_GetCurrentSize(
1920 IN PADAPTER pAdapter,
1921 IN u8 efuseType,
1922 IN BOOLEAN bPseudoTest)
1923{
1924 u16 ret = 0;
1925
1926 ret = pAdapter->hal_func.EfuseGetCurrentSize(pAdapter, efuseType, bPseudoTest);
1927
1928 return ret;
1929}
1930
1931/*
1932 * Description:
1933 * Execute E-Fuse read byte operation.
1934 * Refered from SD1 Richard.
1935 *
1936 * Assumption:
1937 * 1. Boot from E-Fuse and successfully auto-load.
1938 * 2. PASSIVE_LEVEL (USB interface)
1939 *
1940 * Created by Roger, 2008.10.21.
1941 * */
1942VOID
1943ReadEFuseByte(
1944 PADAPTER Adapter,
1945 u16 _offset,
1946 u8 *pbuf,
1947 IN BOOLEAN bPseudoTest)
1948{
1949 u32 value32;
1950 u8 readbyte;
1951 u16 retry;
1952 /* systime start=rtw_get_current_time(); */
1953
1954 if (bPseudoTest) {
1955 Efuse_Read1ByteFromFakeContent(Adapter, _offset, pbuf);
1956 return;
1957 }
1958 if (IS_HARDWARE_TYPE_8723B(Adapter)) {
1959 /* <20130121, Kordan> For SMIC S55 EFUSE specificatoin. */
1960 /* 0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8]) */
1961 phy_set_mac_reg(Adapter, EFUSE_TEST, BIT11, 0);
1962 }
1963 /* Write Address */
1964 rtw_write8(Adapter, EFUSE_CTRL + 1, (_offset & 0xff));
1965 readbyte = rtw_read8(Adapter, EFUSE_CTRL + 2);
1966 rtw_write8(Adapter, EFUSE_CTRL + 2, ((_offset >> 8) & 0x03) | (readbyte & 0xfc));
1967
1968 /* Write bit 32 0 */
1969 readbyte = rtw_read8(Adapter, EFUSE_CTRL + 3);
1970 rtw_write8(Adapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
1971
1972 /* Check bit 32 read-ready */
1973 retry = 0;
1974 value32 = rtw_read32(Adapter, EFUSE_CTRL);
1975 /* while(!(((value32 >> 24) & 0xff) & 0x80) && (retry<10)) */
1976 while (!(((value32 >> 24) & 0xff) & 0x80) && (retry < 10000)) {
1977 value32 = rtw_read32(Adapter, EFUSE_CTRL);
1978 retry++;
1979 }
1980
1981 /* 20100205 Joseph: Add delay suggested by SD1 Victor. */
1982 /* This fix the problem that Efuse read error in high temperature condition. */
1983 /* Designer says that there shall be some delay after ready bit is set, or the */
1984 /* result will always stay on last data we read. */
1985 rtw_udelay_os(50);
1986 value32 = rtw_read32(Adapter, EFUSE_CTRL);
1987
1988 *pbuf = (u8)(value32 & 0xff);
1989 /* RTW_INFO("ReadEFuseByte _offset:%08u, in %d ms\n",_offset ,rtw_get_passing_time_ms(start)); */
1990
1991}
1992
1993/*
1994 * Description:
1995 * 1. Execute E-Fuse read byte operation according as map offset and
1996 * save to E-Fuse table.
1997 * 2. Refered from SD1 Richard.
1998 *
1999 * Assumption:
2000 * 1. Boot from E-Fuse and successfully auto-load.
2001 * 2. PASSIVE_LEVEL (USB interface)
2002 *
2003 * Created by Roger, 2008.10.21.
2004 *
2005 * 2008/12/12 MH 1. Reorganize code flow and reserve bytes. and add description.
2006 * 2. Add efuse utilization collect.
2007 * 2008/12/22 MH Read Efuse must check if we write section 1 data again!!! Sec1
2008 * write addr must be after sec5.
2009 * */
2010
2011VOID
2012efuse_ReadEFuse(
2013 PADAPTER Adapter,
2014 u8 efuseType,
2015 u16 _offset,
2016 u16 _size_byte,
2017 u8 *pbuf,
2018 IN BOOLEAN bPseudoTest
2019);
2020VOID
2021efuse_ReadEFuse(
2022 PADAPTER Adapter,
2023 u8 efuseType,
2024 u16 _offset,
2025 u16 _size_byte,
2026 u8 *pbuf,
2027 IN BOOLEAN bPseudoTest
2028)
2029{
2030 Adapter->hal_func.ReadEFuse(Adapter, efuseType, _offset, _size_byte, pbuf, bPseudoTest);
2031}
2032
2033VOID
2034EFUSE_GetEfuseDefinition(
2035 IN PADAPTER pAdapter,
2036 IN u8 efuseType,
2037 IN u8 type,
2038 OUT void *pOut,
2039 IN BOOLEAN bPseudoTest
2040)
2041{
2042 pAdapter->hal_func.EFUSEGetEfuseDefinition(pAdapter, efuseType, type, pOut, bPseudoTest);
900}2043}
9012044
902#define EFUSE_CTRL 0x30 /* E-Fuse Control. */
9032045
904/* 11/16/2008 MH Read one byte from real Efuse. */2046/* 11/16/2008 MH Read one byte from real Efuse. */
905u82047u8
@@ -914,6 +2056,22 @@ efuse_OneByteRead(
914 u8 readbyte;2056 u8 readbyte;
915 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);2057 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
9162058
2059 /* RTW_INFO("===> EFUSE_OneByteRead(), addr = %x\n", addr); */
2060 /* RTW_INFO("===> EFUSE_OneByteRead() start, 0x34 = 0x%X\n", rtw_read32(pAdapter, EFUSE_TEST)); */
2061
2062 if (bPseudoTest) {
2063 bResult = Efuse_Read1ByteFromFakeContent(pAdapter, addr, data);
2064 return bResult;
2065 }
2066
2067#ifdef CONFIG_RTL8710B
2068 /* <20171208, Peter>, Dont do the following write16(0x34) */
2069 if (IS_HARDWARE_TYPE_8710B(pAdapter)) {
2070 bResult = pAdapter->hal_func.efuse_indirect_read4(pAdapter, addr, data);
2071 return bResult;
2072 }
2073#endif
2074
917 if (IS_HARDWARE_TYPE_8723B(pAdapter) ||2075 if (IS_HARDWARE_TYPE_8723B(pAdapter) ||
918 (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||2076 (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||
919 (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))2077 (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))
@@ -924,157 +2082,793 @@ efuse_OneByteRead(
924 rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter, 0x34) & (~BIT11));2082 rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter, 0x34) & (~BIT11));
925 }2083 }
9262084
927 /* -----------------e-fuse reg ctrl --------------------------------- */2085 /* -----------------e-fuse reg ctrl --------------------------------- */
928 /* address */2086 /* address */
929 rtw_write8(pAdapter, EFUSE_CTRL + 1, (u8)(addr & 0xff));2087 rtw_write8(pAdapter, EFUSE_CTRL + 1, (u8)(addr & 0xff));
930 rtw_write8(pAdapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |2088 rtw_write8(pAdapter, EFUSE_CTRL + 2, ((u8)((addr >> 8) & 0x03)) |
931 (rtw_read8(pAdapter, EFUSE_CTRL + 2) & 0xFC));2089 (rtw_read8(pAdapter, EFUSE_CTRL + 2) & 0xFC));
2090
2091 /* rtw_write8(pAdapter, EFUSE_CTRL+3, 0x72); */ /* read cmd */
2092 /* Write bit 32 0 */
2093 readbyte = rtw_read8(pAdapter, EFUSE_CTRL + 3);
2094 rtw_write8(pAdapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
2095
2096 while (!(0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 1000)) {
2097 rtw_mdelay_os(1);
2098 tmpidx++;
2099 }
2100 if (tmpidx < 100) {
2101 *data = rtw_read8(pAdapter, EFUSE_CTRL);
2102 bResult = _TRUE;
2103 } else {
2104 *data = 0xff;
2105 bResult = _FALSE;
2106 RTW_INFO("%s: [ERROR] addr=0x%x bResult=%d time out 1s !!!\n", __FUNCTION__, addr, bResult);
2107 RTW_INFO("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
2108 }
2109
2110 return bResult;
2111}
2112
2113/* 11/16/2008 MH Write one byte to reald Efuse. */
2114u8
2115efuse_OneByteWrite(
2116 IN PADAPTER pAdapter,
2117 IN u16 addr,
2118 IN u8 data,
2119 IN BOOLEAN bPseudoTest)
2120{
2121 u8 tmpidx = 0;
2122 u8 bResult = _FALSE;
2123 u32 efuseValue = 0;
2124 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
2125
2126 /* RTW_INFO("===> EFUSE_OneByteWrite(), addr = %x data=%x\n", addr, data); */
2127 /* RTW_INFO("===> EFUSE_OneByteWrite() start, 0x34 = 0x%X\n", rtw_read32(pAdapter, EFUSE_TEST)); */
2128
2129 if (bPseudoTest) {
2130 bResult = Efuse_Write1ByteToFakeContent(pAdapter, addr, data);
2131 return bResult;
2132 }
2133
2134 Efuse_PowerSwitch(pAdapter, _TRUE, _TRUE);
2135
2136 /* -----------------e-fuse reg ctrl --------------------------------- */
2137 /* address */
2138
2139
2140 efuseValue = rtw_read32(pAdapter, EFUSE_CTRL);
2141 efuseValue |= (BIT21 | BIT31);
2142 efuseValue &= ~(0x3FFFF);
2143 efuseValue |= ((addr << 8 | data) & 0x3FFFF);
2144
2145 /* <20130227, Kordan> 8192E MP chip A-cut had better not set 0x34[11] until B-Cut. */
2146 if (IS_HARDWARE_TYPE_8723B(pAdapter) ||
2147 (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||
2148 (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))
2149 ) {
2150 /* <20130121, Kordan> For SMIC EFUSE specificatoin. */
2151 /* 0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8]) */
2152 /* phy_set_mac_reg(pAdapter, 0x34, BIT11, 1); */
2153 rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter, 0x34) | (BIT11));
2154 rtw_write32(pAdapter, EFUSE_CTRL, 0x90600000 | ((addr << 8 | data)));
2155 } else
2156 rtw_write32(pAdapter, EFUSE_CTRL, efuseValue);
2157
2158 rtw_mdelay_os(1);
2159
2160 while ((0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 100)) {
2161 rtw_mdelay_os(1);
2162 tmpidx++;
2163 }
2164
2165 if (tmpidx < 100)
2166 bResult = _TRUE;
2167 else {
2168 bResult = _FALSE;
2169 RTW_INFO("%s: [ERROR] addr=0x%x ,efuseValue=0x%x ,bResult=%d time out 1s !!!\n",
2170 __FUNCTION__, addr, efuseValue, bResult);
2171 RTW_INFO("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
2172 }
2173
2174 /* disable Efuse program enable */
2175 if (IS_HARDWARE_TYPE_8723B(pAdapter) ||
2176 (IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->version_id))) ||
2177 (IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->version_id))
2178 )
2179 phy_set_mac_reg(pAdapter, EFUSE_TEST, BIT(11), 0);
2180
2181 Efuse_PowerSwitch(pAdapter, _TRUE, _FALSE);
2182
2183 return bResult;
2184}
2185
2186int
2187Efuse_PgPacketRead(IN PADAPTER pAdapter,
2188 IN u8 offset,
2189 IN u8 *data,
2190 IN BOOLEAN bPseudoTest)
2191{
2192 int ret = 0;
2193
2194 ret = pAdapter->hal_func.Efuse_PgPacketRead(pAdapter, offset, data, bPseudoTest);
2195
2196 return ret;
2197}
2198
2199int
2200Efuse_PgPacketWrite(IN PADAPTER pAdapter,
2201 IN u8 offset,
2202 IN u8 word_en,
2203 IN u8 *data,
2204 IN BOOLEAN bPseudoTest)
2205{
2206 int ret;
2207
2208 ret = pAdapter->hal_func.Efuse_PgPacketWrite(pAdapter, offset, word_en, data, bPseudoTest);
2209
2210 return ret;
2211}
2212
2213
2214int
2215Efuse_PgPacketWrite_BT(IN PADAPTER pAdapter,
2216 IN u8 offset,
2217 IN u8 word_en,
2218 IN u8 *data,
2219 IN BOOLEAN bPseudoTest)
2220{
2221 int ret;
2222
2223 ret = pAdapter->hal_func.Efuse_PgPacketWrite_BT(pAdapter, offset, word_en, data, bPseudoTest);
2224
2225 return ret;
2226}
2227
2228
2229u8
2230Efuse_WordEnableDataWrite(IN PADAPTER pAdapter,
2231 IN u16 efuse_addr,
2232 IN u8 word_en,
2233 IN u8 *data,
2234 IN BOOLEAN bPseudoTest)
2235{
2236 u8 ret = 0;
2237
2238 ret = pAdapter->hal_func.Efuse_WordEnableDataWrite(pAdapter, efuse_addr, word_en, data, bPseudoTest);
2239
2240 return ret;
2241}
2242
2243static u8 efuse_read8(PADAPTER padapter, u16 address, u8 *value)
2244{
2245 return efuse_OneByteRead(padapter, address, value, _FALSE);
2246}
2247
2248static u8 efuse_write8(PADAPTER padapter, u16 address, u8 *value)
2249{
2250 return efuse_OneByteWrite(padapter, address, *value, _FALSE);
2251}
2252
2253/*
2254 * read/wirte raw efuse data
2255 */
2256u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 *data)
2257{
2258 int i = 0;
2259 u16 real_content_len = 0, max_available_size = 0;
2260 u8 res = _FAIL ;
2261 u8(*rw8)(PADAPTER, u16, u8 *);
2262 u32 backupRegs[4] = {0};
2263
2264
2265 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&real_content_len, _FALSE);
2266 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE);
2267
2268 if (start_addr > real_content_len)
2269 return _FAIL;
2270
2271 if (_TRUE == bWrite) {
2272 if ((start_addr + cnts) > max_available_size)
2273 return _FAIL;
2274 rw8 = &efuse_write8;
2275 } else
2276 rw8 = &efuse_read8;
2277
2278 efuse_PreUpdateAction(padapter, backupRegs);
2279
2280 Efuse_PowerSwitch(padapter, bWrite, _TRUE);
2281
2282 /* e-fuse one byte read / write */
2283 for (i = 0; i < cnts; i++) {
2284 if (start_addr >= real_content_len) {
2285 res = _FAIL;
2286 break;
2287 }
2288
2289 res = rw8(padapter, start_addr++, data++);
2290 if (_FAIL == res)
2291 break;
2292 }
2293
2294 Efuse_PowerSwitch(padapter, bWrite, _FALSE);
2295
2296 efuse_PostUpdateAction(padapter, backupRegs);
2297
2298 return res;
2299}
2300/* ------------------------------------------------------------------------------ */
2301u16 efuse_GetMaxSize(PADAPTER padapter)
2302{
2303 u16 max_size;
2304
2305 max_size = 0;
2306 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI , TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_size, _FALSE);
2307 return max_size;
2308}
2309/* ------------------------------------------------------------------------------ */
2310u8 efuse_GetCurrentSize(PADAPTER padapter, u16 *size)
2311{
2312 Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
2313 *size = Efuse_GetCurrentSize(padapter, EFUSE_WIFI, _FALSE);
2314 Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
2315
2316 return _SUCCESS;
2317}
2318/* ------------------------------------------------------------------------------ */
2319u16 efuse_bt_GetMaxSize(PADAPTER padapter)
2320{
2321 u16 max_size;
2322
2323 max_size = 0;
2324 EFUSE_GetEfuseDefinition(padapter, EFUSE_BT , TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_size, _FALSE);
2325 return max_size;
2326}
2327
2328u8 efuse_bt_GetCurrentSize(PADAPTER padapter, u16 *size)
2329{
2330 Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
2331 *size = Efuse_GetCurrentSize(padapter, EFUSE_BT, _FALSE);
2332 Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
2333
2334 return _SUCCESS;
2335}
2336
2337u8 rtw_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
2338{
2339 u16 mapLen = 0;
2340
2341 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
2342
2343 if ((addr + cnts) > mapLen)
2344 return _FAIL;
2345
2346 Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
2347
2348 efuse_ReadEFuse(padapter, EFUSE_WIFI, addr, cnts, data, _FALSE);
2349
2350 Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
2351
2352 return _SUCCESS;
2353}
2354
2355u8 rtw_BT_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
2356{
2357 u16 mapLen = 0;
2358
2359 EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
2360
2361 if ((addr + cnts) > mapLen)
2362 return _FAIL;
2363
2364 Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
2365
2366 efuse_ReadEFuse(padapter, EFUSE_BT, addr, cnts, data, _FALSE);
2367
2368 Efuse_PowerSwitch(padapter, _FALSE, _FALSE);
2369
2370 return _SUCCESS;
2371}
2372
2373/* ------------------------------------------------------------------------------ */
2374u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
2375{
2376#define RT_ASSERT_RET(expr) \
2377 if (!(expr)) { \
2378 printk("Assertion failed! %s at ......\n", #expr); \
2379 printk(" ......%s,%s, line=%d\n",__FILE__, __FUNCTION__, __LINE__); \
2380 return _FAIL; \
2381 }
2382
2383 u8 *efuse = NULL;
2384 u8 offset, word_en;
2385 u8 *map = NULL;
2386 u8 newdata[PGPKT_DATA_SIZE];
2387 s32 i, j, idx, chk_total_byte;
2388 u8 ret = _SUCCESS;
2389 u16 mapLen = 0, startAddr = 0, efuse_max_available_len = 0;
2390 u32 backupRegs[4] = {0};
2391 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
2392 PEFUSE_HAL pEfuseHal = &pHalData->EfuseHal;
2393
2394
2395 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
2396 EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, _FALSE);
2397
2398 if ((addr + cnts) > mapLen)
2399 return _FAIL;
2400
2401 RT_ASSERT_RET(PGPKT_DATA_SIZE == 8); /* have to be 8 byte alignment */
2402 RT_ASSERT_RET((mapLen & 0x7) == 0); /* have to be PGPKT_DATA_SIZE alignment for memcpy */
2403
2404 efuse = rtw_zmalloc(mapLen);
2405 if (!efuse)
2406 return _FAIL;
2407
2408 map = rtw_zmalloc(mapLen);
2409 if (map == NULL) {
2410 rtw_mfree(efuse, mapLen);
2411 return _FAIL;
2412 }
2413
2414 _rtw_memset(map, 0xFF, mapLen);
2415
2416 ret = rtw_efuse_map_read(padapter, 0, mapLen, map);
2417
2418 if (ret == _FAIL)
2419 goto exit;
2420
2421 _rtw_memcpy(efuse , map, mapLen);
2422 _rtw_memcpy(efuse + addr, data, cnts);
2423
2424 if (padapter->registrypriv.boffefusemask == 0) {
2425 for (i = 0; i < cnts; i++) {
2426 if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {
2427 if (rtw_file_efuse_IsMasked(padapter, addr + i)) /*use file efuse mask. */
2428 efuse[addr + i] = map[addr + i];
2429 } else {
2430 if (efuse_IsMasked(padapter, addr + i))
2431 efuse[addr + i] = map[addr + i];
2432 }
2433 RTW_INFO("%s ,Write data[%d] = %x, map[%d]= %x\n", __func__, addr + i, efuse[ addr + i], addr + i, map[addr + i]);
2434 }
2435 }
2436 /*Efuse_PowerSwitch(padapter, _TRUE, _TRUE);*/
2437
2438 chk_total_byte = 0;
2439 idx = 0;
2440 offset = (addr >> 3);
2441
2442 while (idx < cnts) {
2443 word_en = 0xF;
2444 j = (addr + idx) & 0x7;
2445 for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
2446 if (efuse[addr + idx] != map[addr + idx])
2447 word_en &= ~BIT(i >> 1);
2448 }
2449
2450 if (word_en != 0xF) {
2451 chk_total_byte += Efuse_CalculateWordCnts(word_en) * 2;
2452
2453 if (offset >= EFUSE_MAX_SECTION_BASE) /* Over EFUSE_MAX_SECTION 16 for 2 ByteHeader */
2454 chk_total_byte += 2;
2455 else
2456 chk_total_byte += 1;
2457 }
2458
2459 offset++;
2460 }
2461
2462 RTW_INFO("Total PG bytes Count = %d\n", chk_total_byte);
2463 rtw_hal_get_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8 *)&startAddr);
2464
2465 if (startAddr == 0) {
2466 startAddr = Efuse_GetCurrentSize(padapter, EFUSE_WIFI, _FALSE);
2467 RTW_INFO("%s: Efuse_GetCurrentSize startAddr=%#X\n", __func__, startAddr);
2468 }
2469 RTW_DBG("%s: startAddr=%#X\n", __func__, startAddr);
2470
2471 if ((startAddr + chk_total_byte) >= efuse_max_available_len) {
2472 RTW_INFO("%s: startAddr(0x%X) + PG data len %d >= efuse_max_available_len(0x%X)\n",
2473 __func__, startAddr, chk_total_byte, efuse_max_available_len);
2474 ret = _FAIL;
2475 goto exit;
2476 }
2477
2478 efuse_PreUpdateAction(padapter, backupRegs);
2479
2480 idx = 0;
2481 offset = (addr >> 3);
2482 while (idx < cnts) {
2483 word_en = 0xF;
2484 j = (addr + idx) & 0x7;
2485 _rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
2486 for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
2487 if (efuse[addr + idx] != map[addr + idx]) {
2488 word_en &= ~BIT(i >> 1);
2489 newdata[i] = efuse[addr + idx];
2490#ifdef CONFIG_RTL8723B
2491 if (addr + idx == 0x8) {
2492 if (IS_C_CUT(pHalData->version_id) || IS_B_CUT(pHalData->version_id)) {
2493 if (pHalData->adjuseVoltageVal == 6) {
2494 newdata[i] = map[addr + idx];
2495 RTW_INFO(" %s ,\n adjuseVoltageVal = %d ,newdata[%d] = %x\n", __func__, pHalData->adjuseVoltageVal, i, newdata[i]);
2496 }
2497 }
2498 }
2499#endif
2500 }
2501 }
2502
2503 if (word_en != 0xF) {
2504 ret = Efuse_PgPacketWrite(padapter, offset, word_en, newdata, _FALSE);
2505 RTW_INFO("offset=%x\n", offset);
2506 RTW_INFO("word_en=%x\n", word_en);
2507
2508 for (i = 0; i < PGPKT_DATA_SIZE; i++)
2509 RTW_INFO("data=%x \t", newdata[i]);
2510 if (ret == _FAIL)
2511 break;
2512 }
2513
2514 offset++;
2515 }
2516
2517 /*Efuse_PowerSwitch(padapter, _TRUE, _FALSE);*/
2518
2519 efuse_PostUpdateAction(padapter, backupRegs);
2520
2521exit:
2522
2523 rtw_mfree(map, mapLen);
2524 rtw_mfree(efuse, mapLen);
2525
2526 return ret;
2527}
2528
2529
2530u8 rtw_BT_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
2531{
2532#define RT_ASSERT_RET(expr) \
2533 if (!(expr)) { \
2534 printk("Assertion failed! %s at ......\n", #expr); \
2535 printk(" ......%s,%s, line=%d\n",__FILE__, __FUNCTION__, __LINE__); \
2536 return _FAIL; \
2537 }
2538
2539 u8 offset, word_en;
2540 u8 *map;
2541 u8 newdata[PGPKT_DATA_SIZE];
2542 s32 i = 0, j = 0, idx;
2543 u8 ret = _SUCCESS;
2544 u16 mapLen = 0;
2545
2546 EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
2547
2548 if ((addr + cnts) > mapLen)
2549 return _FAIL;
2550
2551 RT_ASSERT_RET(PGPKT_DATA_SIZE == 8); /* have to be 8 byte alignment */
2552 RT_ASSERT_RET((mapLen & 0x7) == 0); /* have to be PGPKT_DATA_SIZE alignment for memcpy */
2553
2554 map = rtw_zmalloc(mapLen);
2555 if (map == NULL)
2556 return _FAIL;
2557
2558 ret = rtw_BT_efuse_map_read(padapter, 0, mapLen, map);
2559 if (ret == _FAIL)
2560 goto exit;
2561 RTW_INFO("OFFSET\tVALUE(hex)\n");
2562 for (i = 0; i < 1024; i += 16) { /* set 512 because the iwpriv's extra size have limit 0x7FF */
2563 RTW_INFO("0x%03x\t", i);
2564 for (j = 0; j < 8; j++)
2565 RTW_INFO("%02X ", map[i + j]);
2566 RTW_INFO("\t");
2567 for (; j < 16; j++)
2568 RTW_INFO("%02X ", map[i + j]);
2569 RTW_INFO("\n");
2570 }
2571 RTW_INFO("\n");
2572 Efuse_PowerSwitch(padapter, _TRUE, _TRUE);
2573
2574 idx = 0;
2575 offset = (addr >> 3);
2576 while (idx < cnts) {
2577 word_en = 0xF;
2578 j = (addr + idx) & 0x7;
2579 _rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
2580 for (i = j; i < PGPKT_DATA_SIZE && idx < cnts; i++, idx++) {
2581 if (data[idx] != map[addr + idx]) {
2582 word_en &= ~BIT(i >> 1);
2583 newdata[i] = data[idx];
2584 }
2585 }
2586
2587 if (word_en != 0xF) {
2588 RTW_INFO("offset=%x\n", offset);
2589 RTW_INFO("word_en=%x\n", word_en);
2590 RTW_INFO("%s: data=", __FUNCTION__);
2591 for (i = 0; i < PGPKT_DATA_SIZE; i++)
2592 RTW_INFO("0x%02X ", newdata[i]);
2593 RTW_INFO("\n");
2594 ret = Efuse_PgPacketWrite_BT(padapter, offset, word_en, newdata, _FALSE);
2595 if (ret == _FAIL)
2596 break;
2597 }
2598
2599 offset++;
2600 }
2601
2602 Efuse_PowerSwitch(padapter, _TRUE, _FALSE);
9322603
933 /* rtw_write8(pAdapter, EFUSE_CTRL+3, 0x72); */ /* read cmd */2604exit:
934 /* Write bit 32 0 */
935 readbyte = rtw_read8(pAdapter, EFUSE_CTRL + 3);
936 rtw_write8(pAdapter, EFUSE_CTRL + 3, (readbyte & 0x7f));
9372605
938 while (!(0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 1000)) {2606 rtw_mfree(map, mapLen);
939 rtw_mdelay_os(1);
940 tmpidx++;
941 }
942 if (tmpidx < 100) {
943 *data = rtw_read8(pAdapter, EFUSE_CTRL);
944 bResult = _TRUE;
945 } else {
946 *data = 0xff;
947 bResult = _FALSE;
948 RTW_INFO("%s: [ERROR] addr=0x%x bResult=%d time out 1s !!!\n", __FUNCTION__, addr, bResult);
949 RTW_INFO("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
950 }
9512607
952 return bResult;2608 return ret;
953}2609}
9542610
955static u162611/*-----------------------------------------------------------------------------
956hal_EfuseGetCurrentSize_BT(2612 * Function: Efuse_ReadAllMap
957 PADAPTER padapter,2613 *
958 u8 bPseudoTest)2614 * Overview: Read All Efuse content
2615 *
2616 * Input: NONE
2617 *
2618 * Output: NONE
2619 *
2620 * Return: NONE
2621 *
2622 * Revised History:
2623 * When Who Remark
2624 * 11/11/2008 MHC Create Version 0.
2625 *
2626 *---------------------------------------------------------------------------*/
2627VOID
2628Efuse_ReadAllMap(
2629 IN PADAPTER pAdapter,
2630 IN u8 efuseType,
2631 IN OUT u8 *Efuse,
2632 IN BOOLEAN bPseudoTest);
2633VOID
2634Efuse_ReadAllMap(
2635 IN PADAPTER pAdapter,
2636 IN u8 efuseType,
2637 IN OUT u8 *Efuse,
2638 IN BOOLEAN bPseudoTest)
959{2639{
960 u16 btusedbytes;2640 u16 mapLen = 0;
961 u16 efuse_addr;
962 u8 bank, startBank;
963 u8 hoffset = 0, hworden = 0;
964 u8 efuse_data, word_cnts = 0;
965 u16 retU2 = 0;
9662641
967 btusedbytes = fakeBTEfuseUsedBytes;2642 Efuse_PowerSwitch(pAdapter, _FALSE, _TRUE);
9682643
969 efuse_addr = (u16)((btusedbytes % EFUSE_BT_REAL_BANK_CONTENT_LEN));2644 EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);
970 startBank = (u8)(1 + (btusedbytes / EFUSE_BT_REAL_BANK_CONTENT_LEN));
9712645
972 RTW_INFO("%s: start from bank=%d addr=0x%X\n", __FUNCTION__, startBank, efuse_addr);2646 efuse_ReadEFuse(pAdapter, efuseType, 0, mapLen, Efuse, bPseudoTest);
973 retU2 = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;
9742647
975 for (bank = startBank; bank < 3; bank++) {2648 Efuse_PowerSwitch(pAdapter, _FALSE, _FALSE);
976 if (hal_EfuseSwitchToBank(padapter, bank, bPseudoTest) == _FALSE) {2649}
977 RTW_ERR("%s: switch bank(%d) Fail!!\n", __FUNCTION__, bank);
978 /* bank = EFUSE_MAX_BANK; */
979 break;
980 }
9812650
982 /* only when bank is switched we have to reset the efuse_addr. */2651/*-----------------------------------------------------------------------------
983 if (bank != startBank)2652 * Function: efuse_ShadowWrite1Byte
984 efuse_addr = 0;2653 * efuse_ShadowWrite2Byte
2654 * efuse_ShadowWrite4Byte
2655 *
2656 * Overview: Write efuse modify map by one/two/four byte.
2657 *
2658 * Input: NONE
2659 *
2660 * Output: NONE
2661 *
2662 * Return: NONE
2663 *
2664 * Revised History:
2665 * When Who Remark
2666 * 11/12/2008 MHC Create Version 0.
2667 *
2668 *---------------------------------------------------------------------------*/
2669#ifdef PLATFORM
2670static VOID
2671efuse_ShadowWrite1Byte(
2672 IN PADAPTER pAdapter,
2673 IN u16 Offset,
2674 IN u8 Value);
2675#endif /* PLATFORM */
2676static VOID
2677efuse_ShadowWrite1Byte(
2678 IN PADAPTER pAdapter,
2679 IN u16 Offset,
2680 IN u8 Value)
2681{
2682 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
9852683
986 while (AVAILABLE_EFUSE_ADDR(efuse_addr)) {2684 pHalData->efuse_eeprom_data[Offset] = Value;
987 if (rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data) == _FALSE) {
988 RTW_ERR("%s: efuse_OneByteRead Fail! addr=0x%X !!\n", __FUNCTION__, efuse_addr);
989 /* bank = EFUSE_MAX_BANK; */
990 break;
991 }
992 RTW_INFO("%s: efuse_OneByteRead ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);
9932685
994 if (efuse_data == 0xFF)2686} /* efuse_ShadowWrite1Byte */
995 break;
9962687
997 if (EXT_HEADER(efuse_data)) {2688/* ---------------Write Two Bytes */
998 hoffset = GET_HDR_OFFSET_2_0(efuse_data);2689static VOID
999 efuse_addr++;2690efuse_ShadowWrite2Byte(
1000 rtw_efuse_bt_access(padapter, _FALSE, efuse_addr, 1, &efuse_data);2691 IN PADAPTER pAdapter,
1001 RTW_INFO("%s: efuse_OneByteRead EXT_HEADER ! addr=0x%X !efuse_data=0x%X! bank =%d\n", __FUNCTION__, efuse_addr, efuse_data, bank);2692 IN u16 Offset,
2693 IN u16 Value)
2694{
10022695
1003 if (ALL_WORDS_DISABLED(efuse_data)) {2696 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
1004 efuse_addr++;
1005 continue;
1006 }
10072697
1008 /* hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); */
1009 hoffset |= ((efuse_data & 0xF0) >> 1);
1010 hworden = efuse_data & 0x0F;
1011 } else {
1012 hoffset = (efuse_data >> 4) & 0x0F;
1013 hworden = efuse_data & 0x0F;
1014 }
10152698
1016 RTW_INFO(FUNC_ADPT_FMT": Offset=%d Worden=%#X\n",2699 pHalData->efuse_eeprom_data[Offset] = Value & 0x00FF;
1017 FUNC_ADPT_ARG(padapter), hoffset, hworden);2700 pHalData->efuse_eeprom_data[Offset + 1] = Value >> 8;
10182701
1019 word_cnts = Efuse_CalculateWordCnts(hworden);2702} /* efuse_ShadowWrite1Byte */
1020 /* read next header */
1021 efuse_addr += (word_cnts * 2) + 1;
1022 }
1023 /* Check if we need to check next bank efuse */
1024 if (efuse_addr < retU2)
1025 break;/* don't need to check next bank. */
1026 }
1027 retU2 = ((bank - 1) * EFUSE_BT_REAL_BANK_CONTENT_LEN) + efuse_addr;
10282703
1029 fakeBTEfuseUsedBytes = retU2;2704/* ---------------Write Four Bytes */
1030 RTW_INFO("%s: CurrentSize=%d\n", __FUNCTION__, retU2);2705static VOID
1031 return retU2;2706efuse_ShadowWrite4Byte(
1032}2707 IN PADAPTER pAdapter,
2708 IN u16 Offset,
2709 IN u32 Value)
2710{
2711 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
10332712
1034static u82713 pHalData->efuse_eeprom_data[Offset] = (u8)(Value & 0x000000FF);
1035hal_BT_EfusePgCheckAvailableAddr(2714 pHalData->efuse_eeprom_data[Offset + 1] = (u8)((Value >> 8) & 0x0000FF);
1036 PADAPTER pAdapter,2715 pHalData->efuse_eeprom_data[Offset + 2] = (u8)((Value >> 16) & 0x00FF);
1037 u8 bPseudoTest)2716 pHalData->efuse_eeprom_data[Offset + 3] = (u8)((Value >> 24) & 0xFF);
2717
2718} /* efuse_ShadowWrite1Byte */
2719
2720
2721/*-----------------------------------------------------------------------------
2722 * Function: EFUSE_ShadowWrite
2723 *
2724 * Overview: Write efuse modify map for later update operation to use!!!!!
2725 *
2726 * Input: NONE
2727 *
2728 * Output: NONE
2729 *
2730 * Return: NONE
2731 *
2732 * Revised History:
2733 * When Who Remark
2734 * 11/12/2008 MHC Create Version 0.
2735 *
2736 *---------------------------------------------------------------------------*/
2737VOID
2738EFUSE_ShadowWrite(
2739 IN PADAPTER pAdapter,
2740 IN u8 Type,
2741 IN u16 Offset,
2742 IN OUT u32 Value);
2743VOID
2744EFUSE_ShadowWrite(
2745 IN PADAPTER pAdapter,
2746 IN u8 Type,
2747 IN u16 Offset,
2748 IN OUT u32 Value)
1038{2749{
1039 u16 max_available = EFUSE_BT_REAL_CONTENT_LEN - EFUSE_PROTECT_BYTES_BANK;2750#if (MP_DRIVER == 0)
1040 u16 current_size = 0;2751 return;
2752#endif
2753 if (pAdapter->registrypriv.mp_mode == 0)
2754 return;
10412755
1042 RTW_INFO("%s: max_available=%d\n", __FUNCTION__, max_available);2756
1043 current_size = hal_EfuseGetCurrentSize_BT(pAdapter, bPseudoTest);2757 if (Type == 1)
1044 if (current_size >= max_available) {2758 efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value);
1045 RTW_INFO("%s: Error!! current_size(%d)>max_available(%d)\n", __FUNCTION__, current_size, max_available);2759 else if (Type == 2)
1046 return _FALSE;2760 efuse_ShadowWrite2Byte(pAdapter, Offset, (u16)Value);
1047 }2761 else if (Type == 4)
1048 return _TRUE;2762 efuse_ShadowWrite4Byte(pAdapter, Offset, (u32)Value);
2763
2764} /* EFUSE_ShadowWrite */
2765
2766VOID
2767Efuse_InitSomeVar(
2768 IN PADAPTER pAdapter
2769);
2770VOID
2771Efuse_InitSomeVar(
2772 IN PADAPTER pAdapter
2773)
2774{
2775 u8 i;
2776
2777 _rtw_memset((PVOID)&fakeEfuseContent[0], 0xff, EFUSE_MAX_HW_SIZE);
2778 _rtw_memset((PVOID)&fakeEfuseInitMap[0], 0xff, EFUSE_MAX_MAP_LEN);
2779 _rtw_memset((PVOID)&fakeEfuseModifiedMap[0], 0xff, EFUSE_MAX_MAP_LEN);
2780
2781 for (i = 0; i < EFUSE_MAX_BT_BANK; i++)
2782 _rtw_memset((PVOID)&BTEfuseContent[i][0], EFUSE_MAX_HW_SIZE, 0xff);
2783 _rtw_memset((PVOID)&BTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
2784 _rtw_memset((PVOID)&BTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
2785
2786 for (i = 0; i < EFUSE_MAX_BT_BANK; i++)
2787 _rtw_memset((PVOID)&fakeBTEfuseContent[i][0], 0xff, EFUSE_MAX_HW_SIZE);
2788 _rtw_memset((PVOID)&fakeBTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
2789 _rtw_memset((PVOID)&fakeBTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
1049}2790}
2791#endif /* !RTW_HALMAC */
2792/*-----------------------------------------------------------------------------
2793 * Function: efuse_ShadowRead1Byte
2794 * efuse_ShadowRead2Byte
2795 * efuse_ShadowRead4Byte
2796 *
2797 * Overview: Read from efuse init map by one/two/four bytes !!!!!
2798 *
2799 * Input: NONE
2800 *
2801 * Output: NONE
2802 *
2803 * Return: NONE
2804 *
2805 * Revised History:
2806 * When Who Remark
2807 * 11/12/2008 MHC Create Version 0.
2808 *
2809 *---------------------------------------------------------------------------*/
2810static VOID
2811efuse_ShadowRead1Byte(
2812 IN PADAPTER pAdapter,
2813 IN u16 Offset,
2814 IN OUT u8 *Value)
2815{
2816 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
10502817
1051u8 EfusePgPacketWrite_BT(2818 *Value = pHalData->efuse_eeprom_data[Offset];
1052 PADAPTER pAdapter,2819
1053 u8 offset,2820} /* EFUSE_ShadowRead1Byte */
1054 u8 word_en,2821
1055 u8 *pData,2822/* ---------------Read Two Bytes */
1056 u8 bPseudoTest)2823static VOID
2824efuse_ShadowRead2Byte(
2825 IN PADAPTER pAdapter,
2826 IN u16 Offset,
2827 IN OUT u16 *Value)
1057{2828{
1058 PGPKT_STRUCT targetPkt;2829 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
1059 u16 startAddr = 0;
1060 u8 efuseType = EFUSE_BT;
10612830
1062 if (!hal_BT_EfusePgCheckAvailableAddr(pAdapter, bPseudoTest))2831 *Value = pHalData->efuse_eeprom_data[Offset];
1063 return _FALSE;2832 *Value |= pHalData->efuse_eeprom_data[Offset + 1] << 8;
10642833
1065 hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt);2834} /* EFUSE_ShadowRead2Byte */
10662835
1067 if (!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))2836/* ---------------Read Four Bytes */
1068 return _FALSE;2837static VOID
2838efuse_ShadowRead4Byte(
2839 IN PADAPTER pAdapter,
2840 IN u16 Offset,
2841 IN OUT u32 *Value)
2842{
2843 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
10692844
1070 if (!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))2845 *Value = pHalData->efuse_eeprom_data[Offset];
1071 return _FALSE;2846 *Value |= pHalData->efuse_eeprom_data[Offset + 1] << 8;
2847 *Value |= pHalData->efuse_eeprom_data[Offset + 2] << 16;
2848 *Value |= pHalData->efuse_eeprom_data[Offset + 3] << 24;
10722849
1073 if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest))2850} /* efuse_ShadowRead4Byte */
1074 return _FALSE;
10752851
1076 return _TRUE;2852/*-----------------------------------------------------------------------------
1077}2853 * Function: EFUSE_ShadowRead
2854 *
2855 * Overview: Read from pHalData->efuse_eeprom_data
2856 *---------------------------------------------------------------------------*/
2857void
2858EFUSE_ShadowRead(
2859 IN PADAPTER pAdapter,
2860 IN u8 Type,
2861 IN u16 Offset,
2862 IN OUT u32 *Value)
2863{
2864 if (Type == 1)
2865 efuse_ShadowRead1Byte(pAdapter, Offset, (u8 *)Value);
2866 else if (Type == 2)
2867 efuse_ShadowRead2Byte(pAdapter, Offset, (u16 *)Value);
2868 else if (Type == 4)
2869 efuse_ShadowRead4Byte(pAdapter, Offset, (u32 *)Value);
2870
2871} /* EFUSE_ShadowRead */
10782872
1079/* 11/16/2008 MH Add description. Get current efuse area enabled word!!. */2873/* 11/16/2008 MH Add description. Get current efuse area enabled word!!. */
1080u82874u8
@@ -1155,9 +2949,11 @@ void EFUSE_ShadowMapUpdate(
1155{2949{
1156 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);2950 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
1157 u16 mapLen = 0;2951 u16 mapLen = 0;
2952#ifdef RTW_HALMAC
1158 u8 *efuse_map = NULL;2953 u8 *efuse_map = NULL;
1159 int err;2954 int err;
11602955
2956
1161 mapLen = EEPROM_MAX_SIZE;2957 mapLen = EEPROM_MAX_SIZE;
1162 efuse_map = pHalData->efuse_eeprom_data;2958 efuse_map = pHalData->efuse_eeprom_data;
1163 /* efuse default content is 0xFF */2959 /* efuse default content is 0xFF */
@@ -1175,10 +2971,33 @@ void EFUSE_ShadowMapUpdate(
1175 }2971 }
11762972
1177 if (pHalData->bautoload_fail_flag == _FALSE) {2973 if (pHalData->bautoload_fail_flag == _FALSE) {
1178 err = rtw_halmac_read_logical_efuse_map(adapter_to_dvobj(pAdapter), efuse_map, mapLen);2974 err = rtw_halmac_read_logical_efuse_map(adapter_to_dvobj(pAdapter), efuse_map, mapLen, NULL, 0);
1179 if (err)2975 if (err)
1180 RTW_ERR("%s: <ERROR> fail to get efuse map!\n", __FUNCTION__);2976 RTW_ERR("%s: <ERROR> fail to get efuse map!\n", __FUNCTION__);
1181 }2977 }
2978#else /* !RTW_HALMAC */
2979 EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);
2980
2981 if (pHalData->bautoload_fail_flag == _TRUE)
2982 _rtw_memset(pHalData->efuse_eeprom_data, 0xFF, mapLen);
2983 else {
2984#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
2985 if (_SUCCESS != retriveAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pHalData->efuse_eeprom_data)) {
2986#endif
2987
2988 Efuse_ReadAllMap(pAdapter, efuseType, pHalData->efuse_eeprom_data, bPseudoTest);
2989
2990#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
2991 storeAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pHalData->efuse_eeprom_data);
2992 }
2993#endif
2994 }
2995
2996 /* PlatformMoveMemory((PVOID)&pHalData->EfuseMap[EFUSE_MODIFY_MAP][0], */
2997 /* (PVOID)&pHalData->EfuseMap[EFUSE_INIT_MAP][0], mapLen); */
2998#endif /* !RTW_HALMAC */
2999
3000 rtw_mask_map_read(pAdapter, 0x00, mapLen, pHalData->efuse_eeprom_data);
11823001
1183 rtw_dump_cur_efuse(pAdapter);3002 rtw_dump_cur_efuse(pAdapter);
1184} /* EFUSE_ShadowMapUpdate */3003} /* EFUSE_ShadowMapUpdate */
@@ -1217,6 +3036,61 @@ u8 mac_hidden_wl_func_to_hal_wl_func(u8 func)
1217 return wl_func;3036 return wl_func;
1218}3037}
12193038
3039#ifdef PLATFORM_LINUX
3040#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
3041/* #include <rtw_eeprom.h> */
3042
3043int isAdaptorInfoFileValid(void)
3044{
3045 return _TRUE;
3046}
3047
3048int storeAdaptorInfoFile(char *path, u8 *efuse_data)
3049{
3050 int ret = _SUCCESS;
3051
3052 if (path && efuse_data) {
3053 ret = rtw_store_to_file(path, efuse_data, EEPROM_MAX_SIZE_512);
3054 if (ret == EEPROM_MAX_SIZE)
3055 ret = _SUCCESS;
3056 else
3057 ret = _FAIL;
3058 } else {
3059 RTW_INFO("%s NULL pointer\n", __FUNCTION__);
3060 ret = _FAIL;
3061 }
3062 return ret;
3063}
3064
3065int retriveAdaptorInfoFile(char *path, u8 *efuse_data)
3066{
3067 int ret = _SUCCESS;
3068 mm_segment_t oldfs;
3069 struct file *fp;
3070
3071 if (path && efuse_data) {
3072
3073 ret = rtw_retrieve_from_file(path, efuse_data, EEPROM_MAX_SIZE);
3074
3075 if (ret == EEPROM_MAX_SIZE)
3076 ret = _SUCCESS;
3077 else
3078 ret = _FAIL;
3079
3080#if 0
3081 if (isAdaptorInfoFileValid())
3082 return 0;
3083 else
3084 return _FAIL;
3085#endif
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches