Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp585749rwi; Mon, 10 Oct 2022 04:48:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5hCqZma4MUcvhLytncWfldUplsP/PEewWADFAf45CYfSFTbOuW8jVEII/7/uyNyC2N8udx X-Received: by 2002:a05:6402:520d:b0:45a:31cb:f5bd with SMTP id s13-20020a056402520d00b0045a31cbf5bdmr14575277edd.119.1665402534581; Mon, 10 Oct 2022 04:48:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665402534; cv=none; d=google.com; s=arc-20160816; b=RdcYm8i/EVpsNcNHprXjIYW7VI03gcRvAov9Q/YtoAQazHdU6nnpG/uAEwOsNNtSc2 kKJnkwYq/hPsVWn11cUUE4G2tfkqD4j3EslCM//go7iFKrhBsIatbnPfA9ymf62sINSG SY104fcqct0DHDjWUzPxiZnhGpNzN0yCFatTNJdAfq4SbmBYkfDjwXUNgv3Dgq1Rgdfx gbgdCApep5sx+uAFegVeoSKYYXOAE/us+f2k7PMxwve1Hv4YOg9PijYqh10jqkdmxDPg yycrwVChu/1cj92WbPqmxXMWkRf+0T0up2IdDm2/NMc6u+IOwmxgjWdANq04NAad+vfG Sr0Q== 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=RBKPmmokKw4mP41GQ0Nk2H6aeyAe4gD+CGFQnpafytg=; b=wqkYJoaJ8MHRaTNBGOqCwwTqZZyyH2mNdxYWPkJwoQFZVqMWcZSYOaqxnHEwhCQJa8 AQr864cpfZjZKNR/CUktF38ukijyYn57Fz3usBRxkf5eSNMXBNl207e+5gCwDvCUn0Aa P2gnwot9pmhaF0x2N06fnaJJEIkJp4dpRdTTc4QQzRTD/YvQQsc06dmYv85eaOg2qohV KoI00tZ4x+4OIsoYb0Mw8kON6af26PTFtFP/mRK4IaPYscWo3NFtz7rv/CG4Wd1y+90i 2TzEe0ktddiwp0Te9uDWDIenHDfLx2yCD5D7jTlcvJLlzdMW86oB3WbYp/azifJOdEyi eJ1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=Fgvzuztj; 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 v11-20020a50d58b000000b0045713c5c784si8686893edi.127.2022.10.10.04.48.29; Mon, 10 Oct 2022 04:48:54 -0700 (PDT) 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=Fgvzuztj; 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 S232144AbiJJLcY (ORCPT + 99 others); Mon, 10 Oct 2022 07:32:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232086AbiJJLcO (ORCPT ); Mon, 10 Oct 2022 07:32:14 -0400 Received: from mailgw01.mediatek.com (unknown [60.244.123.138]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3B506E8A9 for ; Mon, 10 Oct 2022 04:32:09 -0700 (PDT) X-UUID: 046f856dbaf640cab02d4a09f86f1bf5-20221010 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=RBKPmmokKw4mP41GQ0Nk2H6aeyAe4gD+CGFQnpafytg=; b=FgvzuztjPQrUA81+HMeFlKn+/zTs5VTot6wBwee1dr62/xUzUK6CocTDwbtp97onuo/+ttsD0BsgoZ75rURqYznPmtfzxjdxy+v6zqI4Wo4nkgk+k2cKDdk4CeoVJW9JgXwrDY0RVS6WHKpjR7cLqMd7Wto4txyrfjn6DGYuZVw=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.11,REQID:2d9c9213-8c2f-4d71-82e2-baa5b25fdb69,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:39a5ff1,CLOUDID:f7b7c4fe-ee8c-4ff7-afe9-644435e96625,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0 X-UUID: 046f856dbaf640cab02d4a09f86f1bf5-20221010 Received: from mtkmbs11n1.mediatek.inc [(172.21.101.185)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 384412984; Mon, 10 Oct 2022 19:32:02 +0800 Received: from mtkmbs13n1.mediatek.inc (172.21.101.193) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.792.15; Mon, 10 Oct 2022 19:32:01 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkmbs13n1.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.792.15 via Frontend Transport; Mon, 10 Oct 2022 19:32:01 +0800 From: Yongqiang Niu To: CK Hu , Chun-Kuang Hu CC: Jassi Brar , Matthias Brugger , , , , , Hsin-Yi Wang , Yongqiang Niu , AngeloGioacchino Del Regno Subject: [PATCH v10, 3/4] mailbox: mtk-cmdq: add gce ddr enable support flow Date: Mon, 10 Oct 2022 16:50:22 +0800 Message-ID: <20221010085023.7621-4-yongqiang.niu@mediatek.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221010085023.7621-1-yongqiang.niu@mediatek.com> References: <20221010085023.7621-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.0 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,URIBL_CSS 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 --- 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