From patchwork Mon Oct 14 06:01:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bough Chen X-Patchwork-Id: 13834194 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6CDECCF259D for ; Mon, 14 Oct 2024 06:21:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=c5JJ7KTa6A17Sn75TWE7cPxLnU+thl6qePZUrJ5fI1g=; b=lrE1l53UWMX+aCrDL3qqebNaQV R+e97ecU4a0FjSmdw0hkG6jpwIwu35qM1ja/XFnvhlXA22wsNtuCFwDi+XJay6JBfm8LpsKNsN7BC YKGbfwSrM7p6tEF0Lk0HpDG2JtkdI549UfgvyJ9Jm5yYTWZiAGB4Z/yqaXPPc5AEFJjQX+2CbyITa RazeyQWlJ4PszB3APmqlp1Hwky702NapXkJMvk1nmqsPLHNuXYBUnmV81u3FSJBHaMdRPo6ANdP9h Zsz2LJ70P3/Fo+gY+yaLpueiw08hvXeuPQXHvuBtvMYZ2coAh+we9wOp2yCjgx0ofwF19BrvixDCJ ZIbB2QtA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0ESh-00000003sHK-0fn4; Mon, 14 Oct 2024 06:21:47 +0000 Received: from mail-vi1eur03on2062c.outbound.protection.outlook.com ([2a01:111:f403:260c::62c] helo=EUR03-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t0EMN-00000003rR2-201w for linux-arm-kernel@lists.infradead.org; Mon, 14 Oct 2024 06:15:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yotc6oxnbC+0EX1jLPPndWyB2slHV/sgXp+nK3i8/a0RJG3lxaetrEUObbMuVM3Myp6Da1e7wKVRpYL5PV7IwUwJdik8UMdNJFDkYrFJ4MLM4o6utXGKzi2L/qBhvyalIUsqUiQzhs6xZ9mvFb8U1TPcpZRJ5h+7HPVk7LciVMN1IivfFh8qAigDncLilShB0bVoHtIN+Da9z/9HMFr60tRrXARWQzc/uOOxi6VY8m9bTet/S4el/eh/3jHsUThcuLdqIz4EnfyhT4JQKKKbn1jVij6mk3rnGXRlY/M4DGoM8NGSMOcDkCo9WInuTdiCtyLhhKrClnqILc4ii3hVQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=c5JJ7KTa6A17Sn75TWE7cPxLnU+thl6qePZUrJ5fI1g=; b=YQNBPcMByZi0jJtd8GZi2Q//tPqIk4zDufHZWK4DhuofMvTXjjTZctbN2l4AvvdikZ//p9tDYzApoxfhdpsnfu6gsc2UjNE1LjO8SOF4aOtYCx5AiE+RYz4s//TF0HhTDEojhy9IcgEYfI+on1Bv9Js7RvZpkV7skEVonxrDf0AtyntCBnMNA5+6FiN6Pdcol+gw3c+8wo8ILDOZ2LTsKEURp3WtExVTjBxdYDiqCY4jHACLOuzGd6ic/Zbgoytp5s4R5peMpze177ZyAZ7VbojUzwJmqHGn98aAR69Ov+Khh1MEVYb2cmFrs/GtKX7zEBdNtjHWA9n5lFcVD1tVlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c5JJ7KTa6A17Sn75TWE7cPxLnU+thl6qePZUrJ5fI1g=; b=OSVrhjDHAJ5tXAJVQzfWFPcpNGVP5+P1YuPJ/bD4PmegIlEXiuZLfEoF9Epg1vhyUg3dTaSM3i8a+ckG2bb4SF/sQy8UmAnVS7Gj2pwIKVwDPjp8W76IcJMrx5Qi8AvEawNd33iSEBDyIZ749fAvHsFwdVckU6lNaIWPfGM/n0EkXXBtbMf8Z9oz2wV0rknezbJnZrc9FsOaSej9xqlpV4TpPQXwWzFc7erHkfNg3gLIHuOzc9bWPxo3JjHVXnmrJVH3LEIRZlO2inBFgFdus7IAP/iKm/xhagO/clT/KGxBAcHjb2ILhZ0XV/+2GVkR3YXeV1JUF4RnPgCbuW52gA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) by AS4PR04MB9459.eurprd04.prod.outlook.com (2603:10a6:20b:4eb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct 2024 06:00:35 +0000 Received: from DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334]) by DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334%7]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024 06:00:29 +0000 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 1/4] mmc: sdhci: export APIs for sdhci irq wakeup Date: Mon, 14 Oct 2024 14:01:27 +0800 Message-Id: <20241014060130.1162629-2-haibo.chen@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241014060130.1162629-1-haibo.chen@nxp.com> References: <20241014060130.1162629-1-haibo.chen@nxp.com> X-ClientProxiedBy: SI2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:4:186::16) To DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9496:EE_|AS4PR04MB9459:EE_ X-MS-Office365-Filtering-Correlation-Id: d2775155-40a9-4eca-d5f0-08dcec15814d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: qRIZX3N8LnwuBAfsTQ3fKaGqYnbFrVithA0prd7826m+6TZIN04QixgWda5V/vfZO8X/dHCnNegrjPZ8Luj1VNSjhzlEhNtrF2Mi1X8u8ocTqih11bXU36udaO8QvZqK+F+jKGBtcL/3V0pXnNbYmBmZ+zzhuFB344CD/PmnVXFethXVdpBKmqQUxxV7aPHA+dg+fcTkO5aIaOn+uOuQLH934nf7uZRkxMlaBKPkkxe4JNf+CBzkqNfBuviI9FZRqCT/Kr2SzjMOMxSxr1NAg9neNisXwO1PkzJnY9MjITJB2Z187m/J8SrpFVTxzOUPLQglB3EJD78d+VXjzNkzdizTTikLQ6zeAgHX7hPwJiWHO1Y3WZ3I7tXXkYprhmxpJ+jJlkiPNjpb39QKiqFGGzkoKGyRAL1qAk6XTxer2o1GQhnb8CPhtvpMXzGDV6F8GYsGa44sgV0zU8ARrj4aMTZQxSkGBfkl0Y6Y23p6mE3BvazHei5vP2YDd2iK3mp8UYdYp2j4+uQl7GQAQAkGKSVX7Wc9tmRJhEocTLvUiERjA8JM97jFawDNU8S4RVl0cN29lF4rUGQFZE3Y5bmQBDIZJdr1E/lp6UfalX6fQf8X+0041/tHIij6jvqk5+1N0KZFkNRW9xlEZ/xDkCIceJirMV+3Tyzp2WW7RmWAYtCybCbnWhqBSfqXBsV20iq80Bg/Yoz+PUJzNZX0/D0tvkacgRzOBtwBFL4pCsGPmBcUjTejlYJf/+F48e28aVJQEyOnqKGN0PFap6zQpVICxxhJN8B0QN9HbVeXwc9xEP/qWd4t2N1cORF63DLnjly9lHQPQVP+2VyLUBV2C0AU9H9fq3b5fwt/rEK/GUAf8CISVUxG2PsKKPunWel0xDTHYhAmwyQVQCJt4Luc9H4zXGwa/7RQH7O/q7dANRIuLefa60dlki7bk7onebRtf4+tTVt+BpgorobPxffE49Bm8vFLycx44sZzYMksep6fHYgJRVazIbMWZ4HBwZ0liRv75bk9cY0u9xdFrbkRTuaU+/YLQ3k+89ldoAx9lnd+bsjRcRRPMhZA0ar5wbYlb80RNzeLJUzBNUg2joa45naa495/egPNNpAb78BpM/+lWExpENNKqQvkBmVZfzFG0FwIuG8Vcr4ysRZuUn9m+riLmgeI8iVqmN+FDDaMMzCtgDyoJs7/qnaXGxm9PfI+KqyPTy9idGnfA0myiMZV09kJq6Mc6H56m4PkUWRnVZqu2zcMekIMU1DV0Y+xO8DJZ+9xQe1bQZ7DH+u8BznzHrV/s//wD3SPlNvULYv5Wxx0+/5Vm6dP30LaFgDLex+g3NrV16CzIKavTMX+pogEPmBq3A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9496.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dbsjVyXUlhx1okXEiENK/hyaJxnZfGGGvtgCC0DZ4rg+3Utu7i35bthSy3v7maicZOpcCGMScX72ulm3toS6KbUNh5J/sg8MiQMpuoctIqOB20lKRbu2S//yZe8diLXbLi3r8Ad+R1ZsfyuenNsPzeHg5m+omOyCKI8rKi/BEX8p8zVvbydtx83MOihNUrPI/KzuOX+jjdluvOKmVKdPk9uVa75wouP/gPVki0VM0XkOxr9LdMzRsV2+ml7QQCpTSEZiHz7guKz2QHljztHrEfX71AnnhDTI6ATKcwgA9siSRExlrHI2o27MbBf9YMDYXajLCW1IIm+/HR7Gs+Rcn2amQZcA+Li3s6+z7a2tZzfLtNd2iglMCG634clFrDFUo+QynQi1P3WaBsrod6Bxv033zmTqOnMzvh6D1/O6Y4CrMzirUOTj8lct6PLb66MxHeKkGye33/2NrVt2MtIt5Rdw6WpQ9Fh8OAhfR+HV74QCEv8pl+DWRUSr4xCx9UdmuumMomTnYS5fucqPQDETRYhcmVhszG9Ftsu3r/Hj2iSjGtlUKdC+NKyfJdKeHdRgKLohj+Iu7tHtlzyeIXbGcu7LawQWTzvt3DoWdis7qN9EC/iBOYGrHTgg7XFklpEi1GuXbq2U1+c4daui0MRRFgu2AMPg37ibUVofUWPK9EIfSzvBhsbEtDIHhT4Xun8eNbPiAE00ixp5QishCE2HCJxeFQEXAewGlsjM8seiTBO4pUQ5lHy9nS/VoVVr8aT0xjYbd95AyDjeEocsaWXSy+1dO+6RwFATxkVtPLT5F8TWHQ87uenVXoNUNdzDjT55DcrHZj0F7EGfVeoDg7HkhEhkXx0JMH20Oo69LmLGbBNIBb+kjdLEFaUerXC57G1/d/ftXJezq4NqPkFiK01hp05KA/Mi+n2F3o9ZC9oQbURMWZbjXzDPyD+VnMu0BKKiJuXgHGnKkJsUCOwQZZK6x75exz12lBtJxq6LJUPGy7FXxB+fN9HEeA9uxcgygl98esnsBJsSWaQXI1gt+0gZ3DKo0etsPPJPBj+qkxWWBXeMUXHacVTLeREA0xeOXmeBdFBsc3WgnyBm7cIHY8+FpKH/6lT/TBIfDwyerEwviM6vwLxhFfwhIZNQhnKS1icUya5sFkdGxwacwIC7gs1B7lqRDZg2ofeCQj0yfUfZlN9/6dtG2qkNnMsPj5EHLxJveM5ONYSkiO/74kkLb8rI6Ydt6t/pecBmwcCic81OaIaSF9aiH7/UGdkB42VfeKNBe1j2v8MOblJGN7pU2dw+Emir/7zrcSqVO4Qg5lVm9QAw7rEQLyO2LZ1lihLIS3fJKlFRyPfBqDIjydor5Q+iS4U6q5CujpvMCraqMXYfd7i9qi9iB6bNPLcZezgidW5/QvrZPjmowzGY56VN5PUV9TaeAjZjAazpTrbYTrK20RUwph7YJHvJJRuy/DL8LrK4Mh6x9fHj+C3TA9dTDSWpMokljriM16nQScP10JlLefCZRBvNG9tjQ/GrE2Z+82QtyPHs6s/CRMMl2fSOCH+8ky9QSJsLeVEDQsmEkIK12uCsDLo1U8711f125Sap2mzc X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2775155-40a9-4eca-d5f0-08dcec15814d X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9496.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 06:00:29.0056 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tK8GaNoim7R4rX5VnnbEFzu9Kca+F4Ajqz6dr5N0+TjaAjuHwMsHUMG0MrChkR8RDFiqk+1ek0p4Jj/Y2Wwv7Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9459 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241013_231515_531891_2DF4800A X-CRM114-Status: GOOD ( 11.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Haibo Chen Export the sdhci_enable_irq_wakeups() and sdhci_disable_irq_wakeups, so other driver can use them. Signed-off-by: Haibo Chen --- drivers/mmc/host/sdhci.c | 6 ++++-- drivers/mmc/host/sdhci.h | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 4b91c9e96635..b3df3e7653af 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -3698,7 +3698,7 @@ static bool sdhci_cd_irq_can_wakeup(struct sdhci_host *host) * sdhci_disable_irq_wakeups() since it will be set by * sdhci_enable_card_detection() or sdhci_init(). */ -static bool sdhci_enable_irq_wakeups(struct sdhci_host *host) +bool sdhci_enable_irq_wakeups(struct sdhci_host *host) { u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE | SDHCI_WAKE_ON_INT; @@ -3730,8 +3730,9 @@ static bool sdhci_enable_irq_wakeups(struct sdhci_host *host) return host->irq_wake_enabled; } +EXPORT_SYMBOL_GPL(sdhci_enable_irq_wakeups); -static void sdhci_disable_irq_wakeups(struct sdhci_host *host) +void sdhci_disable_irq_wakeups(struct sdhci_host *host) { u8 val; u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE @@ -3745,6 +3746,7 @@ static void sdhci_disable_irq_wakeups(struct sdhci_host *host) host->irq_wake_enabled = false; } +EXPORT_SYMBOL_GPL(sdhci_disable_irq_wakeups); int sdhci_suspend_host(struct sdhci_host *host) { diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index f531b617f28d..bc303fe7f87b 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -802,6 +802,8 @@ void sdhci_adma_write_desc(struct sdhci_host *host, void **desc, dma_addr_t addr, int len, unsigned int cmd); #ifdef CONFIG_PM +bool sdhci_enable_irq_wakeups(struct sdhci_host *host); +void sdhci_disable_irq_wakeups(struct sdhci_host *host); int sdhci_suspend_host(struct sdhci_host *host); int sdhci_resume_host(struct sdhci_host *host); int sdhci_runtime_suspend_host(struct sdhci_host *host); From patchwork Mon Oct 14 06:01:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bough Chen X-Patchwork-Id: 13834196 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D3AF8CF259D for ; Mon, 14 Oct 2024 06:24:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=CGxyknLbtIalQ3GMBGRDohcnpTs4FNczYpD4DizUtno=; b=AMF/i8O8sERD/d0XdDPYDKS0Na j0sN5//hBKhG8QwIpcZAtz/Y4jJyqovhKKYw800mKqNooAXi8i03KAS4GH7R5t+jdBnNsRpjldYXY cISiWUkiE5VNG4elhb0++zfUohoguoORd4wfbQolnF65+yICTCQCeJEWOh8zmjk1/xkvc6AWDI83N DFqAY28hGYjmhsGHhM1Kj/mmtwxntsVEp36ZDpes8GVbweGO5/3RuHAeEQx3tglPxEiIEpnK9b6I6 DR7ZC8SXj+m3MZ4RX7v/CFPNaTWFmWn0s5NUJKGH92RMsOvdIqzUCHoLTJ0WfwKT4tM3cbpyo0QHB 5yxnSLow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0EVT-00000003sex-0Ywk; Mon, 14 Oct 2024 06:24:39 +0000 Received: from mail-db5eur02on20614.outbound.protection.outlook.com ([2a01:111:f403:2608::614] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t0ENj-00000003rYw-3xmN for linux-arm-kernel@lists.infradead.org; Mon, 14 Oct 2024 06:16:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o6mw7vlT58KA6/Ch/7fa+sJq7wkLHpWcFyt+j4oeiESy3KVCbM1hwW3G0/QAkDt9nm1pdvU7bGcOHHmKBS52cS8dTTtUw6zYFAD8goQyAMKOGE96YNo6xYGxkgQpQJIzSYoDxVubKovJVXzVZcGdzVxId7A6WqbCIOvDNx8dlpD8uGicSenbXkxYhQyh5I2QQC4JdTzFQqhfXgMNzm6VpvAIZHlcmcPQa+Uf6ASKMJm8QL4/57/32/CBizH/geaVdN27e58B8rPGSGHCS6XyAn8YW4DlLbF4nEBnjEG4jkvbYJkd5T8K1ZZQw148J5Tu/t6Pty6/vvDPf5l+v0t9Bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CGxyknLbtIalQ3GMBGRDohcnpTs4FNczYpD4DizUtno=; b=YW2ZvfqZ+YfsmjoK5zcWTGwsZohjYZqNdoxmHJnT8vCtHaCPTEe2L4M8yl3d4Y+lQNbTO3iULcXnQ9Myctoe7QGzRg0GSa8T3jFffiuOFMGinmlI33jtvWwPIBKDWRqimEUFV86hP1dGIJIrQIDA8kZi41WBZXyYIHXrduTDBZ/FO25scDxrki9DyvsjgagRQ+3ZIuHwQNjKnCArAu5PiKXMdGPgYQDRP6WHGHYy8vUs0QarKgpaGKsdHb8+TasarRaVcm0P9GcHi649+34X8ZYRvYkXrtr5qM+gklxc2i7FgJXcdN/QCpY4quc/DC8xqlcS535i1yO4Z/XILCDHaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CGxyknLbtIalQ3GMBGRDohcnpTs4FNczYpD4DizUtno=; b=iMCurIfjTXoJ0DgX8ywU1WqjN1Ty2agy+Ufvw6kd1UNvt2//nH4GwG84AzeQ8oiO5y1J2nZ/uZ8BT+Woq3ew1WtzOVsCSZT5NkqKnj3FcgSZDN2nA/vVf0klAPci7RiruAj1JiDk3DT/155tJgDsPK7WJL+YlRIzKyclQmZeoJQ+PMts09zRBkMpAzEI5qhkKC23iwnD3yk/+j1qHqKwtoPu+UZFrmT6EE6LQkbq41I145OH74VM22eth2VqGJApjRd1XU+JaWPFLIDTuXwJMNX7evOptMSPDqfnEXnamOzydFU6xX54i0hCqSLZPx/w0XUz6zjmh4rh2huF16Idxw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) by AS4PR04MB9459.eurprd04.prod.outlook.com (2603:10a6:20b:4eb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct 2024 06:00:35 +0000 Received: from DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334]) by DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334%7]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024 06:00:35 +0000 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 2/4] mmc: host: sdhci-esdhc-imx: refactor the system PM logic Date: Mon, 14 Oct 2024 14:01:28 +0800 Message-Id: <20241014060130.1162629-3-haibo.chen@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241014060130.1162629-1-haibo.chen@nxp.com> References: <20241014060130.1162629-1-haibo.chen@nxp.com> X-ClientProxiedBy: SI2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:4:186::16) To DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9496:EE_|AS4PR04MB9459:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c2ba417-598e-48e8-230d-08dcec1583a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 2PbW+4voim9758/eiejHVfiJtMpfAEVtgQESzbn8WQlnN5sILTFEZ36V9zfFWoMOK+qpdxWB9J6RQbPukn+96XyiwEeWRhxrtcCEfvEuDHSV6B7arh1atnItMKm4DDxmQHRsp2NUSp2Him2lEwA/oKAuq8/WUAc4Rn1Wd9NM0VlIvkVXzixzejYrNCMTw+s5N4j0lWI5TLsYzKhTkuO+9N1OaCxNzH8SQ2mpYLyq5P2n1wRjXjMZPrZD3vr3ySGN7lBABJygqFPvJI48OgeLdKM9OLl9bmgNwThYqrBew/7HgNsoTCEOw3B9h1T9lJs0OjCwcVEthbn+XhjOEcrcQPyIVbupzY7pNtTxE43302oeIuB6qXc+k8vyGhNH3VYvlWQxIeJgoSwuvNQhb0BhweFVyLLtBmo/SNSBhFLcKOVRStV9aic8HLZKa5h1wO2TgIDjvxhY/jW8pWy/J2Ck0oU07XvfcRdbRj5MzPrRM2UXg8iRRDQRTt67h9zv35S8ztW7nOz/ZbS36q00bqyWgfEBTSpodm6R2NV6uYiOhhZMtAkKDPw98IjckSI2njzHXYcniNEMLODpXQEj+AXOSqhPy8ER9eMb25dCj50A0MM0kVHYvn6qI2ebdME2eldSiuWaQZobPFsm9eYvHCBGzfEbo1+lIrofcsq/gSqzuTiXBAiCS6XUVu5CvRqtpSDkZcKuZCVoQpMkETPScIh/H1sLOKDPBa4lkqbpIGW+r2V4HbwDiFFHLAsFGgaVLW3RIEpz5h3/VUgizHw+mrmdmLnSVP515qr0+EsrT20+VcX90gKLWVOUb/N6lIXHRtLzd3sTUTeRxHS7hit1peCo2JPjumHLjfmMu30olIoUyiZzfT6QdT9VA5pfOevlcbfcnRIoGJ+52muexyy3qdY4Y8WnChUW6k4bqVnOufLdF9mx3cN5lySKRnHxS3SwhjOloajkq1Vd8UETwV4gqXbrx5vGXQxv22ueHc5I5y9nUS8VPMZn8jPGkDJN0kJ4bebEAF8pVfALmtaaU39Vcy8ZmsG8e/aI+gcuAtBi4yDi2aKkY8HEa5j2qBcECRKodAhouz6m7b6f64HVdmiBfGgBs1p8B/1UmgIhEnwXStlUNSqiFZNZ1p3i9VkulNoT0I6hwpFkNmuvUa3pYqDo8WSuwkTUH7HWtCkisCNyD/UTx39Gi1uoT60+2m/nlDdFKJ3zK2K5aruPtAdumExwlO3fhsZt80EKncvGIver01bYFypDAiWoEkWrwNp1P4/Pc8tDsjbBI4XHFRdDKPE9nPO8iSgw2K+giV6waT3KsICbhUvwy9/qwodMQVWdP9qQ655DVPFGyCa7mptkrQHZegAy5A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9496.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 63klnFseGE0ZYzOAKC+DzHQdxBCtv6ZLUoH2pZMaO1HNcO6sNDNSs/A47dlX0HEauOhHnKdmhj4w9V87ZUitfzaIqqr/PyQ6KjJBSCUkWKE5Da4rxwmABj7NaIKv9zhasC3zs1FVeDYlE2fpDBiNSYMpy3zNgwfigDi7TZD9xYnFwassrd/3yenRoQEPGBq4GgpfA259tvCG6F353hAP1/DtPwuJNP48jug6O1Go/YpMc5Vkv+/C5pkMgs8+YzDeD3IeXsefr8wtgDqPTGwHa8sxO8fYVuBRNZn6PK2l3mrNLMaXrcUnZCLmrZSZgm6jBaQbHl+neyzhsCl8KVsmpTeXbfXKN31WeiMAOEV85U8KDT1tycIh7vgXu29MRMcVxcnIpEN/7SYGfbd9fv7k3syytKHWvWaoN+pB4xdeJapd8hsSdyXWgZfXirF9yy6/DmaIqXwFAgXKPz6sOvUbKjZiFpg+JZfALuLadBMSO4AoPTR0Fl//eWvvTE/GUPDVPn7Jm296y+dVaZeA6sdvTYYHu+TR7RNh/KY7obV5JR7Wc7INZssf1bNixdxbLJd70OpVT9b8n3EhWA1C+L/Rznw8HdL4M7zw+DuYA+UmjO0cYoZxQuD6wS5uVOhqWgxk69VHsjeY4kUFLv7CU031NmrO9ARzfmPFBnL2k1DrBGvemoCSbmoLZ/eD7hhkcyjUdNq9vVCceSWK/1482ZsxngVu1/npJGGK75t2Yvlu8Dvtnn85V1q1iy4mJ6DsrAcARRojMb/yr/+sb69Em9PFnS/Zhm+Y+Ez5gYKT4sI7EWEzHM1ktZwi/5Di9OUtOmyGgs0Is4KYxt0db06izdlWBTaHxRKgSDBgLGmPSS6F6QiaXj+YESylUCIiYpx/ViLC6zGpC85/avw5G3KEXMpurFRYDYzeBUcSizCH3j6hoZRV0hADGvSHFVXbAF/GZ+An4z4hgDbmuEpoUVrAWPuvXOZowRT7nQDlSKPQRwGWCbq4arJfdSnpuHJmkYb9LXLTqWIctdj5pjwQwSO5SFMgevRxSBugNfx0GfUfuJXrqWJUAZ6T2wqvsyR0BraKMxeplHzoAM4xkU0suegEhQgqx6J+34rC4sUNqWeDh2fZDaomPyz1jyDOnpfU4+GLXrLx3lMhdHeBqyD4bhCAJSSDTE0Z08ijm4vxWI8/cX33PXwknWyWP9VGvmxGO+QkiLvfWukjxvuQ+9LW1Bc7vmVmT4QMWH14meirxXVENO2udEI6l0o9nG2VDCQWWUraqYo1YMbo0u8iihLP1VaYhXD2/uhPg9EpuNClIO15+E7vIcOF8a65rZ3mWCn0p+UoN0BplyBEHQaDVdko+ThPv5L8KdypPjwVzfX+yMAgGuo7CYMdTClfLzlapiMcosUJh0mehE5HonEm9AVic4ekSpihxsnKSbYNhDUW5WHLJbdikX4q91u2wp9AKkifpR6qlgR9zEkV5yI8RYd/RcpyXHZJPGr2v+RKLNjBF8vXwKaB0S4bsGb07s5YPMfzXrfdqOIxUJTDFlOxcm+JNvz5948Hqh6dhjXo0JZ8BB8DmVWSiRbfxmcrGBVEwiXn1qg6p2v/ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c2ba417-598e-48e8-230d-08dcec1583a4 X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9496.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 06:00:32.8318 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZhZF0yz3ZfqKGOAFUNK/RcQ/Px78vLU3J+gxy0pipC7WnoKgaRp/UzmsHq1g9C66b7nRoWC9HiVMVorN3DmEvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9459 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241013_231640_072572_4EDC8EF4 X-CRM114-Status: GOOD ( 16.16 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Haibo Chen Current suspend/resume logic has one issue. in suspend, will config register when call sdhci_suspend_host(), but at this time, can't guarantee host in runtime resume state. if not, the per clock is gate off, access register will hung. Now use pm_runtime_force_suspend/resume() in NOIRQ_SYSTEM_SLEEP_PM, add in NOIRQ stage can cover SDIO wakeup feature, because in interrupt handler, there is register access, need the per clock on. In sdhci_esdhc_suspend/sdhci_esdhc_resume, remove sdhci_suspend_host() and sdhci_resume_host(), all are handled in runtime PM callbacks except the wakeup irq setting. Remove pinctrl_pm_select_default_state() in sdhci_esdhc_resume, because pm_runtime_force_resume() already config the pinctrl state according to ios timing, and here config the default pinctrl state again is wrong for SDIO3.0 device if it keep power in suspend. Signed-off-by: Haibo Chen --- drivers/mmc/host/sdhci-esdhc-imx.c | 39 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index c7582ad45123..18febfeb60cf 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1871,11 +1871,13 @@ static int sdhci_esdhc_suspend(struct device *dev) struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); int ret; - if (host->mmc->caps2 & MMC_CAP2_CQE) { - ret = cqhci_suspend(host->mmc); - if (ret) - return ret; - } + /* + * Switch to runtime resume for two reasons: + * 1, there is register access, so need to make sure gate on ipg clock. + * 2, make sure the pm_runtime_force_suspend() in NOIRQ stage really + * invoke its ->runtime_suspend callback. + */ + pm_runtime_get_sync(dev); if ((imx_data->socdata->flags & ESDHC_FLAG_STATE_LOST_IN_LPMODE) && (host->tuning_mode != SDHCI_TUNING_MODE_1)) { @@ -1883,12 +1885,11 @@ static int sdhci_esdhc_suspend(struct device *dev) mmc_retune_needed(host->mmc); } - if (host->tuning_mode != SDHCI_TUNING_MODE_3) - mmc_retune_needed(host->mmc); - - ret = sdhci_suspend_host(host); - if (ret) - return ret; + if (device_may_wakeup(dev)) { + ret = sdhci_enable_irq_wakeups(host); + if (!ret) + dev_warn(dev, "Failed to enable irq wakeup\n"); + } ret = pinctrl_pm_select_sleep_state(dev); if (ret) @@ -1904,22 +1905,18 @@ static int sdhci_esdhc_resume(struct device *dev) struct sdhci_host *host = dev_get_drvdata(dev); int ret; - ret = pinctrl_pm_select_default_state(dev); + ret = mmc_gpio_set_cd_wake(host->mmc, false); if (ret) return ret; /* re-initialize hw state in case it's lost in low power mode */ sdhci_esdhc_imx_hwinit(host); - ret = sdhci_resume_host(host); - if (ret) - return ret; - - if (host->mmc->caps2 & MMC_CAP2_CQE) - ret = cqhci_resume(host->mmc); + if (host->irq_wake_enabled) + sdhci_disable_irq_wakeups(host); - if (!ret) - ret = mmc_gpio_set_cd_wake(host->mmc, false); + pm_runtime_mark_last_busy(dev); + pm_runtime_put_autosuspend(dev); return ret; } @@ -2011,6 +2008,8 @@ static const struct dev_pm_ops sdhci_esdhc_pmops = { SET_SYSTEM_SLEEP_PM_OPS(sdhci_esdhc_suspend, sdhci_esdhc_resume) SET_RUNTIME_PM_OPS(sdhci_esdhc_runtime_suspend, sdhci_esdhc_runtime_resume, NULL) + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, + pm_runtime_force_resume) }; static struct platform_driver sdhci_esdhc_imx_driver = { From patchwork Mon Oct 14 06:01:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bough Chen X-Patchwork-Id: 13834193 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 43DA9CF2590 for ; Mon, 14 Oct 2024 06:20:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2uvylZoVj2f5wE9XylQPvz8SlUsXond/T1pZkE8NnEU=; b=U9fkKmoFC7DSjzpAhhZeLdNILR 8vMVchx5UeoIZKEEn18akRV3uClitO7m3O2+obvWMtb2dSmmD/juY3nbTPqunP7pM9FPhNkl30dOP VQyijKGUedIrREIr/IrQhpNlpT0M+pxXdwB2gFKKrSfvEPCQ7pxmSnaXtGEVJTyrVgpyjxd83l4eG IJZdUxeQuw/pmydgmTyLCAz16FDs0bhuFKyagT3ko7d0mjMONTtl0fwfI5sR3mcyHNrwaBkn1O8Ti xHc2MD47Vw6DC3+j+X59mjspoqmZqY22ySVUlK5v4ogZhBU3nuGoz2PZN2rQgeNlNrJCrL7MMN+ll yV/oM1aw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0ERL-00000003s7S-3u7m; Mon, 14 Oct 2024 06:20:23 +0000 Received: from mail-vi1eur03on2062c.outbound.protection.outlook.com ([2a01:111:f403:260c::62c] helo=EUR03-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t0EML-00000003rR2-2Mtz for linux-arm-kernel@lists.infradead.org; Mon, 14 Oct 2024 06:15:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Po7s5Biu6c/jpaaoUN6XIMwgRonvWYXwVNUDA+W4KWhOaIzXX/Pc7dAK8rCROe4HAFz9SJPdFIF+fnVRCoHZJaMNEnnmGv5iwRU8fQB+IDaNPwsncxafW1dmYICrMX8Q2tEGT96mj/5Yz9FdJpSnnOxHLTHpeCcxE8EkoGOpCTGJCkQZQdsDhzslB7OXG+ZqgWU+t/u+Jzzggubife8LhRkJ3OtsboBfx72mr/O9rpRmUIvsXZboYTrIyVWpyivJTme+nGgme0Ml+Kvigv3w90tAizS51garL9m03uhZf+DLevGriJkrrzy1flPzbm90mvjoSWvEgAsFPU2Y4cZeSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2uvylZoVj2f5wE9XylQPvz8SlUsXond/T1pZkE8NnEU=; b=SeWF1C3ntLjU0BbC2lTxDQFjSI8XSjMoFkYVLb64y9GFNYG5GVb8l5jYnI+xMiNOBCTzBQJcWMT/GDod1P3CLw7K+LurThUandtTEmGIAsSJ3q14GjDD8pxMkJ2SccHqJMWDNTi1YxnXp7MyumDLNHwOE2FjRfZ10Yk1OhKUBQwZ5UMmiwUVhe4/IywXzlrJKtSMyZ/bPXt6yoRRzqXsqharVzhzUwX9AYNDnuE1wiNafmAbN7uBVUtunO+JFqHRMWBiDxEG4lFN2JDigEEph2elLb7VY6KaD29wuC2Sd6+hkwNbvXsU1dZxpY2l6IEyR4huuryVvCTukeMeZPhXoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2uvylZoVj2f5wE9XylQPvz8SlUsXond/T1pZkE8NnEU=; b=jTYDPl1ucQc5LTCVZDB+Jyjro806LzzuUletKtL6EPifohRakbrDHf6Pas6Ys92QvrZ5t1Cc9SPVExnKT6pmJA7mzEyEjZYRHf8iheuLU7a+K6eePXKNgKssiVZS7BAlzzqyy+C5MLw+o/w3Xvql7Gr7VyjfzhyEoMMlvJIEj+aOWN2o4qL4f1/eOQRZ+jdtF23SUL7JAHojm5KCfZlwUyre6JRwtWF899HG9YUVKDn5wMUKsmCEG0RIT3gC8sEu+C0D0T9Ts1fczSNFYXXC2B8bxIEI1zTqQg6g8NG1SOAtXTaJoLcBnVLXrebIQKWazo4YE2E4TZC5g+/p38TRvQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) by AS4PR04MB9459.eurprd04.prod.outlook.com (2603:10a6:20b:4eb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct 2024 06:00:37 +0000 Received: from DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334]) by DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334%7]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024 06:00:36 +0000 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 3/4] mmc: host: sdhci-esdhc-imx: save tuning value for the SDIO card as wakeup source Date: Mon, 14 Oct 2024 14:01:29 +0800 Message-Id: <20241014060130.1162629-4-haibo.chen@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241014060130.1162629-1-haibo.chen@nxp.com> References: <20241014060130.1162629-1-haibo.chen@nxp.com> X-ClientProxiedBy: SI2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:4:186::16) To DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9496:EE_|AS4PR04MB9459:EE_ X-MS-Office365-Filtering-Correlation-Id: 1bc3322d-c3a0-4a93-dc40-08dcec1585ea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: j3ymP+Xqp+YDWj99DEORqBH8cNLRoJO760AzB8ZSsqtFk2CUI6wGHYhd6ed8b4Q9AqQxqROcCy8oFwNzTMIaiZe3eUwDyVJ1twsNl/2jDdXNxNQosLAU4OkBNrCviyrPr2/FtTnxug7zUK6psYISQNxGD/5ihS3HBGUe3v0I/nt7tbZrEi+VS+eGMAFsDbtkvFhOZ6UsnkoVGYcJHY1Tj7s4nfLAWKGokNHPgPE5yyqJCHq7fYWjvvAuOgmDkzARaWWFW92YCjfpLarcGhunn0AKNmChKbFfIpHrjfO3trKhAa8MgRoSuygLfLaT32RIpaFKSXPKCmbZGrrXPvn1KxB1hfUpiLiiyBvFAbXwRE2q6Eo2m0M5vCy+3lAZAL9uhvXfG4WFJIFPvSWPvezATCfVYHs6K7EVhwuPn1ATwPodWVg/J0NEj9VAdWjcU9eGSJfP7wx5xxfYzv4o/wL1mMueE0q+QmNYJZtLZ1WuE83ALi9eFe3dgqFw2Ad6ozTKWSsKxBhIm5MejUnjW7ihXoqjkGkYz+9RF1+5jAxdWOCvlajjDNjD333AyM0BWFK0erD6eL5hfclZdi7fNMTYnnA8drhb6E/pPfsenvsmXmyRrDSI1rxlptHxZXNQ02viJHuRqr5STWOKrEHaqL1/JNByTbpvSv+DeHMT2Y8++RNTpYMqw1xKlbuvQcYIsTQ9NueVmCXWjp4ZUUR3M5TsFbOFz4IQGsN5F8eT02G9MYwoQOUehud/otGW+rgMTIioTfh9Cx2m9BLQ2PCkiOoGWlaGi7lZFJNWFi2dKfK5JpywPyiih7O+ceSrYDW1E1xp2awtCvt7BMTXSliDeEz0a/dGsIu23bKvSja3bWkPzLtnrqXVl/CZaZoGxcH8YVSDjHo0GucuG4mC9PVxkTF2ANoRnPyTnsSuetsnznSSDPX7UOoZDNlZgxwVEYTEVNWykly+YzUS+kFWyBClQQlLav5PHgqrB0nyyXA1jkzYmXwm/q/Zhh7J0ejq4GHTw8SJpFhNCuiwFtyShWC7NPCdOx9Lgu5WSRDNRbykKW+dtfbvrdxT+/jqDS0zGR6xq7v8euv7WbCIp0Jtjh8TVQeORySCr8lZEEN3a5n/OTaJ1Ta71Z95E48pZIjlzqRDLnBOM8focl7gFqAaYhLD1b5LMXv9jn9IrTUv7FxIxqrDfXaVBXLPvybgquPAgbRkP/5FyqNNn9hOy8tkNAfXlya70o4H+DInbrnMBGcUBspNto9Y9FbsbbeRirg/m+uZeK7UQLG9WpuA2r60cejfH0EZ7pFJGRbF4D4ahKD3lBg7+h8yHIbAz/mQ8fnUgMPlLdgY473KUwP0ANws46ItOy0RlA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9496.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BkhAWneLOmKCoGjiJfBwIxv54E7fWLsmsbU9X/Ik7+PF0cpZhu9i1dTtqdbKLYxGExpBJNcwVa3HvAMmd/2WlHexyZKZIfyYYDT7DjESn/PGEdv8AScVcTPobH0JgEV4VaBBJZNZ/YNjQWvDXtXzSAfR35MjL4PIiBRijtYLMr2ecMLCyuuBNTYbPNV2i/Qi3xla+9+qsLNvWLHkzMK6/B4egWngbTFuqjV4DXb0JEnYxuqPJhWhNlfBVtnMqWuQ+GNMy5KoWN4snasjob5AQUapqU84kgp3nZPDZ8hWAIrAoADBOih3U/929WEegTsL+x3dYldWhniM4R41DuRPE1/oXUDYzCxUYKQL3CMroN70wysX+tYAyxcXDw2ZRxmJjrbRrYB57dxX+ulAEGvz8jGOoA6f48nkrjZJC/upCPIs1VC3LEmbM6VDsZccqMZdsHqx/0/gqxxfkXzKE7AL67Nnju7YJrh/wkzD6OmEwLem/IJ/ss9NhHmH8w/4bdGXk6YW26BV118IoW1hCjqFRi+U8rp6H0c5fZ73TgeVg/mTKnbectS6bND9wQgGeTFPu0ZuvuqzRCFdg67YNAkAtocWZvCTXtkRoQkJY9HtaeM/RLvdMxpB1MiTx709mDErFVSGeR3QtJUHE2s6tawGlDk4DLZs0vBm6iCNe+7Ql4pN9gLVMiJzPNpMiP++iHRqbvJ0CGAe2IdzPo70vCQT4x8gQ8p1g0aPsdLjvocVKGkDBdOR0FAG6R7DFnfhPOo2Q8llVECLpHHsGan5kX2eHOl1EhTYVZJwY2CN/LhkEBNwOvDtsuK73+2LVdEqOxVr0CeHq3XKPhUav1G1a7PypLsv01UwoI8NFB1Ct7/lerMoeVGzNaHRjmP07JmOLMP/1n5uoZYNnPUQhAzfgnE0fxEdqR5VZ31PWG8pMhX/XIh+JqD1Zu85gYvYF1CEIkbIJiiA/fYiskg0/HILmt76NSPylH2o5zLweybpdShakjU82Ipo+674fUyJGDGqd8BVLBpO7aOjkKTaOU+/5MXMdE1UvQuisDWRmBHPijpA3w4Ibx7tK+hottV5vwa2kaglsQm8ozy7qOlAJF9MsZyqPaID+D5mT4awyswE6jpeTp0A6dE7mBIo5IR3uDmczHFf3KVgbpqdVGuwguqtkOYLOYg4R97n/Co6nKFvUYenM3Iu09s8gqMug9qzjY99O7TrpZrhAvwrIg2G+xUPDviMBvSnQ+Xr/dy/xxHR3ZhE8CPybuXsXemudFnO22w+zTscy5mMSgimZjqaebpVcdqSVhgoP6v5SVtto0Sav3PLHwLIIvNm2zUORbuGjXD5fEFX33ar05iaBQx9fY/GaABgfG59B/oO48iYKZpVxtcunVbSEPhRU67EyUbIC60ktCZCFrG+3AS2psG8SrBMIXmKgUbmUBw3pykj4t3KHMConG3ufOjHuDR2Ws97/k0/yNHzofav6H2Y8jwwaZCYEHk/O1rzrlREpki0AZDCvkzVpaRwy8cElWplssm2nubPmSLvpc6vn1JKYGNOqoyZpi9KMqtMrKByke3r0YSvvvKVPYObODQc10q51612LR0me0mV X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bc3322d-c3a0-4a93-dc40-08dcec1585ea X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9496.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 06:00:36.6587 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BxO6PDx2qFYkSGYm133fXJ7tCmCz59C+kOlyHLB9B2+xOL+NJbQNfv9gf1rHyZi9G0eQttuoEiUZdIawwlXdBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9459 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241013_231513_791575_1D3C99C3 X-CRM114-Status: GOOD ( 24.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Haibo Chen For some SoCs like imx6ul(l/z)/imx7d/imx93, during system PM, usdhc will totally power off, so the internal tuning status will lost. Here add save/restore the tuning value for any command after system resume back when re-tuning hold. The tipical case is for the SDIO which contain flag MMC_PM_KEEP_POWER, and contain pm_flags MMC_PM_WAKE_SDIO_IRQ. in mmc_sdio_suspend(), SDIO will switch to 1 bit mode, and switch back to 4 bit mode when resume back. According to spec, tuning command do not support in 1 bit mode. So when send cmd52 to switch back to 4 bit mode, need to hold re-tuning. But this cmd52 still need a correct sample point, otherwise will meet command CRC error, so need to keep the previous tuning value. Signed-off-by: Haibo Chen --- drivers/mmc/host/sdhci-esdhc-imx.c | 94 +++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 18febfeb60cf..4173967022d0 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -80,6 +80,9 @@ #define ESDHC_TUNE_CTRL_STEP 1 #define ESDHC_TUNE_CTRL_MIN 0 #define ESDHC_TUNE_CTRL_MAX ((1 << 7) - 1) +#define ESDHC_TUNE_CTRL_STATUS_TAP_SEL_PRE_MASK 0x7f000000 +#define ESDHC_TUNE_CTRL_STATUS_TAP_SEL_PRE_SHIFT 24 +#define ESDHC_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE_SHIFT 8 /* strobe dll register */ #define ESDHC_STROBE_DLL_CTRL 0x70 @@ -234,6 +237,7 @@ struct esdhc_platform_data { unsigned int tuning_step; /* The delay cell steps in tuning procedure */ unsigned int tuning_start_tap; /* The start delay cell point in tuning procedure */ unsigned int strobe_dll_delay_target; /* The delay cell for strobe pad (read clock) */ + unsigned int saved_tuning_delay_cell; /* save the value of tuning delay cell */ }; struct esdhc_soc_data { @@ -1055,7 +1059,7 @@ static void esdhc_reset_tuning(struct sdhci_host *host) { struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); - u32 ctrl; + u32 ctrl, tuning_ctrl; int ret; /* Reset the tuning circuit */ @@ -1069,6 +1073,17 @@ static void esdhc_reset_tuning(struct sdhci_host *host) writel(0, host->ioaddr + ESDHC_TUNE_CTRL_STATUS); } else if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING) { writel(ctrl, host->ioaddr + ESDHC_MIX_CTRL); + + /* + * enable the std tuning just in case it cleared in + * sdhc_esdhc_tuning_restore. + */ + tuning_ctrl = readl(host->ioaddr + ESDHC_TUNING_CTRL); + if (!(tuning_ctrl & ESDHC_STD_TUNING_EN)) { + tuning_ctrl |= ESDHC_STD_TUNING_EN; + writel(tuning_ctrl, host->ioaddr + ESDHC_TUNING_CTRL); + } + ctrl = readl(host->ioaddr + SDHCI_AUTO_CMD_STATUS); ctrl &= ~ESDHC_MIX_CTRL_SMPCLK_SEL; ctrl &= ~ESDHC_MIX_CTRL_EXE_TUNE; @@ -1147,7 +1162,8 @@ static void esdhc_prepare_tuning(struct sdhci_host *host, u32 val) reg |= ESDHC_MIX_CTRL_EXE_TUNE | ESDHC_MIX_CTRL_SMPCLK_SEL | ESDHC_MIX_CTRL_FBCLK_SEL; writel(reg, host->ioaddr + ESDHC_MIX_CTRL); - writel(val << 8, host->ioaddr + ESDHC_TUNE_CTRL_STATUS); + writel(val << ESDHC_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE_SHIFT, + host->ioaddr + ESDHC_TUNE_CTRL_STATUS); dev_dbg(mmc_dev(host->mmc), "tuning with delay 0x%x ESDHC_TUNE_CTRL_STATUS 0x%x\n", val, readl(host->ioaddr + ESDHC_TUNE_CTRL_STATUS)); @@ -1555,6 +1571,58 @@ static void sdhci_esdhc_imx_hwinit(struct sdhci_host *host) } } +static void sdhc_esdhc_tuning_save(struct sdhci_host *host) +{ + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); + u32 reg; + + /* + * SD/eMMC do not need this tuning save because it will re-init + * after system resume back. + * Here save the tuning delay value for SDIO device since it may + * keep power during system PM. And for usdhc, only SDR50 and + * SDR104 mode for SDIO devide need to do tuning, and need to + * save/restore. + */ + if ((host->timing == MMC_TIMING_UHS_SDR50) | + (host->timing == MMC_TIMING_UHS_SDR104)) { + reg = readl(host->ioaddr + ESDHC_TUNE_CTRL_STATUS); + reg = (reg & ESDHC_TUNE_CTRL_STATUS_TAP_SEL_PRE_MASK) >> + ESDHC_TUNE_CTRL_STATUS_TAP_SEL_PRE_SHIFT; + imx_data->boarddata.saved_tuning_delay_cell = reg; + } +} + +static void sdhc_esdhc_tuning_restore(struct sdhci_host *host) +{ + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); + u32 reg; + + if ((host->timing == MMC_TIMING_UHS_SDR50) | + (host->timing == MMC_TIMING_UHS_SDR104)) { + /* + * restore the tuning delay value actually is a + * manual tuning method, so clear the standard + * tuning enable bit here. Will set back this + * ESDHC_STD_TUNING_EN in esdhc_reset_tuning() + * when trigger re-tuning. + */ + reg = readl(host->ioaddr + ESDHC_TUNING_CTRL); + reg &= ~ESDHC_STD_TUNING_EN; + writel(reg, host->ioaddr + ESDHC_TUNING_CTRL); + + reg = readl(host->ioaddr + ESDHC_MIX_CTRL); + reg |= ESDHC_MIX_CTRL_SMPCLK_SEL | ESDHC_MIX_CTRL_FBCLK_SEL; + writel(reg, host->ioaddr + ESDHC_MIX_CTRL); + + writel(imx_data->boarddata.saved_tuning_delay_cell << + ESDHC_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE_SHIFT, + host->ioaddr + ESDHC_TUNE_CTRL_STATUS); + } +} + static void esdhc_cqe_enable(struct mmc_host *mmc) { struct sdhci_host *host = mmc_priv(mmc); @@ -1883,7 +1951,17 @@ static int sdhci_esdhc_suspend(struct device *dev) (host->tuning_mode != SDHCI_TUNING_MODE_1)) { mmc_retune_timer_stop(host->mmc); mmc_retune_needed(host->mmc); - } + + /* + * For the SDIO device need to keep power during system PM, and enable + * wakeup, need to save the tuning delay value just in case the retuning + * is hold when SDIO resume, but still need to switch to 4 bit bus width. + */ + if (host->mmc->sdio_irqs && mmc_card_keep_power(host->mmc) && + (esdhc_is_usdhc(imx_data))) + sdhc_esdhc_tuning_save(host); + + } if (device_may_wakeup(dev)) { ret = sdhci_enable_irq_wakeups(host); @@ -1903,6 +1981,8 @@ static int sdhci_esdhc_suspend(struct device *dev) static int sdhci_esdhc_resume(struct device *dev) { struct sdhci_host *host = dev_get_drvdata(dev); + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); int ret; ret = mmc_gpio_set_cd_wake(host->mmc, false); @@ -1915,6 +1995,14 @@ static int sdhci_esdhc_resume(struct device *dev) if (host->irq_wake_enabled) sdhci_disable_irq_wakeups(host); + /* + * Restore the saved tuning delay value for the SDIO device + * which enabled wakeup and keep power during system PM. + */ + if ((imx_data->socdata->flags & ESDHC_FLAG_STATE_LOST_IN_LPMODE) && + mmc_card_keep_power(host->mmc) && mmc_card_wake_sdio_irq(host->mmc)) + sdhc_esdhc_tuning_restore(host); + pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); From patchwork Mon Oct 14 06:01:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bough Chen X-Patchwork-Id: 13834178 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 24F99CF2590 for ; Mon, 14 Oct 2024 06:02:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MEW+ck023C1R0wEnHSWTj2drmMrl5/32Ipeta6xg2yI=; b=eTK6zlFSfzbcdFYVdHdQs4QaOx W7qBOXjGgLmK2GkjFIwcIxDzjLq7rUHw/XoKyLp08Ut51/FqE2LlrtJNi61iJ38q5Tj0iIdw68CiT fUClGdP8a9NErQB50FLKjgjRSPKxpN3d4igSNGcEh/28N3OUADGxzQFAhXaQIj7N/4zWTW1wsOk71 TElEIrRm8UAuhiTk7nvzPG3ZbCiQxCCveO50Dxt6G2X0S6ozWuSuZCrxNXQowRWViUWbve2tlvZPC oRQ2f9E1/gZfNeuMHHVwtKyDMSmNoY4BwyQUUAt06iVRx4eG8GjeDqf61M5KhtkyxPegl4I+CBlci jO2khyJQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t0E9r-00000003pKP-0Bkf; Mon, 14 Oct 2024 06:02:19 +0000 Received: from mail-am6eur05on20610.outbound.protection.outlook.com ([2a01:111:f403:2612::610] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t0E8L-00000003otT-2n5f for linux-arm-kernel@lists.infradead.org; Mon, 14 Oct 2024 06:00:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g9DKM2PAGoc5EH2GdnHRh++0qG33L42K06XGYjHIkL/rp3ktuIxX5abyLCDVx+lbRkjxKOLVxr1ZLtPw3nO+bfE0wtE35z6yMPWaYlAj8VN3Gv/zmSNO7759+RLaQKbnrbo4kfrqyL4BqVx/+DaitZCJzwFgwbAagtBkH2/u+OqXtq1nxQn6nlMrg6Xxoc7BrEUVPpcOgy+JM7VxIE+GKsq9g4l8sKC1StvlG4BPWAAWkJXAAb+D0fkjozhPOLO8LflALzeZ49s3ClltaI1tOXKBOgIQGa8Qcm6uszw7jvPlXqCfzdz7ep6UAu3JgJUmZqUwcQoyZleBKSLiuiUPlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MEW+ck023C1R0wEnHSWTj2drmMrl5/32Ipeta6xg2yI=; b=I3pLm0aunJeFADpFkZOYyWPvPpUss9Ric9fK5PTJdwM6DCjtqVlQmZ0QaDWKnw4LDwxvujKSSlyThZNmPu4sNJE1GQbm0cTUbCGbDhOVBCdJKgY+Nr9C3L9Njo9cACNvWGaOShdp17MpwAn6L8Pbbsou0nhPQqkaoJHAY7ObU+9p+vPRNVyM7oh8eolaykD9BGtJ4zuWj0ad4EKIi77m2h5vb71PP5zzZXkzxwfER3mrUsaZddX9fVIWEcX/Rcw6Dfe/1SdEe30ua9YQm/gV0s2GjHlo9GZvpG3+uqWDJUwe+Uqov6PspIpzvVBE0qbd+cZQionGGSpNqL9OUCMjnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MEW+ck023C1R0wEnHSWTj2drmMrl5/32Ipeta6xg2yI=; b=DrXeqW4yozTMksFF1jwxVdPOjw2QEiRxybyWmi0SBk2In/IWcJsmwttCQi2rzrxQREuzezLYuhSuyxfGcSpfJ2E80HQvBL7OIhTSxCSf3cEOlXuqx5K08QpCkx24UG63uFmbUN2Xt+wMmbOmwItmC0V/84GTMnyPuNBNNg3CFNYgUVyalDN4RGay1DtIcwp068DLNHzjJrmntVeUfllQlhcRrQUoKj85fe071VF5MCx5GWRY6sWU6BJ0YF71vJ1LEZKxiIFvN3DAeqYb1R3OIC1+3aOyhkymbgcU8ZzTfglVGFcsHIzPWk/MBBzrfip0Zel10+Y9ERmiS+9t56RV0A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) by PAXPR04MB8224.eurprd04.prod.outlook.com (2603:10a6:102:1cb::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct 2024 06:00:40 +0000 Received: from DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334]) by DU0PR04MB9496.eurprd04.prod.outlook.com ([fe80::4fa3:7420:14ed:5334%7]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024 06:00:40 +0000 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 Message-Id: <20241014060130.1162629-5-haibo.chen@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241014060130.1162629-1-haibo.chen@nxp.com> References: <20241014060130.1162629-1-haibo.chen@nxp.com> X-ClientProxiedBy: SI2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:4:186::16) To DU0PR04MB9496.eurprd04.prod.outlook.com (2603:10a6:10:32d::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR04MB9496:EE_|PAXPR04MB8224:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c41fabc-9305-4897-0918-08dcec158834 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: Aur5Owf93diMl1B6fs2wMDiqVo0+auyMxnjQj4qZkxBRLlx0OftoPXMX2unLqri1ijeDEZscN3sIgnJ4P9ws47SySOXNKc7Tw8970f7X9R8F3g+9SpbgMoM314KhzY/J7hGq44gfRmnL28F+nQDBTtNjcSJf5b3QHNOAXPI832W8b8drRlCiG1l8gR87KbBzc3QP8+GXDTZpXBt+HPJhZAxAkWUtR3+WjKBJQClVG+Mq3NPVR5isI+aij3nEo4hkADIQiEiUjg2USra8M+UPNeeJb1fiBePXt6+gKvPedaWShI2ORTSilZWueSwIE2QfRqnhmA3sTfn3RAhrL5D25POe4nr4IDWOfPINUYqaYdRl/rh1kV0VYsg8ebxVi6d52wbpvlKVXjyeVH3anxF3H7FQ8BK5xl8KSNrwBzqRK0nX6lBGBaBPDtznPb6vKQYEowHT4eRl2vXNFaLPOgsj+LYLg8KQXZp915MOjRqUsigBP4+zjF8a4ZTXZpPN2Qo+BzrYn3H6tUpDQurBkjAMwcFVgCAncspmEEk0fduW8T3Z7Et9L9JkLt+Tqpx/rw/0HBXJBcWl2WxMethSbuGuT6DvrF44car+6sghVdagd25R3glh5PeScMGv+BgbykMMmB8n8siiOJTCI9FZucK90kDDkWpIqRi046Fhco8puY8zNTFX5c10HwRdBDY2BT+Zyq+XFSxW92R/JukYdstQUFuMgEqRWd5t6AJVd4M1JE6l++htLuNDXjc1UltVxP+dykCxLGEKjilh7Sq0dq/dUSaA/CaBiqW1IARu3jq8n80k9F6rZddnYGHr6XeABB1k8W78QiBV8mWJwe2xtZ08pYB/uUJKWOiJ3i/56Y6X+nQ1AjRqHyb7Va3Ak31rUeRuQhQ05WOe7PAqW0Wn6Hehn6/2noFDiFhqoZ0lpuupyuh1GCvKh7vr86kDBaxFFnGdtwCOrDg2wekZmsdiGRmnAtM20JttaIt5JB2H0wnNlm4zAyTnIgSHSBipbN7ch5WohBKKvvRsLZOfun+nh9kgW26TAMn5G69ZcePFtHR4M8Bu4AoTupnIf6Ism0x1Jv8LLxmoWNTIiA3fIoulXD6n6HSPCl1DX+aBW6N+A/sqzExzqUth2Wx9tVFY39Gnux67CyIz5VoqLvktNnUN259mwfN204ZRM9j6O+/X8hzx2I6fburyk66gUxzN6z3KTQ9Oj47z4H16OTeK7KQakoTwwQX36FXH4ywcMgge8SC0jeCspDpBaGpWM6hLxJcfTCJWFnCtcVJqkgZ7vBkPxDMzSL5UvAceuLvPxvvt32S18D/SuWGDL20mxxk2gH/hwhvKE4d2dICauEK5MeZQLFDOZw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9496.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014)(52116014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PSG/rGY0w7+oR5llUDC3VTE8odkeM8GeP1+fjaTR9yyyGi2JrPl5fnOHj9u4hfT6Tm9NUWZiQQQnOSBG82B9caSoKH0YoKuuhy2guFYJrsKtJfyvQbw5+0JEOTJexn19k5S0FrBQNiDTd5cfNQ2euQaP8UudWXvkbgb60qlVZd+XI1dn7llGa5nUNRBaMW7x1iuie/GtaeL3ooOF0EnlJdMIOcEVV6wDJ5w/5WG+Rc8e3ruARO4zh2mA7N8RiOVI8v2c+ZCVSqK2oDtrIioga+Jgx9c6SlpC12sPg7rgj03UghLEJ2WgYBRTxtSQ4tgILw6IjxikpOL+Mgql/f+D8r5smm2yqvyp+3FVxpEvL3reKCAIvAk8E9yjTZ1KFVi4xIIkRXVhjGF6Oip8shbvCkNYpmIRTo2kYKsXsc9AcDuBXDXGT0WCCkJSfx28ZQWt+5cWUwjt75aYIEgdoWZJMZnXltcaqroPFcJ2cfo+jz2BK79AEKoV5Nqlw45z0xi1s9RzzWvxciVCpwQNp+x75YlY50FAegOCZ5oHyHsvlLTz8kR5Kkhwr6W3PZFkWOhwdtcdaPl1ds8m/FCN21FiFndA5zbQ7Z63AucPZzu3iNh6oJMLUFXE0EO/+i5hYcUcZTMo7DM0iRcZWM1gu2PDgpMIh+XEMomIyVdC267HlZ6TqCvnclq33F1Bxo3mQI16RaAImdUpClIVE4IcdWrxTHeDNSd3bjBkldsK42iWQfRPe7FYmZTJfx3uDInh/hpKSqR2xoHrL6A+kxuIRgmQ1RfuOsN1iFiRZ6VFpLrnuXo76qxbQBpMevfzrqO6PjpHIjutTlbX6V+hK79O0cCJqfEk4IzZeHeRMhg2Xju2mBUqtvpwUhhEvgT5tTlXXNyeqp0/xoBJ+aXpm+NdtNzaJL16xH+4i8L32WKUtndTG0cJIlvIVYHOmQIBItEP+R3Fp910YhV1wSTADGm0f5aEK3CpYOYDtodaM1/mrEJGw1tnsUamctXxcbePB06KHajYHlXVZLRmo+TKD12PXZPVVQ9FoVJRre4m1LE53UnQ+OnhP2qqBxef6dkliH3FEG9pf8ytDYRdtgghgL+w+jyuItxQnVSRi5SkVVukNpoJM/XRLHT1rUIxnqaJSdDQcUbCfxBpnTyQA8ibaDFoyr/RLTS259HFTvE1MkX+UZ2bvHWhUc4ezIosIc3kbfXMEp/7Ff+H055ga/kjW2rgY9wKqBuYkN+sRRu5AZ1eKaf0AvJdYBDHaHYEgQNrgG4/bm5cSPE70Rz9DkP7pOMM1PRjgB7fQ9BM5wizOfzRhi16QyrLboZ7uhH3iIFPIkSLLg3ayzDVnIkzWe9Te7ITivxFAGowkp0Kv0q1KaH0O2Ppw93hwRRxfi+8bClUrDWKYycl3gGQBTJ3wKZ8wFC/xQJq1tN4X24Tan7SY4O5GFbkFScJ7fH8Dp92gI0kajyY+0Ec0kw2oyr1YsJouUpWGUubg0YFwqKjXfzRdeWhwJuHYTetQ+bNOofyRQFEB6DlSp4RZCvLumvgrQ52SNC28gpAZ0MSyzQ+PA5u8DAHuuneJhlvgyKgjgdws+0Sur5KWDOp X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c41fabc-9305-4897-0918-08dcec158834 X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9496.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 06:00:40.5857 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: r875Lh6Zi/vchDxp8itrWhJp+w3WXoEybP1vBuwk08AMJm6DNr7oCDN1A/kMFiP0M8EYVvsKIOGtHQLpkX/pYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8224 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241013_230046_185099_63D287DF X-CRM114-Status: GOOD ( 14.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Haibo Chen 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 --- 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);