From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Keeping Subject: [PATCH v3 01/24] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI Date: Sun, 29 Jan 2017 13:24:21 +0000 Message-ID: <20170129132444.25251-2-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 V2l0aCBhdG9taWMgbW9kZXNldHRpbmcgdGhlIGhhcmR3YXJlIHdpbGwgYmUgcG93ZXJlZCBvZmYg d2hlbiB0aGUKbW9kZV9zZXQgZnVuY3Rpb24gaXMgY2FsbGVkLiAgV2Ugc2hvdWxkIGNvbmZpZ3Vy ZSB0aGUgaGFyZHdhcmUgaW4gdGhlCmVuYWJsZSBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIGF0b21p YyB2ZXJzaW9uIG9mICJjb21taXQiIHNvIGxldCdzIHVzZQp0aGUgZW5hYmxlIGhvb2sgcmF0aGVy IHRoYW4gY29tbWl0IHdoaWxlIHdlJ3JlIGF0IGl0LgoKU2lnbmVkLW9mZi1ieTogSm9obiBLZWVw aW5nIDxqb2huQG1ldGFuYXRlLmNvbT4KLS0tCnYzOgotIFNxdWFzaCB0b2dldGhlciB3aXRoIHRo ZSBjb21taXQgdG8gcy9jb21taXQvZW5hYmxlLwpVbmNoYW5nZWQgaW4gdjIKCiBkcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYyB8IDQ5ICsrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2ku YyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jCmluZGV4IGQ5YWEzODJi YjYyOS4uYmJkOTkyMjk5ZjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv ZHctbWlwaS1kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2ku YwpAQCAtODE5LDM0ICs4MTksOCBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX21v ZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAkJCQkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUpCiB7CiAJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBl bmNvZGVyX3RvX2RzaShlbmNvZGVyKTsKLQlpbnQgcmV0OwogCiAJZHNpLT5tb2RlID0gYWRqdXN0 ZWRfbW9kZTsKLQotCXJldCA9IGR3X21pcGlfZHNpX2dldF9sYW5lX2Jwcyhkc2kpOwotCWlmIChy ZXQgPCAwKQotCQlyZXR1cm47Ci0KLQlpZiAoY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+cGNsaykp IHsKLQkJZGV2X2Vycihkc2ktPmRldiwgIiVzOiBGYWlsZWQgdG8gZW5hYmxlIHBjbGtcbiIsIF9f ZnVuY19fKTsKLQkJcmV0dXJuOwotCX0KLQotCWR3X21pcGlfZHNpX2luaXQoZHNpKTsKLQlkd19t aXBpX2RzaV9kcGlfY29uZmlnKGRzaSwgbW9kZSk7Ci0JZHdfbWlwaV9kc2lfcGFja2V0X2hhbmRs ZXJfY29uZmlnKGRzaSk7Ci0JZHdfbWlwaV9kc2lfdmlkZW9fbW9kZV9jb25maWcoZHNpKTsKLQlk d19taXBpX2RzaV92aWRlb19wYWNrZXRfY29uZmlnKGRzaSwgbW9kZSk7Ci0JZHdfbWlwaV9kc2lf Y29tbWFuZF9tb2RlX2NvbmZpZyhkc2kpOwotCWR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmln KGRzaSk7Ci0JZHdfbWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhkc2kpOwotCWR3X21p cGlfZHNpX2RwaHlfdGltaW5nX2NvbmZpZyhkc2kpOwotCWR3X21pcGlfZHNpX2RwaHlfaW50ZXJm YWNlX2NvbmZpZyhkc2kpOwotCWR3X21pcGlfZHNpX2NsZWFyX2Vycihkc2kpOwotCWlmIChkcm1f cGFuZWxfcHJlcGFyZShkc2ktPnBhbmVsKSkKLQkJZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0 byBwcmVwYXJlIHBhbmVsXG4iKTsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPnBjbGsp OwogfQogCiBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyKQpAQCAtODc1LDE3ICs4NDksMzYgQEAgc3RhdGljIHZvaWQgZHdf bWlwaV9kc2lfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlj bGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5wY2xrKTsKIH0KIAotc3RhdGljIHZvaWQgZHdfbWlw aV9kc2lfZW5jb2Rlcl9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorc3RhdGlj IHZvaWQgZHdfbWlwaV9kc2lfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQogewogCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gZW5jb2Rlcl90b19kc2koZW5jb2Rl cik7CiAJaW50IG11eCA9IGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9lbmRwb2ludF9pZChkc2ktPmRl di0+b2Zfbm9kZSwgZW5jb2Rlcik7CiAJdTMyIHZhbDsKKwlpbnQgcmV0OworCisJcmV0ID0gZHdf bWlwaV9kc2lfZ2V0X2xhbmVfYnBzKGRzaSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybjsKIAog CWlmIChjbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5wY2xrKSkgewogCQlkZXZfZXJyKGRzaS0+ZGV2 LCAiJXM6IEZhaWxlZCB0byBlbmFibGUgcGNsa1xuIiwgX19mdW5jX18pOwogCQlyZXR1cm47CiAJ fQogCisJZHdfbWlwaV9kc2lfaW5pdChkc2kpOworCWR3X21pcGlfZHNpX2RwaV9jb25maWcoZHNp LCBkc2ktPm1vZGUpOworCWR3X21pcGlfZHNpX3BhY2tldF9oYW5kbGVyX2NvbmZpZyhkc2kpOwor CWR3X21pcGlfZHNpX3ZpZGVvX21vZGVfY29uZmlnKGRzaSk7CisJZHdfbWlwaV9kc2lfdmlkZW9f cGFja2V0X2NvbmZpZyhkc2ksIGRzaS0+bW9kZSk7CisJZHdfbWlwaV9kc2lfY29tbWFuZF9tb2Rl X2NvbmZpZyhkc2kpOworCWR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKGRzaSk7CisJZHdf bWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhkc2kpOworCWR3X21pcGlfZHNpX2RwaHlf dGltaW5nX2NvbmZpZyhkc2kpOworCWR3X21pcGlfZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhk c2kpOworCWR3X21pcGlfZHNpX2NsZWFyX2Vycihkc2kpOworCWlmIChkcm1fcGFuZWxfcHJlcGFy ZShkc2ktPnBhbmVsKSkKKwkJZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0byBwcmVwYXJlIHBh bmVsXG4iKTsKKwogCWR3X21pcGlfZHNpX3BoeV9pbml0KGRzaSk7CiAJZHdfbWlwaV9kc2lfd2Fp dF9mb3JfdHdvX2ZyYW1lcyhkc2kpOwogCkBAIC05MzMsNyArOTI2LDcgQEAgZHdfbWlwaV9kc2lf ZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCiBzdGF0 aWMgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcwogZHdfbWlwaV9kc2lfZW5jb2Rlcl9o ZWxwZXJfZnVuY3MgPSB7Ci0JLmNvbW1pdCA9IGR3X21pcGlfZHNpX2VuY29kZXJfY29tbWl0LAor CS5lbmFibGUgPSBkd19taXBpX2RzaV9lbmNvZGVyX2VuYWJsZSwKIAkubW9kZV9zZXQgPSBkd19t aXBpX2RzaV9lbmNvZGVyX21vZGVfc2V0LAogCS5kaXNhYmxlID0gZHdfbWlwaV9kc2lfZW5jb2Rl cl9kaXNhYmxlLAogCS5hdG9taWNfY2hlY2sgPSBkd19taXBpX2RzaV9lbmNvZGVyX2F0b21pY19j aGVjaywKLS0gCjIuMTEuMC4xOTcuZ2I1NTZkZTUuZGlydHkKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: john@metanate.com (John Keeping) Date: Sun, 29 Jan 2017 13:24:21 +0000 Subject: [PATCH v3 01/24] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI In-Reply-To: <20170129132444.25251-1-john@metanate.com> References: <20170129132444.25251-1-john@metanate.com> Message-ID: <20170129132444.25251-2-john@metanate.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org With atomic modesetting the hardware will be powered off when the mode_set function is called. We should configure the hardware in the enable function, which is the atomic version of "commit" so let's use the enable hook rather than commit while we're at it. Signed-off-by: John Keeping --- v3: - Squash together with the commit to s/commit/enable/ Unchanged in v2 drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 49 +++++++++++++++------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index d9aa382bb629..bbd992299f73 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -819,34 +819,8 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder, struct drm_display_mode *adjusted_mode) { struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); - int ret; dsi->mode = adjusted_mode; - - ret = dw_mipi_dsi_get_lane_bps(dsi); - if (ret < 0) - return; - - if (clk_prepare_enable(dsi->pclk)) { - dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); - return; - } - - dw_mipi_dsi_init(dsi); - dw_mipi_dsi_dpi_config(dsi, mode); - dw_mipi_dsi_packet_handler_config(dsi); - dw_mipi_dsi_video_mode_config(dsi); - dw_mipi_dsi_video_packet_config(dsi, mode); - dw_mipi_dsi_command_mode_config(dsi); - dw_mipi_dsi_line_timer_config(dsi); - dw_mipi_dsi_vertical_timing_config(dsi); - dw_mipi_dsi_dphy_timing_config(dsi); - dw_mipi_dsi_dphy_interface_config(dsi); - dw_mipi_dsi_clear_err(dsi); - if (drm_panel_prepare(dsi->panel)) - dev_err(dsi->dev, "failed to prepare panel\n"); - - clk_disable_unprepare(dsi->pclk); } static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) @@ -875,17 +849,36 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) clk_disable_unprepare(dsi->pclk); } -static void dw_mipi_dsi_encoder_commit(struct drm_encoder *encoder) +static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) { struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); int mux = drm_of_encoder_active_endpoint_id(dsi->dev->of_node, encoder); u32 val; + int ret; + + ret = dw_mipi_dsi_get_lane_bps(dsi); + if (ret < 0) + return; if (clk_prepare_enable(dsi->pclk)) { dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); return; } + dw_mipi_dsi_init(dsi); + dw_mipi_dsi_dpi_config(dsi, dsi->mode); + dw_mipi_dsi_packet_handler_config(dsi); + dw_mipi_dsi_video_mode_config(dsi); + dw_mipi_dsi_video_packet_config(dsi, dsi->mode); + dw_mipi_dsi_command_mode_config(dsi); + dw_mipi_dsi_line_timer_config(dsi); + dw_mipi_dsi_vertical_timing_config(dsi); + dw_mipi_dsi_dphy_timing_config(dsi); + dw_mipi_dsi_dphy_interface_config(dsi); + dw_mipi_dsi_clear_err(dsi); + if (drm_panel_prepare(dsi->panel)) + dev_err(dsi->dev, "failed to prepare panel\n"); + dw_mipi_dsi_phy_init(dsi); dw_mipi_dsi_wait_for_two_frames(dsi); @@ -933,7 +926,7 @@ dw_mipi_dsi_encoder_atomic_check(struct drm_encoder *encoder, static struct drm_encoder_helper_funcs dw_mipi_dsi_encoder_helper_funcs = { - .commit = dw_mipi_dsi_encoder_commit, + .enable = dw_mipi_dsi_encoder_enable, .mode_set = dw_mipi_dsi_encoder_mode_set, .disable = dw_mipi_dsi_encoder_disable, .atomic_check = dw_mipi_dsi_encoder_atomic_check, -- 2.11.0.197.gb556de5.dirty From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751374AbdA2OIb (ORCPT ); Sun, 29 Jan 2017 09:08:31 -0500 Received: from dougal.metanate.com ([90.155.101.14]:13067 "EHLO metanate.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750803AbdA2OI3 (ORCPT ); Sun, 29 Jan 2017 09:08:29 -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 01/24] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI Date: Sun, 29 Jan 2017 13:24:21 +0000 Message-Id: <20170129132444.25251-2-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 With atomic modesetting the hardware will be powered off when the mode_set function is called. We should configure the hardware in the enable function, which is the atomic version of "commit" so let's use the enable hook rather than commit while we're at it. Signed-off-by: John Keeping --- v3: - Squash together with the commit to s/commit/enable/ Unchanged in v2 drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 49 +++++++++++++++------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index d9aa382bb629..bbd992299f73 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -819,34 +819,8 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder, struct drm_display_mode *adjusted_mode) { struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); - int ret; dsi->mode = adjusted_mode; - - ret = dw_mipi_dsi_get_lane_bps(dsi); - if (ret < 0) - return; - - if (clk_prepare_enable(dsi->pclk)) { - dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); - return; - } - - dw_mipi_dsi_init(dsi); - dw_mipi_dsi_dpi_config(dsi, mode); - dw_mipi_dsi_packet_handler_config(dsi); - dw_mipi_dsi_video_mode_config(dsi); - dw_mipi_dsi_video_packet_config(dsi, mode); - dw_mipi_dsi_command_mode_config(dsi); - dw_mipi_dsi_line_timer_config(dsi); - dw_mipi_dsi_vertical_timing_config(dsi); - dw_mipi_dsi_dphy_timing_config(dsi); - dw_mipi_dsi_dphy_interface_config(dsi); - dw_mipi_dsi_clear_err(dsi); - if (drm_panel_prepare(dsi->panel)) - dev_err(dsi->dev, "failed to prepare panel\n"); - - clk_disable_unprepare(dsi->pclk); } static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) @@ -875,17 +849,36 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder) clk_disable_unprepare(dsi->pclk); } -static void dw_mipi_dsi_encoder_commit(struct drm_encoder *encoder) +static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder) { struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder); int mux = drm_of_encoder_active_endpoint_id(dsi->dev->of_node, encoder); u32 val; + int ret; + + ret = dw_mipi_dsi_get_lane_bps(dsi); + if (ret < 0) + return; if (clk_prepare_enable(dsi->pclk)) { dev_err(dsi->dev, "%s: Failed to enable pclk\n", __func__); return; } + dw_mipi_dsi_init(dsi); + dw_mipi_dsi_dpi_config(dsi, dsi->mode); + dw_mipi_dsi_packet_handler_config(dsi); + dw_mipi_dsi_video_mode_config(dsi); + dw_mipi_dsi_video_packet_config(dsi, dsi->mode); + dw_mipi_dsi_command_mode_config(dsi); + dw_mipi_dsi_line_timer_config(dsi); + dw_mipi_dsi_vertical_timing_config(dsi); + dw_mipi_dsi_dphy_timing_config(dsi); + dw_mipi_dsi_dphy_interface_config(dsi); + dw_mipi_dsi_clear_err(dsi); + if (drm_panel_prepare(dsi->panel)) + dev_err(dsi->dev, "failed to prepare panel\n"); + dw_mipi_dsi_phy_init(dsi); dw_mipi_dsi_wait_for_two_frames(dsi); @@ -933,7 +926,7 @@ dw_mipi_dsi_encoder_atomic_check(struct drm_encoder *encoder, static struct drm_encoder_helper_funcs dw_mipi_dsi_encoder_helper_funcs = { - .commit = dw_mipi_dsi_encoder_commit, + .enable = dw_mipi_dsi_encoder_enable, .mode_set = dw_mipi_dsi_encoder_mode_set, .disable = dw_mipi_dsi_encoder_disable, .atomic_check = dw_mipi_dsi_encoder_atomic_check, -- 2.11.0.197.gb556de5.dirty