From: haibo.chen@nxp.com
To: adrian.hunter@intel.com, ulf.hansson@linaro.org,
linux-mmc@vger.kernel.org
Cc: imx@lists.linux.dev, haibo.chen@nxp.com, shawnguo@kernel.org,
s.hauer@pengutronix.de, kernel@pengutronix.de,
festevam@gmail.com, s32@nxp.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: [PATCH 4/4] mmc: sdhci-esdhc-imx: do not change to sleep pinctrl state in suspend if enable wakeup
Date: Mon, 14 Oct 2024 14:01:30 +0800 [thread overview]
Message-ID: <20241014060130.1162629-5-haibo.chen@nxp.com> (raw)
In-Reply-To: <20241014060130.1162629-1-haibo.chen@nxp.com>
From: Haibo Chen <haibo.chen@nxp.com>
pinctrl sleep state may config the pin mux to certain function to save
power in system PM. But if usdhc is setting as wakeup source, like
the card interrupt(SDIO) or card insert interrupt, it depends on the
related pin mux configured to usdhc function pad.
e.g. To support card interrupt(SDIO interrupt), it need the pin is
configured as usdhc DATA[1] function pin.
Find the issue on imx93-11x11-evk board, SDIO WiFi in band interrupt
can't wakeup system because the pinctrl sleep state config the DATA[1]
pin as GPIO function.
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
drivers/mmc/host/sdhci-esdhc-imx.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 4173967022d0..d4bb23c9e866 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -1969,9 +1969,19 @@ static int sdhci_esdhc_suspend(struct device *dev)
dev_warn(dev, "Failed to enable irq wakeup\n");
}
- ret = pinctrl_pm_select_sleep_state(dev);
- if (ret)
- return ret;
+ /*
+ * For the device which works as wakeup source, no need
+ * to change the pinctrl to sleep state.
+ * e.g. For SDIO device, the interrupt share with data pin,
+ * but the pinctrl sleep state may config the data pin to
+ * other function like GPIO function to save power in PM,
+ * which finally block the SDIO wakeup function.
+ */
+ if (!device_may_wakeup(dev) || !host->irq_wake_enabled) {
+ ret = pinctrl_pm_select_sleep_state(dev);
+ if (ret)
+ return ret;
+ }
ret = mmc_gpio_set_cd_wake(host->mmc, true);
--
2.34.1
prev parent reply other threads:[~2024-10-14 6:00 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-14 6:01 [PATCH 0/4] refactor the system PM logic for sdhci-esdhc-imx haibo.chen
2024-10-14 6:01 ` [PATCH 1/4] mmc: sdhci: export APIs for sdhci irq wakeup haibo.chen
2024-10-14 6:01 ` [PATCH 2/4] mmc: host: sdhci-esdhc-imx: refactor the system PM logic haibo.chen
2024-10-17 13:07 ` Ulf Hansson
2024-10-18 1:22 ` Bough Chen
2024-10-18 3:20 ` Bough Chen
2024-10-22 8:28 ` Ulf Hansson
2024-11-07 9:20 ` Bough Chen
2024-11-15 11:16 ` Ulf Hansson
2024-10-14 6:01 ` [PATCH 3/4] mmc: host: sdhci-esdhc-imx: save tuning value for the SDIO card as wakeup source haibo.chen
2024-10-15 2:08 ` kernel test robot
2024-10-14 6:01 ` haibo.chen [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241014060130.1162629-5-haibo.chen@nxp.com \
--to=haibo.chen@nxp.com \
--cc=adrian.hunter@intel.com \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=s32@nxp.com \
--cc=shawnguo@kernel.org \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox