Use a helper function to manage ss_counter

Signed-off-by: Fabio Falzoi <fabio.falzo...@gmail.com>
---
 drivers/staging/rts5208/rtsx_chip.c | 66 ++++++++++++++++++-------------------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/drivers/staging/rts5208/rtsx_chip.c 
b/drivers/staging/rts5208/rtsx_chip.c
index 5946cc4..373ccd0 100644
--- a/drivers/staging/rts5208/rtsx_chip.c
+++ b/drivers/staging/rts5208/rtsx_chip.c
@@ -1184,10 +1184,40 @@ static void rtsx_manage_sd_lock(struct rtsx_chip *chip)
 #endif
 }
 
-void rtsx_polling_func(struct rtsx_chip *chip)
+static bool rtsx_is_ss_allowed(struct rtsx_chip *chip)
+{
+       u32 val;
+
+       if (!chip->ss_en || CHECK_PID(chip, 0x5288))
+               return false;
+
+       if (CHK_SDIO_EXIST(chip) && !CHK_SDIO_IGNORED(chip)) {
+               rtsx_read_cfg_dw(chip, 1, 0x04, &val);
+               if (val & 0x07)
+                       return false;
+       }
+
+       return true;
+}
+
+static void rtsx_manage_ss(struct rtsx_chip *chip)
 {
-       bool ss_allowed;
+       if (!rtsx_is_ss_allowed(chip) || chip->sd_io)
+               return;
+
+       if (rtsx_get_stat(chip) != RTSX_STAT_IDLE) {
+               chip->ss_counter = 0;
+               return;
+       }
 
+       if (chip->ss_counter < (chip->ss_idle_period / POLLING_INTERVAL))
+               chip->ss_counter++;
+       else
+               rtsx_exclusive_enter_ss(chip);
+}
+
+void rtsx_polling_func(struct rtsx_chip *chip)
+{
        if (rtsx_chk_stat(chip, RTSX_STAT_SUSPEND))
                return;
 
@@ -1209,37 +1239,7 @@ void rtsx_polling_func(struct rtsx_chip *chip)
 
        rtsx_init_cards(chip);
 
-       if (chip->ss_en) {
-               ss_allowed = true;
-
-               if (CHECK_PID(chip, 0x5288)) {
-                       ss_allowed = false;
-               } else {
-                       if (CHK_SDIO_EXIST(chip) && !CHK_SDIO_IGNORED(chip)) {
-                               u32 val;
-
-                               rtsx_read_cfg_dw(chip, 1, 0x04, &val);
-                               if (val & 0x07)
-                                       ss_allowed = false;
-                       }
-               }
-       } else {
-               ss_allowed = false;
-       }
-
-       if (ss_allowed && !chip->sd_io) {
-               if (rtsx_get_stat(chip) != RTSX_STAT_IDLE) {
-                       chip->ss_counter = 0;
-               } else {
-                       if (chip->ss_counter <
-                               (chip->ss_idle_period / POLLING_INTERVAL)) {
-                               chip->ss_counter++;
-                       } else {
-                               rtsx_exclusive_enter_ss(chip);
-                               return;
-                       }
-               }
-       }
+       rtsx_manage_ss(chip);
 
        if (CHECK_PID(chip, 0x5208)) {
                rtsx_monitor_aspm_config(chip);
-- 
2.1.4

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to