From mboxrd@z Thu Jan 1 00:00:00 1970 From: laurent.pinchart@ideasonboard.com (Laurent Pinchart) Date: Fri, 20 Oct 2017 13:53:11 +0300 Subject: [PATCH 2/2 v3] drm: bridge: Add THS8134A/B support to dumb VGA DAC In-Reply-To: <20171020065941.3877-1-linus.walleij@linaro.org> References: <20171020065941.3877-1-linus.walleij@linaro.org> Message-ID: <4461777.gksfa5PW48@avalon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Linus, Thank you for the patch. On Friday, 20 October 2017 09:59:41 EEST Linus Walleij wrote: > This extends the dumb VGA DAC bridge to handle the THS8134A > and THS8134B VGA DACs in addition to those already handled. > > The THS8134A, THS8134B and as it turns out also THS8135 need to > have data clocked out at the negative edge of the clock pulse, > since they clock it into the DAC at the positive edge (so by > then it needs to be stable) so we need some extra logic to flag > this on the connector to the driver. > > The semantics of the flag DRM_BUS_FLAG_PIXDATA_NEGEDGE in > clearly indicates that this flag tells > when to *drive* the data, not when the receiver *reads* it, > so the TI variants needs to be handled like this. > > Introduce a variant struct and contain the information there, > and add a bit of helpful comments about how this works so > people will get it right when adding new DACs or connectiong > new display drivers to DACs. > > The fact that THS8135 might be working on some systems today > is probably due to the fact that the display driver cannot > configure when the data is clocked out and the electronics > have simply been designed around it so it works anyways. > > The phenomenon is very real on the ARM reference designs using > PL111 where the hardware can control which edge to push out > the data. > > Cc: Laurent Pinchart > Cc: Bartosz Golaszewski > Cc: Maxime Ripard > Signed-off-by: Linus Walleij > --- > ChangeLog v2->v3: > - Move const specifier. > - Cut one line of code assigning bus flags. > - Preserve the "ti,ths8135" compatible for elder device trees. > ChangeLog v1->v2: > - Alphabetize includes > - Use a u32 with the bus polarity flags and just encode the > polarity using the DRM define directly. > - Rename vendor_data to vendor_info. > - Simplify assignment of the flag as it is just a simple > u32 now. > - Probe all TI variants on the "ti,ths813x" wildcard for now, > we only need to know that the device is in this family to > set the clock edge flag right. > --- > drivers/gpu/drm/bridge/dumb-vga-dac.c | 55 +++++++++++++++++++++++++++++--- > 1 file changed, 51 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/dumb-vga-dac.c > b/drivers/gpu/drm/bridge/dumb-vga-dac.c index 831a606c4706..2622e2f778d1 > 100644 > --- a/drivers/gpu/drm/bridge/dumb-vga-dac.c > +++ b/drivers/gpu/drm/bridge/dumb-vga-dac.c [snip] > @@ -55,7 +65,8 @@ static int dumb_vga_get_modes(struct drm_connector > *connector) } > > drm_mode_connector_update_edid_property(connector, edid); > - return drm_add_edid_modes(connector, edid); > + connector->display_info.bus_flags |= vga->variant->clk_edge_latch; > + retturn drm_add_edid_modes(connector, edid); Have you compiled this ? > fallback: > /* [snip] -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 2/2 v3] drm: bridge: Add THS8134A/B support to dumb VGA DAC Date: Fri, 20 Oct 2017 13:53:11 +0300 Message-ID: <4461777.gksfa5PW48@avalon> References: <20171020065941.3877-1-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 C9E4C6E1C6 for ; Fri, 20 Oct 2017 10:52:48 +0000 (UTC) In-Reply-To: <20171020065941.3877-1-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: Laurent Pinchart , Bartosz Golaszewski , dri-devel@lists.freedesktop.org, Maxime Ripard , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org SGkgTGludXMsCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIEZyaWRheSwgMjAgT2N0b2Jl ciAyMDE3IDA5OjU5OjQxIEVFU1QgTGludXMgV2FsbGVpaiB3cm90ZToKPiBUaGlzIGV4dGVuZHMg dGhlIGR1bWIgVkdBIERBQyBicmlkZ2UgdG8gaGFuZGxlIHRoZSBUSFM4MTM0QQo+IGFuZCBUSFM4 MTM0QiBWR0EgREFDcyBpbiBhZGRpdGlvbiB0byB0aG9zZSBhbHJlYWR5IGhhbmRsZWQuCj4gCj4g VGhlIFRIUzgxMzRBLCBUSFM4MTM0QiBhbmQgYXMgaXQgdHVybnMgb3V0IGFsc28gVEhTODEzNSBu ZWVkIHRvCj4gaGF2ZSBkYXRhIGNsb2NrZWQgb3V0IGF0IHRoZSBuZWdhdGl2ZSBlZGdlIG9mIHRo ZSBjbG9jayBwdWxzZSwKPiBzaW5jZSB0aGV5IGNsb2NrIGl0IGludG8gdGhlIERBQyBhdCB0aGUg cG9zaXRpdmUgZWRnZSAoc28gYnkKPiB0aGVuIGl0IG5lZWRzIHRvIGJlIHN0YWJsZSkgc28gd2Ug bmVlZCBzb21lIGV4dHJhIGxvZ2ljIHRvIGZsYWcKPiB0aGlzIG9uIHRoZSBjb25uZWN0b3IgdG8g dGhlIGRyaXZlci4KPiAKPiBUaGUgc2VtYW50aWNzIG9mIHRoZSBmbGFnIERSTV9CVVNfRkxBR19Q SVhEQVRBX05FR0VER0UgaW4KPiA8ZHJtL2RybV9jb25uZWN0b3IuaD4gY2xlYXJseSBpbmRpY2F0 ZXMgdGhhdCB0aGlzIGZsYWcgdGVsbHMKPiB3aGVuIHRvICpkcml2ZSogdGhlIGRhdGEsIG5vdCB3 aGVuIHRoZSByZWNlaXZlciAqcmVhZHMqIGl0LAo+IHNvIHRoZSBUSSB2YXJpYW50cyBuZWVkcyB0 byBiZSBoYW5kbGVkIGxpa2UgdGhpcy4KPiAKPiBJbnRyb2R1Y2UgYSB2YXJpYW50IHN0cnVjdCBh bmQgY29udGFpbiB0aGUgaW5mb3JtYXRpb24gdGhlcmUsCj4gYW5kIGFkZCBhIGJpdCBvZiBoZWxw ZnVsIGNvbW1lbnRzIGFib3V0IGhvdyB0aGlzIHdvcmtzIHNvCj4gcGVvcGxlIHdpbGwgZ2V0IGl0 IHJpZ2h0IHdoZW4gYWRkaW5nIG5ldyBEQUNzIG9yIGNvbm5lY3Rpb25nCj4gbmV3IGRpc3BsYXkg ZHJpdmVycyB0byBEQUNzLgo+IAo+IFRoZSBmYWN0IHRoYXQgVEhTODEzNSBtaWdodCBiZSB3b3Jr aW5nIG9uIHNvbWUgc3lzdGVtcyB0b2RheQo+IGlzIHByb2JhYmx5IGR1ZSB0byB0aGUgZmFjdCB0 aGF0IHRoZSBkaXNwbGF5IGRyaXZlciBjYW5ub3QKPiBjb25maWd1cmUgd2hlbiB0aGUgZGF0YSBp cyBjbG9ja2VkIG91dCBhbmQgdGhlIGVsZWN0cm9uaWNzCj4gaGF2ZSBzaW1wbHkgYmVlbiBkZXNp Z25lZCBhcm91bmQgaXQgc28gaXQgd29ya3MgYW55d2F5cy4KPiAKPiBUaGUgcGhlbm9tZW5vbiBp cyB2ZXJ5IHJlYWwgb24gdGhlIEFSTSByZWZlcmVuY2UgZGVzaWducyB1c2luZwo+IFBMMTExIHdo ZXJlIHRoZSBoYXJkd2FyZSBjYW4gY29udHJvbCB3aGljaCBlZGdlIHRvIHB1c2ggb3V0Cj4gdGhl IGRhdGEuCj4gCj4gQ2M6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnQrcmVuZXNh c0BpZGVhc29uYm9hcmQuY29tPgo+IENjOiBCYXJ0b3N6IEdvbGFzemV3c2tpIDxiZ29sYXN6ZXdz a2lAYmF5bGlicmUuY29tPgo+IENjOiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUt ZWxlY3Ryb25zLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBMaW51cyBXYWxsZWlqIDxsaW51cy53YWxs ZWlqQGxpbmFyby5vcmc+Cj4gLS0tCj4gQ2hhbmdlTG9nIHYyLT52MzoKPiAtIE1vdmUgY29uc3Qg c3BlY2lmaWVyLgo+IC0gQ3V0IG9uZSBsaW5lIG9mIGNvZGUgYXNzaWduaW5nIGJ1cyBmbGFncy4K PiAtIFByZXNlcnZlIHRoZSAidGksdGhzODEzNSIgY29tcGF0aWJsZSBmb3IgZWxkZXIgZGV2aWNl IHRyZWVzLgo+IENoYW5nZUxvZyB2MS0+djI6Cj4gLSBBbHBoYWJldGl6ZSBpbmNsdWRlcwo+IC0g VXNlIGEgdTMyIHdpdGggdGhlIGJ1cyBwb2xhcml0eSBmbGFncyBhbmQganVzdCBlbmNvZGUgdGhl Cj4gICBwb2xhcml0eSB1c2luZyB0aGUgRFJNIGRlZmluZSBkaXJlY3RseS4KPiAtIFJlbmFtZSB2 ZW5kb3JfZGF0YSB0byB2ZW5kb3JfaW5mby4KPiAtIFNpbXBsaWZ5IGFzc2lnbm1lbnQgb2YgdGhl IGZsYWcgYXMgaXQgaXMganVzdCBhIHNpbXBsZQo+ICAgdTMyIG5vdy4KPiAtIFByb2JlIGFsbCBU SSB2YXJpYW50cyBvbiB0aGUgInRpLHRoczgxM3giIHdpbGRjYXJkIGZvciBub3csCj4gICB3ZSBv bmx5IG5lZWQgdG8ga25vdyB0aGF0IHRoZSBkZXZpY2UgaXMgaW4gdGhpcyBmYW1pbHkgdG8KPiAg IHNldCB0aGUgY2xvY2sgZWRnZSBmbGFnIHJpZ2h0Lgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2R1bWItdmdhLWRhYy5jIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0KPiAgMSBmaWxlIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHVtYi12Z2EtZGFjLmMKPiBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHVtYi12Z2EtZGFjLmMgaW5kZXggODMxYTYwNmM0NzA2 Li4yNjIyZTJmNzc4ZDEKPiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R1 bWItdmdhLWRhYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kdW1iLXZnYS1kYWMu YwoKW3NuaXBdCgo+IEBAIC01NSw3ICs2NSw4IEBAIHN0YXRpYyBpbnQgZHVtYl92Z2FfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gKmNvbm5lY3RvcikgfQo+IAo+ICAJZHJtX21vZGVf Y29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4gLQlyZXR1 cm4gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4gKwljb25uZWN0b3ItPmRp c3BsYXlfaW5mby5idXNfZmxhZ3MgfD0gdmdhLT52YXJpYW50LT5jbGtfZWRnZV9sYXRjaDsKPiAr CXJldHR1cm4gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7CgpIYXZlIHlvdSBj b21waWxlZCB0aGlzID8KCj4gIGZhbGxiYWNrOgo+ICAJLyoKCltzbmlwXQoKLS0gClJlZ2FyZHMs CgpMYXVyZW50IFBpbmNoYXJ0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK