From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [RFC PATCH 1/2] drm: bridge: anx7688: Add anx7688 bridge driver support. Date: Wed, 22 Jun 2016 09:24:57 +0530 Message-ID: <576A0C11.9030707@codeaurora.org> References: <1466406853-26465-1-git-send-email-drinkcat@chromium.org> <57695F94.7030801@codeaurora.org> 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 D94A56E787 for ; Wed, 22 Jun 2016 03:55:04 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Nicolas Boichat Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Russell King , Enric Balletbo i Serra , =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Thierry Reding List-Id: dri-devel@lists.freedesktop.org CgpPbiA2LzIyLzIwMTYgODoxNCBBTSwgTmljb2xhcyBCb2ljaGF0IHdyb3RlOgo+IEhpIEFyY2hp dCwKPgo+IFRoYW5rcyBmb3IgeW91ciByZXBseS4KPgo+IE9uIFR1ZSwgSnVuIDIxLCAyMDE2IGF0 IDExOjM5IFBNLCBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPiB3cm90ZToK Pj4gSGksCj4+Cj4+IE9uIDYvMjAvMjAxNiAxMjo0NCBQTSwgTmljb2xhcyBCb2ljaGF0IHdyb3Rl Ogo+Pj4KPj4+IEFOWDc2ODggaXMgYSBIRE1JIHRvIERQIGNvbnZlcnRlciAoYXMgd2VsbCBhcyBV U0ItQyBwb3J0IGNvbnRyb2xsZXIpLAo+Pj4gdGhhdCBoYXMgYW4gaW50ZXJuYWwgbWljcm9jb250 cm9sbGVyLgo+Pj4KPj4+IFRoZSBvbmx5IHJlYXNvbiBhIExpbnV4IGtlcm5lbCBkcml2ZXIgaXMg bmVjZXNzYXJ5IGlzIHRvIHJlamVjdAo+Pj4gcmVzb2x1dGlvbnMgdGhhdCByZXF1aXJlIG1vcmUg YmFuZHdpZHRoIHRoYW4gd2hhdCBpcyBhdmFpbGFibGUgb24KPj4+IHRoZSBEUCBzaWRlLiBEUCBi YW5kd2lkdGggYW5kIGxhbmUgY291bnQgYXJlIHJlcG9ydGVkIGJ5IHRoZSBicmlkZ2UKPj4+IHZp YSAyIHJlZ2lzdGVycyBvbiBJMkMuCj4+Cj4+Cj4+IEhvdyBkb2VzIHRoZSBjaGlwIGtub3cgd2hl biB0byBlbmFibGUvZGlzYWJsZSBpdHNlbGY/IERvZXMgaXQgc2h1dG9mZgo+PiBpdHNlbGYgaWYg dGhlcmUgaXNuJ3QgYW55dGhpbmcgb24gdGhlIEhETUkgbGluaz8KPgo+IE5vdCAxMDAlIHN1cmUg b2YgdGhlIGludGVybmFscyAodGhlcmUgaXMgYSBjbG9zZWQgc291cmNlIGZpcm13YXJlIGluCj4g dGhlIGNoaXApLCBidXQgSSBiZWxpZXZlIHRoZSBIRE1JL0RQIHBhcnQgb2YgdGhlIGNoaXAgaXMg c3dpdGNoZWQgb24KPiB3aGVuZXZlciB0aGVyZSBpcyBhIERQIG92ZXIgVVNCLUMgY29ubmVjdG9y IHBsdWdnZWQgaW4uCj4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEJvaWNoYXQgPGRy aW5rY2F0QGNocm9taXVtLm9yZz4KPj4+IC0tLQo+Pj4KPj4+IEhpLAo+Pj4KPj4+IEkgdGVzdGVk IHRoaXMgZHJpdmVyIHVzaW5nIHRoZSBNZWRpYXRlayBIRE1JIGNvbnRyb2xsZXIgKE1UODE3Mykg dXBzdHJlYW0KPj4+IG9mIHRoZSBBTlggYnJpZGdlIGNoaXAgKFBoaWxsaXAgc2VudCBhIFBVTEwg cmVxdWVzdCBvbiBKdW5lIDEzOgo+Pj4gZ2l0Oi8vZ2l0LnBlbmd1dHJvbml4LmRlL2dpdC9wemEv bGludXguZ2l0IHRhZ3MvbWVkaWF0ZWstZHJtLTIwMTYtMDYtMTMKPj4+ICkuCj4+Pgo+Pj4gSSBo YXZlIDIgY29uY2VybnMsIHRoYXQgSSdtIG5vdCBzdXJlIGhvdyB0byBhZGRyZXNzIHdpdGhpbiB0 aGUga2VybmVsIERSTQo+Pj4gZnJhbWV3b3JrOgo+Pj4gICAgMS4gQWxsIG90aGVyIGJyaWRnZSBk cml2ZXJzIGFsc28gaGF2ZSBhIGNvbm5lY3RvciBhdHRhY2hlZCB0byBpdC4KPj4+IEhvd2V2ZXIs IGluCj4+PiAgICAgICB0aGlzIGNhc2UsIHdlIGNhbm5vdCByZWFkIHRoZSBtb25pdG9yIEVESUQg ZGlyZWN0bHksIHNvIEknbSBub3Qgc3VyZQo+Pj4gd2hhdAo+Pj4gICAgICAgSSBjb3VsZCBwdXQg aW4gYSAiZ2V0X21vZGVzIiBmdW5jdGlvbi4gSW5zdGVhZCwgQU5YNzY4OCBwcm92aWRlcyBhCj4+ PiBJMkMKPj4+ICAgICAgIHBhc3N0aHJ1L3JlcGVhdGVyLCBzbyB0aGUgRURJRCBpcyByZWFkIG9u IHRoZSBNZWRpYXRlayBIRE1JCj4+PiBjb250cm9sbGVyIHNpZGUuCj4+Pgo+Pj4gICAgICAgVGhh dCBsZWFkcyB0byBhIHNvbWV3aGF0IHN0cmFuZ2UgbGF5b3V0LCB3aGVyZSB3ZSBoYXZlOgo+Pj4g ICAgICAgLSBNVEsgSERNSSBicmlkZ2UvZW5jb2Rlcgo+Pj4gICAgICAgICAtIE1USyBjb25uZWN0 b3IgKEhETUkpCj4+PiAgICAgICAgIC0gQU5YNzY4OCBicmlkZ2UKPj4+ICAgICAgICAgICAtIE5v IGNvbm5lY3Rvcgo+Pgo+Pgo+Pgo+PiBZb3Ugc2hvdWxkIGlkZWFsbHkgaGF2ZSBvbmUgRFAgY29u bmVjdG9yIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluOgo+Pgo+PiAgICAgICAgICAtIE1USyBIRE1J IGJyaWRnZS9lbmNvZGVyCj4+ICAgICAgICAgICAgICAtIEFOWDc2ODggYnJpZGdlCj4+ICAgICAg ICAgICAgICAgICAtIENvbm5lY3RvciAoRFApCj4+Cj4+IEluIHRoZSBkdC1iaW5kaW5ncyBmb3Ig dGhpcyBib2FyZCwgaGRtaSdzIG91dHB1dCBwb3J0IHNob3VsZG4ndCBiZQo+PiBjb25uZWN0ZWQg dG8gYSBoZG1pIGNvbm5lY3RvciwgYnV0IHRoZSBpbnB1dCBwb3J0IG9mIHRoZSBBTlg3Njg4Cj4+ IERQIGJyaWRnZS4gVGhlIG91dHB1dCBwb3J0IG9mIHRoZSBicmlkZ2Ugc2hvdWxkIGJlIHRoZSBv bmUgdGhhdAo+PiBjb25uZWN0cyB0byB0aGUgRFAgY29ubmVjdG9yLgo+Cj4gWWVzIHRoYXQncyB3 aGF0IEkgZG8gKGluIHRoZSBkZXZpY2UgdHJlZSkuCj4KPiBBY3R1YWxseSwgZXhwZXJpbWVudGlu ZyBhIGJpdCBtb3JlIHdpdGggdGhlIGNvZGUsIEkgcmVhbGl6ZWQgdGhhdCB0aGUKPiBjb25uZWN0 b3IgaXMgYWx3YXlzIGF0dGFjaGVkIHRvIHRoZSBlbmNvZGVyLCBub3QgdGhlIGJyaWRnZSwgc28g dGhlIDIKPiBsYXlvdXRzIGFib3ZlIGFyZSBhY3R1YWxseSBpZGVudGljYWwgKGZyb20gdGhlIHVz ZXJzcGFjZSBwb2ludCBvZgo+IHZpZXcpLiBFeGNlcHQgdGhhdCB0aGUgY29ubmVjdG9yIG5hbWUg c2hvdWxkIGJlIEhETUkgaW4gb25lIGNhc2UsIGFuZAo+IERQIGluIHRoZSBvdGhlci4gQnV0IEkg dGhpbmsgdGhhdCdzIG1vc3RseSBhIGNvc21ldGljIGRpZmZlcmVuY2U/CgpZZWFoLCBwcm9iYWJs eS4gSSBkb24ndCBrbm93IHdoYXQgZXhhY3RseSB0aGUgdXNlcnNwYWNlIGRvZXMgd2l0aAp0aGUg Y29ubmVjdG9yIHR5cGUsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlIHRvIHJlcHJlc2VudCBpdCBhcyBh IERQCmNvbm5lY3RvciBpbiBjYXNlIGl0IG1ha2VzIGFueSBkZWNpc2lvbnMgYmFzZWQgb24gaXQu Cgo+Cj4+IE9uZSB3YXkgSSBjYW4gdGhpbmsgb2YgZml4aW5nIHRoaXMgaXMgdG8gbWFrZSBtYWtl IHRoZSBNVEsgaGRtaQo+PiBlbmNvZGVyIGRyaXZlciBhIGJpdCBzbWFydGVyIGJ5IG9ic2Vydmlu ZyB0aGUgRFQgY29ubmVjdGlvbnMuIElmCj4+IGl0J3Mgb3V0cHV0IHBvcnQgaXMgY29ubmVjdGVk IHRvIGp1c3QgYSBoZG1pLWNvbm5lY3RvciwgdGhlbgo+PiB0aGluZ3Mgc2hvdWxkIGJlIGFzIGJl Zm9yZS4gSWYgdGhlIG91dHB1dCBpcyBjb25uZWN0ZWQgdG8gdGhlIERQCj4+IGJyaWRnZSwgdGhl biBpdCBzaG91bGQgY3JlYXRlIGEgRFAgY29ubmVjdG9yLiBUaGUgY29ubmVjdG9yIG9wcwo+PiBm b3IgdGhlIERQIGNvbm5lY3RvciBjYW4gc3RpbGwgYmUgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUg SERNSQo+PiBjb25uZWN0b3IgYmVmb3JlLCBidXQgdGhlIHBoYW5kbGUgdG8gdGhlIEREQyBidXMg d291bGQgYmUgaW4gdGhlCj4+IERQIGRldmljZSBub2RlIGluIHRoaXMgY2FzZS4KPgo+IEkgdGhp bmsgaXQnZCBiZSBhIGJpdCB3ZWlyZCB0byBoYXZlIHRoZSBEREMgYnVzIHBoYW5kbGUgb24gdGhl IERQCj4gY29ubmVjdG9yLCBhcyB3ZSdyZSBub3QgcmVhZGluZyB0aGUgRURJRCBvbiB0aGUgRFAg c2lkZSBvZiB0aGUgYnJpZGdlLAo+IGJ1dCBvbiB0aGUgSERNSSBzaWRlIChhbmQgdGhlIGJyaWRn ZSBjYW4gZG8gYWxsIHNvcnQgb2YgdGhpbmdzIHRvIHRoZQo+IEVESUQ6IEF0IHRoZSB2ZXJ5IGxl YXN0LCBJIHRoaW5rIGl0IGNhY2hlcyBpdCkuCgpPbiB0aGUgYm9hcmQsIGRvIHRoZSBEREMgbGlu ZXMgam9pbiBkaXJlY3RseSBmcm9tIHRoZSBTb0MgcGlucyB0byB0aGUKRFAgY29ubmVjdG9yLCBv ciBkb2VzIGl0IGdvIHZpYSB0aGUgQU5YNzY4OCBjaGlwPwoKRXZlbiB3aXRoIHRoZSBjdXJyZW50 IGJpbmRpbmdzIChyZWZlcnJlZCBmcm9tIHRoZSBsaW5rIGJlbG93KSwgdGhlCmhkbWkgY29ubmVj dG9yIGhhcyB0aGUgRERDIG5vZGUuIFNob3VsZG4ndCBpdCBiZSB0aGUgc2FtZSBpbiB0aGUgRFAK Y2FzZSB0b28/IFRoZSBEUCBjb25uZWN0b3IsIGxpa2UgYmVmb3JlLCBpcyBzdGlsbCBtYW5nZWQg YnkgdGhlIEhETUkKZHJpdmVyLCB0aGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIHRoZSBuYW1lIGFu ZCB0aGF0IGl0J3MgdHdvIGhvcHMgYXdheQppbiB0aGUgRFQgYmluZGluZ3MuCgpodHRwczovL3Bh dGNod29yay5rZXJuZWwub3JnL3BhdGNoLzkxMzcwODkvCgo+Cj4+IFRoaXMgd2F5LCB5b3UgY2Fu IGdldCBhcm91bmQgaGF2aW5nIHRoZSBjb3JyZWN0IGxheW91dC4KPj4KPj4gSWRlYWxseSwgYSBi cmlkZ2UgZHJpdmVyIHNob3VsZG4ndCBiZSB0aGUgb25lIHRoYXQgY3JlYXRlcyBhCj4+IGNvbm5l Y3Rvci4gSXQgbWF5IGNvbnRhaW4gc29tZSBvZiB0aGUgY29ubmVjdG9yIGZ1bmN0aW9uYWxpdHks IGJ1dAo+PiB0aGUgY29ubmVjdG9yIGNyZWF0aW9uIHNob3VsZCBiZSBtYW5hZ2VkIGJ5IHRoZSBr bXMgZHJpdmVyLgo+PiBBbG1vc3QgYWxsIGJyaWRnZSBkcml2ZXJzIGNyZWF0aW5nIGEgY29ubmVj dG9yIGluIHRoZWlyIC5hdHRhY2gKPj4gY2FsbGJhY2tzIHNpbmNlIHRoZXkgb3duIHNvbWUgb2Yg dGhlIGNvbm5lY3RvciBmdW5jdGlvbmFsaXR5IChsaWtlCj4+IHJlYWRpbmcgRURJRCkuIFRoYXQn cyBzb21ldGhpbmcgd2UncmUgdHJ5aW5nIHRvIGZpeCBieSBwcm92aWRpbmcKPj4gc29tZSBtb3Jl IGJyaWRnZSBhcGkgdGhhdCBrbXMgZHJpdmVycyBjYW4gdXNlLgo+Pgo+PiBTaW5jZSB0aGlzIGJy aWRnZSBkcml2ZXIgZG9lc24ndCBoYXZlIGFueSBjb25uZWN0b3IgZnVuY3Rpb25hbGl0eQo+PiBh bnl3YXksIHlvdSBzaG91bGQgYmUgb2theS4KPgo+IEdyZWF0LCB0aGFua3MgZm9yIGNsYXJpZnlp bmcuCj4KPj4+Cj4+PiAgICAgICBSZXNvbHV0aW9uIGZpbHRlcmluZyB3b3JrcyBmaW5lIHRob3Vn aCwgdGhhbmtzIHRvIG1vZGVfZml4dXAgY2FsbGJhY2sKPj4+IG9uIHRoZQo+Pj4gICAgICAgYnJp ZGdlLiBJdCBhbHNvIGhlbHBzIHRoYXQgTWVkaWF0ZWsgSERNSSBicmlkZ2UgY2FsbHMgbW9kZV9m aXh1cCBmcm9tCj4+PiBpdHMKPj4+ICAgICAgIGNvbm5lY3RvciBtb2RlX3ZhbGlkIGNhbGxiYWNr LCBzbyB0aGF0IGludmFsaWQgbW9kZXMgYXJlIG5vdCBldmVuCj4+PiBwcmVzZW50ZWQKPj4+ICAg ICAgIHRvIHVzZXJzcGFjZS4KPj4+Cj4+PiAgICAyLiBJbiB0aGUgYmFuZHdpZHRoIGNvbXB1dGF0 aW9uLCBJIGhhcmQtY29kZSA4LWJpdCBwZXIgY2hhbm5lbCAoYnBjKS4KPj4+IGJwYyBkb2VzCj4+ PiAgICAgICBub3Qgc2VlbSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbW9kZSBzZXR0aW5nIGl0c2Vs Zi4gV2UgY291bGQgcG9zc2libHkKPj4+IGl0ZXJhdGUKPj4+ICAgICAgIG92ZXIgY29ubmVjdG9y cyBvbiB0aGUgRFJNIGRldmljZSwgYnV0IHRoZW4sIElJVUMsCj4+PiBjb25uZWN0b3ItPmRpc3Bs YXlfaW5mby5icGMKPj4+ICAgICAgIGluZGljYXRlcyB0aGUgX21heGltdW1fIGJwYyBzdXBwb3J0 ZWQgYnkgdGhlIG1vbml0b3IuCj4+Cj4+Cj4+IEknbSBub3QgY2xlYXIgYWJvdXQgdGhpcyBlaXRo ZXIuIFNvbWUgZHJpdmVycyBzZXQgYSBidXMgZm9ybWF0Cj4+IG9uIHRoZSBjb25uZWN0b3Igdmlh IGRybV9kaXNwbGF5X2luZm9fc2V0X2J1c19mb3JtYXRzIGluIHRoZWlyCj4+IGdldF9tb2RlcyBj b25uZWN0b3Igb3AsIGFuZCB0aGVuIHJldHJpZXZlIGl0IGxhdGVyLgo+Cj4gQWgsIGludGVyZXN0 aW5nLi4uIFNlZW1zIGxpa2Ugd2UnZCBuZWVkIGEgYmlnIHN3aXRjaC9jYXNlIHRvIGNvbnZlcnQK PiBmcm9tIGJ1c19mb3JtYXQgdG8gYnBwLCB0aG91Z2guCj4KPj4+Cj4+PiBBbnkgcG9pbnRlcnM/ IFRoYW5rcyEKPj4+Cj4+PiBCZXN0LAo+Pj4KPj4+IE5pY29sYXMKPj4+Cj4+PiAgICBkcml2ZXJz L2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICAgICAgICB8ICAgOSArKwo+Pj4gICAgZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwo+Pj4gICAgZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC1hbng3Njg4LmMgfCAyMjcKPj4+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+Pj4gICAgMyBmaWxlcyBjaGFuZ2VkLCAyMzcgaW5zZXJ0aW9u cygrKQo+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5h bG9naXgtYW54NzY4OC5jCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvS2NvbmZpZwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPj4+IGluZGV4 IDhmNzQyM2YuLjBjMWViNDEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+Pj4gQEAg LTcsNiArNywxNSBAQCBjb25maWcgRFJNX0JSSURHRQo+Pj4gICAgbWVudSAiRGlzcGxheSBJbnRl cmZhY2UgQnJpZGdlcyIKPj4+ICAgICAgICAgIGRlcGVuZHMgb24gRFJNICYmIERSTV9CUklER0UK Pj4+Cj4+PiArY29uZmlnIERSTV9BTkFMT0dJWF9BTlg3Njg4Cj4+PiArICAgICAgIHRyaXN0YXRl ICJBbmFsb2dpeCBBTlg3Njg4IGJyaWRnZSIKPj4+ICsgICAgICAgZGVwZW5kcyBvbiBEUk0KPj4+ ICsgICAgICAgc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4+PiArICAgICAgIC0tLWhlbHAtLS0KPj4+ ICsgICAgICAgICBBTlg3Njg4IGlzIGEgdHJhbnNtaXR0ZXIgdG8gc3VwcG9ydCBEaXNwbGF5UG9y dCBvdmVyIFVTQi1DIGZvcgo+Pj4gKyAgICAgICAgIHNtYXJ0cGhvbmUgYW5kIHRhYmxldHMuCj4+ PiArICAgICAgICAgVGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgSERNSSB0byBEUCBjb21w b25lbnQgb2YgdGhlIGNoaXAuCj4+PiArCj4+PiAgICBjb25maWcgRFJNX0FOQUxPR0lYX0FOWDc4 WFgKPj4+ICAgICAgICAgIHRyaXN0YXRlICJBbmFsb2dpeCBBTlg3OFhYIGJyaWRnZSIKPj4+ICAg ICAgICAgIHNlbGVjdCBEUk1fS01TX0hFTFBFUgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmls ZQo+Pj4gaW5kZXggOTZiMTNiMy4uZDc0NGM2YyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFr ZWZpbGUKPj4+IEBAIC0xLDUgKzEsNiBAQAo+Pj4gICAgY2NmbGFncy15IDo9IC1JaW5jbHVkZS9k cm0KPj4+Cj4+PiArb2JqLSQoQ09ORklHX0RSTV9BTkFMT0dJWF9BTlg3Njg4KSArPSBhbmFsb2dp eC1hbng3Njg4Lm8KPj4+ICAgIG9iai0kKENPTkZJR19EUk1fQU5BTE9HSVhfQU5YNzhYWCkgKz0g YW5hbG9naXgtYW54Nzh4eC5vCj4+PiAgICBvYmotJChDT05GSUdfRFJNX0RXX0hETUkpICs9IGR3 LWhkbWkubwo+Pj4gICAgb2JqLSQoQ09ORklHX0RSTV9EV19IRE1JX0FIQl9BVURJTykgKz0gZHct aGRtaS1haGItYXVkaW8ubwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv YW5hbG9naXgtYW54NzY4OC5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgt YW54NzY4OC5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uMmMz NDAyOQo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9h bmFsb2dpeC1hbng3Njg4LmMKPj4+IEBAIC0wLDAgKzEsMjI3IEBACj4+PiArLyoKPj4+ICsgKiBB Tlg3Njg4IEhETUktPkRQIGJyaWRnZSBkcml2ZXIKPj4+ICsgKgo+Pj4gKyAqIENvcHlyaWdodCAo QykgMjAxNiBHb29nbGUsIEluYy4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMgc29mdHdhcmUgaXMgbGlj ZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKPj4+ICsgKiBM aWNlbnNlIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGFuZAo+Pj4gKyAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZp ZWQgdW5kZXIgdGhvc2UgdGVybXMuCj4+PiArICoKPj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4+ICsgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zgo+Pj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKPj4+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ Pj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgo+ Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4K Pj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+Pgo+Pgo+PiBUaGUgMyBoZWFkZXJzIGFib3ZlIGFyZW4ndCBuZWVkZWQuCj4KPiBOb3IgZ3Bp by5oLiBSZW1vdmVkLgo+Cj4+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+Pj4gKwo+ Pj4gKy8qIFJlZ2lzdGVyIGFkZHJlc3NlcyAqLwo+Pj4gKyNkZWZpbmUgVkVORE9SX0lEX1JFRyAw eDAwCj4+PiArI2RlZmluZSBERVZJQ0VfSURfUkVHIDB4MDIKPj4+ICsKPj4+ICsjZGVmaW5lIEZX X1ZFUlNJT05fUkVHIDB4ODAKPj4+ICsKPj4+ICsjZGVmaW5lIERQX0JBTkRXSURUSF9SRUcgMHg4 NQo+Pj4gKyNkZWZpbmUgRFBfTEFORV9DT1VOVF9SRUcgMHg4Ngo+Pj4gKwo+Pj4gKyNkZWZpbmUg VkVORE9SX0lEIDB4MWYyOQo+Pj4gKyNkZWZpbmUgREVWSUNFX0lEIDB4NzY4OAo+Pj4gKwo+Pj4g Ky8qIEZpcnN0IHN1cHBvcnRlZCBmaXJtd2FyZSB2ZXJzaW9uICgwLjg1KSAqLwo+Pj4gKyNkZWZp bmUgTUlOSU1VTV9GV19WRVJTSU9OIDB4MDA4NQo+Pj4gKwo+Pj4gK3N0cnVjdCBhbng3Njg4IHsK Pj4+ICsgICAgICAgc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOwo+Pj4gKyAgICAgICBzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50Owo+Pj4gKwo+Pj4gKyAgICAgICBib29sIGZpbHRlcjsKPj4+ICt9 Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgYW54NzY4OF9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQsIHU4IHJlZywgdTggKmRhdGEsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICB1MTYg ZGF0YV9sZW4pCj4+PiArewo+Pj4gKyAgICAgICBpbnQgcmV0Owo+Pj4gKyAgICAgICBzdHJ1Y3Qg aTJjX21zZyBtc2dzW10gPSB7Cj4+PiArICAgICAgICAgICAgICAgewo+Pj4gKyAgICAgICAgICAg ICAgICAuYWRkciA9IGNsaWVudC0+YWRkciwKPj4+ICsgICAgICAgICAgICAgICAgLmZsYWdzID0g MCwKPj4+ICsgICAgICAgICAgICAgICAgLmxlbiA9IDEsCj4+PiArICAgICAgICAgICAgICAgIC5i dWYgPSAmcmVnLAo+Pj4gKyAgICAgICAgICAgICAgICB9LAo+Pj4gKyAgICAgICAgICAgICAgIHsK Pj4+ICsgICAgICAgICAgICAgICAgLmFkZHIgPSBjbGllbnQtPmFkZHIsCj4+PiArICAgICAgICAg ICAgICAgIC5mbGFncyA9IEkyQ19NX1JELAo+Pj4gKyAgICAgICAgICAgICAgICAubGVuID0gZGF0 YV9sZW4sCj4+PiArICAgICAgICAgICAgICAgIC5idWYgPSBkYXRhLAo+Pj4gKyAgICAgICAgICAg ICAgICB9Cj4+PiArICAgICAgIH07Cj4+PiArCj4+PiArICAgICAgIHJldCA9IGkyY190cmFuc2Zl cihjbGllbnQtPmFkYXB0ZXIsIG1zZ3MsIDIpOwo+Pj4gKwo+Pj4gKyAgICAgICBpZiAocmV0ID09 IDIpCj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiArICAgICAgIGlmIChyZXQgPCAw KQo+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgICAgIGVsc2UKPj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGlu ZSBzdHJ1Y3QgYW54NzY4OCAqYnJpZGdlX3RvX2FueDc2ODgoc3RydWN0IGRybV9icmlkZ2UKPj4+ ICpicmlkZ2UpCj4+PiArewo+Pj4gKyAgICAgICByZXR1cm4gY29udGFpbmVyX29mKGJyaWRnZSwg c3RydWN0IGFueDc2ODgsIGJyaWRnZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBib29sIGFu eDc2ODhfYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlCj4+PiAqYWRqdXN0ZWRfbW9kZSkKPj4+ICt7Cj4+PiAr ICAgICAgIHN0cnVjdCBhbng3Njg4ICphbng3Njg4ID0gYnJpZGdlX3RvX2FueDc2ODgoYnJpZGdl KTsKPj4+ICsgICAgICAgdTggcmVnc1syXTsKPj4+ICsgICAgICAgaW50IHRvdGFsYncsIHJlcXVp cmVkYnc7Cj4+Cj4+Cj4+IEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gdXNlIGEgdTMyIG9yIGxvbmcg b3Igc29tZXRoaW5nIGhlcmUgdG8gcHJldmVudAo+PiByaXNrIG9mIG92ZXJmbG93Lgo+Cj4gV2Vs bCwgbW9kZS0+Y2xvY2sgaXMgYWxyZWFkeSBhbiBpbnQgKGFuZCB0aGVyZSB3b24ndCBiZSBhbnkg b3ZlcmZsb3cKPiBpbiByZXF1aXJlZGJ3IHVubGVzcyB3ZSBnbyBmb3IgVEh6IGNsb2NrcyAsLSkp CgpBaCBva2F5LCBtaXNzZWQgdGhhdC4KCj4KPiB0b3RhbGJ3IGNvdWxkIGRvIHdpdGggYSBiaXQg bW9yZSBvZiBzYW5pdHkgY2hlY2tpbmcgKGUuZy4gY2hlY2sgdGhhdAo+IHJlZ3NbMF0gKiByZWdz WzFdIGlzIG5vdCBhYnN1cmQpLiBMaWtlLCB3ZSBrbm93IHJlZ3NbMV0gPD0gMiBvbiB0aGlzCj4g Y2hpcC4gV2lsbCBmaXguCj4KPj4+ICsgICAgICAgaW50IHJldDsKPj4+ICsKPj4+ICsgICAgICAg aWYgKCFhbng3Njg4LT5maWx0ZXIpCj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4+ PiArCj4+PiArICAgICAgIC8qIFJlYWQgYm90aCByZWdzIDB4ODUgKGJhbmR3aWR0aCkgYW5kIDB4 ODYgKGxhbmUgY291bnQpLiAqLwo+Pj4gKyAgICAgICByZXQgPSBhbng3Njg4X3JlYWQoYW54NzY4 OC0+Y2xpZW50LCBEUF9CQU5EV0lEVEhfUkVHLCByZWdzLCAyKTsKPj4KPj4KPj4gV2hvIHByb2dy YW1tZWQgdGhlc2UgcmVnaXN0ZXJzIGluIHRoZSBmaXJzdCBwbGFjZT8gSXMgdGhlIGxhbmUgY291 bnQKPj4gc29tZSBzb3J0IG9mIHJlc2V0IHZhbHVlPyBPciBpcyBpdCBzb21ldGhpbmcgdGhhdCBj aGFuZ2VzIGR5bmFtaWNhbGx5Pwo+Cj4gVGhlIEFOWDc2ODggT0NNIChvbi1jaGlwIG1pY3JvY29u dHJvbGxlcikgc2V0cyBpdC4gSXQgY2hhbmdlcwo+IGRlcGVuZGluZyBvbiB0aGUgZG93bnN0cmVh bSAoRFApIGJhbmR3aWR0aC9sYW5lIGNvdW50LCBzbyBpdCBjaGFuZ2VzCj4gb24gZWFjaCBwbHVn IGV2ZW50IChhZnRlciBEUCBsaW5rIHRyYWluaW5nIHByZXN1bWFibHkpLgoKT2theS4gTWFrZXMg c2Vuc2UsIHRoZW4uCgpUaGFua3MsCkFyY2hpdAoKLS0gClF1YWxjb21tIElubm92YXRpb24gQ2Vu dGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5k YXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751827AbcFVD4x (ORCPT ); Tue, 21 Jun 2016 23:56:53 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:45552 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751002AbcFVD4w (ORCPT ); Tue, 21 Jun 2016 23:56:52 -0400 Subject: Re: [RFC PATCH 1/2] drm: bridge: anx7688: Add anx7688 bridge driver support. To: Nicolas Boichat References: <1466406853-26465-1-git-send-email-drinkcat@chromium.org> <57695F94.7030801@codeaurora.org> Cc: dri-devel@lists.freedesktop.org, =?UTF-8?Q?St=c3=a9phane_Marchesin?= , linux-kernel@vger.kernel.org, Enric Balletbo i Serra , Russell King , Thierry Reding From: Archit Taneja Message-ID: <576A0C11.9030707@codeaurora.org> Date: Wed, 22 Jun 2016 09:24:57 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 MIME-Version: 1.0 In-Reply-To: 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 On 6/22/2016 8:14 AM, Nicolas Boichat wrote: > Hi Archit, > > Thanks for your reply. > > On Tue, Jun 21, 2016 at 11:39 PM, Archit Taneja wrote: >> Hi, >> >> On 6/20/2016 12:44 PM, Nicolas Boichat wrote: >>> >>> ANX7688 is a HDMI to DP converter (as well as USB-C port controller), >>> that has an internal microcontroller. >>> >>> The only reason a Linux kernel driver is necessary is to reject >>> resolutions that require more bandwidth than what is available on >>> the DP side. DP bandwidth and lane count are reported by the bridge >>> via 2 registers on I2C. >> >> >> How does the chip know when to enable/disable itself? Does it shutoff >> itself if there isn't anything on the HDMI link? > > Not 100% sure of the internals (there is a closed source firmware in > the chip), but I believe the HDMI/DP part of the chip is switched on > whenever there is a DP over USB-C connector plugged in. > >>> >>> Signed-off-by: Nicolas Boichat >>> --- >>> >>> Hi, >>> >>> I tested this driver using the Mediatek HDMI controller (MT8173) upstream >>> of the ANX bridge chip (Phillip sent a PULL request on June 13: >>> git://git.pengutronix.de/git/pza/linux.git tags/mediatek-drm-2016-06-13 >>> ). >>> >>> I have 2 concerns, that I'm not sure how to address within the kernel DRM >>> framework: >>> 1. All other bridge drivers also have a connector attached to it. >>> However, in >>> this case, we cannot read the monitor EDID directly, so I'm not sure >>> what >>> I could put in a "get_modes" function. Instead, ANX7688 provides a >>> I2C >>> passthru/repeater, so the EDID is read on the Mediatek HDMI >>> controller side. >>> >>> That leads to a somewhat strange layout, where we have: >>> - MTK HDMI bridge/encoder >>> - MTK connector (HDMI) >>> - ANX7688 bridge >>> - No connector >> >> >> >> You should ideally have one DP connector at the end of the chain: >> >> - MTK HDMI bridge/encoder >> - ANX7688 bridge >> - Connector (DP) >> >> In the dt-bindings for this board, hdmi's output port shouldn't be >> connected to a hdmi connector, but the input port of the ANX7688 >> DP bridge. The output port of the bridge should be the one that >> connects to the DP connector. > > Yes that's what I do (in the device tree). > > Actually, experimenting a bit more with the code, I realized that the > connector is always attached to the encoder, not the bridge, so the 2 > layouts above are actually identical (from the userspace point of > view). Except that the connector name should be HDMI in one case, and > DP in the other. But I think that's mostly a cosmetic difference? Yeah, probably. I don't know what exactly the userspace does with the connector type, but it would be nice to represent it as a DP connector in case it makes any decisions based on it. > >> One way I can think of fixing this is to make make the MTK hdmi >> encoder driver a bit smarter by observing the DT connections. If >> it's output port is connected to just a hdmi-connector, then >> things should be as before. If the output is connected to the DP >> bridge, then it should create a DP connector. The connector ops >> for the DP connector can still be the same as that of the HDMI >> connector before, but the phandle to the DDC bus would be in the >> DP device node in this case. > > I think it'd be a bit weird to have the DDC bus phandle on the DP > connector, as we're not reading the EDID on the DP side of the bridge, > but on the HDMI side (and the bridge can do all sort of things to the > EDID: At the very least, I think it caches it). On the board, do the DDC lines join directly from the SoC pins to the DP connector, or does it go via the ANX7688 chip? Even with the current bindings (referred from the link below), the hdmi connector has the DDC node. Shouldn't it be the same in the DP case too? The DP connector, like before, is still manged by the HDMI driver, the only difference being the name and that it's two hops away in the DT bindings. https://patchwork.kernel.org/patch/9137089/ > >> This way, you can get around having the correct layout. >> >> Ideally, a bridge driver shouldn't be the one that creates a >> connector. It may contain some of the connector functionality, but >> the connector creation should be managed by the kms driver. >> Almost all bridge drivers creating a connector in their .attach >> callbacks since they own some of the connector functionality (like >> reading EDID). That's something we're trying to fix by providing >> some more bridge api that kms drivers can use. >> >> Since this bridge driver doesn't have any connector functionality >> anyway, you should be okay. > > Great, thanks for clarifying. > >>> >>> Resolution filtering works fine though, thanks to mode_fixup callback >>> on the >>> bridge. It also helps that Mediatek HDMI bridge calls mode_fixup from >>> its >>> connector mode_valid callback, so that invalid modes are not even >>> presented >>> to userspace. >>> >>> 2. In the bandwidth computation, I hard-code 8-bit per channel (bpc). >>> bpc does >>> not seem to be included in the mode setting itself. We could possibly >>> iterate >>> over connectors on the DRM device, but then, IIUC, >>> connector->display_info.bpc >>> indicates the _maximum_ bpc supported by the monitor. >> >> >> I'm not clear about this either. Some drivers set a bus format >> on the connector via drm_display_info_set_bus_formats in their >> get_modes connector op, and then retrieve it later. > > Ah, interesting... Seems like we'd need a big switch/case to convert > from bus_format to bpp, though. > >>> >>> Any pointers? Thanks! >>> >>> Best, >>> >>> Nicolas >>> >>> drivers/gpu/drm/bridge/Kconfig | 9 ++ >>> drivers/gpu/drm/bridge/Makefile | 1 + >>> drivers/gpu/drm/bridge/analogix-anx7688.c | 227 >>> ++++++++++++++++++++++++++++++ >>> 3 files changed, 237 insertions(+) >>> create mode 100644 drivers/gpu/drm/bridge/analogix-anx7688.c >>> >>> diff --git a/drivers/gpu/drm/bridge/Kconfig >>> b/drivers/gpu/drm/bridge/Kconfig >>> index 8f7423f..0c1eb41 100644 >>> --- a/drivers/gpu/drm/bridge/Kconfig >>> +++ b/drivers/gpu/drm/bridge/Kconfig >>> @@ -7,6 +7,15 @@ config DRM_BRIDGE >>> menu "Display Interface Bridges" >>> depends on DRM && DRM_BRIDGE >>> >>> +config DRM_ANALOGIX_ANX7688 >>> + tristate "Analogix ANX7688 bridge" >>> + depends on DRM >>> + select DRM_KMS_HELPER >>> + ---help--- >>> + ANX7688 is a transmitter to support DisplayPort over USB-C for >>> + smartphone and tablets. >>> + This driver only supports the HDMI to DP component of the chip. >>> + >>> config DRM_ANALOGIX_ANX78XX >>> tristate "Analogix ANX78XX bridge" >>> select DRM_KMS_HELPER >>> diff --git a/drivers/gpu/drm/bridge/Makefile >>> b/drivers/gpu/drm/bridge/Makefile >>> index 96b13b3..d744c6c 100644 >>> --- a/drivers/gpu/drm/bridge/Makefile >>> +++ b/drivers/gpu/drm/bridge/Makefile >>> @@ -1,5 +1,6 @@ >>> ccflags-y := -Iinclude/drm >>> >>> +obj-$(CONFIG_DRM_ANALOGIX_ANX7688) += analogix-anx7688.o >>> obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o >>> obj-$(CONFIG_DRM_DW_HDMI) += dw-hdmi.o >>> obj-$(CONFIG_DRM_DW_HDMI_AHB_AUDIO) += dw-hdmi-ahb-audio.o >>> diff --git a/drivers/gpu/drm/bridge/analogix-anx7688.c >>> b/drivers/gpu/drm/bridge/analogix-anx7688.c >>> new file mode 100644 >>> index 0000000..2c34029 >>> --- /dev/null >>> +++ b/drivers/gpu/drm/bridge/analogix-anx7688.c >>> @@ -0,0 +1,227 @@ >>> +/* >>> + * ANX7688 HDMI->DP bridge driver >>> + * >>> + * Copyright (C) 2016 Google, Inc. >>> + * >>> + * This software is licensed under the terms of the GNU General Public >>> + * License version 2, as published by the Free Software Foundation, and >>> + * may be copied, distributed, and modified under those terms. >>> + * >>> + * This program is distributed in the hope that it will be useful, >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> + * GNU General Public License for more details. >>> + */ >>> + >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >>> +#include >> >> >> The 3 headers above aren't needed. > > Nor gpio.h. Removed. > >> >>> +#include >>> + >>> +/* Register addresses */ >>> +#define VENDOR_ID_REG 0x00 >>> +#define DEVICE_ID_REG 0x02 >>> + >>> +#define FW_VERSION_REG 0x80 >>> + >>> +#define DP_BANDWIDTH_REG 0x85 >>> +#define DP_LANE_COUNT_REG 0x86 >>> + >>> +#define VENDOR_ID 0x1f29 >>> +#define DEVICE_ID 0x7688 >>> + >>> +/* First supported firmware version (0.85) */ >>> +#define MINIMUM_FW_VERSION 0x0085 >>> + >>> +struct anx7688 { >>> + struct drm_bridge bridge; >>> + struct i2c_client *client; >>> + >>> + bool filter; >>> +}; >>> + >>> +static int anx7688_read(struct i2c_client *client, u8 reg, u8 *data, >>> + u16 data_len) >>> +{ >>> + int ret; >>> + struct i2c_msg msgs[] = { >>> + { >>> + .addr = client->addr, >>> + .flags = 0, >>> + .len = 1, >>> + .buf = ®, >>> + }, >>> + { >>> + .addr = client->addr, >>> + .flags = I2C_M_RD, >>> + .len = data_len, >>> + .buf = data, >>> + } >>> + }; >>> + >>> + ret = i2c_transfer(client->adapter, msgs, 2); >>> + >>> + if (ret == 2) >>> + return 0; >>> + if (ret < 0) >>> + return ret; >>> + else >>> + return -EIO; >>> +} >>> + >>> +static inline struct anx7688 *bridge_to_anx7688(struct drm_bridge >>> *bridge) >>> +{ >>> + return container_of(bridge, struct anx7688, bridge); >>> +} >>> + >>> +static bool anx7688_bridge_mode_fixup(struct drm_bridge *bridge, >>> + const struct drm_display_mode *mode, >>> + struct drm_display_mode >>> *adjusted_mode) >>> +{ >>> + struct anx7688 *anx7688 = bridge_to_anx7688(bridge); >>> + u8 regs[2]; >>> + int totalbw, requiredbw; >> >> >> It might make sense to use a u32 or long or something here to prevent >> risk of overflow. > > Well, mode->clock is already an int (and there won't be any overflow > in requiredbw unless we go for THz clocks ,-)) Ah okay, missed that. > > totalbw could do with a bit more of sanity checking (e.g. check that > regs[0] * regs[1] is not absurd). Like, we know regs[1] <= 2 on this > chip. Will fix. > >>> + int ret; >>> + >>> + if (!anx7688->filter) >>> + return true; >>> + >>> + /* Read both regs 0x85 (bandwidth) and 0x86 (lane count). */ >>> + ret = anx7688_read(anx7688->client, DP_BANDWIDTH_REG, regs, 2); >> >> >> Who programmed these registers in the first place? Is the lane count >> some sort of reset value? Or is it something that changes dynamically? > > The ANX7688 OCM (on-chip microcontroller) sets it. It changes > depending on the downstream (DP) bandwidth/lane count, so it changes > on each plug event (after DP link training presumably). Okay. Makes sense, then. Thanks, Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project