From patchwork Thu Nov 12 07:52:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?V2VuYmluIE1laSAo5qKF5paH5b2sKQ==?= X-Patchwork-Id: 11899271 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7351C138B for ; Thu, 12 Nov 2020 07:52:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5C6CE22203 for ; Thu, 12 Nov 2020 07:52:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726777AbgKLHw0 (ORCPT ); Thu, 12 Nov 2020 02:52:26 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:53539 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725860AbgKLHwT (ORCPT ); Thu, 12 Nov 2020 02:52:19 -0500 X-UUID: ac6a2d402efa47e5a9c2886a796b2657-20201112 X-UUID: ac6a2d402efa47e5a9c2886a796b2657-20201112 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 128975411; Thu, 12 Nov 2020 15:52:13 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 12 Nov 2020 15:52:11 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 12 Nov 2020 15:52:10 +0800 From: Wenbin Mei To: Ulf Hansson , Rob Herring CC: Matthias Brugger , , Wenbin Mei , Veerabhadrarao Badiganti , Yoshihiro Shimoda , Baolin Wang , Ludovic Barre , Krishna Konda , Bradley Bolen , Chaotian Jing , , , , , , Subject: [PATCH v1 1/3] dt-bindings: mmc: Add optional cqe off properties Date: Thu, 12 Nov 2020 15:52:06 +0800 Message-ID: <20201112075208.28183-2-wenbin.mei@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20201112075208.28183-1-wenbin.mei@mediatek.com> References: <20201112075208.28183-1-wenbin.mei@mediatek.com> MIME-Version: 1.0 X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Add optional properties for cqe hosts which are used to set cqe off during suspend flow. Signed-off-by: Wenbin Mei --- Documentation/devicetree/bindings/mmc/mmc-controller.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml index b96da0c7f819..457c9a84b988 100644 --- a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml +++ b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml @@ -164,6 +164,13 @@ properties: description: enable SDIO IRQ signalling on this interface + cqe-off-in-suspend: + $ref: /schemas/types.yaml#/definitions/flag + description: + After suspend, the mmc host is powered off by HW, and bring CQE register + to default state, so we add the flag to re-init CQE register after resume + back. + full-pwr-cycle: $ref: /schemas/types.yaml#/definitions/flag description: From patchwork Thu Nov 12 07:52:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?V2VuYmluIE1laSAo5qKF5paH5b2sKQ==?= X-Patchwork-Id: 11899265 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 676B6921 for ; Thu, 12 Nov 2020 07:52:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4FE2120709 for ; Thu, 12 Nov 2020 07:52:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726337AbgKLHwR (ORCPT ); Thu, 12 Nov 2020 02:52:17 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:53523 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725884AbgKLHwQ (ORCPT ); Thu, 12 Nov 2020 02:52:16 -0500 X-UUID: 2eb16f9831d14d61be48c783d632a78e-20201112 X-UUID: 2eb16f9831d14d61be48c783d632a78e-20201112 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1472409551; Thu, 12 Nov 2020 15:52:13 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 12 Nov 2020 15:52:12 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 12 Nov 2020 15:52:11 +0800 From: Wenbin Mei To: Ulf Hansson , Rob Herring CC: Matthias Brugger , , Wenbin Mei , Veerabhadrarao Badiganti , Yoshihiro Shimoda , Baolin Wang , Ludovic Barre , Krishna Konda , Bradley Bolen , Chaotian Jing , , , , , , Subject: [PATCH v1 2/3] arm64: dts: mt8192: Add cqe off flag Date: Thu, 12 Nov 2020 15:52:07 +0800 Message-ID: <20201112075208.28183-3-wenbin.mei@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20201112075208.28183-1-wenbin.mei@mediatek.com> References: <20201112075208.28183-1-wenbin.mei@mediatek.com> MIME-Version: 1.0 X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Add cqe off flag for MT8192 mmc nodes. Signed-off-by: Wenbin Mei --- arch/arm64/boot/dts/mediatek/mt8192-evb.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/mediatek/mt8192-evb.dts b/arch/arm64/boot/dts/mediatek/mt8192-evb.dts index a4279fa87c2b..0df78e4ea0d0 100644 --- a/arch/arm64/boot/dts/mediatek/mt8192-evb.dts +++ b/arch/arm64/boot/dts/mediatek/mt8192-evb.dts @@ -41,6 +41,7 @@ mmc-hs400-1_8v; supports-cqe; cap-mmc-hw-reset; + cqe-off-in-suspend; no-sdio; no-sd; hs400-ds-delay = <0x12814>; From patchwork Thu Nov 12 07:52:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?V2VuYmluIE1laSAo5qKF5paH5b2sKQ==?= X-Patchwork-Id: 11899273 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 97763921 for ; Thu, 12 Nov 2020 07:52:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 80456221FE for ; Thu, 12 Nov 2020 07:52:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726734AbgKLHw0 (ORCPT ); Thu, 12 Nov 2020 02:52:26 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:53561 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725884AbgKLHwT (ORCPT ); Thu, 12 Nov 2020 02:52:19 -0500 X-UUID: f86e32c304ef4ebaa5b93d08d8b7ec87-20201112 X-UUID: f86e32c304ef4ebaa5b93d08d8b7ec87-20201112 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1451875633; Thu, 12 Nov 2020 15:52:15 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 12 Nov 2020 15:52:13 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 12 Nov 2020 15:52:12 +0800 From: Wenbin Mei To: Ulf Hansson , Rob Herring CC: Matthias Brugger , , Wenbin Mei , Veerabhadrarao Badiganti , Yoshihiro Shimoda , Baolin Wang , Ludovic Barre , Krishna Konda , Bradley Bolen , Chaotian Jing , , , , , , Subject: [PATCH v1 3/3] mmc: core: Set cqe off during suspend flow Date: Thu, 12 Nov 2020 15:52:08 +0800 Message-ID: <20201112075208.28183-4-wenbin.mei@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20201112075208.28183-1-wenbin.mei@mediatek.com> References: <20201112075208.28183-1-wenbin.mei@mediatek.com> MIME-Version: 1.0 X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Before we got these errors on MT8192 platform: [ 59.153891] Restarting tasks ... [ 59.154540] done. [ 59.159175] PM: suspend exit [ 59.218724] mtk-msdc 11f60000.mmc: phase: [map:fffffffe] [maxlen:31] [final:16] [ 119.776083] mmc0: cqhci: timeout for tag 9 [ 119.780196] mmc0: cqhci: ============ CQHCI REGISTER DUMP =========== [ 119.786709] mmc0: cqhci: Caps: 0x100020b6 | Version: 0x00000510 [ 119.793225] mmc0: cqhci: Config: 0x00000101 | Control: 0x00000000 [ 119.799706] mmc0: cqhci: Int stat: 0x00000000 | Int enab: 0x00000000 [ 119.806177] mmc0: cqhci: Int sig: 0x00000000 | Int Coal: 0x00000000 [ 119.812670] mmc0: cqhci: TDL base: 0x00000000 | TDL up32: 0x00000000 [ 119.819149] mmc0: cqhci: Doorbell: 0x003ffc00 | TCN: 0x00000200 [ 119.825656] mmc0: cqhci: Dev queue: 0x00000000 | Dev Pend: 0x00000000 [ 119.832155] mmc0: cqhci: Task clr: 0x00000000 | SSC1: 0x00001000 [ 119.838627] mmc0: cqhci: SSC2: 0x00000000 | DCMD rsp: 0x00000000 [ 119.845174] mmc0: cqhci: RED mask: 0xfdf9a080 | TERRI: 0x0000891c [ 119.851654] mmc0: cqhci: Resp idx: 0x00000000 | Resp arg: 0x00000000 [ 119.865773] mmc0: cqhci: : =========================================== [ 119.872358] mmc0: running CQE recovery From these logs, we found TDL base was back to the default value. After suspend, the mmc host is powered off by HW, and bring CQE register to the default value, so CQE need to be re-initialized after resuming back. Signed-off-by: Wenbin Mei --- drivers/mmc/core/host.c | 2 ++ drivers/mmc/core/mmc.c | 5 +++++ include/linux/mmc/pm.h | 1 + 3 files changed, 8 insertions(+) diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index ce43f7573d80..c98486c8fb3b 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c @@ -284,6 +284,8 @@ int mmc_of_parse(struct mmc_host *host) if (device_property_read_bool(dev, "wakeup-source") || device_property_read_bool(dev, "enable-sdio-wakeup")) /* legacy */ host->pm_caps |= MMC_PM_WAKE_SDIO_IRQ; + if (device_property_read_bool(dev, "cqe-off-in-suspend")) + host->pm_caps |= MMC_PM_CQE_OFF_IN_SUSPEND; if (device_property_read_bool(dev, "mmc-ddr-3_3v")) host->caps |= MMC_CAP_3_3V_DDR; if (device_property_read_bool(dev, "mmc-ddr-1_8v")) diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index b3fa193de846..f5ae1f13a867 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -2047,6 +2047,11 @@ static int _mmc_suspend(struct mmc_host *host, bool is_suspend) err = mmc_deselect_cards(host); if (!err) { + if (host->cqe_enabled && + (host->pm_caps & MMC_PM_CQE_OFF_IN_SUSPEND)) { + host->cqe_ops->cqe_disable(host); + host->cqe_enabled = false; + } mmc_power_off(host); mmc_card_set_suspended(host->card); } diff --git a/include/linux/mmc/pm.h b/include/linux/mmc/pm.h index 3549f8045784..3dd1046f2c8f 100644 --- a/include/linux/mmc/pm.h +++ b/include/linux/mmc/pm.h @@ -23,5 +23,6 @@ typedef unsigned int mmc_pm_flag_t; #define MMC_PM_KEEP_POWER (1 << 0) /* preserve card power during suspend */ #define MMC_PM_WAKE_SDIO_IRQ (1 << 1) /* wake up host system on SDIO IRQ assertion */ +#define MMC_PM_CQE_OFF_IN_SUSPEND (1 << 2) /* cqe off during suspend */ #endif /* LINUX_MMC_PM_H */