Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1077142pxb; Tue, 26 Oct 2021 02:21:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyGGUEWFU+Jv3SH11+1Kj1ni1wrQSEADA9XCcU8napQCmob6J7uZE3GeCwuJIGbVOBsluDt X-Received: by 2002:a05:6402:5194:: with SMTP id q20mr3176130edd.294.1635240077896; Tue, 26 Oct 2021 02:21:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635240077; cv=none; d=google.com; s=arc-20160816; b=049EZcx7qwEKTYoxkS3ZN8V98N1jm1S1i0zjDUejp4bcRuPbX34/3Q/FPxXFADTxgX ad8C/oQ1b78NjxE2KAwVusMl48mGZp9tpnbjsFgmLdsLt/5Dw+qQyPUznOfA6fj1gSid 6bMg2unLDmZ3MFIL6tFRDIJyzUPc0ujL6oeSFxp+B10RM3HxS/sUTyGcrztKFl0uqRdE ZHCoczkyHfR2jfo/o/aCm/e91d/gy/G0PPk754eZHbFxhR+hYTu++OC6cF5bnAUkyuL/ 2rrgm5nHtkUlhFKbxYVxkIXYM9LbFObOeTCtVPzOO3/J5F8Cmzbx5mR4cSUYgjDPC8DO QqCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=2i+keqqPo6c/sxmZX2WZpSoqPgLRvBitQZ6wIttT8Ak=; b=erxZaYJLhMXve9hVmOPnOd5YziroJIOzYSquBqTToKicMysAAE6c+ItHCZaBK9kIK+ VOYX6yhjiBr5NoLikp4a9nABf2gl5o15E1VgG8E7uvwD9zuTv/9qbFcaky8tW7Oqyy5y FUeRo1/uQWt2wQB5XtQAxcjdKZqGWZ5BqcTlIHymqyHGzLo/qh8KCGMKpNAbSsMRhnRl XqcTeF4fioHgltjwf6FwBs67cv025KBSVVCa7AepYtgAFef0ksWFPmkyW/I6wfv6o1Oi BtEGjA3MIHu/RfRRqZUW2ACeq9K4J39OauJgV+rXwQk6kLYBdrz6IbMUZHK4cfyxB5Rl caag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i22si43611854ejw.286.2021.10.26.02.20.53; Tue, 26 Oct 2021 02:21:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231184AbhJZHKn (ORCPT + 99 others); Tue, 26 Oct 2021 03:10:43 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:51654 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S230433AbhJZHKm (ORCPT ); Tue, 26 Oct 2021 03:10:42 -0400 X-UUID: c034a33ab7fa4c408a95c9d376f5c907-20211026 X-UUID: c034a33ab7fa4c408a95c9d376f5c907-20211026 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1373369586; Tue, 26 Oct 2021 15:08:16 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.15; Tue, 26 Oct 2021 15:08:14 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 26 Oct 2021 15:08:13 +0800 From: Wenbin Mei To: Ulf Hansson CC: Adrian Hunter , Ritesh Harjani , Asutosh Das , "Matthias Brugger" , , , , , , "Wenbin Mei" , Subject: [PATCH] mmc: cqhci: clear HALT state after CQE enable Date: Tue, 26 Oct 2021 15:08:12 +0800 Message-ID: <20211026070812.9359-1-wenbin.mei@mediatek.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While mmc0 enter suspend state, we need halt CQE to send legacy cmd(flush cache) and disable cqe, for resume back, we enable CQE and not clear HALT state. In this case MediaTek mmc host controller will keep the value for HALT state after CQE disable/enable flow, so the next CQE transfer after resume will be timeout due to CQE is in HALT state, the log as below: <4>.(4)[318:kworker/4:1H]mmc0: cqhci: timeout for tag 2 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: ============ CQHCI REGISTER DUMP =========== <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Caps: 0x100020b6 | Version: 0x00000510 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Config: 0x00001103 | Control: 0x00000001 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Int stat: 0x00000000 | Int enab: 0x00000006 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Int sig: 0x00000006 | Int Coal: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: TDL base: 0xfd05f000 | TDL up32: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Doorbell: 0x8000203c | TCN: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Dev queue: 0x00000000 | Dev Pend: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Task clr: 0x00000000 | SSC1: 0x00001000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: SSC2: 0x00000001 | DCMD rsp: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: RED mask: 0xfdf9a080 | TERRI: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Resp idx: 0x00000000 | Resp arg: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: CRNQP: 0x00000000 | CRNQDUN: 0x00000000 <4>.(4)[318:kworker/4:1H]mmc0: cqhci: CRNQIS: 0x00000000 | CRNQIE: 0x00000000 This change check HALT state after CQE enable, if CQE is in HALT state, we will clear it. Signed-off-by: Wenbin Mei Cc: stable@vger.kernel.org --- drivers/mmc/host/cqhci-core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c index ca8329d55f43..b0d30c35c390 100644 --- a/drivers/mmc/host/cqhci-core.c +++ b/drivers/mmc/host/cqhci-core.c @@ -282,6 +282,9 @@ static void __cqhci_enable(struct cqhci_host *cq_host) cqhci_writel(cq_host, cqcfg, CQHCI_CFG); + if (cqhci_readl(cq_host, CQHCI_CTL) & CQHCI_HALT) + cqhci_writel(cq_host, 0, CQHCI_CTL); + mmc->cqe_on = true; if (cq_host->ops->enable) -- 2.25.1