From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751353AbdAWSDF (ORCPT ); Mon, 23 Jan 2017 13:03:05 -0500 Received: from mail-qt0-f179.google.com ([209.85.216.179]:35208 "EHLO mail-qt0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750756AbdAWSDE (ORCPT ); Mon, 23 Jan 2017 13:03:04 -0500 Date: Mon, 23 Jan 2017 13:03:01 -0500 From: Sean Paul To: Chris Zhong Cc: dianders@chromium.org, tfiga@chromium.org, heiko@sntech.de, yzq@rock-chips.com, mark.rutland@arm.com, devicetree@vger.kernel.org, robh+dt@kernel.org, galak@codeaurora.org, pawel.moll@arm.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v3 5/5] drm/rockchip/dsi: add dw-mipi power domain support Message-ID: <20170123180301.GC25789@trickycodes.roam.corp.google.com> References: <1484907051-7159-1-git-send-email-zyw@rock-chips.com> <1484907051-7159-6-git-send-email-zyw@rock-chips.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1484907051-7159-6-git-send-email-zyw@rock-chips.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 20, 2017 at 06:10:51PM +0800, Chris Zhong wrote: > Reference the power domain incase dw-mipi power down when > in use. > Reviewed-by: Sean Paul > Signed-off-by: Chris Zhong > --- > > Changes in v3: None > > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > index 6f0e252..1462101e 100644 > --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -293,6 +294,7 @@ struct dw_mipi_dsi { > struct clk *pclk; > struct clk *phy_cfg_clk; > > + int dpms_mode; > unsigned int lane_mbps; /* per lane */ > u32 channel; > u32 lanes; > @@ -969,6 +971,9 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) > { > struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); > > + if (dsi->dpms_mode != DRM_MODE_DPMS_ON) > + return; > + > if (clk_prepare_enable(dsi->pclk)) { > dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); > return; > @@ -980,7 +985,9 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) > drm_panel_unprepare(dsi->panel); > > dw_mipi_dsi_disable(dsi); > + pm_runtime_put(dsi->dev); > clk_disable_unprepare(dsi->pclk); > + dsi->dpms_mode = DRM_MODE_DPMS_OFF; > } > > static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) > @@ -990,11 +997,15 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) > int mux = drm_of_encoder_active_endpoint_id(dsi->dev->of_node, encoder); > u32 val; > > + if (dsi->dpms_mode == DRM_MODE_DPMS_ON) > + return; > + > if (clk_prepare_enable(dsi->pclk)) { > dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); > return; > } > > + pm_runtime_get_sync(dsi->dev); > dw_mipi_dsi_init(dsi); > dw_mipi_dsi_dpi_config(dsi); > dw_mipi_dsi_packet_handler_config(dsi); > @@ -1030,6 +1041,7 @@ 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; > } > > static int > @@ -1198,6 +1210,7 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master, > > dsi->dev = dev; > dsi->pdata = pdata; > + dsi->dpms_mode = DRM_MODE_DPMS_OFF; > > ret = rockchip_mipi_parse_dt(dsi); > if (ret) > @@ -1271,6 +1284,8 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master, > > dev_set_drvdata(dev, dsi); > > + pm_runtime_enable(dev); > + > dsi->dsi_host.ops = &dw_mipi_dsi_host_ops; > dsi->dsi_host.dev = dev; > ret = mipi_dsi_host_register(&dsi->dsi_host); > @@ -1293,6 +1308,7 @@ static void dw_mipi_dsi_unbind(struct device *dev, struct device *master, > struct dw_mipi_dsi *dsi = dev_get_drvdata(dev); > > mipi_dsi_host_unregister(&dsi->dsi_host); > + pm_runtime_disable(dev); > clk_disable_unprepare(dsi->pllref_clk); > } > > -- > 2.6.3 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Sean Paul, Software Engineer, Google / Chromium OS From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v3 5/5] drm/rockchip/dsi: add dw-mipi power domain support Date: Mon, 23 Jan 2017 13:03:01 -0500 Message-ID: <20170123180301.GC25789@trickycodes.roam.corp.google.com> References: <1484907051-7159-1-git-send-email-zyw@rock-chips.com> <1484907051-7159-6-git-send-email-zyw@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1484907051-7159-6-git-send-email-zyw@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Zhong Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, pawel.moll@arm.com, yzq@rock-chips.com, linux-kernel@vger.kernel.org, dianders@chromium.org, dri-devel@lists.freedesktop.org, tfiga@chromium.org, linux-rockchip@lists.infradead.org, robh+dt@kernel.org, galak@codeaurora.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org T24gRnJpLCBKYW4gMjAsIDIwMTcgYXQgMDY6MTA6NTFQTSArMDgwMCwgQ2hyaXMgWmhvbmcgd3Jv dGU6Cj4gUmVmZXJlbmNlIHRoZSBwb3dlciBkb21haW4gaW5jYXNlIGR3LW1pcGkgcG93ZXIgZG93 biB3aGVuCj4gaW4gdXNlLgo+IAoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hy b21pdW0ub3JnPgoKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hpcHMu Y29tPgo+IC0tLQo+IAo+IENoYW5nZXMgaW4gdjM6IE5vbmUKPiAKPiAgZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL2R3LW1pcGktZHNpLmMgfCAxNiArKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBj aGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1p cGktZHNpLmMKPiBpbmRleCA2ZjBlMjUyLi4xNDYyMTAxZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9kdy1taXBpLWRzaS5jCj4gQEAgLTEyLDYgKzEyLDcgQEAKPiAgI2luY2x1ZGUgPGxp bnV4L21hdGg2NC5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRlIDxs aW51eC9vZl9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiBAQCAtMjkzLDYgKzI5NCw3IEBAIHN0cnVjdCBk d19taXBpX2RzaSB7Cj4gIAlzdHJ1Y3QgY2xrICpwY2xrOwo+ICAJc3RydWN0IGNsayAqcGh5X2Nm Z19jbGs7Cj4gIAo+ICsJaW50IGRwbXNfbW9kZTsKPiAgCXVuc2lnbmVkIGludCBsYW5lX21icHM7 IC8qIHBlciBsYW5lICovCj4gIAl1MzIgY2hhbm5lbDsKPiAgCXUzMiBsYW5lczsKPiBAQCAtOTY5 LDYgKzk3MSw5IEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2VuY29kZXJfZGlzYWJsZShzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVjdCBkd19taXBpX2RzaSAqZHNp ID0gZW5jb2Rlcl90b19kc2koZW5jb2Rlcik7Cj4gIAo+ICsJaWYgKGRzaS0+ZHBtc19tb2RlICE9 IERSTV9NT0RFX0RQTVNfT04pCj4gKwkJcmV0dXJuOwo+ICsKPiAgCWlmIChjbGtfcHJlcGFyZV9l bmFibGUoZHNpLT5wY2xrKSkgewo+ICAJCWRldl9lcnIoZHNpLT5kZXYsICIlczogRmFpbGVkIHRv IGVuYWJsZSBwY2xrXG4iLCBfX2Z1bmNfXyk7Cj4gIAkJcmV0dXJuOwo+IEBAIC05ODAsNyArOTg1 LDkgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKPiAgCWRybV9wYW5lbF91bnByZXBhcmUoZHNpLT5wYW5lbCk7Cj4g IAo+ICAJZHdfbWlwaV9kc2lfZGlzYWJsZShkc2kpOwo+ICsJcG1fcnVudGltZV9wdXQoZHNpLT5k ZXYpOwo+ICAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+cGNsayk7Cj4gKwlkc2ktPmRwbXNf bW9kZSA9IERSTV9NT0RFX0RQTVNfT0ZGOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBkd19taXBp X2RzaV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gQEAgLTk5 MCwxMSArOTk3LDE1IEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2VuY29kZXJfZW5hYmxlKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCWludCBtdXggPSBkcm1fb2ZfZW5jb2Rlcl9h Y3RpdmVfZW5kcG9pbnRfaWQoZHNpLT5kZXYtPm9mX25vZGUsIGVuY29kZXIpOwo+ICAJdTMyIHZh bDsKPiAgCj4gKwlpZiAoZHNpLT5kcG1zX21vZGUgPT0gRFJNX01PREVfRFBNU19PTikKPiArCQly ZXR1cm47Cj4gKwo+ICAJaWYgKGNsa19wcmVwYXJlX2VuYWJsZShkc2ktPnBjbGspKSB7Cj4gIAkJ ZGV2X2Vycihkc2ktPmRldiwgIiVzOiBGYWlsZWQgdG8gZW5hYmxlIHBjbGtcbiIsIF9fZnVuY19f KTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+ICsJcG1fcnVudGltZV9nZXRfc3luYyhkc2ktPmRl dik7Cj4gIAlkd19taXBpX2RzaV9pbml0KGRzaSk7Cj4gIAlkd19taXBpX2RzaV9kcGlfY29uZmln KGRzaSk7Cj4gIAlkd19taXBpX2RzaV9wYWNrZXRfaGFuZGxlcl9jb25maWcoZHNpKTsKPiBAQCAt MTAzMCw2ICsxMDQxLDcgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZW5jb2Rlcl9lbmFibGUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCXJlZ21hcF93cml0ZShkc2ktPmdy Zl9yZWdtYXAsIHBkYXRhLT5ncmZfc3dpdGNoX3JlZywgdmFsKTsKPiAgCWRldl9kYmcoZHNpLT5k ZXYsICJ2b3AgJXMgb3V0cHV0IHRvIGRzaTBcbiIsIChtdXgpID8gIkxJVCIgOiAiQklHIik7Cj4g Kwlkc2ktPmRwbXNfbW9kZSA9IERSTV9NT0RFX0RQTVNfT047Cj4gIH0KPiAgCj4gIHN0YXRpYyBp bnQKPiBAQCAtMTE5OCw2ICsxMjEwLDcgQEAgc3RhdGljIGludCBkd19taXBpX2RzaV9iaW5kKHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+ICAKPiAgCWRzaS0+ZGV2 ID0gZGV2Owo+ICAJZHNpLT5wZGF0YSA9IHBkYXRhOwo+ICsJZHNpLT5kcG1zX21vZGUgPSBEUk1f TU9ERV9EUE1TX09GRjsKPiAgCj4gIAlyZXQgPSByb2NrY2hpcF9taXBpX3BhcnNlX2R0KGRzaSk7 Cj4gIAlpZiAocmV0KQo+IEBAIC0xMjcxLDYgKzEyODQsOCBAQCBzdGF0aWMgaW50IGR3X21pcGlf ZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4gIAo+ ICAJZGV2X3NldF9kcnZkYXRhKGRldiwgZHNpKTsKPiAgCj4gKwlwbV9ydW50aW1lX2VuYWJsZShk ZXYpOwo+ICsKPiAgCWRzaS0+ZHNpX2hvc3Qub3BzID0gJmR3X21pcGlfZHNpX2hvc3Rfb3BzOwo+ ICAJZHNpLT5kc2lfaG9zdC5kZXYgPSBkZXY7Cj4gIAlyZXQgPSBtaXBpX2RzaV9ob3N0X3JlZ2lz dGVyKCZkc2ktPmRzaV9ob3N0KTsKPiBAQCAtMTI5Myw2ICsxMzA4LDcgQEAgc3RhdGljIHZvaWQg ZHdfbWlwaV9kc2lfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLAo+ICAJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK PiAgCj4gIAltaXBpX2RzaV9ob3N0X3VucmVnaXN0ZXIoJmRzaS0+ZHNpX2hvc3QpOwo+ICsJcG1f cnVudGltZV9kaXNhYmxlKGRldik7Cj4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5wbGxy ZWZfY2xrKTsKPiAgfQo+ICAKPiAtLSAKPiAyLjYuMwo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUg RW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: seanpaul@chromium.org (Sean Paul) Date: Mon, 23 Jan 2017 13:03:01 -0500 Subject: [PATCH v3 5/5] drm/rockchip/dsi: add dw-mipi power domain support In-Reply-To: <1484907051-7159-6-git-send-email-zyw@rock-chips.com> References: <1484907051-7159-1-git-send-email-zyw@rock-chips.com> <1484907051-7159-6-git-send-email-zyw@rock-chips.com> Message-ID: <20170123180301.GC25789@trickycodes.roam.corp.google.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, Jan 20, 2017 at 06:10:51PM +0800, Chris Zhong wrote: > Reference the power domain incase dw-mipi power down when > in use. > Reviewed-by: Sean Paul > Signed-off-by: Chris Zhong > --- > > Changes in v3: None > > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > index 6f0e252..1462101e 100644 > --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -293,6 +294,7 @@ struct dw_mipi_dsi { > struct clk *pclk; > struct clk *phy_cfg_clk; > > + int dpms_mode; > unsigned int lane_mbps; /* per lane */ > u32 channel; > u32 lanes; > @@ -969,6 +971,9 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) > { > struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); > > + if (dsi->dpms_mode != DRM_MODE_DPMS_ON) > + return; > + > if (clk_prepare_enable(dsi->pclk)) { > dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); > return; > @@ -980,7 +985,9 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) > drm_panel_unprepare(dsi->panel); > > dw_mipi_dsi_disable(dsi); > + pm_runtime_put(dsi->dev); > clk_disable_unprepare(dsi->pclk); > + dsi->dpms_mode = DRM_MODE_DPMS_OFF; > } > > static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) > @@ -990,11 +997,15 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) > int mux = drm_of_encoder_active_endpoint_id(dsi->dev->of_node, encoder); > u32 val; > > + if (dsi->dpms_mode == DRM_MODE_DPMS_ON) > + return; > + > if (clk_prepare_enable(dsi->pclk)) { > dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); > return; > } > > + pm_runtime_get_sync(dsi->dev); > dw_mipi_dsi_init(dsi); > dw_mipi_dsi_dpi_config(dsi); > dw_mipi_dsi_packet_handler_config(dsi); > @@ -1030,6 +1041,7 @@ 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; > } > > static int > @@ -1198,6 +1210,7 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master, > > dsi->dev = dev; > dsi->pdata = pdata; > + dsi->dpms_mode = DRM_MODE_DPMS_OFF; > > ret = rockchip_mipi_parse_dt(dsi); > if (ret) > @@ -1271,6 +1284,8 @@ static int dw_mipi_dsi_bind(struct device *dev, struct device *master, > > dev_set_drvdata(dev, dsi); > > + pm_runtime_enable(dev); > + > dsi->dsi_host.ops = &dw_mipi_dsi_host_ops; > dsi->dsi_host.dev = dev; > ret = mipi_dsi_host_register(&dsi->dsi_host); > @@ -1293,6 +1308,7 @@ static void dw_mipi_dsi_unbind(struct device *dev, struct device *master, > struct dw_mipi_dsi *dsi = dev_get_drvdata(dev); > > mipi_dsi_host_unregister(&dsi->dsi_host); > + pm_runtime_disable(dev); > clk_disable_unprepare(dsi->pllref_clk); > } > > -- > 2.6.3 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Sean Paul, Software Engineer, Google / Chromium OS