Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753008AbbFNNuF (ORCPT ); Sun, 14 Jun 2015 09:50:05 -0400 Received: from mail-wi0-f170.google.com ([209.85.212.170]:36409 "EHLO mail-wi0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752298AbbFNNtb (ORCPT ); Sun, 14 Jun 2015 09:49:31 -0400 From: Fabio Falzoi To: gregkh@linuxfoundation.org Cc: micky_ching@realsil.com.cn, joe@perches.com, dan.carpente@oracle.com, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Fabio Falzoi Subject: [PATCH 4/7] Staging: rts5208: helper function to manage aspm Date: Sun, 14 Jun 2015 15:48:50 +0200 Message-Id: <1434289733-29077-5-git-send-email-fabio.falzoi84@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1434289733-29077-1-git-send-email-fabio.falzoi84@gmail.com> References: <1434289733-29077-1-git-send-email-fabio.falzoi84@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2227 Lines: 84 Use a helper function to manage aspm mode Signed-off-by: Fabio Falzoi --- drivers/staging/rts5208/rtsx_chip.c | 51 ++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/drivers/staging/rts5208/rtsx_chip.c b/drivers/staging/rts5208/rtsx_chip.c index 373ccd0..ee331f2 100644 --- a/drivers/staging/rts5208/rtsx_chip.c +++ b/drivers/staging/rts5208/rtsx_chip.c @@ -1216,6 +1216,35 @@ static void rtsx_manage_ss(struct rtsx_chip *chip) rtsx_exclusive_enter_ss(chip); } +static void rtsx_manage_aspm(struct rtsx_chip *chip) +{ + u8 data; + + if (!CHECK_PID(chip, 0x5208)) + return; + + rtsx_monitor_aspm_config(chip); + +#ifdef SUPPORT_SDIO_ASPM + if (!CHK_SDIO_EXIST(chip) || CHK_SDIO_IGNORED(chip) || + !chip->aspm_l0s_l1_en || !chip->dynamic_aspm) + return; + + if (chip->sd_io) { + dynamic_configure_sdio_aspm(chip); + return; + } + + if (chip->sdio_aspm) + return; + + dev_dbg(rtsx_dev(chip), "SDIO enter ASPM!\n"); + data = 0x30 | (chip->aspm_level[1] << 2); + rtsx_write_register(chip, ASPM_FORCE_CTL, 0xFC, data); + chip->sdio_aspm = 1; +#endif +} + void rtsx_polling_func(struct rtsx_chip *chip) { if (rtsx_chk_stat(chip, RTSX_STAT_SUSPEND)) @@ -1241,27 +1270,7 @@ void rtsx_polling_func(struct rtsx_chip *chip) rtsx_manage_ss(chip); - if (CHECK_PID(chip, 0x5208)) { - rtsx_monitor_aspm_config(chip); - -#ifdef SUPPORT_SDIO_ASPM - if (CHK_SDIO_EXIST(chip) && !CHK_SDIO_IGNORED(chip) && - chip->aspm_l0s_l1_en && chip->dynamic_aspm) { - if (chip->sd_io) { - dynamic_configure_sdio_aspm(chip); - } else { - if (!chip->sdio_aspm) { - dev_dbg(rtsx_dev(chip), "SDIO enter ASPM!\n"); - rtsx_write_register(chip, - ASPM_FORCE_CTL, 0xFC, - 0x30 | - (chip->aspm_level[1] << 2)); - chip->sdio_aspm = 1; - } - } - } -#endif - } + rtsx_manage_aspm(chip); if (chip->idle_counter < IDLE_MAX_COUNT) { chip->idle_counter++; -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/