From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from perceval.ideasonboard.com ([213.167.242.64]:40372 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726047AbeLGWiL (ORCPT ); Fri, 7 Dec 2018 17:38:11 -0500 From: Laurent Pinchart To: kieran.bingham@ideasonboard.com Cc: Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org Subject: Re: [PATCH 3/5] drm: rcar-du: Disable unused DPAD outputs Date: Sat, 08 Dec 2018 00:38:47 +0200 Message-ID: <16788667.EO0sYzEzWT@avalon> In-Reply-To: <9151597e-50a3-d9a6-507a-96e505d7b3da@ideasonboard.com> References: <20181125144031.4407-1-laurent.pinchart+renesas@ideasonboard.com> <20181125144031.4407-4-laurent.pinchart+renesas@ideasonboard.com> <9151597e-50a3-d9a6-507a-96e505d7b3da@ideasonboard.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Hi Kieran, On Friday, 7 December 2018 14:50:47 EET Kieran Bingham wrote: > On 25/11/2018 14:40, Laurent Pinchart wrote: > > DU channels are routed to DPAD outputs in an SoC-dependent way. The > > routing can be fixed (e.g. DU3 to DPAD0 on H3) or configurable (e.g. DU0 > > or DU1 to DPAD0 on D3/E3). The hardware offers no option to disconnect > > DPAD outputs, which are thus always driven by a DU channel. > > > > On SoCs that have less DU channels than DU outputs, such as D3 and E3, > > the DPAD output is always driven when all channels are in used by other > > s/used/use/ > > > outputs (such as the internal LVDS and HDMI encoders). This creates an > > unwanted clone on the DPAD output. > > > > However, the parallel output of the DU channels routed to DPAD can be > > set to fixed levels in the DU channels themselves through the DOFLR > > group register. Use this to turn the DPAD on or off by driving fixed > > signals at the output of any DU channel not routed to a DPAD output. > > This doesn't affect the DU output signals going to other outputs. > > > > Signed-off-by: Laurent Pinchart > > > > Only spelling and bikeshedding here - so: > > Reviewed-by: Kieran Bingham > > > --- > > > > drivers/gpu/drm/rcar-du/rcar_du_group.c | 42 +++++++++++++++++++++++++ > > 1 file changed, 42 insertions(+) > > > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_group.c > > b/drivers/gpu/drm/rcar-du/rcar_du_group.c index > > 7e440f61977f..5aaf41b7a2ca 100644 > > --- a/drivers/gpu/drm/rcar-du/rcar_du_group.c > > +++ b/drivers/gpu/drm/rcar-du/rcar_du_group.c > > @@ -287,6 +287,46 @@ int rcar_du_set_dpad0_vsp1_routing(struct > > rcar_du_device *rcdu) > > return 0; > > } > > > > +static void rcar_du_group_set_output_levels(struct rcar_du_group *rgrp) > > +{ > > + static const u32 doflr_values[2] = { > > + DOFLR_HSYCFL0 | DOFLR_VSYCFL0 | DOFLR_ODDFL0 | > > + DOFLR_DISPFL0 | DOFLR_CDEFL0 | DOFLR_RGBFL0, > > + DOFLR_HSYCFL1 | DOFLR_VSYCFL1 | DOFLR_ODDFL1 | > > + DOFLR_DISPFL1 | DOFLR_CDEFL1 | DOFLR_RGBFL1, > > + }; > > + static const u32 dpad_mask = BIT(RCAR_DU_OUTPUT_DPAD1) > > + | BIT(RCAR_DU_OUTPUT_DPAD0); > > + struct rcar_du_device *rcdu = rgrp->dev; > > + u32 doflr = DOFLR_CODE; > > + unsigned int i; > > + > > + if (rcdu->info->gen < 2) > > + return; > > + > > + /* > > + * The DPAD outputs can't be controlled directly. However, the parallel > > + * output of the DU channels routed to DPAD can be set to fixed levels > > + * through the DOFLR group register. Use this to turn the DPAD on or off > > + * by driving fixed signals at the output of any DU channel not routed > > + * to a DPAD output. This doesn't affect the DU output signals going to > > + * other outputs, such as the internal LVDS and HDMI encoders. > > Perhaps more out of interest - what /fixed/ levels do we output. > High/Low/Hi-Z ? It's low-level, I'll update the comment. > > + */ > > + > > + for (i = 0; i < rgrp->num_crtcs; ++i) { > > + struct rcar_du_crtc_state *rstate; > > + struct rcar_du_crtc *rcrtc; > > + > > + rcrtc = &rcdu->crtcs[rgrp->index * 2 + i];> + rstate = > > to_rcar_crtc_state(rcrtc->crtc.state); + > > + if (!(rstate->outputs & dpad_mask)) > > + doflr |= doflr_values[i];> + } > > + > > + rcar_du_group_write(rgrp, DOFLR, doflr); > > +} > > + > > > > int rcar_du_group_set_routing(struct rcar_du_group *rgrp) > > { > > > > struct rcar_du_device *rcdu = rgrp->dev; > > > > @@ -306,5 +346,7 @@ int rcar_du_group_set_routing(struct rcar_du_group > > *rgrp)> > > rcar_du_group_write(rgrp, DORCR, dorcr); > > > > + rcar_du_group_set_output_levels(rgrp); > > Shouldn't this be: > > rcar_du_group_set_dpad_levels() > > Anyway - that's just bikeshedding - I'll leave the decision (even if > that's keeping this as is) to you. Good idea, I'll rename the function. > > + > > > > return rcar_du_set_dpad0_vsp1_routing(rgrp->dev); > > > > } -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 3/5] drm: rcar-du: Disable unused DPAD outputs Date: Sat, 08 Dec 2018 00:38:47 +0200 Message-ID: <16788667.EO0sYzEzWT@avalon> References: <20181125144031.4407-1-laurent.pinchart+renesas@ideasonboard.com> <20181125144031.4407-4-laurent.pinchart+renesas@ideasonboard.com> <9151597e-50a3-d9a6-507a-96e505d7b3da@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id D72B76E868 for ; Fri, 7 Dec 2018 22:38:10 +0000 (UTC) In-Reply-To: <9151597e-50a3-d9a6-507a-96e505d7b3da@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: kieran.bingham@ideasonboard.com Cc: linux-renesas-soc@vger.kernel.org, Laurent Pinchart , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgS2llcmFuLAoKT24gRnJpZGF5LCA3IERlY2VtYmVyIDIwMTggMTQ6NTA6NDcgRUVUIEtpZXJh biBCaW5naGFtIHdyb3RlOgo+IE9uIDI1LzExLzIwMTggMTQ6NDAsIExhdXJlbnQgUGluY2hhcnQg d3JvdGU6Cj4gPiBEVSBjaGFubmVscyBhcmUgcm91dGVkIHRvIERQQUQgb3V0cHV0cyBpbiBhbiBT b0MtZGVwZW5kZW50IHdheS4gVGhlCj4gPiByb3V0aW5nIGNhbiBiZSBmaXhlZCAoZS5nLiBEVTMg dG8gRFBBRDAgb24gSDMpIG9yIGNvbmZpZ3VyYWJsZSAoZS5nLiBEVTAKPiA+IG9yIERVMSB0byBE UEFEMCBvbiBEMy9FMykuIFRoZSBoYXJkd2FyZSBvZmZlcnMgbm8gb3B0aW9uIHRvIGRpc2Nvbm5l Y3QKPiA+IERQQUQgb3V0cHV0cywgd2hpY2ggYXJlIHRodXMgYWx3YXlzIGRyaXZlbiBieSBhIERV IGNoYW5uZWwuCj4gPiAKPiA+IE9uIFNvQ3MgdGhhdCBoYXZlIGxlc3MgRFUgY2hhbm5lbHMgdGhh biBEVSBvdXRwdXRzLCBzdWNoIGFzIEQzIGFuZCBFMywKPiA+IHRoZSBEUEFEIG91dHB1dCBpcyBh bHdheXMgZHJpdmVuIHdoZW4gYWxsIGNoYW5uZWxzIGFyZSBpbiB1c2VkIGJ5IG90aGVyCj4gCj4g cy91c2VkL3VzZS8KPiAKPiA+IG91dHB1dHMgKHN1Y2ggYXMgdGhlIGludGVybmFsIExWRFMgYW5k IEhETUkgZW5jb2RlcnMpLiBUaGlzIGNyZWF0ZXMgYW4KPiA+IHVud2FudGVkIGNsb25lIG9uIHRo ZSBEUEFEIG91dHB1dC4KPiA+IAo+ID4gSG93ZXZlciwgdGhlIHBhcmFsbGVsIG91dHB1dCBvZiB0 aGUgRFUgY2hhbm5lbHMgcm91dGVkIHRvIERQQUQgY2FuIGJlCj4gPiBzZXQgdG8gZml4ZWQgbGV2 ZWxzIGluIHRoZSBEVSBjaGFubmVscyB0aGVtc2VsdmVzIHRocm91Z2ggdGhlIERPRkxSCj4gPiBn cm91cCByZWdpc3Rlci4gVXNlIHRoaXMgdG8gdHVybiB0aGUgRFBBRCBvbiBvciBvZmYgYnkgZHJp dmluZyBmaXhlZAo+ID4gc2lnbmFscyBhdCB0aGUgb3V0cHV0IG9mIGFueSBEVSBjaGFubmVsIG5v dCByb3V0ZWQgdG8gYSBEUEFEIG91dHB1dC4KPiA+IFRoaXMgZG9lc24ndCBhZmZlY3QgdGhlIERV IG91dHB1dCBzaWduYWxzIGdvaW5nIHRvIG90aGVyIG91dHB1dHMuCj4gPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IExhdXJlbnQgUGluY2hhcnQKPiA+IDxsYXVyZW50LnBpbmNoYXJ0K3JlbmVzYXNAaWRl YXNvbmJvYXJkLmNvbT4KPiAKPiBPbmx5IHNwZWxsaW5nIGFuZCBiaWtlc2hlZGRpbmcgaGVyZSAt IHNvOgo+IAo+IFJldmlld2VkLWJ5OiBLaWVyYW4gQmluZ2hhbSA8a2llcmFuLmJpbmdoYW0rcmVu ZXNhc0BpZGVhc29uYm9hcmQuY29tPgo+IAo+ID4gLS0tCj4gPiAKPiA+ICBkcml2ZXJzL2dwdS9k cm0vcmNhci1kdS9yY2FyX2R1X2dyb3VwLmMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysr Cj4gPiAgMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKykKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfZ3JvdXAuYwo+ID4gYi9kcml2ZXJz L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2dyb3VwLmMgaW5kZXgKPiA+IDdlNDQwZjYxOTc3Zi4u NWFhZjQxYjdhMmNhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNh cl9kdV9ncm91cC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2dy b3VwLmMKPiA+IEBAIC0yODcsNiArMjg3LDQ2IEBAIGludCByY2FyX2R1X3NldF9kcGFkMF92c3Ax X3JvdXRpbmcoc3RydWN0Cj4gPiByY2FyX2R1X2RldmljZSAqcmNkdSkKPiA+ICAJcmV0dXJuIDA7 Cj4gPiAgfQo+ID4gCj4gPiArc3RhdGljIHZvaWQgcmNhcl9kdV9ncm91cF9zZXRfb3V0cHV0X2xl dmVscyhzdHJ1Y3QgcmNhcl9kdV9ncm91cCAqcmdycCkKPiA+ICt7Cj4gPiArCXN0YXRpYyBjb25z dCB1MzIgZG9mbHJfdmFsdWVzWzJdID0gewo+ID4gKwkJRE9GTFJfSFNZQ0ZMMCB8IERPRkxSX1ZT WUNGTDAgfCBET0ZMUl9PRERGTDAgfAo+ID4gKwkJRE9GTFJfRElTUEZMMCB8IERPRkxSX0NERUZM MCAgfCBET0ZMUl9SR0JGTDAsCj4gPiArCQlET0ZMUl9IU1lDRkwxIHwgRE9GTFJfVlNZQ0ZMMSB8 IERPRkxSX09EREZMMSB8Cj4gPiArCQlET0ZMUl9ESVNQRkwxIHwgRE9GTFJfQ0RFRkwxICB8IERP RkxSX1JHQkZMMSwKPiA+ICsJfTsKPiA+ICsJc3RhdGljIGNvbnN0IHUzMiBkcGFkX21hc2sgPSBC SVQoUkNBUl9EVV9PVVRQVVRfRFBBRDEpCj4gPiArCQkJCSAgIHwgQklUKFJDQVJfRFVfT1VUUFVU X0RQQUQwKTsKPiA+ICsJc3RydWN0IHJjYXJfZHVfZGV2aWNlICpyY2R1ID0gcmdycC0+ZGV2Owo+ ID4gKwl1MzIgZG9mbHIgPSBET0ZMUl9DT0RFOwo+ID4gKwl1bnNpZ25lZCBpbnQgaTsKPiA+ICsK PiA+ICsJaWYgKHJjZHUtPmluZm8tPmdlbiA8IDIpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiAr CS8qCj4gPiArCSAqIFRoZSBEUEFEIG91dHB1dHMgY2FuJ3QgYmUgY29udHJvbGxlZCBkaXJlY3Rs eS4gSG93ZXZlciwgdGhlIHBhcmFsbGVsCj4gPiArCSAqIG91dHB1dCBvZiB0aGUgRFUgY2hhbm5l bHMgcm91dGVkIHRvIERQQUQgY2FuIGJlIHNldCB0byBmaXhlZCBsZXZlbHMKPiA+ICsJICogdGhy b3VnaCB0aGUgRE9GTFIgZ3JvdXAgcmVnaXN0ZXIuIFVzZSB0aGlzIHRvIHR1cm4gdGhlIERQQUQg b24gb3IgCm9mZgo+ID4gKwkgKiBieSBkcml2aW5nIGZpeGVkIHNpZ25hbHMgYXQgdGhlIG91dHB1 dCBvZiBhbnkgRFUgY2hhbm5lbCBub3Qgcm91dGVkCj4gPiArCSAqIHRvIGEgRFBBRCBvdXRwdXQu IFRoaXMgZG9lc24ndCBhZmZlY3QgdGhlIERVIG91dHB1dCBzaWduYWxzIGdvaW5nIHRvCj4gPiAr CSAqIG90aGVyIG91dHB1dHMsIHN1Y2ggYXMgdGhlIGludGVybmFsIExWRFMgYW5kIEhETUkgZW5j b2RlcnMuCj4gCj4gUGVyaGFwcyBtb3JlIG91dCBvZiBpbnRlcmVzdCAtIHdoYXQgL2ZpeGVkLyBs ZXZlbHMgZG8gd2Ugb3V0cHV0Lgo+IEhpZ2gvTG93L0hpLVogPwoKSXQncyBsb3ctbGV2ZWwsIEkn bGwgdXBkYXRlIHRoZSBjb21tZW50LgoKPiA+ICsJICovCj4gPiArCj4gPiArCWZvciAoaSA9IDA7 IGkgPCByZ3JwLT5udW1fY3J0Y3M7ICsraSkgewo+ID4gKwkJc3RydWN0IHJjYXJfZHVfY3J0Y19z dGF0ZSAqcnN0YXRlOwo+ID4gKwkJc3RydWN0IHJjYXJfZHVfY3J0YyAqcmNydGM7Cj4gPiArCj4g PiArCQlyY3J0YyA9ICZyY2R1LT5jcnRjc1tyZ3JwLT5pbmRleCAqIDIgKyBpXTs+ICsJCXJzdGF0 ZSA9Cj4gPiB0b19yY2FyX2NydGNfc3RhdGUocmNydGMtPmNydGMuc3RhdGUpOyArCj4gPiArCQlp ZiAoIShyc3RhdGUtPm91dHB1dHMgJiBkcGFkX21hc2spKQo+ID4gKwkJCWRvZmxyIHw9IGRvZmxy X3ZhbHVlc1tpXTs+ICsJfQo+ID4gKwo+ID4gKwlyY2FyX2R1X2dyb3VwX3dyaXRlKHJncnAsIERP RkxSLCBkb2Zscik7Cj4gPiArfQo+ID4gKwo+ID4gCj4gPiAgaW50IHJjYXJfZHVfZ3JvdXBfc2V0 X3JvdXRpbmcoc3RydWN0IHJjYXJfZHVfZ3JvdXAgKnJncnApCj4gPiAgewo+ID4gIAo+ID4gIAlz dHJ1Y3QgcmNhcl9kdV9kZXZpY2UgKnJjZHUgPSByZ3JwLT5kZXY7Cj4gPiAKPiA+IEBAIC0zMDYs NSArMzQ2LDcgQEAgaW50IHJjYXJfZHVfZ3JvdXBfc2V0X3JvdXRpbmcoc3RydWN0IHJjYXJfZHVf Z3JvdXAKPiA+ICpyZ3JwKT4gCj4gPiAgCXJjYXJfZHVfZ3JvdXBfd3JpdGUocmdycCwgRE9SQ1Is IGRvcmNyKTsKPiA+IAo+ID4gKwlyY2FyX2R1X2dyb3VwX3NldF9vdXRwdXRfbGV2ZWxzKHJncnAp Owo+IAo+IFNob3VsZG4ndCB0aGlzIGJlOgo+IAo+ICAgcmNhcl9kdV9ncm91cF9zZXRfZHBhZF9s ZXZlbHMoKQo+IAo+IEFueXdheSAtIHRoYXQncyBqdXN0IGJpa2VzaGVkZGluZyAtIEknbGwgbGVh dmUgdGhlIGRlY2lzaW9uIChldmVuIGlmCj4gdGhhdCdzIGtlZXBpbmcgdGhpcyBhcyBpcykgdG8g eW91LgoKR29vZCBpZGVhLCBJJ2xsIHJlbmFtZSB0aGUgZnVuY3Rpb24uCgo+ID4gKwo+ID4gCj4g PiAgCXJldHVybiByY2FyX2R1X3NldF9kcGFkMF92c3AxX3JvdXRpbmcocmdycC0+ZGV2KTsKPiA+ ICAKPiA+ICB9CgoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0CgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=