Lines Matching refs:padapter

20 static u8 CardEnable(struct adapter *padapter)
26 rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
30 rtw_write8(padapter, REG_RSV_CTRL, 0x0);
32 ret = HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, rtl8723B_card_enable_flow);
35 rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
44 u8 _InitPowerOn_8723BS(struct adapter *padapter)
56 ret = CardEnable(padapter);
61 value8 = rtw_read8(padapter, REG_GPIO_INTM + 1);
63 rtw_write8(padapter, REG_GPIO_INTM + 1, value8);
64 value8 = rtw_read8(padapter, REG_GPIO_IO_SEL_2 + 1);
66 rtw_write8(padapter, REG_GPIO_IO_SEL_2 + 1, value8);
69 value16 = rtw_read16(padapter, REG_APS_FSMCO);
71 rtw_write16(padapter, REG_APS_FSMCO, value16);
75 /* rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn); */
77 rtw_write8(padapter, REG_CR, 0x00);
79 value16 = rtw_read16(padapter, REG_CR);
90 rtw_write16(padapter, REG_CR, value16);
92 hal_btcoex_PowerOnSetting(padapter);
98 value16 = rtw_read16(padapter, REG_PWR_DATA);
101 rtw_write16(padapter, REG_PWR_DATA, value16);
103 value32 = rtw_read32(padapter, REG_LEDCFG0);
105 rtw_write32(padapter, REG_LEDCFG0, value32);
107 value8 = rtw_read8(padapter, REG_PAD_CTRL1_8723B);
109 rtw_write8(padapter, REG_PAD_CTRL1_8723B, value8);
115 static void _init_available_page_threshold(struct adapter *padapter, u8 numHQ, u8 numNQ, u8 numLQ, u8 numPubQ)
128 rtw_write16(padapter, 0x218, HQ_threshold);
129 rtw_write16(padapter, 0x21A, NQ_threshold);
130 rtw_write16(padapter, 0x21C, LQ_threshold);
133 static void _InitQueueReservedPage(struct adapter *padapter)
135 struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
136 struct registry_priv *pregistrypriv = &padapter->registrypriv;
158 rtw_write8(padapter, REG_RQPN_NPQ, value8);
162 rtw_write32(padapter, REG_RQPN, value32);
164 rtw_hal_set_sdio_tx_max_length(padapter, numHQ, numNQ, numLQ, numPubQ);
166 _init_available_page_threshold(padapter, numHQ, numNQ, numLQ, numPubQ);
169 static void _InitTxBufferBoundary(struct adapter *padapter)
171 struct registry_priv *pregistrypriv = &padapter->registrypriv;
183 rtw_write8(padapter, REG_TXPKTBUF_BCNQ_BDNY_8723B, txpktbuf_bndy);
184 rtw_write8(padapter, REG_TXPKTBUF_MGQ_BDNY_8723B, txpktbuf_bndy);
185 rtw_write8(padapter, REG_TXPKTBUF_WMAC_LBK_BF_HD_8723B, txpktbuf_bndy);
186 rtw_write8(padapter, REG_TRXFF_BNDY, txpktbuf_bndy);
187 rtw_write8(padapter, REG_TDECTRL + 1, txpktbuf_bndy);
286 static void _InitNormalChipThreeOutEpPriority(struct adapter *padapter)
288 struct registry_priv *pregistrypriv = &padapter->registrypriv;
308 _InitNormalChipRegPriority(padapter, beQ, bkQ, viQ, voQ, mgtQ, hiQ);
332 static void _InitPageBoundary(struct adapter *padapter)
337 rtw_write16(padapter, (REG_TRXFF_BNDY + 2), rxff_bndy);
340 static void _InitTransferPageSize(struct adapter *padapter)
346 rtw_write8(padapter, REG_PBP, value8);
349 static void _InitDriverInfoSize(struct adapter *padapter, u8 drvInfoSize)
351 rtw_write8(padapter, REG_RX_DRVINFO_SZ, drvInfoSize);
354 static void _InitNetworkType(struct adapter *padapter)
358 value32 = rtw_read32(padapter, REG_CR);
364 rtw_write32(padapter, REG_CR, value32);
367 static void _InitWMACSetting(struct adapter *padapter)
373 pHalData = GET_HAL_DATA(padapter);
380 rtw_write32(padapter, REG_RCR, pHalData->ReceiveConfig);
383 rtw_write32(padapter, REG_MAR, 0xFFFFFFFF);
384 rtw_write32(padapter, REG_MAR + 4, 0xFFFFFFFF);
388 rtw_write16(padapter, REG_RXFLTMAP2, value16);
394 rtw_write16(padapter, REG_RXFLTMAP1, value16);
398 rtw_write16(padapter, REG_RXFLTMAP0, value16);
401 static void _InitAdaptiveCtrl(struct adapter *padapter)
407 value32 = rtw_read32(padapter, REG_RRSR);
410 rtw_write32(padapter, REG_RRSR, value32);
417 rtw_write16(padapter, REG_SPEC_SIFS, value16);
421 rtw_write16(padapter, REG_RL, value16);
424 static void _InitEDCA(struct adapter *padapter)
427 rtw_write16(padapter, REG_SPEC_SIFS, 0x100a);
428 rtw_write16(padapter, REG_MAC_SPEC_SIFS, 0x100a);
431 rtw_write16(padapter, REG_SIFS_CTX, 0x100a);
434 rtw_write16(padapter, REG_SIFS_TRX, 0x100a);
437 rtw_write32(padapter, REG_EDCA_BE_PARAM, 0x005EA42B);
438 rtw_write32(padapter, REG_EDCA_BK_PARAM, 0x0000A44F);
439 rtw_write32(padapter, REG_EDCA_VI_PARAM, 0x005EA324);
440 rtw_write32(padapter, REG_EDCA_VO_PARAM, 0x002FA226);
443 static void _InitRetryFunction(struct adapter *padapter)
447 value8 = rtw_read8(padapter, REG_FWHW_TXQ_CTRL);
449 rtw_write8(padapter, REG_FWHW_TXQ_CTRL, value8);
452 rtw_write8(padapter, REG_ACKTO, 0x40);
455 static void HalRxAggr8723BSdio(struct adapter *padapter)
463 rtw_write8(padapter, REG_RXDMA_AGG_PG_TH + 1, valueDMATimeout);
464 rtw_write8(padapter, REG_RXDMA_AGG_PG_TH, valueDMAPageCount);
467 static void sdio_AggSettingRxUpdate(struct adapter *padapter)
474 valueDMA = rtw_read8(padapter, REG_TRXDMA_CTRL);
476 rtw_write8(padapter, REG_TRXDMA_CTRL, valueDMA);
481 rtw_write8(padapter, REG_RXDMA_MODE_CTRL_8723B, valueRxAggCtrl);/* RxAggLowThresh = 4*1K */
484 static void _initSdioAggregationSetting(struct adapter *padapter)
486 struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
489 /* sdio_AggSettingTxUpdate(padapter); */
492 HalRxAggr8723BSdio(padapter);
494 sdio_AggSettingRxUpdate(padapter);
500 static void _InitOperationMode(struct adapter *padapter)
505 pmlmeext = &padapter->mlmeextpriv;
531 rtw_write8(padapter, REG_BWOPMODE, regBwOpMode);
535 static void _InitInterrupt(struct adapter *padapter)
538 rtw_write32(padapter, REG_HISR, 0);
541 rtw_write32(padapter, REG_HIMR, 0);
546 InitInterrupt8723BSdio(padapter);
551 InitSysInterrupt8723BSdio(padapter);
554 static void _InitRFType(struct adapter *padapter)
556 struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
561 static void _RfPowerSave(struct adapter *padapter)
587 static u32 rtl8723bs_hal_init(struct adapter *padapter)
595 pHalData = GET_HAL_DATA(padapter);
596 pwrctrlpriv = adapter_to_pwrctl(padapter);
599 adapter_to_pwrctl(padapter)->bips_processing == true &&
600 adapter_to_pwrctl(padapter)->pre_ips_type == 0
608 rtw_hal_get_hwreg(padapter, HW_VAR_CPWM, &cpwm_orig);
611 val8 = rtw_read8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1);
615 rtw_write8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1, val8);
616 adapter_to_pwrctl(padapter)->tog = (val8 + 0x80) & 0x80;
624 rtw_hal_get_hwreg(padapter, HW_VAR_CPWM, &cpwm_now);
633 rtl8723b_set_FwPwrModeInIPS_cmd(padapter, 0);
635 rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
637 hal_btcoex_InitHwConfig(padapter, false);
643 /* rtw_hal_disable_interrupt(padapter); */
645 ret = _InitPowerOn_8723BS(padapter);
649 rtw_write8(padapter, REG_EARLY_MODE_CONTROL, 0);
651 ret = rtl8723b_FirmwareDownload(padapter, false);
653 padapter->bFWReady = false;
657 padapter->bFWReady = true;
661 rtl8723b_InitializeFirmwareVars(padapter);
663 /* SIC_Init(padapter); */
670 HalDetectPwrDownMode(padapter);
673 _InitRFType(padapter);
679 ret = PHY_MACConfig8723B(padapter);
685 ret = PHY_BBConfig8723B(padapter);
693 ret = PHY_RFConfig8723B(padapter);
702 PHY_QueryRFReg(padapter, (enum rf_path)0, RF_CHNLBW, bRFRegOffsetMask);
704 PHY_QueryRFReg(padapter, (enum rf_path)1, RF_CHNLBW, bRFRegOffsetMask);
708 _InitQueueReservedPage(padapter);
709 _InitTxBufferBoundary(padapter);
712 ret = rtl8723b_InitLLTTable(padapter);
717 _InitQueuePriority(padapter);
718 _InitPageBoundary(padapter);
719 _InitTransferPageSize(padapter);
722 _InitDriverInfoSize(padapter, DRVINFO_SZ);
723 hal_init_macaddr(padapter);
724 _InitNetworkType(padapter);
725 _InitWMACSetting(padapter);
726 _InitAdaptiveCtrl(padapter);
727 _InitEDCA(padapter);
728 _InitRetryFunction(padapter);
729 _initSdioAggregationSetting(padapter);
730 _InitOperationMode(padapter);
731 rtl8723b_InitBeaconParameters(padapter);
732 _InitInterrupt(padapter);
733 _InitBurstPktLen_8723BS(padapter);
736 rtw_write8(padapter, REG_SECONDARY_CCA_CTRL_8723B, 0x3); /* CCA */
737 rtw_write8(padapter, 0x976, 0); /* hpfan_todo: 2nd CCA related */
739 rtw_write16(padapter, REG_PKT_VO_VI_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */
740 rtw_write16(padapter, REG_PKT_BE_BK_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */
742 invalidate_cam_all(padapter);
744 rtw_hal_set_chnl_bw(padapter, padapter->registrypriv.channel,
752 rtl8723b_InitAntenna_Selection(padapter);
758 rtw_write32(padapter, REG_BAR_MODE_CTRL, 0x0201ffff);
762 rtw_write8(padapter, REG_HWSEQ_CTRL, 0xFF);
769 rtw_write32(padapter, SDIO_LOCAL_BASE | SDIO_REG_TX_CTRL, 0);
771 _RfPowerSave(padapter);
774 rtl8723b_InitHalDm(padapter);
779 HalQueryTxBufferStatus8723BSdio(padapter);
780 HalQueryTxOQTBufferStatus8723BSdio(padapter);
784 u1bTmp = rtw_read8(padapter, REG_CR);
786 rtw_write8(padapter, REG_CR, u1bTmp);
788 rtw_hal_set_hwreg(padapter, HW_VAR_NAV_UPPER, (u8 *)&NavUpper);
791 rtw_write32(padapter, REG_FWHW_TXQ_CTRL, rtw_read32(padapter, REG_FWHW_TXQ_CTRL) | BIT(12));
793 /* pHalData->PreRpwmVal = SdioLocalCmd52Read1Byte(padapter, SDIO_REG_HRPWM1) & 0x80; */
805 pwrpriv = adapter_to_pwrctl(padapter);
811 FillH2CCmd8723B(padapter, H2C_8723B_BT_WLAN_CALIBRATION, 1, &h2cCmdBuf);
815 if (rtw_read8(padapter, 0x1e7) & 0x01)
821 hal_btcoex_IQKNotify(padapter, true);
825 PHY_IQCalibrate_8723B(padapter, false, restore_iqk_rst, b2Ant, pHalData->ant_path);
828 hal_btcoex_IQKNotify(padapter, false);
832 FillH2CCmd8723B(padapter, H2C_8723B_BT_WLAN_CALIBRATION, 1, &h2cCmdBuf);
839 hal_btcoex_InitHwConfig(padapter, false);
850 static void CardDisableRTL8723BSdio(struct adapter *padapter)
856 HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, rtl8723B_enter_lps_flow);
860 u1bTmp = rtw_read8(padapter, REG_MCUFWDL);
861 if ((u1bTmp & RAM_DL_SEL) && padapter->bFWReady) /* 8051 RAM code */
862 rtl8723b_FirmwareSelfReset(padapter);
865 u1bTmp = rtw_read8(padapter, REG_SYS_FUNC_EN + 1);
867 rtw_write8(padapter, REG_SYS_FUNC_EN + 1, u1bTmp);
871 rtw_write8(padapter, REG_MCUFWDL, 0);
874 u1bTmp = rtw_read8(padapter, REG_RSV_CTRL + 1);
876 rtw_write8(padapter, REG_RSV_CTRL + 1, u1bTmp);
877 u1bTmp = rtw_read8(padapter, REG_RSV_CTRL + 1);
879 rtw_write8(padapter, REG_RSV_CTRL+1, u1bTmp);
884 rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
885 HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, rtl8723B_card_disable_flow);
888 static u32 rtl8723bs_hal_deinit(struct adapter *padapter)
890 struct dvobj_priv *psdpriv = padapter->dvobj;
893 if (padapter->hw_init_completed) {
894 if (adapter_to_pwrctl(padapter)->bips_processing) {
895 if (padapter->netif_up) {
899 rtl8723b_set_FwPwrModeInIPS_cmd(padapter, 0x3);
902 val8 = rtw_read8(padapter, REG_HMETFR);
909 val8 = rtw_read8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1);
912 rtw_write8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1, val8);
913 adapter_to_pwrctl(padapter)->tog = (val8 + 0x80) & 0x80;
916 val8 = rtw_read8(padapter, REG_CR);
922 adapter_to_pwrctl(padapter)->pre_ips_type = 0;
926 CardDisableRTL8723BSdio(padapter);
928 adapter_to_pwrctl(padapter)->pre_ips_type = 1;
933 CardDisableRTL8723BSdio(padapter);
941 static u32 rtl8723bs_inirp_init(struct adapter *padapter)
946 static u32 rtl8723bs_inirp_deinit(struct adapter *padapter)
951 static void rtl8723bs_init_default_value(struct adapter *padapter)
956 pHalData = GET_HAL_DATA(padapter);
958 rtl8723b_init_default_value(padapter);
964 static void rtl8723bs_interface_configure(struct adapter *padapter)
966 struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
967 struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
968 struct registry_priv *pregistrypriv = &padapter->registrypriv;
995 Hal_MappingOutPipe(padapter, pHalData->OutEpNumber);
1007 static void _EfuseCellSel(struct adapter *padapter)
1011 value32 = rtw_read32(padapter, EFUSE_TEST);
1013 rtw_write32(padapter, EFUSE_TEST, value32);
1025 struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
1030 struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
1043 struct adapter *padapter, u8 *hwinfo, bool AutoLoadFail
1046 struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
1056 static void _ReadEfuseInfo8723BS(struct adapter *padapter)
1058 struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
1067 Hal_InitPGData(padapter, hwinfo);
1069 Hal_EfuseParseIDCode(padapter, hwinfo);
1070 Hal_EfuseParseEEPROMVer_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1072 Hal_EfuseParseMACAddr_8723BS(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1074 Hal_EfuseParseTxPowerInfo_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1075 Hal_EfuseParseBoardType_8723BS(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1080 Hal_EfuseParsePackageType_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1081 Hal_EfuseParseBTCoexistInfo_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1082 Hal_EfuseParseChnlPlan_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1083 Hal_EfuseParseXtal_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1084 Hal_EfuseParseThermalMeter_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1085 Hal_EfuseParseAntennaDiversity_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1086 Hal_EfuseParseCustomerID_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1088 Hal_EfuseParseVoltage_8723B(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1090 Hal_ReadRFGainOffset(padapter, hwinfo, pEEPROM->bautoload_fail_flag);
1093 static void _ReadPROMContent(struct adapter *padapter)
1095 struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
1098 eeValue = rtw_read8(padapter, REG_9346CR);
1105 _ReadEfuseInfo8723BS(padapter);
1120 static s32 _ReadAdapterInfo8723BS(struct adapter *padapter)
1125 if (!padapter->hw_init_completed)
1126 _InitPowerOn_8723BS(padapter);
1129 val8 = rtw_read8(padapter, 0x4e);
1131 rtw_write8(padapter, 0x4e, val8);
1133 _EfuseCellSel(padapter);
1134 _ReadRFType(padapter);
1135 _ReadPROMContent(padapter);
1136 _InitOtherVariable(padapter);
1138 if (!padapter->hw_init_completed) {
1139 rtw_write8(padapter, 0x67, 0x00); /* for BT, Switch Ant control to BT */
1140 CardDisableRTL8723BSdio(padapter);/* for the power consumption issue, wifi ko module is loaded during booting, but wifi GUI is off */
1146 static void ReadAdapterInfo8723BS(struct adapter *padapter)
1149 padapter->EepromAddressSize = GetEEPROMSize8723B(padapter);
1151 _ReadAdapterInfo8723BS(padapter);
1158 static void SetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val)
1171 rtw_write8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HRPWM1, val8);
1177 req_fw_ps = rtw_read8(padapter, 0x8f);
1179 rtw_write8(padapter, 0x8f, req_fw_ps);
1187 rtl8723b_hal_dm_in_lps(padapter);
1190 SetHwReg8723B(padapter, variable, val);
1199 static void GetHwReg8723BS(struct adapter *padapter, u8 variable, u8 *val)
1203 *val = rtw_read8(padapter, SDIO_LOCAL_BASE | SDIO_REG_HCPWM1_8723B);
1209 *((u16 *)val) = rtw_read16(padapter, 0x88);
1213 GetHwReg8723B(padapter, variable, val);
1218 static void SetHwRegWithBuf8723B(struct adapter *padapter, u8 variable, u8 *pbuf, int len)
1222 C2HPacketHandler_8723B(padapter, pbuf, len);
1267 void rtl8723bs_set_hal_ops(struct adapter *padapter)
1269 struct hal_ops *pHalFunc = &padapter->HalFunc;