From patchwork Thu Mar 16 03:31:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Zhong X-Patchwork-Id: 9627091 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 8F5D060424 for ; Thu, 16 Mar 2017 03:46:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 828022808F for ; Thu, 16 Mar 2017 03:46:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 76065283BA; Thu, 16 Mar 2017 03:46:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.4 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_SORBS_SPAM autolearn=no version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 36D432808F for ; Thu, 16 Mar 2017 03:46:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=IukMmFiuZBbzETYnxmRsFtCSPO0PWRSf8Wyg5gOY/48=; b=I/Ys0BtK94emPb1uTW4YynxxBE faycAPCYx1PULsH9wDgHJ1TZp09V8DuzpHhM3TraxEzSnycIyRucpC5Py1MOmgMPWqTGD7fFSsQDO NbIJKSKG+uyETmLHhD2dZ4nyj4lSzBeV1aijst5uHnQID8In++aKh63R+JkYJ33pwu4HCIK5PsTxh TN84wDl4JoFg+cwfwrsDbSnf/zNVbVPAoCbuxVAUix6/iJlhD8931zdXLyuqBtmaoloX/P+dIHL1U HKdjt9aOe5FzC9gwdkp7aLritCi1SE96lMgH0meo9qD4YoMlt3HHVP4rfmhUZZ8TUmEFXQgfvu9PH u3sewPtA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1coMNO-000641-0b; Thu, 16 Mar 2017 03:46:58 +0000 Received: from mail-pf0-f193.google.com ([209.85.192.193]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1coM9H-0006jy-Le; Thu, 16 Mar 2017 03:32:28 +0000 Received: by mail-pf0-f193.google.com with SMTP id x63so4089669pfx.2; Wed, 15 Mar 2017 20:32:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=QA9YVVUXYDXzkMi1O2TuL2MUXytDpk6bk5//6abaraY=; b=Hcfat8zQeimPZmpOkYNBtZEtYErsoNjpcWd+Xj1HggiZ7PEgwk40KMAsFWd66Ea70V cA5M/hMEwLB1uSLmtuhg8QqLkn63/sxoY9j3N25OEO/j9Mnf+waRBi1S/1fJq9rz/8hR pshmIwCEL+pDqhpIiDwvPAWPUrjrwDrMQlNowTxxEZL0JITAt9umunq0kwsARCHAou7o oyvcjdSCEfOX7TjYwutF0Z9kK1rObYM3eoBAgKGnx9o11OY24bHDEvJWo4diNhcLfvDu rcjLPcoeDhsYCvr/Aeb59WlFrae3OQGwVGff94gsy5SRGhNT26T1D2ldtVOgmICR9vuK Tzlw== X-Gm-Message-State: AFeK/H3cnnoqvYTXzAo5seshhJB8k19xWVdxHeuiIC9jqflC3PfjWJysVTru4Aec7wnrIw== X-Received: by 10.84.172.193 with SMTP id n59mr9188618plb.63.1489635122425; Wed, 15 Mar 2017 20:32:02 -0700 (PDT) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id 19sm6781023pfo.50.2017.03.15.20.32.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 15 Mar 2017 20:32:02 -0700 (PDT) From: Chris Zhong To: linux-rockchip@lists.infradead.org Subject: [PATCH v2 3/4] drm/rockchip/dsi: enable the grf clk before writing grf registers Date: Thu, 16 Mar 2017 11:31:46 +0800 Message-Id: <1489635107-21327-4-git-send-email-zyw@rock-chips.com> X-Mailer: git-send-email 2.6.3 In-Reply-To: <1489635107-21327-1-git-send-email-zyw@rock-chips.com> References: <1489635107-21327-1-git-send-email-zyw@rock-chips.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170315_203224_307614_CAFAB2FD X-CRM114-Status: GOOD ( 11.47 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Heiko Stuebner , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Chris Zhong , linux-arm-kernel@lists.infradead.org, Mark Yao MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP For RK3399, the grf clk should be enabled before writing grf registers, otherwise the register value can not be changed. Signed-off-by: Chris Zhong --- Changes in v2: - check the grf_clk only for RK3399 drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index 11c4166..a4c74c7 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -291,6 +291,7 @@ struct dw_mipi_dsi { struct regmap *grf_regmap; void __iomem *base; + struct clk *grf_clk; struct clk *pllref_clk; struct clk *pclk; struct clk *phy_cfg_clk; @@ -979,6 +980,17 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) dw_mipi_dsi_dphy_interface_config(dsi); dw_mipi_dsi_clear_err(dsi); + /* + * For the RK3399, the clk of grf must be enabled before writing grf + * register. And for RK3288 or other soc, this grf_clk must be NULL, + * the clk_prepare_enable return true directly. + */ + ret = clk_prepare_enable(dsi->grf_clk); + if (ret) { + dev_err(dsi->dev, "Failed to enable grf_clk\n"); + return; + } + if (pdata->grf_dsi0_mode_reg) regmap_write(dsi->grf_regmap, pdata->grf_dsi0_mode_reg, pdata->grf_dsi0_mode); @@ -1003,6 +1015,8 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) regmap_write(dsi->grf_regmap, pdata->grf_switch_reg, val); dev_dbg(dsi->dev, "vop %s output to dsi0\n", (mux) ? "LIT" : "BIG"); dsi->dpms_mode = DRM_MODE_DPMS_ON; + + clk_disable_unprepare(dsi->grf_clk); } static int @@ -1234,6 +1248,13 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master, dev_err(dev, "Unable to get phy_cfg_clk: %d\n", ret); return ret; } + + dsi->grf_clk = devm_clk_get(dev, "grf"); + if (IS_ERR(dsi->grf_clk)) { + ret = PTR_ERR(dsi->grf_clk); + dev_err(dev, "Unable to get grf_clk: %d\n", ret); + return ret; + } } ret = clk_prepare_enable(dsi->pllref_clk);