Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp645295rwb; Thu, 15 Dec 2022 00:01:20 -0800 (PST) X-Google-Smtp-Source: AMrXdXt+etVXu6fJF+fSEaNA/d1o4UrGN1Ut72d03nD8UettDr2TYy2mIu4AgPGBBSOb+v8czL7z X-Received: by 2002:a05:6402:2919:b0:472:1436:73ab with SMTP id ee25-20020a056402291900b00472143673abmr5538917edb.28.1671091279816; Thu, 15 Dec 2022 00:01:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671091279; cv=none; d=google.com; s=arc-20160816; b=eY9sU55zG38gqXNTWHKmbCNhZFgaYCeOC7Q4pWye8JVpHFQpnMV2r2wdvnzFnuPSfN U504lLLuSb+H2k/rAT8c+EF3KEjkQBairWMdZrLq60/6cj+G/UmuwfYaOtrOPQ4XdDlH G5tDvQZQKFpov7umapytrAFGgrgNCx7RejVQvIlXC/PF0F3D5S3XI7I44DdjQC1OwwCH 09DT3YYoNe7/3Li/Nx11RYn1xBqqKrV7rGQCYYykfm6PfChL/U7SFGqHcdQeZr/SIkYk V4+grrBsSCpumB9R1bwTbzA/ZsnwVrYhGTr8voLj46oXMDri5lG1zDu/I2WEuL1sRaDB 793A== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=EYgiiIeLx+IWuygJtp8CNsHZ0VYNVDCr/JZPgq7y/lw=; b=UfzNPn1ZUtdU9pNEQPuxnkLJZbrXOp+YSwYcEvVBRC9FPheMjOXPbY6nN45gxheIcY d1r5fmP/iTCUI+WGVNXMcWluI+lFySbIplrcA0aeK8BnjCDZJJnKzQcVW/6L6SR6W03F bt+gLk7rAVrNZHl5MuWvhnKghl7Lt/DLZ77O1JWKXxINWHFH5gyPWw1iIzt5ubH5GsY+ mORBSrdd/rw2BkCkg62He4GM6UoYryfXZ2gzX9zn4P0WU8YmyPKVpA54pQ2Wg68N1Mwd eXzfCTQtmXb9eqSPBH9IFCyWb4tTKKrJG3paMs1hiSi1euzWoXZKtQRu8m+KIt5lAROF MgrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=kQ82JP8a; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s20-20020a056402521400b00469a7893548si17158546edd.539.2022.12.15.00.01.02; Thu, 15 Dec 2022 00:01:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=kQ82JP8a; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229763AbiLOH2y (ORCPT + 69 others); Thu, 15 Dec 2022 02:28:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229930AbiLOH2q (ORCPT ); Thu, 15 Dec 2022 02:28:46 -0500 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E385226A99 for ; Wed, 14 Dec 2022 23:28:37 -0800 (PST) X-UUID: 700275ce7bb34713be59d11de7293f13-20221215 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=EYgiiIeLx+IWuygJtp8CNsHZ0VYNVDCr/JZPgq7y/lw=; b=kQ82JP8abnNQthfbboesmbM6TkRUbobC/zgi5+86FxQgnvVB++y7cUW4a1ONwuNm8hcNkslC787l3Wb1yTRtrJpDkui8dKVzAnyvi0q9GGaevaYjbR6YGrKA4QyajYI3VV3ww4HRWLGYmxN6jVgxG2i4Un+L8hOi4Wuollz7VrY=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.14,REQID:10dc39e5-82e5-4de8-8c21-3961b38a04e1,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:5,SF:95,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:100 X-CID-INFO: VERSION:1.1.14,REQID:10dc39e5-82e5-4de8-8c21-3961b38a04e1,IP:0,URL :0,TC:0,Content:0,EDM:0,RT:5,SF:95,FILE:0,BULK:0,RULE:Spam_GS981B3D,ACTION :quarantine,TS:100 X-CID-META: VersionHash:dcaaed0,CLOUDID:1e244f35-a6a3-44f7-8aad-08fee1939a08,B ulkID:2212151528346AAYAQZP,BulkQuantity:0,Recheck:0,SF:38|28|17|19|48,TC:n il,Content:0,EDM:-3,IP:nil,URL:11|1,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0 X-UUID: 700275ce7bb34713be59d11de7293f13-20221215 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1932447980; Thu, 15 Dec 2022 15:28:33 +0800 Received: from mtkmbs13n2.mediatek.inc (172.21.101.108) by mtkmbs11n1.mediatek.inc (172.21.101.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.792.15; Thu, 15 Dec 2022 15:28:11 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkmbs13n2.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.792.15 via Frontend Transport; Thu, 15 Dec 2022 15:28:10 +0800 From: Yongqiang Niu To: CK Hu , Chun-Kuang Hu , Jassi Brar , Matthias Brugger CC: , , , , Hsin-Yi Wang , Yongqiang Niu , AngeloGioacchino Del Regno Subject: [PATCH v11, 3/4] mailbox: mtk-cmdq: add gce ddr enable support flow Date: Thu, 15 Dec 2022 15:28:05 +0800 Message-ID: <20221215072806.10224-4-yongqiang.niu@mediatek.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221215072806.10224-1-yongqiang.niu@mediatek.com> References: <20221215072806.10224-1-yongqiang.niu@mediatek.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-MTK: N X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org add gce ddr enable control flow when gce suspend/resume when all cmdq instruction task has been processed done, we need set this gce ddr enable to disable status to tell cmdq hardware gce there is none task need process, and the hardware can go into idle mode and no access ddr anymore, then the spm can go into suspend. the original issue is gce still access ddr when cmdq suspend function call, but there is no task run. so, we need control gce access ddr with this flow. when cmdq suspend function, there is no task need process, we can disable gce access ddr, to make sure system go into suspend success. Signed-off-by: Yongqiang Niu Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: CK Hu --- drivers/mailbox/mtk-cmdq-mailbox.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/mailbox/mtk-cmdq-mailbox.c b/drivers/mailbox/mtk-cmdq-mailbox.c index d2363c6b8b7a..53904511598d 100644 --- a/drivers/mailbox/mtk-cmdq-mailbox.c +++ b/drivers/mailbox/mtk-cmdq-mailbox.c @@ -94,6 +94,18 @@ struct gce_plat { u32 gce_num; }; +static void cmdq_sw_ddr_enable(struct cmdq *cmdq, bool enable) +{ + WARN_ON(clk_bulk_enable(cmdq->gce_num, cmdq->clocks)); + + if (enable) + writel(GCE_DDR_EN | GCE_CTRL_BY_SW, cmdq->base + GCE_GCTL_VALUE); + else + writel(GCE_CTRL_BY_SW, cmdq->base + GCE_GCTL_VALUE); + + clk_bulk_disable(cmdq->gce_num, cmdq->clocks); +} + u8 cmdq_get_shift_pa(struct mbox_chan *chan) { struct cmdq *cmdq = container_of(chan->mbox, struct cmdq, mbox); @@ -322,6 +334,9 @@ static int cmdq_suspend(struct device *dev) if (task_running) dev_warn(dev, "exist running task(s) in suspend\n"); + if (cmdq->sw_ddr_en) + cmdq_sw_ddr_enable(cmdq, false); + clk_bulk_unprepare(cmdq->gce_num, cmdq->clocks); return 0; @@ -333,6 +348,10 @@ static int cmdq_resume(struct device *dev) WARN_ON(clk_bulk_prepare(cmdq->gce_num, cmdq->clocks)); cmdq->suspended = false; + + if (cmdq->sw_ddr_en) + cmdq_sw_ddr_enable(cmdq, true); + return 0; } @@ -340,6 +359,9 @@ static int cmdq_remove(struct platform_device *pdev) { struct cmdq *cmdq = platform_get_drvdata(pdev); + if (cmdq->sw_ddr_en) + cmdq_sw_ddr_enable(cmdq, false); + clk_bulk_unprepare(cmdq->gce_num, cmdq->clocks); return 0; } -- 2.25.1