From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Keeping Subject: [PATCH v2 01/26] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI Date: Sat, 21 Jan 2017 16:31:03 +0000 Message-ID: <20170121163128.22240-2-john@metanate.com> References: <20170121163128.22240-1-john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170121163128.22240-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 ZSB0aGUgaGFyZHdhcmUgaW4gdGhlCmNvbW1pdCBmdW5jdGlvbiAob3IgZXZlbiB0aGUgZW5hYmxl IGZ1bmN0aW9uLCBidXQgc3dpdGNoaW5nIGZyb20gY29tbWl0CnRvIGVuYWJsZSBpcyBsZWZ0IGZv ciBhIGZ1dHVyZSBwYXRjaCkuCgpTaWduZWQtb2ZmLWJ5OiBKb2huIEtlZXBpbmcgPGpvaG5AbWV0 YW5hdGUuY29tPgotLS0KdjI6Ci0gYWxzbyBtb3ZlIGR3X21pcGlfZHNpX2dldF9sYW5lX2JwcyBp bnRvIHRoZSBjb21taXQgZnVuY3Rpb24KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHct bWlwaS1kc2kuYyB8IDQ1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jCmluZGV4IGQ5YWEzODJiYjYyOS4uOGI4M2FlNTBjOGYz IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwpAQCAtODE5LDM0ICs4MTks OCBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwKIAkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUpCiB7CiAJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNv ZGVyKTsKLQlpbnQgcmV0OwogCiAJZHNpLT5tb2RlID0gYWRqdXN0ZWRfbW9kZTsKLQotCXJldCA9 IGR3X21pcGlfZHNpX2dldF9sYW5lX2Jwcyhkc2kpOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm47 Ci0KLQlpZiAoY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+cGNsaykpIHsKLQkJZGV2X2Vycihkc2kt PmRldiwgIiVzOiBGYWlsZWQgdG8gZW5hYmxlIHBjbGtcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJu OwotCX0KLQotCWR3X21pcGlfZHNpX2luaXQoZHNpKTsKLQlkd19taXBpX2RzaV9kcGlfY29uZmln KGRzaSwgbW9kZSk7Ci0JZHdfbWlwaV9kc2lfcGFja2V0X2hhbmRsZXJfY29uZmlnKGRzaSk7Ci0J ZHdfbWlwaV9kc2lfdmlkZW9fbW9kZV9jb25maWcoZHNpKTsKLQlkd19taXBpX2RzaV92aWRlb19w YWNrZXRfY29uZmlnKGRzaSwgbW9kZSk7Ci0JZHdfbWlwaV9kc2lfY29tbWFuZF9tb2RlX2NvbmZp Zyhkc2kpOwotCWR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKGRzaSk7Ci0JZHdfbWlwaV9k c2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhkc2kpOwotCWR3X21pcGlfZHNpX2RwaHlfdGltaW5n X2NvbmZpZyhkc2kpOwotCWR3X21pcGlfZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhkc2kpOwot CWR3X21pcGlfZHNpX2NsZWFyX2Vycihkc2kpOwotCWlmIChkcm1fcGFuZWxfcHJlcGFyZShkc2kt PnBhbmVsKSkKLQkJZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0byBwcmVwYXJlIHBhbmVsXG4i KTsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPnBjbGspOwogfQogCiBzdGF0aWMgdm9p ZCBkd19taXBpX2RzaV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQpAQCAtODgwLDEyICs4NTQsMzEgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZW5jb2Rlcl9j b21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCXN0cnVjdCBkd19taXBpX2RzaSAq ZHNpID0gZW5jb2Rlcl90b19kc2koZW5jb2Rlcik7CiAJaW50IG11eCA9IGRybV9vZl9lbmNvZGVy X2FjdGl2ZV9lbmRwb2ludF9pZChkc2ktPmRldi0+b2Zfbm9kZSwgZW5jb2Rlcik7CiAJdTMyIHZh bDsKKwlpbnQgcmV0OworCisJcmV0ID0gZHdfbWlwaV9kc2lfZ2V0X2xhbmVfYnBzKGRzaSk7CisJ aWYgKHJldCA8IDApCisJCXJldHVybjsKIAogCWlmIChjbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5w Y2xrKSkgewogCQlkZXZfZXJyKGRzaS0+ZGV2LCAiJXM6IEZhaWxlZCB0byBlbmFibGUgcGNsa1xu IiwgX19mdW5jX18pOwogCQlyZXR1cm47CiAJfQogCisJZHdfbWlwaV9kc2lfaW5pdChkc2kpOwor CWR3X21pcGlfZHNpX2RwaV9jb25maWcoZHNpLCBkc2ktPm1vZGUpOworCWR3X21pcGlfZHNpX3Bh Y2tldF9oYW5kbGVyX2NvbmZpZyhkc2kpOworCWR3X21pcGlfZHNpX3ZpZGVvX21vZGVfY29uZmln KGRzaSk7CisJZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhkc2ksIGRzaS0+bW9kZSk7 CisJZHdfbWlwaV9kc2lfY29tbWFuZF9tb2RlX2NvbmZpZyhkc2kpOworCWR3X21pcGlfZHNpX2xp bmVfdGltZXJfY29uZmlnKGRzaSk7CisJZHdfbWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZp Zyhkc2kpOworCWR3X21pcGlfZHNpX2RwaHlfdGltaW5nX2NvbmZpZyhkc2kpOworCWR3X21pcGlf ZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhkc2kpOworCWR3X21pcGlfZHNpX2NsZWFyX2Vycihk c2kpOworCWlmIChkcm1fcGFuZWxfcHJlcGFyZShkc2ktPnBhbmVsKSkKKwkJZGV2X2Vycihkc2kt PmRldiwgImZhaWxlZCB0byBwcmVwYXJlIHBhbmVsXG4iKTsKKwogCWR3X21pcGlfZHNpX3BoeV9p bml0KGRzaSk7CiAJZHdfbWlwaV9kc2lfd2FpdF9mb3JfdHdvX2ZyYW1lcyhkc2kpOwogCi0tIAoy LjExLjAuMTk3LmdiNTU2ZGU1LmRpcnR5CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: john@metanate.com (John Keeping) Date: Sat, 21 Jan 2017 16:31:03 +0000 Subject: [PATCH v2 01/26] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI In-Reply-To: <20170121163128.22240-1-john@metanate.com> References: <20170121163128.22240-1-john@metanate.com> Message-ID: <20170121163128.22240-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 commit function (or even the enable function, but switching from commit to enable is left for a future patch). Signed-off-by: John Keeping --- v2: - also move dw_mipi_dsi_get_lane_bps into the commit function --- drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 45 ++++++++++++++-------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index d9aa382bb629..8b83ae50c8f3 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) @@ -880,12 +854,31 @@ static void dw_mipi_dsi_encoder_commit(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); -- 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 S1751313AbdAUQgs (ORCPT ); Sat, 21 Jan 2017 11:36:48 -0500 Received: from dougal.metanate.com ([90.155.101.14]:4849 "EHLO metanate.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751132AbdAUQcK (ORCPT ); Sat, 21 Jan 2017 11:32:10 -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 v2 01/26] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI Date: Sat, 21 Jan 2017 16:31:03 +0000 Message-Id: <20170121163128.22240-2-john@metanate.com> X-Mailer: git-send-email 2.11.0.197.gb556de5.dirty In-Reply-To: <20170121163128.22240-1-john@metanate.com> References: <20170121163128.22240-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 commit function (or even the enable function, but switching from commit to enable is left for a future patch). Signed-off-by: John Keeping --- v2: - also move dw_mipi_dsi_get_lane_bps into the commit function --- drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 45 ++++++++++++++-------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index d9aa382bb629..8b83ae50c8f3 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) @@ -880,12 +854,31 @@ static void dw_mipi_dsi_encoder_commit(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); -- 2.11.0.197.gb556de5.dirty