aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2014-11-30 16:05:04 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-12-02 19:40:00 -0500
commit6e1c29fd9e10af8aff4f9fe628e1ca9d337e90a9 (patch)
treee93d94ea0c23cceb5e75be78b8879eec0c3ff03c /drivers/staging
parent2098778f562123c09cace4a15cd08f0cc26f0e48 (diff)
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: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/rtl8723au/hal/usb_halinit.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
index 762c51427958..6c6601332035 100644
--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
+++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
@@ -776,9 +776,11 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
776 int bRegSSPwrLvl) 776 int bRegSSPwrLvl)
777{ 777{
778 struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); 778 struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
779 u8 value8; 779 u8 value8, sps0;
780 u8 bytetmp; 780 u8 bytetmp;
781 781
782 sps0 = rtl8723au_read8(Adapter, REG_SPS0_CTRL);
783
782 switch (eRFPowerState) { 784 switch (eRFPowerState) {
783 case rf_on: 785 case rf_on:
784 if (bRegSSPwrLvl == 1) { 786 if (bRegSSPwrLvl == 1) {
@@ -788,8 +790,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
788 790
789 /* 2. Force PWM, Enable SPS18_LDO_Marco_Block */ 791 /* 2. Force PWM, Enable SPS18_LDO_Marco_Block */
790 rtl8723au_write8(Adapter, REG_SPS0_CTRL, 792 rtl8723au_write8(Adapter, REG_SPS0_CTRL,
791 rtl8723au_read8(Adapter, REG_SPS0_CTRL) | 793 sps0 | BIT(0) | BIT(3));
792 BIT(0) | BIT(3));
793 794
794 /* 3. restore BB, AFE control register. */ 795 /* 3. restore BB, AFE control register. */
795 /* RF */ 796 /* RF */
@@ -832,8 +833,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
832 833
833 /* 2. Force PWM, Enable SPS18_LDO_Marco_Block */ 834 /* 2. Force PWM, Enable SPS18_LDO_Marco_Block */
834 rtl8723au_write8(Adapter, REG_SPS0_CTRL, 835 rtl8723au_write8(Adapter, REG_SPS0_CTRL,
835 rtl8723au_read8(Adapter, REG_SPS0_CTRL) | 836 sps0 | BIT(0) | BIT(3));
836 BIT(0) | BIT(3));
837 837
838 /* 3. restore BB, AFE control register. */ 838 /* 3. restore BB, AFE control register. */
839 /* RF */ 839 /* RF */
@@ -882,11 +882,10 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
882 break; 882 break;
883 case rf_sleep: 883 case rf_sleep:
884 case rf_off: 884 case rf_off:
885 value8 = rtl8723au_read8(Adapter, REG_SPS0_CTRL);
886 if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) 885 if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID))
887 value8 &= ~BIT(0); 886 sps0 &= ~BIT(0);
888 else 887 else
889 value8 &= ~(BIT(0) | BIT(3)); 888 sps0 &= ~(BIT(0) | BIT(3));
890 if (bRegSSPwrLvl == 1) { 889 if (bRegSSPwrLvl == 1) {
891 RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL1\n")); 890 RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL1\n"));
892 /* Disable RF and BB only for SelectSuspend. */ 891 /* Disable RF and BB only for SelectSuspend. */
@@ -936,7 +935,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
936 bRFRegOffsetMask, 0); 935 bRFRegOffsetMask, 0);
937 936
938 /* 4. Force PFM , disable SPS18_LDO_Marco_Block */ 937 /* 4. Force PFM , disable SPS18_LDO_Marco_Block */
939 rtl8723au_write8(Adapter, REG_SPS0_CTRL, value8); 938 rtl8723au_write8(Adapter, REG_SPS0_CTRL, sps0);
940 } else { /* Level 2 or others. */ 939 } else { /* Level 2 or others. */
941 RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL2\n")); 940 RT_TRACE(_module_hal_init_c_, _drv_err_, ("SS LVL2\n"));
942 { 941 {
@@ -1009,7 +1008,7 @@ static void phy_SsPwrSwitch92CU(struct rtw_adapter *Adapter,
1009 bRFRegOffsetMask, 0); 1008 bRFRegOffsetMask, 0);
1010 1009
1011 /* 4. Force PFM , disable SPS18_LDO_Marco_Block */ 1010 /* 4. Force PFM , disable SPS18_LDO_Marco_Block */
1012 rtl8723au_write8(Adapter, REG_SPS0_CTRL, value8); 1011 rtl8723au_write8(Adapter, REG_SPS0_CTRL, sps0);
1013 1012
1014 /* 2010/10/13 MH/Isaachsu exchange sequence. */ 1013 /* 2010/10/13 MH/Isaachsu exchange sequence. */
1015 /* h. AFE_PLL_CTRL 0x28[7:0] = 0x80 1014 /* h. AFE_PLL_CTRL 0x28[7:0] = 0x80