From mboxrd@z Thu Jan 1 00:00:00 1970 From: laurent.pinchart@ideasonboard.com (Laurent Pinchart) Date: Mon, 18 Dec 2017 10:51:00 +0200 Subject: [PATCH 2/4 v5] drm/bridge: Provide a way to embed timing info in bridges In-Reply-To: <20171215121047.3650-3-linus.walleij@linaro.org> References: <20171215121047.3650-1-linus.walleij@linaro.org> <20171215121047.3650-3-linus.walleij@linaro.org> Message-ID: <5295758.aGqmmxpzro@avalon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hello Linus, Thank you for the patch. On Friday, 15 December 2017 14:10:45 EET Linus Walleij wrote: > After some discussion and failed patch sets trying to convey > the right timing information between the display engine and > a bridge using the connector, I try instead to use an optional > timing information container in the bridge itself, so that > display engines can retrieve it from any bridge and use it to > determine how to drive outputs. > > Signed-off-by: Linus Walleij > --- > ChangeLog ->v5: > - New patch > --- > include/drm/drm_bridge.h | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > index 682d01ba920c..3bf34f7c90d4 100644 > --- a/include/drm/drm_bridge.h > +++ b/include/drm/drm_bridge.h > @@ -30,6 +30,7 @@ > > struct drm_bridge; > struct drm_panel; > +struct drm_bridge_timings; Could you keep these alphabetically sorted ? > > /** > * struct drm_bridge_funcs - drm_bridge control functions > @@ -222,6 +223,22 @@ struct drm_bridge_funcs { > void (*enable)(struct drm_bridge *bridge); > }; > > +/** > + * struct drm_bridge_timings - timing information for the bridge > + * @sampling_edge: whether the bridge samples the digital input signal from > the > + * display engine on the positive or negative edge of the clock - false > means > + * negative edge, true means positive edge. Would it be clearer to reuse the DRM_BUS_FLAG_PIXDATA_*EDGE flags here ? > + * @setup_time_ps: the time in picoseconds the input data lines must be > stable > + * before the clock edge > + * @hold_time_ps: the time in picoseconds taken for the bridge to sample > the > + * input signal after the rising or falling edge I'd write s/rising or falling edge/clock edge/ to be consistent with the setup_time_ps description (and because that's also clearer in my opinion). If you want to explicitly tell which clock edge, you could write "the clock sampling edge" for both. The rest of the patch looks good to me. > + */ > +struct drm_bridge_timings { > + bool sampling_edge; > + u32 setup_time_ps; > + u32 hold_time_ps; > +}; > + > /** > * struct drm_bridge - central DRM bridge control structure > * @dev: DRM device this bridge belongs to > @@ -229,6 +246,8 @@ struct drm_bridge_funcs { > * @next: the next bridge in the encoder chain > * @of_node: device node pointer to the bridge > * @list: to keep track of all added bridges > + * @timings: the timing specification for the bridge, if any (may > + * be NULL) > * @funcs: control functions > * @driver_private: pointer to the bridge driver's internal context > */ > @@ -240,6 +259,7 @@ struct drm_bridge { > struct device_node *of_node; > #endif > struct list_head list; > + const struct drm_bridge_timings *timings; > > const struct drm_bridge_funcs *funcs; > void *driver_private; -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 2/4 v5] drm/bridge: Provide a way to embed timing info in bridges Date: Mon, 18 Dec 2017 10:51:00 +0200 Message-ID: <5295758.aGqmmxpzro@avalon> References: <20171215121047.3650-1-linus.walleij@linaro.org> <20171215121047.3650-3-linus.walleij@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [185.26.127.97]) by gabe.freedesktop.org (Postfix) with ESMTPS id CA5826E181 for ; Mon, 18 Dec 2017 08:50:51 +0000 (UTC) In-Reply-To: <20171215121047.3650-3-linus.walleij@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Linus Walleij Cc: linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGVsbG8gTGludXMsCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIEZyaWRheSwgMTUgRGVj ZW1iZXIgMjAxNyAxNDoxMDo0NSBFRVQgTGludXMgV2FsbGVpaiB3cm90ZToKPiBBZnRlciBzb21l IGRpc2N1c3Npb24gYW5kIGZhaWxlZCBwYXRjaCBzZXRzIHRyeWluZyB0byBjb252ZXkKPiB0aGUg cmlnaHQgdGltaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gdGhlIGRpc3BsYXkgZW5naW5lIGFuZAo+ IGEgYnJpZGdlIHVzaW5nIHRoZSBjb25uZWN0b3IsIEkgdHJ5IGluc3RlYWQgdG8gdXNlIGFuIG9w dGlvbmFsCj4gdGltaW5nIGluZm9ybWF0aW9uIGNvbnRhaW5lciBpbiB0aGUgYnJpZGdlIGl0c2Vs Ziwgc28gdGhhdAo+IGRpc3BsYXkgZW5naW5lcyBjYW4gcmV0cmlldmUgaXQgZnJvbSBhbnkgYnJp ZGdlIGFuZCB1c2UgaXQgdG8KPiBkZXRlcm1pbmUgaG93IHRvIGRyaXZlIG91dHB1dHMuCj4gCj4g U2lnbmVkLW9mZi1ieTogTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ IC0tLQo+IENoYW5nZUxvZyAtPnY1Ogo+IC0gTmV3IHBhdGNoCj4gLS0tCj4gIGluY2x1ZGUvZHJt L2RybV9icmlkZ2UuaCB8IDIwICsrKysrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2Vk LCAyMCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlk Z2UuaCBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+IGluZGV4IDY4MmQwMWJhOTIwYy4uM2Jm MzRmN2M5MGQ0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+IEBAIC0zMCw2ICszMCw3IEBACj4gCj4gIHN0cnVj dCBkcm1fYnJpZGdlOwo+ICBzdHJ1Y3QgZHJtX3BhbmVsOwo+ICtzdHJ1Y3QgZHJtX2JyaWRnZV90 aW1pbmdzOwoKQ291bGQgeW91IGtlZXAgdGhlc2UgYWxwaGFiZXRpY2FsbHkgc29ydGVkID8KCj4g Cj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyAtIGRybV9icmlkZ2UgY29udHJv bCBmdW5jdGlvbnMKPiBAQCAtMjIyLDYgKzIyMywyMiBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5j cyB7Cj4gIAl2b2lkICgqZW5hYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiAgfTsK PiAKPiArLyoqCj4gKyAqIHN0cnVjdCBkcm1fYnJpZGdlX3RpbWluZ3MgLSB0aW1pbmcgaW5mb3Jt YXRpb24gZm9yIHRoZSBicmlkZ2UKPiArICogQHNhbXBsaW5nX2VkZ2U6IHdoZXRoZXIgdGhlIGJy aWRnZSBzYW1wbGVzIHRoZSBkaWdpdGFsIGlucHV0IHNpZ25hbCBmcm9tCj4gdGhlCj4gKyAqIGRp c3BsYXkgZW5naW5lIG9uIHRoZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBlZGdlIG9mIHRoZSBjbG9j ayAtIGZhbHNlCj4gbWVhbnMKPiArICogbmVnYXRpdmUgZWRnZSwgdHJ1ZSBtZWFucyBwb3NpdGl2 ZSBlZGdlLgoKV291bGQgaXQgYmUgY2xlYXJlciB0byByZXVzZSB0aGUgRFJNX0JVU19GTEFHX1BJ WERBVEFfKkVER0UgZmxhZ3MgaGVyZSA/Cgo+ICsgKiBAc2V0dXBfdGltZV9wczogdGhlIHRpbWUg aW4gcGljb3NlY29uZHMgdGhlIGlucHV0IGRhdGEgbGluZXMgbXVzdCBiZQo+IHN0YWJsZQo+ICsg KiBiZWZvcmUgdGhlIGNsb2NrIGVkZ2UKPiArICogQGhvbGRfdGltZV9wczogdGhlIHRpbWUgaW4g cGljb3NlY29uZHMgdGFrZW4gZm9yIHRoZSBicmlkZ2UgdG8gc2FtcGxlCj4gdGhlCj4gKyAqIGlu cHV0IHNpZ25hbCBhZnRlciB0aGUgcmlzaW5nIG9yIGZhbGxpbmcgZWRnZQoKSSdkIHdyaXRlIHMv cmlzaW5nIG9yIGZhbGxpbmcgZWRnZS9jbG9jayBlZGdlLyB0byBiZSBjb25zaXN0ZW50IHdpdGgg dGhlIApzZXR1cF90aW1lX3BzIGRlc2NyaXB0aW9uIChhbmQgYmVjYXVzZSB0aGF0J3MgYWxzbyBj bGVhcmVyIGluIG15IG9waW5pb24pLiBJZiAKeW91IHdhbnQgdG8gZXhwbGljaXRseSB0ZWxsIHdo aWNoIGNsb2NrIGVkZ2UsIHlvdSBjb3VsZCB3cml0ZSAidGhlIGNsb2NrIApzYW1wbGluZyBlZGdl IiBmb3IgYm90aC4KClRoZSByZXN0IG9mIHRoZSBwYXRjaCBsb29rcyBnb29kIHRvIG1lLgoKPiAr ICovCj4gK3N0cnVjdCBkcm1fYnJpZGdlX3RpbWluZ3Mgewo+ICsJYm9vbCBzYW1wbGluZ19lZGdl Owo+ICsJdTMyIHNldHVwX3RpbWVfcHM7Cj4gKwl1MzIgaG9sZF90aW1lX3BzOwo+ICt9Owo+ICsK PiAgLyoqCj4gICAqIHN0cnVjdCBkcm1fYnJpZGdlIC0gY2VudHJhbCBEUk0gYnJpZGdlIGNvbnRy b2wgc3RydWN0dXJlCj4gICAqIEBkZXY6IERSTSBkZXZpY2UgdGhpcyBicmlkZ2UgYmVsb25ncyB0 bwo+IEBAIC0yMjksNiArMjQ2LDggQEAgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgewo+ICAgKiBA bmV4dDogdGhlIG5leHQgYnJpZGdlIGluIHRoZSBlbmNvZGVyIGNoYWluCj4gICAqIEBvZl9ub2Rl OiBkZXZpY2Ugbm9kZSBwb2ludGVyIHRvIHRoZSBicmlkZ2UKPiAgICogQGxpc3Q6IHRvIGtlZXAg dHJhY2sgb2YgYWxsIGFkZGVkIGJyaWRnZXMKPiArICogQHRpbWluZ3M6IHRoZSB0aW1pbmcgc3Bl Y2lmaWNhdGlvbiBmb3IgdGhlIGJyaWRnZSwgaWYgYW55IChtYXkKPiArICogYmUgTlVMTCkKPiAg ICogQGZ1bmNzOiBjb250cm9sIGZ1bmN0aW9ucwo+ICAgKiBAZHJpdmVyX3ByaXZhdGU6IHBvaW50 ZXIgdG8gdGhlIGJyaWRnZSBkcml2ZXIncyBpbnRlcm5hbCBjb250ZXh0Cj4gICAqLwo+IEBAIC0y NDAsNiArMjU5LDcgQEAgc3RydWN0IGRybV9icmlkZ2Ugewo+ICAJc3RydWN0IGRldmljZV9ub2Rl ICpvZl9ub2RlOwo+ICAjZW5kaWYKPiAgCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiArCWNvbnN0 IHN0cnVjdCBkcm1fYnJpZGdlX3RpbWluZ3MgKnRpbWluZ3M7Cj4gCj4gIAljb25zdCBzdHJ1Y3Qg ZHJtX2JyaWRnZV9mdW5jcyAqZnVuY3M7Cj4gIAl2b2lkICpkcml2ZXJfcHJpdmF0ZTsKCi0tIApS ZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==