Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3001764yba; Tue, 16 Apr 2019 02:31:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqwVkofa+IKbib5r9t3S1DyLhHHdvQRK7WD4a86FIoCCEcNW0mhZMbO4x7sMRr4Su28HmKrS X-Received: by 2002:a63:2c06:: with SMTP id s6mr75781659pgs.245.1555407074093; Tue, 16 Apr 2019 02:31:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555407074; cv=none; d=google.com; s=arc-20160816; b=f5nfFtdsgszQP4qV62PjlRr5908XFVGGy/jab3HZTdxDlOAAu2T4leEfZhWRgps5ll BmmvnolCLJ6kgWN3HKK0LOZ8ATJe0wwWYY31MKhuc6lLi5QsdoG3dJ6CcZF+kFOVP2K/ r9VsrDtLG26eux117WrY4vyMepOjhnSidAAXYY5pGyLL6EMQ0MbYA4cNeARKaXWAoT4r J5nnfgOyQUXyJCLgmhBT75MvOE6gGxRy/OhnktkAvpm4BKMsFsQ/7KHQ+JPDyu3F6/iX SSWIkmz9v/xlX9OzbbyQ4eRj1+ybowWOY9e+ej1mKLPZHrd5ksxrFRFVORJ2VHlY6QSD WlnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=Z2v9MuYSPHnNZsTyE/SibsZ+TjKtHsNecMy7IpGeN9Y=; b=caq07XZDByZcXADSzoEvB1AjCVJI5y3kCDbujO2P/xwe9x1jr3CEdg8Uk2Hxz3fnES sW6W6rTJ+mqZz+7srE2pxGDNWAXNo/tbJhZMtzFywvq+2nGMYlCERDgie7o14QElN8o4 nX/w1lQ4fsvSkD7oaLk7Xio6CD5zw1QRzUTGB6A3erFTf0lkIPLfpb2vH/4II2CZ/Slt uSa2snCb0neWFvxQn22qmMVTy9/W6JJJFS3xqhlymMDZTxoz1Iv1QuO4DS9I/6BoQkgb bODxHbDgjJj8nbtOvfNZIQT77uf7xLBpDJCmlXCN1rhLQsnIvR8vFGcq7nHMranAcSQx d+xw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y9si46312549pgg.15.2019.04.16.02.30.57; Tue, 16 Apr 2019 02:31:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729179AbfDPJ3p (ORCPT + 99 others); Tue, 16 Apr 2019 05:29:45 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:11257 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728362AbfDPJ1z (ORCPT ); Tue, 16 Apr 2019 05:27:55 -0400 X-UUID: 9b538cc21477489ea83a74def1045696-20190416 X-UUID: 9b538cc21477489ea83a74def1045696-20190416 Received: from mtkcas09.mediatek.inc [(172.21.101.178)] by mailgw01.mediatek.com (envelope-from ) (mhqrelay.mediatek.com ESMTP with TLS) with ESMTP id 2040289529; Tue, 16 Apr 2019 17:27:49 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 16 Apr 2019 17:27:47 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 16 Apr 2019 17:27:47 +0800 From: Stu Hsieh To: Mauro Carvalho Chehab , Rob Herring , CK Hu CC: Mark Rutland , Matthias Brugger , Stu Hsieh , , , , , , Subject: [PATCH v2 08/15] [media] mtk-mipicsi: enable/disable ana clk Date: Tue, 16 Apr 2019 17:27:36 +0800 Message-ID: <1555406863-18069-9-git-send-email-stu.hsieh@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1555406863-18069-1-git-send-email-stu.hsieh@mediatek.com> References: <1555406863-18069-1-git-send-email-stu.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch enable/disable ana clk when power on/off Signed-off-by: Stu Hsieh --- .../media/platform/mtk-mipicsi/mtk_mipicsi.c | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c b/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c index c92ffe6684ef..8a4079f0ed9b 100644 --- a/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c +++ b/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c @@ -163,6 +163,41 @@ struct mtk_mipicsi_dev { V4L2_MBUS_PCLK_SAMPLE_FALLING | \ V4L2_MBUS_DATA_ACTIVE_HIGH) +static void mtk_mipicsi_ana_clk_enable(void __iomem *base, bool enable) +{ + if (enable) { + writel(1UL | readl(base + MIPI_RX_ANA00_CSI), + base + MIPI_RX_ANA00_CSI); + writel(1UL | readl(base + MIPI_RX_ANA04_CSI), + base + MIPI_RX_ANA04_CSI); + writel(1UL | readl(base + MIPI_RX_ANA08_CSI), + base + MIPI_RX_ANA08_CSI); + writel(1UL | readl(base + MIPI_RX_ANA0C_CSI), + base + MIPI_RX_ANA0C_CSI); + writel(1UL | readl(base + MIPI_RX_ANA10_CSI), + base + MIPI_RX_ANA10_CSI); + writel(1UL | readl(base + MIPI_RX_ANA20_CSI), + base + MIPI_RX_ANA20_CSI); + writel(1UL | readl(base + MIPI_RX_ANA24_CSI), + base + MIPI_RX_ANA24_CSI); + } else { + writel(~1UL & readl(base + MIPI_RX_ANA00_CSI), + base + MIPI_RX_ANA00_CSI); + writel(~1UL & readl(base + MIPI_RX_ANA04_CSI), + base + MIPI_RX_ANA04_CSI); + writel(~1UL & readl(base + MIPI_RX_ANA08_CSI), + base + MIPI_RX_ANA08_CSI); + writel(~1UL & readl(base + MIPI_RX_ANA0C_CSI), + base + MIPI_RX_ANA0C_CSI); + writel(~1UL & readl(base + MIPI_RX_ANA10_CSI), + base + MIPI_RX_ANA10_CSI); + writel(~1UL & readl(base + MIPI_RX_ANA20_CSI), + base + MIPI_RX_ANA20_CSI); + writel(~1UL & readl(base + MIPI_RX_ANA24_CSI), + base + MIPI_RX_ANA24_CSI); + } +} + static int get_subdev_register(const struct soc_camera_device *icd, struct v4l2_dbg_register *reg) { @@ -796,6 +831,8 @@ static int mtk_mipicsi_pm_suspend(struct device *dev) for (i = 0; i < mipicsi->clk_num; ++i) clk_disable_unprepare(mipicsi->clk[i]); + mtk_mipicsi_ana_clk_enable(mipicsi->ana, false); + if (mipicsi->larb_pdev != NULL) mtk_smi_larb_put(mipicsi->larb_pdev); @@ -833,6 +870,8 @@ static int mtk_mipicsi_pm_resume(struct device *dev) return ret; } + mtk_mipicsi_ana_clk_enable(mipicsi->ana, true); + /* enable digtal clock */ for (i = 0; i < mipicsi->clk_num; ++i) (void)clk_prepare_enable(mipicsi->clk[i]); -- 2.18.0