* [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto
@ 2019-10-12 1:27 Brian Norris
2019-10-14 6:04 ` Tony Chuang
2019-10-14 9:11 ` Kalle Valo
0 siblings, 2 replies; 3+ messages in thread
From: Brian Norris @ 2019-10-12 1:27 UTC (permalink / raw)
To: linux-wireless; +Cc: Yan-Hsuan Chuang, Brian Norris
No change in logic.
Signed-off-by: Brian Norris <briannorris@chromium.org>
---
drivers/net/wireless/realtek/rtw88/ps.c | 61 ++++++++++++-------------
1 file changed, 29 insertions(+), 32 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw88/ps.c b/drivers/net/wireless/realtek/rtw88/ps.c
index e81de3ddc8c5..820e0a3a141c 100644
--- a/drivers/net/wireless/realtek/rtw88/ps.c
+++ b/drivers/net/wireless/realtek/rtw88/ps.c
@@ -69,24 +69,26 @@ void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter)
u8 polling_cnt;
u8 retry_cnt = 0;
-retry:
- request = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr);
- confirm = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
-
- /* toggle to request power mode, others remain 0 */
- request ^= request | BIT_RPWM_TOGGLE;
- if (!enter) {
- request |= POWER_MODE_ACK;
- } else {
- request |= POWER_MODE_LCLK;
- if (rtw_fw_lps_deep_mode == LPS_DEEP_MODE_PG)
- request |= POWER_MODE_PG;
- }
+ for (retry_cnt = 0; retry_cnt < 3; retry_cnt++) {
+ request = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr);
+ confirm = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
+
+ /* toggle to request power mode, others remain 0 */
+ request ^= request | BIT_RPWM_TOGGLE;
+ if (!enter) {
+ request |= POWER_MODE_ACK;
+ } else {
+ request |= POWER_MODE_LCLK;
+ if (rtw_fw_lps_deep_mode == LPS_DEEP_MODE_PG)
+ request |= POWER_MODE_PG;
+ }
- rtw_write8(rtwdev, rtwdev->hci.rpwm_addr, request);
+ rtw_write8(rtwdev, rtwdev->hci.rpwm_addr, request);
+
+ if (enter)
+ return;
- /* check confirm power mode has left power save state */
- if (!enter) {
+ /* check confirm power mode has left power save state */
for (polling_cnt = 0; polling_cnt < 3; polling_cnt++) {
polling = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
if ((polling ^ confirm) & BIT_RPWM_TOGGLE)
@@ -94,23 +96,18 @@ void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter)
mdelay(20);
}
- /* in case of fw/hw missed the request, retry 3 times */
- if (retry_cnt < 3) {
- rtw_warn(rtwdev, "failed to leave deep PS, retry=%d\n",
- retry_cnt);
- retry_cnt++;
- goto retry;
- }
-
- /* Hit here means that driver failed to change hardware
- * power mode to active state after retry 3 times.
- * If the power state is locked at Deep sleep, most of
- * the hardware circuits is not working, even register
- * read/write. It should be treated as fatal error and
- * requires an entire analysis about the firmware/hardware
- */
- WARN(1, "Hardware power state locked\n");
+ /* in case of fw/hw missed the request, retry */
+ rtw_warn(rtwdev, "failed to leave deep PS, retry=%d\n",
+ retry_cnt);
}
+
+ /* Hit here means that driver failed to change hardware power mode to
+ * active state after retry 3 times. If the power state is locked at
+ * Deep sleep, most of the hardware circuits is not working, even
+ * register read/write. It should be treated as fatal error and
+ * requires an entire analysis about the firmware/hardware
+ */
+ WARN(1, "Hardware power state locked\n");
}
EXPORT_SYMBOL(rtw_power_mode_change);
--
2.23.0.700.g56cf767bdb-goog
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto
2019-10-12 1:27 [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto Brian Norris
@ 2019-10-14 6:04 ` Tony Chuang
2019-10-14 9:11 ` Kalle Valo
1 sibling, 0 replies; 3+ messages in thread
From: Tony Chuang @ 2019-10-14 6:04 UTC (permalink / raw)
To: Brian Norris, linux-wireless
> Subject: [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not
> goto
>
> No change in logic.
>
> Signed-off-by: Brian Norris <briannorris@chromium.org>
Acked-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto
2019-10-12 1:27 [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto Brian Norris
2019-10-14 6:04 ` Tony Chuang
@ 2019-10-14 9:11 ` Kalle Valo
1 sibling, 0 replies; 3+ messages in thread
From: Kalle Valo @ 2019-10-14 9:11 UTC (permalink / raw)
To: Brian Norris; +Cc: linux-wireless, Yan-Hsuan Chuang, Brian Norris
Brian Norris <briannorris@chromium.org> wrote:
> No change in logic.
>
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> Acked-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Patch applied to wireless-drivers-next.git, thanks.
4ee2f3426699 rtw88: use a for loop in rtw_power_mode_change(), not goto
--
https://patchwork.kernel.org/patch/11186533/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-10-14 9:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-12 1:27 [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto Brian Norris
2019-10-14 6:04 ` Tony Chuang
2019-10-14 9:11 ` Kalle Valo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.