aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/ks7010/ks7010_sdio.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 42e96e113747..2be1c654189a 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -206,29 +206,26 @@ static void _ks_wlan_hw_power_save(struct ks_wlan_private *priv)
ret = ks7010_sdio_read(priv, INT_PENDING, &rw_data, sizeof(rw_data));
if (ret) {
DPRINTK(1, " error : INT_PENDING=%02X\n", rw_data);
- queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq,
- &priv->ks_wlan_hw.rw_wq, 1);
- return;
+ goto queue_delayed_work;
}
+ if (rw_data)
+ goto queue_delayed_work;
- if (!rw_data) {
- rw_data = GCR_B_DOZE;
- ret = ks7010_sdio_write(priv, GCR_B, &rw_data, sizeof(rw_data));
- if (ret) {
- DPRINTK(1, " error : GCR_B=%02X\n", rw_data);
- queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq,
- &priv->ks_wlan_hw.rw_wq, 1);
- return;
- }
- DPRINTK(4, "PMG SET!! : GCR_B=%02X\n", rw_data);
- atomic_set(&priv->psstatus.status, PS_SNOOZE);
- DPRINTK(3, "psstatus.status=PS_SNOOZE\n");
- } else {
- queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq,
- &priv->ks_wlan_hw.rw_wq, 1);
+ rw_data = GCR_B_DOZE;
+ ret = ks7010_sdio_write(priv, GCR_B, &rw_data, sizeof(rw_data));
+ if (ret) {
+ DPRINTK(1, " error : GCR_B=%02X\n", rw_data);
+ goto queue_delayed_work;
}
+ DPRINTK(4, "PMG SET!! : GCR_B=%02X\n", rw_data);
+ atomic_set(&priv->psstatus.status, PS_SNOOZE);
+ DPRINTK(3, "psstatus.status=PS_SNOOZE\n");
return;
+
+queue_delayed_work:
+ queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq,
+ &priv->ks_wlan_hw.rw_wq, 1);
}
int ks_wlan_hw_power_save(struct ks_wlan_private *priv)