From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751025AbdAVD6p (ORCPT ); Sat, 21 Jan 2017 22:58:45 -0500 Received: from regular1.263xmail.com ([211.150.99.138]:58118 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750846AbdAVD6m (ORCPT ); Sat, 21 Jan 2017 22:58:42 -0500 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-RL-SENDER: zyw@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: zyw@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v2 01/26] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI To: John Keeping , Mark Yao References: <20170121163128.22240-1-john@metanate.com> <20170121163128.22240-2-john@metanate.com> Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org From: Chris Zhong Message-ID: <58842DE8.1080604@rock-chips.com> Date: Sun, 22 Jan 2017 11:58:32 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <20170121163128.22240-2-john@metanate.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi John On 01/22/2017 12:31 AM, John Keeping wrote: > 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). I tend to merge the 2 patches into one. > > 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); > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Zhong Subject: Re: [PATCH v2 01/26] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI Date: Sun, 22 Jan 2017 11:58:32 +0800 Message-ID: <58842DE8.1080604@rock-chips.com> References: <20170121163128.22240-1-john@metanate.com> <20170121163128.22240-2-john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170121163128.22240-2-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: John Keeping , Mark Yao Cc: linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: linux-rockchip.vger.kernel.org SGkgSm9obgoKCk9uIDAxLzIyLzIwMTcgMTI6MzEgQU0sIEpvaG4gS2VlcGluZyB3cm90ZToKPiBX aXRoIGF0b21pYyBtb2Rlc2V0dGluZyB0aGUgaGFyZHdhcmUgd2lsbCBiZSBwb3dlcmVkIG9mZiB3 aGVuIHRoZQo+IG1vZGVfc2V0IGZ1bmN0aW9uIGlzIGNhbGxlZC4gIFdlIHNob3VsZCBjb25maWd1 cmUgdGhlIGhhcmR3YXJlIGluIHRoZQo+IGNvbW1pdCBmdW5jdGlvbiAob3IgZXZlbiB0aGUgZW5h YmxlIGZ1bmN0aW9uLCBidXQgc3dpdGNoaW5nIGZyb20gY29tbWl0Cj4gdG8gZW5hYmxlIGlzIGxl ZnQgZm9yIGEgZnV0dXJlIHBhdGNoKS4KCkkgdGVuZCB0byBtZXJnZSB0aGUgMiBwYXRjaGVzIGlu dG8gb25lLgoKPgo+IFNpZ25lZC1vZmYtYnk6IEpvaG4gS2VlcGluZyA8am9obkBtZXRhbmF0ZS5j b20+Cj4gLS0tCj4gdjI6Cj4gLSBhbHNvIG1vdmUgZHdfbWlwaV9kc2lfZ2V0X2xhbmVfYnBzIGlu dG8gdGhlIGNvbW1pdCBmdW5jdGlvbgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L2R3LW1pcGktZHNpLmMgfCA0NSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g ICAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHctbWlwaS1kc2kuYwo+IGluZGV4IGQ5YWEzODJiYjYyOS4u OGI4M2FlNTBjOGYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1t aXBpLWRzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLmMK PiBAQCAtODE5LDM0ICs4MTksOCBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX21v ZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiAgIAkJCQkJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCj4gICB7Cj4gICAJc3RydWN0IGR3X21pcGlfZHNp ICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNvZGVyKTsKPiAtCWludCByZXQ7Cj4gICAKPiAgIAlk c2ktPm1vZGUgPSBhZGp1c3RlZF9tb2RlOwo+IC0KPiAtCXJldCA9IGR3X21pcGlfZHNpX2dldF9s YW5lX2Jwcyhkc2kpOwo+IC0JaWYgKHJldCA8IDApCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmIChj bGtfcHJlcGFyZV9lbmFibGUoZHNpLT5wY2xrKSkgewo+IC0JCWRldl9lcnIoZHNpLT5kZXYsICIl czogRmFpbGVkIHRvIGVuYWJsZSBwY2xrXG4iLCBfX2Z1bmNfXyk7Cj4gLQkJcmV0dXJuOwo+IC0J fQo+IC0KPiAtCWR3X21pcGlfZHNpX2luaXQoZHNpKTsKPiAtCWR3X21pcGlfZHNpX2RwaV9jb25m aWcoZHNpLCBtb2RlKTsKPiAtCWR3X21pcGlfZHNpX3BhY2tldF9oYW5kbGVyX2NvbmZpZyhkc2kp Owo+IC0JZHdfbWlwaV9kc2lfdmlkZW9fbW9kZV9jb25maWcoZHNpKTsKPiAtCWR3X21pcGlfZHNp X3ZpZGVvX3BhY2tldF9jb25maWcoZHNpLCBtb2RlKTsKPiAtCWR3X21pcGlfZHNpX2NvbW1hbmRf bW9kZV9jb25maWcoZHNpKTsKPiAtCWR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKGRzaSk7 Cj4gLQlkd19taXBpX2RzaV92ZXJ0aWNhbF90aW1pbmdfY29uZmlnKGRzaSk7Cj4gLQlkd19taXBp X2RzaV9kcGh5X3RpbWluZ19jb25maWcoZHNpKTsKPiAtCWR3X21pcGlfZHNpX2RwaHlfaW50ZXJm YWNlX2NvbmZpZyhkc2kpOwo+IC0JZHdfbWlwaV9kc2lfY2xlYXJfZXJyKGRzaSk7Cj4gLQlpZiAo ZHJtX3BhbmVsX3ByZXBhcmUoZHNpLT5wYW5lbCkpCj4gLQkJZGV2X2Vycihkc2ktPmRldiwgImZh aWxlZCB0byBwcmVwYXJlIHBhbmVsXG4iKTsKPiAtCj4gLQljbGtfZGlzYWJsZV91bnByZXBhcmUo ZHNpLT5wY2xrKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZW5jb2Rl cl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiBAQCAtODgwLDEyICs4NTQs MzEgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZW5jb2Rlcl9jb21taXQoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQo+ICAgCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gZW5jb2Rlcl90 b19kc2koZW5jb2Rlcik7Cj4gICAJaW50IG11eCA9IGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9lbmRw b2ludF9pZChkc2ktPmRldi0+b2Zfbm9kZSwgZW5jb2Rlcik7Cj4gICAJdTMyIHZhbDsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJcmV0ID0gZHdfbWlwaV9kc2lfZ2V0X2xhbmVfYnBzKGRzaSk7Cj4gKwlp ZiAocmV0IDwgMCkKPiArCQlyZXR1cm47Cj4gICAKPiAgIAlpZiAoY2xrX3ByZXBhcmVfZW5hYmxl KGRzaS0+cGNsaykpIHsKPiAgIAkJZGV2X2Vycihkc2ktPmRldiwgIiVzOiBGYWlsZWQgdG8gZW5h YmxlIHBjbGtcbiIsIF9fZnVuY19fKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiAgIAo+ICsJZHdf bWlwaV9kc2lfaW5pdChkc2kpOwo+ICsJZHdfbWlwaV9kc2lfZHBpX2NvbmZpZyhkc2ksIGRzaS0+ bW9kZSk7Cj4gKwlkd19taXBpX2RzaV9wYWNrZXRfaGFuZGxlcl9jb25maWcoZHNpKTsKPiArCWR3 X21pcGlfZHNpX3ZpZGVvX21vZGVfY29uZmlnKGRzaSk7Cj4gKwlkd19taXBpX2RzaV92aWRlb19w YWNrZXRfY29uZmlnKGRzaSwgZHNpLT5tb2RlKTsKPiArCWR3X21pcGlfZHNpX2NvbW1hbmRfbW9k ZV9jb25maWcoZHNpKTsKPiArCWR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKGRzaSk7Cj4g Kwlkd19taXBpX2RzaV92ZXJ0aWNhbF90aW1pbmdfY29uZmlnKGRzaSk7Cj4gKwlkd19taXBpX2Rz aV9kcGh5X3RpbWluZ19jb25maWcoZHNpKTsKPiArCWR3X21pcGlfZHNpX2RwaHlfaW50ZXJmYWNl X2NvbmZpZyhkc2kpOwo+ICsJZHdfbWlwaV9kc2lfY2xlYXJfZXJyKGRzaSk7Cj4gKwlpZiAoZHJt X3BhbmVsX3ByZXBhcmUoZHNpLT5wYW5lbCkpCj4gKwkJZGV2X2Vycihkc2ktPmRldiwgImZhaWxl ZCB0byBwcmVwYXJlIHBhbmVsXG4iKTsKPiArCj4gICAJZHdfbWlwaV9kc2lfcGh5X2luaXQoZHNp KTsKPiAgIAlkd19taXBpX2RzaV93YWl0X2Zvcl90d29fZnJhbWVzKGRzaSk7Cj4gICAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: zyw@rock-chips.com (Chris Zhong) Date: Sun, 22 Jan 2017 11:58:32 +0800 Subject: [PATCH v2 01/26] drm/rockchip: dw-mipi-dsi: don't configure hardware in mode_set for MIPI In-Reply-To: <20170121163128.22240-2-john@metanate.com> References: <20170121163128.22240-1-john@metanate.com> <20170121163128.22240-2-john@metanate.com> Message-ID: <58842DE8.1080604@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi John On 01/22/2017 12:31 AM, John Keeping wrote: > 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). I tend to merge the 2 patches into one. > > 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); >