Commit 6e1c29fd authored by Jes Sorensen's avatar Jes Sorensen Committed by Greg Kroah-Hartman
Browse files

staging: rtl8723au: Do not write garbage to REG_SPS0_CTRL



Use a separate variable to hold the value of REG_SPS0_CTRL to avoid it
getting clobbered and writing out garbage to it, for the case of
eRFPowerState == rf_sleep/rf_off && bRegSSPwrLvl == 1.

Signed-off-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2098778f
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -776,9 +776,11 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
				int bRegSSPwrLvl)
{
	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
	u8 value8;
	u8 value8, sps0;
	u8 bytetmp;

	sps0 = rtl8723au_read8(Adapter, REG_SPS0_CTRL);

	switch (eRFPowerState) {
	case rf_on:
		if (bRegSSPwrLvl == 1) {
@@ -788,8 +790,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,

			/*  2. Force PWM, Enable SPS18_LDO_Marco_Block */
			rtl8723au_write8(Adapter, REG_SPS0_CTRL,
					 rtl8723au_read8(Adapter, REG_SPS0_CTRL) |
					 BIT(0) | BIT(3));
					 sps0 | BIT(0) | BIT(3));

			/*  3. restore BB, AFE control register. */
			/* RF */
@@ -832,8 +833,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,

			/*  2. Force PWM, Enable SPS18_LDO_Marco_Block */
			rtl8723au_write8(Adapter, REG_SPS0_CTRL,
					 rtl8723au_read8(Adapter, REG_SPS0_CTRL) |
					 BIT(0) | BIT(3));
					 sps0 | BIT(0) | BIT(3));

			/*  3. restore BB, AFE control register. */
			/* RF */
@@ -882,11 +882,10 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
		break;
	case rf_sleep:
	case rf_off:
		value8 = rtl8723au_read8(Adapter, REG_SPS0_CTRL);
		if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID))
			value8 &= ~BIT(0);
			sps0 &= ~BIT(0);
		else
			value8 &= ~(BIT(0) | BIT(3));
			sps0 &= ~(BIT(0) | BIT(3));
		if (bRegSSPwrLvl == 1) {
			RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL1\n"));
			/*  Disable RF and BB only for SelectSuspend. */
@@ -936,7 +935,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
					     bRFRegOffsetMask, 0);

			/*  4. Force PFM , disable SPS18_LDO_Marco_Block */
			rtl8723au_write8(Adapter, REG_SPS0_CTRL, value8);
			rtl8723au_write8(Adapter, REG_SPS0_CTRL, sps0);
		} else {	/*  Level 2 or others. */
			RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL2\n"));
			{
@@ -1009,7 +1008,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
					     bRFRegOffsetMask, 0);

			/*  4. Force PFM , disable SPS18_LDO_Marco_Block */
			rtl8723au_write8(Adapter, REG_SPS0_CTRL, value8);
			rtl8723au_write8(Adapter, REG_SPS0_CTRL, sps0);

			/*  2010/10/13 MH/Isaachsu exchange sequence. */
			/* h.	AFE_PLL_CTRL 0x28[7:0] = 0x80