From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v2 6/8] drm: Introduce drm_bridge_mode_valid() Date: Fri, 12 May 2017 16:20:07 +0530 Message-ID: References: <20170510134109.GF12629@intel.com> <20170510151433.7ewizmeeidrqonan@phenom.ffwll.local> <1645078.FS6fmucJTb@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1E7A86E69C for ; Fri, 12 May 2017 10:50:13 +0000 (UTC) In-Reply-To: <1645078.FS6fmucJTb@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart , dri-devel@lists.freedesktop.org Cc: Jose Abreu , Daniel Vetter , Alexey Brodkin , linux-kernel@vger.kernel.org, Carlos Palminha List-Id: dri-devel@lists.freedesktop.org CgpPbiAwNS8xMi8yMDE3IDAzOjA4IFBNLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+IEhpIERh bmllbCwKPgo+IE9uIFdlZG5lc2RheSAxMCBNYXkgMjAxNyAxNzoxNDozMyBEYW5pZWwgVmV0dGVy IHdyb3RlOgo+PiBPbiBXZWQsIE1heSAxMCwgMjAxNyBhdCAwNDo0MTowOVBNICswMzAwLCBWaWxs ZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+PiBPbiBUdWUsIE1heSAwOSwgMjAxNyBhdCAwNjowMDoxM1BN ICswMTAwLCBKb3NlIEFicmV1IHdyb3RlOgo+Pj4+IEludHJvZHVjZSBhIG5ldyBoZWxwZXIgZnVu Y3Rpb24gd2hpY2ggY2FsbHMgbW9kZV92YWxpZCgpIGNhbGxiYWNrCj4+Pj4gZm9yIGFsbCBicmlk Z2VzIGluIGFuIGVuY29kZXIgY2hhaW4uCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBKb3NlIEFi cmV1IDxqb2FicmV1QHN5bm9wc3lzLmNvbT4KPj4+PiBDYzogQ2FybG9zIFBhbG1pbmhhIDxwYWxt aW5oYUBzeW5vcHN5cy5jb20+Cj4+Pj4gQ2M6IEFsZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5v cHN5cy5jb20+Cj4+Pj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Cj4+Pj4gQ2M6IERhdmUgQWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgo+Pj4+IENjOiBBbmRyemVq IEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgo+Pj4+IENjOiBBcmNoaXQgVGFuZWphIDxhcmNo aXR0QGNvZGVhdXJvcmEub3JnPgo+Pj4+IC0tLQo+Pj4+Cj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9k cm1fYnJpZGdlLmMgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+PiAg aW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oICAgICB8ICAyICsrCj4+Pj4gIDIgZmlsZXMgY2hhbmdl ZCwgMzUgaW5zZXJ0aW9ucygrKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYnJpZGdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4+Pj4gaW5kZXgg ODZhNzYzNy4uZGM4Y2RmZSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Jy aWRnZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+Pj4+IEBAIC0y MDYsNiArMjA2LDM5IEBAIGJvb2wgZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYnJp ZGdlCj4+Pj4gKmJyaWRnZSwKPj4+Pgo+Pj4+ICBFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfbW9k ZV9maXh1cCk7Cj4+Pj4KPj4+PiAgLyoqCj4+Pj4KPj4+PiArICogZHJtX2JyaWRnZV9tb2RlX3Zh bGlkIC0gdmFsaWRhdGUgdGhlIG1vZGUgYWdhaW5zdCBhbGwgYnJpZGdlcyBpbiB0aGUKPj4+PiAr ICogCQkJICAgZW5jb2RlciBjaGFpbi4KPj4+PiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wg c3RydWN0dXJlCj4+Pj4gKyAqIEBtb2RlOiBkZXNpcmVkIG1vZGUgdG8gYmUgdmFsaWRhdGVkCj4+ Pj4gKyAqCj4+Pj4gKyAqIENhbGxzICZkcm1fYnJpZGdlX2Z1bmNzLm1vZGVfdmFsaWQgZm9yIGFs bCB0aGUgYnJpZGdlcyBpbiB0aGUKPj4+PiBlbmNvZGVyCj4+Pj4gKyAqIGNoYWluLCBzdGFydGlu ZyBmcm9tIHRoZSBmaXJzdCBicmlkZ2UgdG8gdGhlIGxhc3QuIElmIGF0IGxlYXN0IG9uZQo+Pj4+ IGJyaWRnZSArICogZG9lcyBub3QgYWNjZXB0IHRoZSBtb2RlIHRoZSBmdW5jdGlvbiByZXR1cm5z IHRoZSBlcnJvcgo+Pj4+IGNvZGUuCj4+Pj4gKyAqCj4+Pj4gKyAqIE5vdGU6IHRoZSBicmlkZ2Ug cGFzc2VkIHNob3VsZCBiZSB0aGUgb25lIGNsb3Nlc3QgdG8gdGhlIGVuY29kZXIuCj4+Pj4gKyAq Cj4+Pj4gKyAqIFJFVFVSTlM6Cj4+Pj4gKyAqIE1PREVfT0sgb24gc3VjY2VzcywgZHJtX21vZGVf c3RhdHVzIEVudW0gZXJyb3IgY29kZSBvbiBmYWlsdXJlCj4+Pj4gKyAqLwo+Pj4+ICtlbnVtIGRy bV9tb2RlX3N0YXR1cyBkcm1fYnJpZGdlX21vZGVfdmFsaWQoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPj4+PiArCQkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZQo+ICptb2Rl KQo+Pj4+ICt7Cj4+Pj4gKwllbnVtIGRybV9tb2RlX3N0YXR1cyByZXQgPSBNT0RFX09LOwo+Pj4+ ICsKPj4+PiArCWlmICghYnJpZGdlKQo+Pj4+ICsJCXJldHVybiByZXQ7Cj4+Pj4gKwo+Pj4+ICsJ aWYgKGJyaWRnZS0+ZnVuY3MtPm1vZGVfdmFsaWQpCj4+Pj4gKwkJcmV0ID0gYnJpZGdlLT5mdW5j cy0+bW9kZV92YWxpZChicmlkZ2UsIG1vZGUpOwo+Pj4+ICsKPj4+PiArCWlmIChyZXQgIT0gTU9E RV9PSykKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ICsKPj4+PiArCXJldHVybiBkcm1fYnJpZGdl X21vZGVfdmFsaWQoYnJpZGdlLT5uZXh0LCBtb2RlKTsKPj4+Cj4+PiBMb29rcyBsaWtlIGl0IHNo b3VsZCBiZSBwcmV0dHkgdHJpdmlhbCB0byBhdm9pZCB0aGUgcmVjdXJzaW9uLgo+Pj4KPj4+IEFt IEkgY29ycmVjdCBpbiBpbnRlcnByZXRpbmcgdGhpcyB0aGF0IGJyaWRnZXMgaGF2ZSBzb21lIGtp bmQgb2YKPj4+IGEgaGFuZCByb2xsZWQgbGlua2VkIGxpc3QgaW1wbGVtZW50YXRpb24/IFJldXNp bmcgdGhlIHN0YW5kYXJkCj4+PiBsaW5rZWQgbGlzdHMgd291bGQgYWxsb3cgeW91IHRvIHVzZSBs aXN0X2Zvcl9lYWNoKCkgZXRjLgo+Pgo+PiBZZWFoIGl0J3MgYSBoYW5kLXJvbGxlZCBsaXN0LCBi dXQgY3VycmVudCBodyBhbHNvIGhhcyBhIGJyaWRnZSBuZXN0aW5nCj4+IGRlcHRoIG9mIDIsIHNv IGl0IHJlYWxseSBkb2Vzbid0IG1hdHRlci4gSSBndWVzcyBvbmNlIHdlIGhhdmUgcmVhbCBsb25n Cj4+IGNoYWlucyBvZiBicmlkZ2VzIHdlIGNhbiBmaXggdGhpcyAoYW5kIGp1c3QgdXNpbmcgbGlz dF9oZWFkIHNvdW5kcyBsaWtlIGEKPj4gZ3JlYXQgaWRlYSkuCj4KPiBFdmVuIGlmIG5vdCByZWFs bHkgbmVlZGVkIHJpZ2h0IG5vdywgaXQncyBhIHByZXR0eSBlYXN5IGNsZWFudXAsIGlmIEpvc2Ug aGFzCj4gdGltZSB0byBoYW5kbGUgaXQgaW4gdjMgb2YgdGhpcyBzZXJpZXMgbGV0J3Mgbm90IHBv c3Rwb25lIGl0IDstKQoKamZ5aSwgc29tZSBvZiB0aGUgYnJpZGdlIGZ1bmN0aW9ucyBjYWxsIHRo ZSBvcHMgZnJvbSB0aGUgbGFzdCBicmlkZ2UgaW4gdGhlCmNoYWluIHRvIGZpcnN0LCBzbyB3ZSdk IG5lZWQgdG8gdXNlIGxpc3RfZm9yX2VhY2hfZW50cnlfcHJldigpIChvciBzb21ldGhpbmcKbGlr ZSB0aGF0KSBmb3IgdGhlbS4KCkFyY2hpdAoKLS0gClF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRp b24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757301AbdELKuP (ORCPT ); Fri, 12 May 2017 06:50:15 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:48642 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751323AbdELKuN (ORCPT ); Fri, 12 May 2017 06:50:13 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 93FF760A00 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=architt@codeaurora.org Subject: Re: [PATCH v2 6/8] drm: Introduce drm_bridge_mode_valid() To: Laurent Pinchart , dri-devel@lists.freedesktop.org References: <20170510134109.GF12629@intel.com> <20170510151433.7ewizmeeidrqonan@phenom.ffwll.local> <1645078.FS6fmucJTb@avalon> Cc: Jose Abreu , Daniel Vetter , Alexey Brodkin , linux-kernel@vger.kernel.org, Carlos Palminha From: Archit Taneja Message-ID: Date: Fri, 12 May 2017 16:20:07 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <1645078.FS6fmucJTb@avalon> 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 05/12/2017 03:08 PM, Laurent Pinchart wrote: > Hi Daniel, > > On Wednesday 10 May 2017 17:14:33 Daniel Vetter wrote: >> On Wed, May 10, 2017 at 04:41:09PM +0300, Ville Syrjälä wrote: >>> On Tue, May 09, 2017 at 06:00:13PM +0100, Jose Abreu wrote: >>>> Introduce a new helper function which calls mode_valid() callback >>>> for all bridges in an encoder chain. >>>> >>>> Signed-off-by: Jose Abreu >>>> Cc: Carlos Palminha >>>> Cc: Alexey Brodkin >>>> Cc: Ville Syrjälä >>>> Cc: Daniel Vetter >>>> Cc: Dave Airlie >>>> Cc: Andrzej Hajda >>>> Cc: Archit Taneja >>>> --- >>>> >>>> drivers/gpu/drm/drm_bridge.c | 33 +++++++++++++++++++++++++++++++++ >>>> include/drm/drm_bridge.h | 2 ++ >>>> 2 files changed, 35 insertions(+) >>>> >>>> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c >>>> index 86a7637..dc8cdfe 100644 >>>> --- a/drivers/gpu/drm/drm_bridge.c >>>> +++ b/drivers/gpu/drm/drm_bridge.c >>>> @@ -206,6 +206,39 @@ bool drm_bridge_mode_fixup(struct drm_bridge >>>> *bridge, >>>> >>>> EXPORT_SYMBOL(drm_bridge_mode_fixup); >>>> >>>> /** >>>> >>>> + * drm_bridge_mode_valid - validate the mode against all bridges in the >>>> + * encoder chain. >>>> + * @bridge: bridge control structure >>>> + * @mode: desired mode to be validated >>>> + * >>>> + * Calls &drm_bridge_funcs.mode_valid for all the bridges in the >>>> encoder >>>> + * chain, starting from the first bridge to the last. If at least one >>>> bridge + * does not accept the mode the function returns the error >>>> code. >>>> + * >>>> + * Note: the bridge passed should be the one closest to the encoder. >>>> + * >>>> + * RETURNS: >>>> + * MODE_OK on success, drm_mode_status Enum error code on failure >>>> + */ >>>> +enum drm_mode_status drm_bridge_mode_valid(struct drm_bridge *bridge, >>>> + const struct drm_display_mode > *mode) >>>> +{ >>>> + enum drm_mode_status ret = MODE_OK; >>>> + >>>> + if (!bridge) >>>> + return ret; >>>> + >>>> + if (bridge->funcs->mode_valid) >>>> + ret = bridge->funcs->mode_valid(bridge, mode); >>>> + >>>> + if (ret != MODE_OK) >>>> + return ret; >>>> + >>>> + return drm_bridge_mode_valid(bridge->next, mode); >>> >>> Looks like it should be pretty trivial to avoid the recursion. >>> >>> Am I correct in interpreting this that bridges have some kind of >>> a hand rolled linked list implementation? Reusing the standard >>> linked lists would allow you to use list_for_each() etc. >> >> Yeah it's a hand-rolled list, but current hw also has a bridge nesting >> depth of 2, so it really doesn't matter. I guess once we have real long >> chains of bridges we can fix this (and just using list_head sounds like a >> great idea). > > Even if not really needed right now, it's a pretty easy cleanup, if Jose has > time to handle it in v3 of this series let's not postpone it ;-) jfyi, some of the bridge functions call the ops from the last bridge in the chain to first, so we'd need to use list_for_each_entry_prev() (or something like that) for them. Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project