From mboxrd@z Thu Jan 1 00:00:00 1970 From: shawnguo@kernel.org (Shawn Guo) Date: Thu, 29 Dec 2016 10:35:28 +0800 Subject: [PATCH v2] drm: zte: add overlay plane support In-Reply-To: References: <1482235795-6223-1-git-send-email-shawnguo@kernel.org> Message-ID: <20161229023522.GB11972@dragon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Sean, On Thu, Dec 22, 2016 at 09:56:01AM -0500, Sean Paul wrote: > On Tue, Dec 20, 2016 at 7:09 AM, Shawn Guo wrote: > > diff --git a/drivers/gpu/drm/zte/zx_vou.c b/drivers/gpu/drm/zte/zx_vou.c > > index 73fe15c17c32..8ca9c4bdeeaf 100644 > > --- a/drivers/gpu/drm/zte/zx_vou.c > > +++ b/drivers/gpu/drm/zte/zx_vou.c > > @@ -93,10 +93,38 @@ struct zx_crtc { > > const struct zx_crtc_bits *bits; > > enum vou_chn_type chn_type; > > struct clk *pixclk; > > + u32 overlay_bitmap; > > }; > > > > #define to_zx_crtc(x) container_of(x, struct zx_crtc, crtc) > > > > +struct zx_vl_bits { > > + u32 enable; > > + u32 chnsel; > > + u32 clksel; > > +}; > > + > > +static const struct zx_vl_bits zx_vl_bits[VL_NUM] = { > > + { > > + .enable = OSD_CTRL0_VL0_EN, > > + .chnsel = OSD_CTRL0_VL0_SEL, > > + .clksel = VOU_CLK_VL0_SEL, > > + }, { > > + .enable = OSD_CTRL0_VL1_EN, > > + .chnsel = OSD_CTRL0_VL1_SEL, > > + .clksel = VOU_CLK_VL1_SEL, > > + }, { > > + .enable = OSD_CTRL0_VL2_EN, > > + .chnsel = OSD_CTRL0_VL2_SEL, > > + .clksel = VOU_CLK_VL2_SEL, > > + }, > > +}; > > + > > +struct zx_overlay { > > + struct drm_plane *plane; > > If you subclass plane instead of storing the pointer, you don't need > to keep an array of overlays in vou_hw or the find_vl_idx function. Thanks for the comment, which I found is quite useful. It reminds me something in the existing code which could be optimized. We already have a subclass of drm_plane. That's struct zx_plane in zx_plane.c. Initially, I thought it might be good to keep the structure local in zx_plane driver. It should make the most sense for the ideal case, like all the data we have to encode in the structure will only be accessed inside zx_plane driver. Unfortunately, I found it's not quite true. There are a few layer specific hardware bits we need to configure do not sit inside layer block itself, but in some VOU hardware glue blocks like OSD_CTRL and VOU_CTRL. These glue blocks are only available in zx_vou driver. If we can access struct zx_plane from zx_vou driver, things will become much easier and functions like find_vl_idx can be saved completely. I have worked out v3 with your comment addressed. There are a couple of new patches added, which moves struct zx_plane from zx_plane.c to zx_plane.h and adds support of disabling layer. I will post it shortly. Please take another look at your convenient time. Thanks for your time. Shawn From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: Re: [PATCH v2] drm: zte: add overlay plane support Date: Thu, 29 Dec 2016 10:35:28 +0800 Message-ID: <20161229023522.GB11972@dragon> References: <1482235795-6223-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E1F86E07B for ; Thu, 29 Dec 2016 02:36:14 +0000 (UTC) Content-Disposition: inline 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: Sean Paul Cc: Daniel Vetter , Baoyou Xie , dri-devel , Linux ARM Kernel , Jun Nie List-Id: dri-devel@lists.freedesktop.org SGkgU2VhbiwKCk9uIFRodSwgRGVjIDIyLCAyMDE2IGF0IDA5OjU2OjAxQU0gLTA1MDAsIFNlYW4g UGF1bCB3cm90ZToKPiBPbiBUdWUsIERlYyAyMCwgMjAxNiBhdCA3OjA5IEFNLCBTaGF3biBHdW8g PHNoYXduZ3VvQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS96dGUvenhfdm91LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jCj4gPiBpbmRl eCA3M2ZlMTVjMTdjMzIuLjhjYTljNGJkZWVhZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS96dGUvenhfdm91LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMK PiA+IEBAIC05MywxMCArOTMsMzggQEAgc3RydWN0IHp4X2NydGMgewo+ID4gICAgICAgICBjb25z dCBzdHJ1Y3QgenhfY3J0Y19iaXRzICpiaXRzOwo+ID4gICAgICAgICBlbnVtIHZvdV9jaG5fdHlw ZSBjaG5fdHlwZTsKPiA+ICAgICAgICAgc3RydWN0IGNsayAqcGl4Y2xrOwo+ID4gKyAgICAgICB1 MzIgb3ZlcmxheV9iaXRtYXA7Cj4gPiAgfTsKPiA+Cj4gPiAgI2RlZmluZSB0b196eF9jcnRjKHgp IGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgenhfY3J0YywgY3J0YykKPiA+Cj4gPiArc3RydWN0IHp4 X3ZsX2JpdHMgewo+ID4gKyAgICAgICB1MzIgZW5hYmxlOwo+ID4gKyAgICAgICB1MzIgY2huc2Vs Owo+ID4gKyAgICAgICB1MzIgY2xrc2VsOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCB6eF92bF9iaXRzIHp4X3ZsX2JpdHNbVkxfTlVNXSA9IHsKPiA+ICsgICAgICAgewo+ ID4gKyAgICAgICAgICAgICAgIC5lbmFibGUgPSBPU0RfQ1RSTDBfVkwwX0VOLAo+ID4gKyAgICAg ICAgICAgICAgIC5jaG5zZWwgPSBPU0RfQ1RSTDBfVkwwX1NFTCwKPiA+ICsgICAgICAgICAgICAg ICAuY2xrc2VsID0gVk9VX0NMS19WTDBfU0VMLAo+ID4gKyAgICAgICB9LCB7Cj4gPiArICAgICAg ICAgICAgICAgLmVuYWJsZSA9IE9TRF9DVFJMMF9WTDFfRU4sCj4gPiArICAgICAgICAgICAgICAg LmNobnNlbCA9IE9TRF9DVFJMMF9WTDFfU0VMLAo+ID4gKyAgICAgICAgICAgICAgIC5jbGtzZWwg PSBWT1VfQ0xLX1ZMMV9TRUwsCj4gPiArICAgICAgIH0sIHsKPiA+ICsgICAgICAgICAgICAgICAu ZW5hYmxlID0gT1NEX0NUUkwwX1ZMMl9FTiwKPiA+ICsgICAgICAgICAgICAgICAuY2huc2VsID0g T1NEX0NUUkwwX1ZMMl9TRUwsCj4gPiArICAgICAgICAgICAgICAgLmNsa3NlbCA9IFZPVV9DTEtf VkwyX1NFTCwKPiA+ICsgICAgICAgfSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCB6eF9vdmVy bGF5IHsKPiA+ICsgICAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gCj4gSWYgeW91IHN1 YmNsYXNzIHBsYW5lIGluc3RlYWQgb2Ygc3RvcmluZyB0aGUgcG9pbnRlciwgeW91IGRvbid0IG5l ZWQKPiB0byBrZWVwIGFuIGFycmF5IG9mIG92ZXJsYXlzIGluIHZvdV9odyBvciB0aGUgZmluZF92 bF9pZHggZnVuY3Rpb24uCgpUaGFua3MgZm9yIHRoZSBjb21tZW50LCB3aGljaCBJIGZvdW5kIGlz IHF1aXRlIHVzZWZ1bC4gIEl0IHJlbWluZHMgbWUKc29tZXRoaW5nIGluIHRoZSBleGlzdGluZyBj b2RlIHdoaWNoIGNvdWxkIGJlIG9wdGltaXplZC4KCldlIGFscmVhZHkgaGF2ZSBhIHN1YmNsYXNz IG9mIGRybV9wbGFuZS4gIFRoYXQncyBzdHJ1Y3QgenhfcGxhbmUgaW4KenhfcGxhbmUuYy4gIElu aXRpYWxseSwgSSB0aG91Z2h0IGl0IG1pZ2h0IGJlIGdvb2QgdG8ga2VlcCB0aGUgc3RydWN0dXJl CmxvY2FsIGluIHp4X3BsYW5lIGRyaXZlci4gIEl0IHNob3VsZCBtYWtlIHRoZSBtb3N0IHNlbnNl IGZvciB0aGUgaWRlYWwKY2FzZSwgbGlrZSBhbGwgdGhlIGRhdGEgd2UgaGF2ZSB0byBlbmNvZGUg aW4gdGhlIHN0cnVjdHVyZSB3aWxsIG9ubHkgYmUKYWNjZXNzZWQgaW5zaWRlIHp4X3BsYW5lIGRy aXZlci4gIFVuZm9ydHVuYXRlbHksIEkgZm91bmQgaXQncyBub3QgcXVpdGUKdHJ1ZS4gIFRoZXJl IGFyZSBhIGZldyBsYXllciBzcGVjaWZpYyBoYXJkd2FyZSBiaXRzIHdlIG5lZWQgdG8gY29uZmln dXJlCmRvIG5vdCBzaXQgaW5zaWRlIGxheWVyIGJsb2NrIGl0c2VsZiwgYnV0IGluIHNvbWUgVk9V IGhhcmR3YXJlIGdsdWUKYmxvY2tzIGxpa2UgT1NEX0NUUkwgYW5kIFZPVV9DVFJMLiAgVGhlc2Ug Z2x1ZSBibG9ja3MgYXJlIG9ubHkgYXZhaWxhYmxlCmluIHp4X3ZvdSBkcml2ZXIuICBJZiB3ZSBj YW4gYWNjZXNzIHN0cnVjdCB6eF9wbGFuZSBmcm9tIHp4X3ZvdSBkcml2ZXIsCnRoaW5ncyB3aWxs IGJlY29tZSBtdWNoIGVhc2llciBhbmQgZnVuY3Rpb25zIGxpa2UgZmluZF92bF9pZHggY2FuIGJl CnNhdmVkIGNvbXBsZXRlbHkuCgpJIGhhdmUgd29ya2VkIG91dCB2MyB3aXRoIHlvdXIgY29tbWVu dCBhZGRyZXNzZWQuICBUaGVyZSBhcmUgYSBjb3VwbGUKb2YgbmV3IHBhdGNoZXMgYWRkZWQsIHdo aWNoIG1vdmVzIHN0cnVjdCB6eF9wbGFuZSBmcm9tIHp4X3BsYW5lLmMgdG8KenhfcGxhbmUuaCBh bmQgYWRkcyBzdXBwb3J0IG9mIGRpc2FibGluZyBsYXllci4gIEkgd2lsbCBwb3N0IGl0IHNob3J0 bHkuClBsZWFzZSB0YWtlIGFub3RoZXIgbG9vayBhdCB5b3VyIGNvbnZlbmllbnQgdGltZS4gIFRo YW5rcyBmb3IgeW91ciB0aW1lLgoKU2hhd24KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==