From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751655AbdA2OsM (ORCPT ); Sun, 29 Jan 2017 09:48:12 -0500 Received: from dougal.metanate.com ([90.155.101.14]:21093 "EHLO metanate.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751616AbdA2OsI (ORCPT ); Sun, 29 Jan 2017 09:48:08 -0500 From: John Keeping To: Mark Yao Cc: Chris Zhong , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, John Keeping Subject: [PATCH v3 12/24] drm/rockchip: dw-mipi-dsi: allow commands in panel_disable Date: Sun, 29 Jan 2017 13:24:32 +0000 Message-Id: <20170129132444.25251-13-john@metanate.com> X-Mailer: git-send-email 2.11.0.197.gb556de5.dirty In-Reply-To: <20170129132444.25251-1-john@metanate.com> References: <20170129132444.25251-1-john@metanate.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Panel drivers may want to sent commands during the disable function, for example MIPI_DCS_SET_DISPLAY_OFF before the video signal ends. In order to send commands we need to write to registers, so pclk must be enabled. While changing this, remove the unnecessary code after the panel unprepare call which seems to be a workaround for a specific panel and thus belongs in the panel driver. Signed-off-by: John Keeping Reviewed-by: Chris Zhong --- v3: - Add Chris' Reviewed-by Unchanged in v2 drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index 7ada6d8ed143..290282e86d16 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -846,24 +846,16 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) { struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); - drm_panel_disable(dsi->panel); - if (clk_prepare_enable(dsi->pclk)) { dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); return; } + drm_panel_disable(dsi->panel); + dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_CMD_MODE); drm_panel_unprepare(dsi->panel); - dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_VID_MODE); - /* - * This is necessary to make sure the peripheral will be driven - * normally when the display is enabled again later. - */ - msleep(120); - - dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_CMD_MODE); dw_mipi_dsi_disable(dsi); clk_disable_unprepare(dsi->pclk); } -- 2.11.0.197.gb556de5.dirty From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Keeping Subject: [PATCH v3 12/24] drm/rockchip: dw-mipi-dsi: allow commands in panel_disable Date: Sun, 29 Jan 2017 13:24:32 +0000 Message-ID: <20170129132444.25251-13-john@metanate.com> References: <20170129132444.25251-1-john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170129132444.25251-1-john@metanate.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mark Yao Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Chris Zhong , linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org UGFuZWwgZHJpdmVycyBtYXkgd2FudCB0byBzZW50IGNvbW1hbmRzIGR1cmluZyB0aGUgZGlzYWJs ZSBmdW5jdGlvbiwgZm9yCmV4YW1wbGUgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT0ZGIGJlZm9yZSB0 aGUgdmlkZW8gc2lnbmFsIGVuZHMuICBJbiBvcmRlcgp0byBzZW5kIGNvbW1hbmRzIHdlIG5lZWQg dG8gd3JpdGUgdG8gcmVnaXN0ZXJzLCBzbyBwY2xrIG11c3QgYmUgZW5hYmxlZC4KCldoaWxlIGNo YW5naW5nIHRoaXMsIHJlbW92ZSB0aGUgdW5uZWNlc3NhcnkgY29kZSBhZnRlciB0aGUgcGFuZWwK dW5wcmVwYXJlIGNhbGwgd2hpY2ggc2VlbXMgdG8gYmUgYSB3b3JrYXJvdW5kIGZvciBhIHNwZWNp ZmljIHBhbmVsIGFuZAp0aHVzIGJlbG9uZ3MgaW4gdGhlIHBhbmVsIGRyaXZlci4KClNpZ25lZC1v ZmYtYnk6IEpvaG4gS2VlcGluZyA8am9obkBtZXRhbmF0ZS5jb20+ClJldmlld2VkLWJ5OiBDaHJp cyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPgotLS0KdjM6Ci0gQWRkIENocmlzJyBSZXZpZXdl ZC1ieQpVbmNoYW5nZWQgaW4gdjIKCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1k c2kuYyB8IDEyICsrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3 LW1pcGktZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwppbmRl eCA3YWRhNmQ4ZWQxNDMuLjI5MDI4MmU4NmQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL2R3LW1pcGktZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3 LW1pcGktZHNpLmMKQEAgLTg0NiwyNCArODQ2LDE2IEBAIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNp X2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0 IGR3X21pcGlfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNvZGVyKTsKIAotCWRybV9wYW5l bF9kaXNhYmxlKGRzaS0+cGFuZWwpOwotCiAJaWYgKGNsa19wcmVwYXJlX2VuYWJsZShkc2ktPnBj bGspKSB7CiAJCWRldl9lcnIoZHNpLT5kZXYsICIlczogRmFpbGVkIHRvIGVuYWJsZSBwY2xrXG4i LCBfX2Z1bmNfXyk7CiAJCXJldHVybjsKIAl9CiAKKwlkcm1fcGFuZWxfZGlzYWJsZShkc2ktPnBh bmVsKTsKKwogCWR3X21pcGlfZHNpX3NldF9tb2RlKGRzaSwgRFdfTUlQSV9EU0lfQ01EX01PREUp OwogCWRybV9wYW5lbF91bnByZXBhcmUoZHNpLT5wYW5lbCk7Ci0JZHdfbWlwaV9kc2lfc2V0X21v ZGUoZHNpLCBEV19NSVBJX0RTSV9WSURfTU9ERSk7CiAKLQkvKgotCSAqIFRoaXMgaXMgbmVjZXNz YXJ5IHRvIG1ha2Ugc3VyZSB0aGUgcGVyaXBoZXJhbCB3aWxsIGJlIGRyaXZlbgotCSAqIG5vcm1h bGx5IHdoZW4gdGhlIGRpc3BsYXkgaXMgZW5hYmxlZCBhZ2FpbiBsYXRlci4KLQkgKi8KLQltc2xl ZXAoMTIwKTsKLQotCWR3X21pcGlfZHNpX3NldF9tb2RlKGRzaSwgRFdfTUlQSV9EU0lfQ01EX01P REUpOwogCWR3X21pcGlfZHNpX2Rpc2FibGUoZHNpKTsKIAljbGtfZGlzYWJsZV91bnByZXBhcmUo ZHNpLT5wY2xrKTsKIH0KLS0gCjIuMTEuMC4xOTcuZ2I1NTZkZTUuZGlydHkKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: john@metanate.com (John Keeping) Date: Sun, 29 Jan 2017 13:24:32 +0000 Subject: [PATCH v3 12/24] drm/rockchip: dw-mipi-dsi: allow commands in panel_disable In-Reply-To: <20170129132444.25251-1-john@metanate.com> References: <20170129132444.25251-1-john@metanate.com> Message-ID: <20170129132444.25251-13-john@metanate.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Panel drivers may want to sent commands during the disable function, for example MIPI_DCS_SET_DISPLAY_OFF before the video signal ends. In order to send commands we need to write to registers, so pclk must be enabled. While changing this, remove the unnecessary code after the panel unprepare call which seems to be a workaround for a specific panel and thus belongs in the panel driver. Signed-off-by: John Keeping Reviewed-by: Chris Zhong --- v3: - Add Chris' Reviewed-by Unchanged in v2 drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index 7ada6d8ed143..290282e86d16 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -846,24 +846,16 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) { struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); - drm_panel_disable(dsi->panel); - if (clk_prepare_enable(dsi->pclk)) { dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); return; } + drm_panel_disable(dsi->panel); + dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_CMD_MODE); drm_panel_unprepare(dsi->panel); - dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_VID_MODE); - /* - * This is necessary to make sure the peripheral will be driven - * normally when the display is enabled again later. - */ - msleep(120); - - dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_CMD_MODE); dw_mipi_dsi_disable(dsi); clk_disable_unprepare(dsi->pclk); } -- 2.11.0.197.gb556de5.dirty