From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752591AbdCFBCM (ORCPT ); Sun, 5 Mar 2017 20:02:12 -0500 Received: from regular1.263xmail.com ([211.150.99.131]:54013 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751710AbdCFBCL (ORCPT ); Sun, 5 Mar 2017 20:02:11 -0500 X-263anti-spam: KSV:0;BIG:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ADDR-CHECKED4: 1 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: linux-arm-kernel@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API To: Tomeu Vizoso , linux-kernel@vger.kernel.org References: <20170303133936.14964-1-tomeu.vizoso@collabora.com> <20170303133936.14964-5-tomeu.vizoso@collabora.com> Cc: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Sean Paul , Thierry Reding , intel-gfx-trybot@lists.freedesktop.org, Emil Velikov , Daniel Vetter , Benjamin Gaignard , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, David Airlie , linux-arm-kernel@lists.infradead.org From: Mark yao Message-ID: <58BCB37F.50108@rock-chips.com> Date: Mon, 6 Mar 2017 08:55:27 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <20170303133936.14964-5-tomeu.vizoso@collabora.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017年03月03日 21:39, Tomeu Vizoso wrote: > Implement the .set_crc_source() callback and call the DP helpers > accordingly to start and stop CRC capture. > > This is only done if this CRTC is currently using the eDP connector. > > v3: Remove superfluous check on rockchip_crtc_state->output_type > > v6: Remove superfluous variable > > Signed-off-by: Tomeu Vizoso > --- looks good for me Acked-by: Mark Yao > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 41 +++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index 94d7b7327ff7..17ab16c4b922 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -19,6 +19,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -1111,6 +1112,45 @@ static void vop_crtc_destroy_state(struct drm_crtc *crtc, > kfree(s); > } > > +static struct drm_connector *vop_get_edp_connector(struct vop *vop) > +{ > + struct drm_crtc *crtc = &vop->crtc; > + struct drm_connector *connector; > + > + mutex_lock(&crtc->dev->mode_config.mutex); > + drm_for_each_connector(connector, crtc->dev) > + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { > + mutex_unlock(&crtc->dev->mode_config.mutex); > + return connector; > + } > + mutex_unlock(&crtc->dev->mode_config.mutex); > + > + return NULL; > +} > + > +static int vop_crtc_set_crc_source(struct drm_crtc *crtc, > + const char *source_name, size_t *values_cnt) > +{ > + struct vop *vop = to_vop(crtc); > + struct drm_connector *connector; > + int ret; > + > + connector = vop_get_edp_connector(vop); > + if (!connector) > + return -EINVAL; > + > + *values_cnt = 3; > + > + if (source_name && strcmp(source_name, "auto") == 0) > + ret = analogix_dp_start_crc(connector); > + else if (!source_name) > + ret = analogix_dp_stop_crc(connector); > + else > + ret = -EINVAL; > + > + return ret; > +} > + > static const struct drm_crtc_funcs vop_crtc_funcs = { > .set_config = drm_atomic_helper_set_config, > .page_flip = drm_atomic_helper_page_flip, > @@ -1120,6 +1160,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = { > .atomic_destroy_state = vop_crtc_destroy_state, > .enable_vblank = vop_crtc_enable_vblank, > .disable_vblank = vop_crtc_disable_vblank, > + .set_crc_source = vop_crtc_set_crc_source, > }; > > static void vop_fb_unref_worker(struct drm_flip_work *work, void *val) -- Mark Yao From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API Date: Mon, 6 Mar 2017 08:55:27 +0800 Message-ID: <58BCB37F.50108@rock-chips.com> References: <20170303133936.14964-1-tomeu.vizoso@collabora.com> <20170303133936.14964-5-tomeu.vizoso@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170303133936.14964-5-tomeu.vizoso@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomeu Vizoso , linux-kernel@vger.kernel.org Cc: Emil Velikov , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, intel-gfx-trybot@lists.freedesktop.org, Daniel Vetter List-Id: linux-rockchip.vger.kernel.org T24gMjAxN+W5tDAz5pyIMDPml6UgMjE6MzksIFRvbWV1IFZpem9zbyB3cm90ZToKPiBJbXBsZW1l bnQgdGhlIC5zZXRfY3JjX3NvdXJjZSgpIGNhbGxiYWNrIGFuZCBjYWxsIHRoZSBEUCBoZWxwZXJz Cj4gYWNjb3JkaW5nbHkgdG8gc3RhcnQgYW5kIHN0b3AgQ1JDIGNhcHR1cmUuCj4KPiBUaGlzIGlz IG9ubHkgZG9uZSBpZiB0aGlzIENSVEMgaXMgY3VycmVudGx5IHVzaW5nIHRoZSBlRFAgY29ubmVj dG9yLgo+Cj4gdjM6IFJlbW92ZSBzdXBlcmZsdW91cyBjaGVjayBvbiByb2NrY2hpcF9jcnRjX3N0 YXRlLT5vdXRwdXRfdHlwZQo+Cj4gdjY6IFJlbW92ZSBzdXBlcmZsdW91cyB2YXJpYWJsZQo+Cj4g U2lnbmVkLW9mZi1ieTogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4K PiAtLS0KCmxvb2tzIGdvb2QgZm9yIG1lCgpBY2tlZC1ieTogTWFyayBZYW8gPG1hcmsueWFvQHJv Y2stY2hpcHMuY29tPgoKPiAgIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1f dm9wLmMgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5n ZWQsIDQxIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV92b3AuYwo+IGluZGV4IDk0ZDdiNzMyN2ZmNy4uMTdhYjE2YzRiOTIyIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4gQEAgLTE5LDYg KzE5LDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gICAjaW5jbHVk ZSA8ZHJtL2RybV9mbGlwX3dvcmsuaD4KPiAgICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBl ci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2JyaWRnZS9hbmFsb2dpeF9kcC5oPgo+ICAgCj4gICAjaW5j bHVkZSA8bGludXgva2VybmVsLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gQEAg LTExMTEsNiArMTExMiw0NSBAQCBzdGF0aWMgdm9pZCB2b3BfY3J0Y19kZXN0cm95X3N0YXRlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgIAlrZnJlZShzKTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg c3RydWN0IGRybV9jb25uZWN0b3IgKnZvcF9nZXRfZWRwX2Nvbm5lY3RvcihzdHJ1Y3Qgdm9wICp2 b3ApCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZ2b3AtPmNydGM7Cj4gKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsKPiArCW11dGV4X2xvY2soJmNydGMtPmRl di0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcihjb25uZWN0 b3IsIGNydGMtPmRldikKPiArCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1f TU9ERV9DT05ORUNUT1JfZURQKSB7Cj4gKwkJCW11dGV4X3VubG9jaygmY3J0Yy0+ZGV2LT5tb2Rl X2NvbmZpZy5tdXRleCk7Cj4gKwkJCXJldHVybiBjb25uZWN0b3I7Cj4gKwkJfQo+ICsJbXV0ZXhf dW5sb2NrKCZjcnRjLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCj4gKwlyZXR1cm4gTlVM TDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2b3BfY3J0Y19zZXRfY3JjX3NvdXJjZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgICBjb25zdCBjaGFyICpzb3VyY2VfbmFtZSwgc2l6ZV90 ICp2YWx1ZXNfY250KQo+ICt7Cj4gKwlzdHJ1Y3Qgdm9wICp2b3AgPSB0b192b3AoY3J0Yyk7Cj4g KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsJaW50IHJldDsKPiArCj4gKwlj b25uZWN0b3IgPSB2b3BfZ2V0X2VkcF9jb25uZWN0b3Iodm9wKTsKPiArCWlmICghY29ubmVjdG9y KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCSp2YWx1ZXNfY250ID0gMzsKPiArCj4gKwlp ZiAoc291cmNlX25hbWUgJiYgc3RyY21wKHNvdXJjZV9uYW1lLCAiYXV0byIpID09IDApCj4gKwkJ cmV0ID0gYW5hbG9naXhfZHBfc3RhcnRfY3JjKGNvbm5lY3Rvcik7Cj4gKwllbHNlIGlmICghc291 cmNlX25hbWUpCj4gKwkJcmV0ID0gYW5hbG9naXhfZHBfc3RvcF9jcmMoY29ubmVjdG9yKTsKPiAr CWVsc2UKPiArCQlyZXQgPSAtRUlOVkFMOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIHZvcF9jcnRjX2Z1bmNzID0gewo+ ICAgCS5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPiAgIAkucGFn ZV9mbGlwID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAo+IEBAIC0xMTIwLDYgKzExNjAs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIHZvcF9jcnRjX2Z1bmNzID0g ewo+ICAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IHZvcF9jcnRjX2Rlc3Ryb3lfc3RhdGUsCj4g ICAJLmVuYWJsZV92YmxhbmsgPSB2b3BfY3J0Y19lbmFibGVfdmJsYW5rLAo+ICAgCS5kaXNhYmxl X3ZibGFuayA9IHZvcF9jcnRjX2Rpc2FibGVfdmJsYW5rLAo+ICsJLnNldF9jcmNfc291cmNlID0g dm9wX2NydGNfc2V0X2NyY19zb3VyY2UsCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgdm9pZCB2b3Bf ZmJfdW5yZWZfd29ya2VyKHN0cnVjdCBkcm1fZmxpcF93b3JrICp3b3JrLCB2b2lkICp2YWwpCgoK LS0gCu+8rWFyayBZYW8KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Mon, 6 Mar 2017 08:55:27 +0800 Subject: [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API In-Reply-To: <20170303133936.14964-5-tomeu.vizoso@collabora.com> References: <20170303133936.14964-1-tomeu.vizoso@collabora.com> <20170303133936.14964-5-tomeu.vizoso@collabora.com> Message-ID: <58BCB37F.50108@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2017?03?03? 21:39, Tomeu Vizoso wrote: > Implement the .set_crc_source() callback and call the DP helpers > accordingly to start and stop CRC capture. > > This is only done if this CRTC is currently using the eDP connector. > > v3: Remove superfluous check on rockchip_crtc_state->output_type > > v6: Remove superfluous variable > > Signed-off-by: Tomeu Vizoso > --- looks good for me Acked-by: Mark Yao > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 41 +++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index 94d7b7327ff7..17ab16c4b922 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -19,6 +19,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -1111,6 +1112,45 @@ static void vop_crtc_destroy_state(struct drm_crtc *crtc, > kfree(s); > } > > +static struct drm_connector *vop_get_edp_connector(struct vop *vop) > +{ > + struct drm_crtc *crtc = &vop->crtc; > + struct drm_connector *connector; > + > + mutex_lock(&crtc->dev->mode_config.mutex); > + drm_for_each_connector(connector, crtc->dev) > + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { > + mutex_unlock(&crtc->dev->mode_config.mutex); > + return connector; > + } > + mutex_unlock(&crtc->dev->mode_config.mutex); > + > + return NULL; > +} > + > +static int vop_crtc_set_crc_source(struct drm_crtc *crtc, > + const char *source_name, size_t *values_cnt) > +{ > + struct vop *vop = to_vop(crtc); > + struct drm_connector *connector; > + int ret; > + > + connector = vop_get_edp_connector(vop); > + if (!connector) > + return -EINVAL; > + > + *values_cnt = 3; > + > + if (source_name && strcmp(source_name, "auto") == 0) > + ret = analogix_dp_start_crc(connector); > + else if (!source_name) > + ret = analogix_dp_stop_crc(connector); > + else > + ret = -EINVAL; > + > + return ret; > +} > + > static const struct drm_crtc_funcs vop_crtc_funcs = { > .set_config = drm_atomic_helper_set_config, > .page_flip = drm_atomic_helper_page_flip, > @@ -1120,6 +1160,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = { > .atomic_destroy_state = vop_crtc_destroy_state, > .enable_vblank = vop_crtc_enable_vblank, > .disable_vblank = vop_crtc_disable_vblank, > + .set_crc_source = vop_crtc_set_crc_source, > }; > > static void vop_fb_unref_worker(struct drm_flip_work *work, void *val) -- ?ark Yao