From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [RFC PATCH 0/4] drm: bridge: anx7688 and mux drivers Date: Tue, 28 Jun 2016 13:58:47 +0530 Message-ID: <5772353F.3000002@codeaurora.org> References: <1467013727-11482-1-git-send-email-drinkcat@chromium.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 842136E50B for ; Tue, 28 Jun 2016 08:28:56 +0000 (UTC) In-Reply-To: <1467013727-11482-1-git-send-email-drinkcat@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Nicolas Boichat , dri-devel@lists.freedesktop.org Cc: Russell King , Thierry Reding , linux-kernel@vger.kernel.org, marcheu@chromium.org List-Id: dri-devel@lists.freedesktop.org CgpPbiAwNi8yNy8yMDE2IDAxOjE4IFBNLCBOaWNvbGFzIEJvaWNoYXQgd3JvdGU6Cj4gSGkgYWxs LAo+Cj4gVGhpcyBpcyBhIGZvbGxvdyB1cCB0byB0aGUgMiBwYXRjaGVzIHRvIGFkZCBzdXBwb3J0 IGZvciBBTlg3Njg4IHNlbnQgaGVyZToKPiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Bh dGNoLzkxODc4MDkvLCB0aGFua3MgQXJjaGl0IGFuZCBQaGlsaXBwIGZvcgo+IHRoZSBjb21tZW50 cy4KPgo+IEkgYWxzbyBhZGRlZCAyIHBhdGNoZXMgdG8gYWRkIHN1cHBvcnQgZm9yIGEgc2ltcGxl IGRpc3BsYXkgTVVYLCBhcyBJJ20gZmFjaW5nCj4gc2ltaWxhciBpc3N1ZXMgd2hpbGUgdHJ5aW5n IHRvIGltcGxlbWVudCBpdCwgaS5lLiB0aGUgY3VycmVudCBEUk0gY29yZSBkb2VzIG5vdAo+IHNl ZW0gdG8gc3VwcG9ydCB0aGlzIGtpbmQgb2Ygc2ltcGxlIHBhc3MtdGhydSBicmlkZ2UgdmVyeSB3 ZWxsOiBpdCBpcyBub3QgdmVyeQo+IGNsZWFyIHdoZXJlIGNvbm5lY3RvcnMgc2hvdWxkIGJlIGRl ZmluZWQgYW5kIGF0dGFjaGVkLiBJbiB0aGlzIGNhc2UsIG5vdAo+IGRlZmluaW5nIGFueSBjb25u ZWN0b3JzIGluIHRoZSAyIGJyaWRnZXMgKGFuZCByZXVzaW5nIHRoZSBjb25uZWN0b3IgaW4gTVRL Cj4gSERNSSBkcml2ZXIpIHNlZW0gdG8gd29yayBiZXN0LCBidXQgbWFrZXMgbGl0dGxlIGxvZ2lj YWwgc2Vuc2UgYXMgdGhlIHBoeXNpY2FsCj4gY29ubmVjdG9ycyBhcmUgYWN0dWFsbHkgYXR0YWNo ZWQgdG8gdGhlIGJyaWRnZXMuCgpCcmlkZ2VzIGFyZW4ndCByZWFsbHkgZHJtIG9iamVjdHMgaW4g dGhlbXNlbHZlcywgdGhleSBjYW4ganVzdCBiZQp0aG91Z2h0IG9mIGFzIGVudGl0aWVzIHRoYXQg YXR0YWNoIHRvIGFuIGVuY29kZXIuIEZyb20gYSBkcm0KcGVyc3BlY3RpdmUsIHRoZSBjb25uZWN0 b3IgaXMgb25seSBsaW5rZWQgdG8gYW4gZW5jb2Rlci4gSXQKZG9lc24ndCBzZWUgYW55IGJyaWRn ZXMuIFRoZXJlZm9yZSwgaXQgZG9lc24ndCBtYXR0ZXIgbXVjaAppZiB0aGUgYnJpZGdlIGRyaXZl ciBkb2Vzbid0IGNyZWF0ZSBjb25uZWN0b3JzLiBUaGUgRFQgYmluZGluZ3MsCmhvd2V2ZXIsIHNo b3VsZCBiZSBjbG9zZSB0byB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbnMuCgo+Cj4gSW4gYW55IGNh c2UsIHRoZSBib2FyZCBoYXMgdGhlIGZvbGxvd2luZyBsYXlvdXQ6Cj4gICAtIE1UODE3MyBIRE1J IGJyaWRnZQo+ICAgICAtIEhETUkgbXV4IHdpdGggMiBwb3J0cwo+ICAgICAgIDEuIEFOWDc2ODgg Zm9yIEhETUktPkRQIG92ZXIgVVNCLUMgY29udmVyc2lvbgo+ICAgICAgIDIuIE5hdGl2ZSBIRE1J Cj4KClNvLCB0aGUgTVRLIFNvQydzIEhETUkgb3V0cHV0IChUTURTIGxpbmVzKSBjYW4gYmUgcm91 dGVkIHRvIHRoZQpjb25uZWN0b3Igb24gdGhlIGJvYXJkIGRpcmVjdGx5IChuYXRpdmUgbW9kZSks IG9yIHZpYSB0aGUgQU5YNzY4OApicmlkZ2UgdXNpbmcgdGhlIGdwaW8gbXV4LiBEaWQgSSBnZXQg dGhpcyBwYXJ0IHJpZ2h0PwoKSXMgdGhlcmUgb25seSBvbmUgY29ubmVjdG9yIGF0IHRoZSBlbmQg b2YgYm90aCB0aGUgb3V0cHV0IHBhdGhzPwoKCj4gVGhlIG11eCBpcyBjb250cm9sbGVkIGJ5IGhh cmR3YXJlLCBsb29raW5nIGF0IHRoZSBIUEQgc2lnbmFscyBmcm9tIGJvdGggQU5YNzY4OAo+IGFu ZCBuYXRpdmUgSERNSSwgd2l0aCBhIHByaW9yaXR5IG9uIHRoZSBuYXRpdmUgSERNSSBvdXRwdXQu CgpJIGRpZG4ndCB1bmRlcnN0YW5kIHRoaXMuIEkgY2FuIHNlZSB0aGF0IEFOWDc2ODggY291bGQg Z2VuZXJhdGUgYSBIUEQKc2lnbmFsIG9uIGJlaGFsZiBvZiB0aGUgY29ubmVjdGVkIG1vbml0b3Is IGJ1dCB3aHkgd291bGQgdGhlIG5hdGl2ZSBNVEsKSERNSSBjb250cm9sbGVyIGdlbmVyYXRlIGEg SFBEIHNpZ25hbD8gSSB3b3VsZCBleHBlY3QgaXQgdG8gcmVjZWl2ZSBIUEQKYW5kIHRyaWdnZXIg YSBDUFUgaW50ZXJydXB0LgoKQ291bGQgeW91IGFsc28gZ2l2ZSBhbiBpZGVhIGFib3V0IHdoeSB0 aGUgaGFyZHdhcmUgc3dpdGNoZXMgYmV0d2VlbiB0aGUKdHdvIHBhdGhzPyBJdCBpdCBiYXNlZCBv biB3aGF0IGtpbmQgb2YgZGV2aWNlIHBsdWdzIGludG8gdGhlIGNvbm5lY3Rvcj8KClRoYW5rcywK QXJjaGl0Cgo+Cj4gVGhlIHdob2xlIHNldHVwIHdvcmtzIGZhaXJseSB3ZWxsIHdpdGhvdXQgYW55 IExpbnV4IGtlcm5lbCBkcml2ZXJzLCBleGNlcHQgdGhlCj4gMiBmb2xsb3dpbmcgY2FzZXM6Cj4g ICAxLiBXaGVuIEFOWDc2ODggaXMgYWN0aXZlLCBEUCBiYW5kd2lkdGggbWF5IGJlIGxpbWl0ZWQs IHNvIHdlIG5lZWQgdG8gZmlsdGVyCj4gICAgICByZXNvbHV0aW9ucyB0aGF0IHdvdWxkIGV4Y2Vl ZCB0aGUgYXZhaWxhYmxlIGJhbmR3aWR0aC4KPiAgIDIuIFdoZW4gYm90aCBvdXRwdXRzIEhQRCBz aWduYWxzIGFyZSBhY3RpdmUsIHRoZSBrZXJuZWwgZG9lcyBub3QgcmVjZWl2ZSBhbgo+ICAgICAg SFBEIHB1bHNlIHdoZW4gdGhlIEhETUkgaW5wdXQgaXMgdW5wbHVnZ2VkLgo+Cj4gQU5YNzY4OCBk cml2ZXIgZml4ZXMgaXNzdWUgMS4gVGhlIG11eCBkcml2ZXIgZml4ZXMgMiBieSBmb3JjaW5nIHRo ZSBrZXJuZWwgdG8KPiByZS1yZWFkIHRoZSBFRElEIG9uIG11eCBvdXRwdXQgY2hhbmdlLCBhbmQg YWxzbyBpc3N1ZSAxIGJ5IGZpbHRlcmluZyBvbmx5IHdoZW4KPiBBTlg3Njg4IGlzIGFjdGl2ZS4K Pgo+IEkgdW5kZXJzdGFuZCB0aGlzIHBhdGNoIHNlcmllcyBtaWdodCBub3QgYmUgYWNjZXB0YWJs ZSBhcy1pcywgYnV0IEkgaG9wZSB0aGlzCj4gc29ydCBvZiBzZXR1cCBjYW4gYmUgdGFrZW4gaW50 byBhY2NvdW50IHdoZW4gYmV0dGVyIHN1cHBvcnQgZm9yIGNvbm5lY3Rvcgo+IGRyaXZlcnMgaXMg aW50cm9kdWNlZC4KPgo+IFRoYW5rcyEKPgo+IEJlc3QsCj4KPiBOaWNvbGFzCj4KPiBOaWNvbGFz IEJvaWNoYXQgKDQpOgo+ICAgIGRybTogYnJpZGdlOiBhbng3Njg4OiBBZGQgYW54NzY4OCBicmlk Z2UgZHJpdmVyIHN1cHBvcnQuCj4gICAgZGV2aWNldHJlZTogQWRkIEFOWDc2ODggdHJhbnNtaXR0 ZXIgYmluZGluZwo+ICAgIGRybTogYnJpZGdlOiBHZW5lcmljIEdQSU8gbXV4IGRyaXZlcgo+ICAg IGRldmljZXRyZWU6IEFkZCBHUElPIGRpc3BsYXkgbXV4IGJpbmRpbmcKPgo+ICAgLi4uL2Rldmlj ZXRyZWUvYmluZGluZ3MvZHJtL2JyaWRnZS9hbng3Njg4LnR4dCAgICAgfCAgMzIgKysKPiAgIC4u Li9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9icmlkZ2UvZ3Bpby1tdXgudHh0ICAgIHwgIDU5ICsr KysKPiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg IHwgIDIwICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICAgMiArCj4gICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4LWFueDc2 ODguYyAgICAgICAgICB8IDIzMyArKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9nZW5lcmljLWdwaW8tbXV4LmMgICAgICAgICAgfCAzNDcgKysrKysrKysrKysrKysrKysr KysrCj4gICA2IGZpbGVzIGNoYW5nZWQsIDY5MyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9icmlkZ2UvYW54 NzY4OC50eHQKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvZHJtL2JyaWRnZS9ncGlvLW11eC50eHQKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4LWFueDc2ODguYwo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZ2VuZXJpYy1ncGlvLW11eC5jCj4KCi0tIApR dWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9y YSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752458AbcF1I3G (ORCPT ); Tue, 28 Jun 2016 04:29:06 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:33278 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752426AbcF1I3C (ORCPT ); Tue, 28 Jun 2016 04:29:02 -0400 Subject: Re: [RFC PATCH 0/4] drm: bridge: anx7688 and mux drivers To: Nicolas Boichat , dri-devel@lists.freedesktop.org References: <1467013727-11482-1-git-send-email-drinkcat@chromium.org> Cc: Thierry Reding , Russell King , linux-kernel@vger.kernel.org, p.zabel@pengutronix.de, marcheu@chromium.org From: Archit Taneja Message-ID: <5772353F.3000002@codeaurora.org> Date: Tue, 28 Jun 2016 13:58:47 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: <1467013727-11482-1-git-send-email-drinkcat@chromium.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/27/2016 01:18 PM, Nicolas Boichat wrote: > Hi all, > > This is a follow up to the 2 patches to add support for ANX7688 sent here: > https://patchwork.kernel.org/patch/9187809/, thanks Archit and Philipp for > the comments. > > I also added 2 patches to add support for a simple display MUX, as I'm facing > similar issues while trying to implement it, i.e. the current DRM core does not > seem to support this kind of simple pass-thru bridge very well: it is not very > clear where connectors should be defined and attached. In this case, not > defining any connectors in the 2 bridges (and reusing the connector in MTK > HDMI driver) seem to work best, but makes little logical sense as the physical > connectors are actually attached to the bridges. Bridges aren't really drm objects in themselves, they can just be thought of as entities that attach to an encoder. From a drm perspective, the connector is only linked to an encoder. It doesn't see any bridges. Therefore, it doesn't matter much if the bridge driver doesn't create connectors. The DT bindings, however, should be close to the physical connections. > > In any case, the board has the following layout: > - MT8173 HDMI bridge > - HDMI mux with 2 ports > 1. ANX7688 for HDMI->DP over USB-C conversion > 2. Native HDMI > So, the MTK SoC's HDMI output (TMDS lines) can be routed to the connector on the board directly (native mode), or via the ANX7688 bridge using the gpio mux. Did I get this part right? Is there only one connector at the end of both the output paths? > The mux is controlled by hardware, looking at the HPD signals from both ANX7688 > and native HDMI, with a priority on the native HDMI output. I didn't understand this. I can see that ANX7688 could generate a HPD signal on behalf of the connected monitor, but why would the native MTK HDMI controller generate a HPD signal? I would expect it to receive HPD and trigger a CPU interrupt. Could you also give an idea about why the hardware switches between the two paths? It it based on what kind of device plugs into the connector? Thanks, Archit > > The whole setup works fairly well without any Linux kernel drivers, except the > 2 following cases: > 1. When ANX7688 is active, DP bandwidth may be limited, so we need to filter > resolutions that would exceed the available bandwidth. > 2. When both outputs HPD signals are active, the kernel does not receive an > HPD pulse when the HDMI input is unplugged. > > ANX7688 driver fixes issue 1. The mux driver fixes 2 by forcing the kernel to > re-read the EDID on mux output change, and also issue 1 by filtering only when > ANX7688 is active. > > I understand this patch series might not be acceptable as-is, but I hope this > sort of setup can be taken into account when better support for connector > drivers is introduced. > > Thanks! > > Best, > > Nicolas > > Nicolas Boichat (4): > drm: bridge: anx7688: Add anx7688 bridge driver support. > devicetree: Add ANX7688 transmitter binding > drm: bridge: Generic GPIO mux driver > devicetree: Add GPIO display mux binding > > .../devicetree/bindings/drm/bridge/anx7688.txt | 32 ++ > .../devicetree/bindings/drm/bridge/gpio-mux.txt | 59 ++++ > drivers/gpu/drm/bridge/Kconfig | 20 ++ > drivers/gpu/drm/bridge/Makefile | 2 + > drivers/gpu/drm/bridge/analogix-anx7688.c | 233 ++++++++++++++ > drivers/gpu/drm/bridge/generic-gpio-mux.c | 347 +++++++++++++++++++++ > 6 files changed, 693 insertions(+) > create mode 100644 Documentation/devicetree/bindings/drm/bridge/anx7688.txt > create mode 100644 Documentation/devicetree/bindings/drm/bridge/gpio-mux.txt > create mode 100644 drivers/gpu/drm/bridge/analogix-anx7688.c > create mode 100644 drivers/gpu/drm/bridge/generic-gpio-mux.c > -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project