From mboxrd@z Thu Jan 1 00:00:00 1970 From: moinejf@free.fr (Jean-Francois Moine) Date: Fri, 17 May 2013 20:57:17 +0200 Subject: [RFC 0/8] rmk's Dove DRM/TDA19988 Cubox driver In-Reply-To: <20130517180028.GK18614@n2100.arm.linux.org.uk> References: <20130516192510.GV18614@n2100.arm.linux.org.uk> <20130517133345.7c1368f5@armhf> <20130517120115.GF18614@n2100.arm.linux.org.uk> <20130517194023.0c385ea0@armhf> <20130517180028.GK18614@n2100.arm.linux.org.uk> Message-ID: <20130517205717.4d7e5ef9@armhf> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, 17 May 2013 19:00:29 +0100 Russell King - ARM Linux wrote: > > Maybe I did not explain correctly: the colored cursor maybe RGB888 + > > transparency (64x64) or full ARGB (64x32 or 32x64). I coded the first > > case. And, yes, I better like a hardware cursor: it asks for less > > computation, and I get it immediately at graphic starting time! > > Interesting. Where did you find the documentation for the transparency? > The FS lists HWC32_TRANS_CNTL but omits to specify where that gets used. Simply in the ? 11.3.2.1. The HWC32_TRANS_CNTL SRAM is loaded like the HWC 2bpp, but with 00 transparent / 01 RGB. > > The first step is "DT or not DT"? For me, the DT is more flexible > > (one or two LCDs, smart panel definition, display controller or not..) > > and permits easy inclusion of out of tree drivers as the private VPU > > and GPU ones. > > I'd argue supporting both. :) Not easy! If you have not yet looked at our driver, here is how it starts: - in '/', the DT contains video { compatible = "marvell,dove-video"; }; which loads the dove-drm module. - its module init function registers the lcd driver, the dcon driver and the drm driver. - the lcd probe function tries to get all the resources for the specific LCD from the DT, including the clocks and the HDMI transmitter. If some resource is lacking, it deferes. When all resources are there, it says "present" to the drm driver (see below). The resources of a LCD are declared in the DT by something like: &lcd0 { /* the iomem and irq are declared * in the Dove global DT */ status = "okay"; /* this LCD is present and usable */ clocks = <&core_clk 3>, <0>, <&lcdclk>, <&si5351 0>; /* 3 usable clocks */ marvell,port-type = <11>; /* HDMIA */ marvell,external-encoder = <&tda998x>; /* HDMI slave encoder */ }; - the dcon probe function gets its resources and says "present" to the drm driver. Its DT declaration is just: &dcon { status = "okay"; }; /* iomem and irq in the Dove DT */ - the drm probe function scans all the DT, counting its usuable devices, (i.e. the LCDs and the dcon), and decrement the "present" variable accordingly. - when the "present" variable is null, the active devices have all their resources, and, then, the drm driver is activated by a call to drm_platform_init(). I don't see clearly how to do that with a static initialization, and I don't want to write a "cubox-setup.c". A kernel CONFIG_CUBOX ? -- Ken ar c'henta? | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean-Francois Moine Subject: Re: [RFC 0/8] rmk's Dove DRM/TDA19988 Cubox driver Date: Fri, 17 May 2013 20:57:17 +0200 Message-ID: <20130517205717.4d7e5ef9@armhf> References: <20130516192510.GV18614@n2100.arm.linux.org.uk> <20130517133345.7c1368f5@armhf> <20130517120115.GF18614@n2100.arm.linux.org.uk> <20130517194023.0c385ea0@armhf> <20130517180028.GK18614@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20130517180028.GK18614@n2100.arm.linux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Russell King - ARM Linux Cc: Jason Cooper , David Airlie , dri-devel@lists.freedesktop.org, Rob Clark , Darren Etheridge , linux-arm-kernel@lists.infradead.org, Sebastian Hesselbarth List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAxNyBNYXkgMjAxMyAxOTowMDoyOSArMDEwMApSdXNzZWxsIEtpbmcgLSBBUk0gTGlu dXggPGxpbnV4QGFybS5saW51eC5vcmcudWs+IHdyb3RlOgoKPiA+IE1heWJlIEkgZGlkIG5vdCBl eHBsYWluIGNvcnJlY3RseTogdGhlIGNvbG9yZWQgY3Vyc29yIG1heWJlIFJHQjg4OCArCj4gPiB0 cmFuc3BhcmVuY3kgKDY0eDY0KSBvciBmdWxsIEFSR0IgKDY0eDMyIG9yIDMyeDY0KS4gSSBjb2Rl ZCB0aGUgZmlyc3QKPiA+IGNhc2UuIEFuZCwgeWVzLCBJIGJldHRlciBsaWtlIGEgaGFyZHdhcmUg Y3Vyc29yOiBpdCBhc2tzIGZvciBsZXNzCj4gPiBjb21wdXRhdGlvbiwgYW5kIEkgZ2V0IGl0IGlt bWVkaWF0ZWx5IGF0IGdyYXBoaWMgc3RhcnRpbmcgdGltZSEgIAo+IAo+IEludGVyZXN0aW5nLiAg V2hlcmUgZGlkIHlvdSBmaW5kIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgdHJhbnNwYXJlbmN5 Pwo+IFRoZSBGUyBsaXN0cyBIV0MzMl9UUkFOU19DTlRMIGJ1dCBvbWl0cyB0byBzcGVjaWZ5IHdo ZXJlIHRoYXQgZ2V0cyB1c2VkLgoKU2ltcGx5IGluIHRoZSDCtiAxMS4zLjIuMS4gVGhlIEhXQzMy X1RSQU5TX0NOVEwgU1JBTSBpcyBsb2FkZWQgbGlrZSB0aGUKSFdDIDJicHAsIGJ1dCB3aXRoIDAw IHRyYW5zcGFyZW50IC8gMDEgUkdCLgoKPiA+IFRoZSBmaXJzdCBzdGVwIGlzICJEVCBvciBub3Qg RFQiPyBGb3IgbWUsIHRoZSBEVCBpcyBtb3JlIGZsZXhpYmxlCj4gPiAob25lIG9yIHR3byBMQ0Rz LCBzbWFydCBwYW5lbCBkZWZpbml0aW9uLCBkaXNwbGF5IGNvbnRyb2xsZXIgb3Igbm90Li4pCj4g PiBhbmQgcGVybWl0cyBlYXN5IGluY2x1c2lvbiBvZiBvdXQgb2YgdHJlZSBkcml2ZXJzIGFzIHRo ZSBwcml2YXRlIFZQVQo+ID4gYW5kIEdQVSBvbmVzLiAgCj4gCj4gSSdkIGFyZ3VlIHN1cHBvcnRp bmcgYm90aC4gOikKCk5vdCBlYXN5IQoKSWYgeW91IGhhdmUgbm90IHlldCBsb29rZWQgYXQgb3Vy IGRyaXZlciwgaGVyZSBpcyBob3cgaXQgc3RhcnRzOgoKLSBpbiAnLycsIHRoZSBEVCBjb250YWlu cwoKCXZpZGVvIHsKCQljb21wYXRpYmxlID0gIm1hcnZlbGwsZG92ZS12aWRlbyI7Cgl9OwoKICB3 aGljaCBsb2FkcyB0aGUgZG92ZS1kcm0gbW9kdWxlLgoKLSBpdHMgbW9kdWxlIGluaXQgZnVuY3Rp b24gcmVnaXN0ZXJzIHRoZSBsY2QgZHJpdmVyLCB0aGUgZGNvbiBkcml2ZXIKICBhbmQgdGhlIGRy bSBkcml2ZXIuCgotIHRoZSBsY2QgcHJvYmUgZnVuY3Rpb24gdHJpZXMgdG8gZ2V0IGFsbCB0aGUg cmVzb3VyY2VzIGZvciB0aGUKICBzcGVjaWZpYyBMQ0QgZnJvbSB0aGUgRFQsIGluY2x1ZGluZyB0 aGUgY2xvY2tzIGFuZCB0aGUgSERNSQogIHRyYW5zbWl0dGVyLgogIElmIHNvbWUgcmVzb3VyY2Ug aXMgbGFja2luZywgaXQgZGVmZXJlcy4KICBXaGVuIGFsbCByZXNvdXJjZXMgYXJlIHRoZXJlLCBp dCBzYXlzICJwcmVzZW50IiB0byB0aGUgZHJtIGRyaXZlciAoc2VlCiAgYmVsb3cpLgoKICBUaGUg cmVzb3VyY2VzIG9mIGEgTENEIGFyZSBkZWNsYXJlZCBpbiB0aGUgRFQgYnkgc29tZXRoaW5nIGxp a2U6CgogICZsY2QwIHsJCQkJCS8qIHRoZSBpb21lbSBhbmQgaXJxIGFyZSBkZWNsYXJlZAoJCQkJ CQkgKiBpbiB0aGUgRG92ZSBnbG9iYWwgRFQgKi8KCXN0YXR1cyA9ICJva2F5IjsJCQkvKiB0aGlz IExDRCBpcyBwcmVzZW50IGFuZCB1c2FibGUgKi8KCWNsb2NrcyA9IDwmY29yZV9jbGsgMz4sIDww PiwgPCZsY2RjbGs+LCA8JnNpNTM1MSAwPjsKCQkJCQkJCS8qIDMgdXNhYmxlIGNsb2NrcyAqLwoJ bWFydmVsbCxwb3J0LXR5cGUgPSA8MTE+OwkJCS8qIEhETUlBICovCgltYXJ2ZWxsLGV4dGVybmFs LWVuY29kZXIgPSA8JnRkYTk5OHg+OwkJLyogSERNSSBzbGF2ZSBlbmNvZGVyICovCiAgfTsKCi0g dGhlIGRjb24gcHJvYmUgZnVuY3Rpb24gZ2V0cyBpdHMgcmVzb3VyY2VzIGFuZCBzYXlzICJwcmVz ZW50IiB0byB0aGUKICBkcm0gZHJpdmVyLgogIEl0cyBEVCBkZWNsYXJhdGlvbiBpcyBqdXN0OgoK ICAmZGNvbiB7IHN0YXR1cyA9ICJva2F5IjsgfTsJCQkvKiBpb21lbSBhbmQgaXJxIGluIHRoZSBE b3ZlIERUICovCgotIHRoZSBkcm0gcHJvYmUgZnVuY3Rpb24gc2NhbnMgYWxsIHRoZSBEVCwgY291 bnRpbmcgaXRzIHVzdWFibGUgZGV2aWNlcywKICAoaS5lLiB0aGUgTENEcyBhbmQgdGhlIGRjb24p LCBhbmQgZGVjcmVtZW50IHRoZSAicHJlc2VudCIgdmFyaWFibGUKICBhY2NvcmRpbmdseS4KCi0g d2hlbiB0aGUgInByZXNlbnQiIHZhcmlhYmxlIGlzIG51bGwsIHRoZSBhY3RpdmUgZGV2aWNlcyBo YXZlIGFsbAogIHRoZWlyIHJlc291cmNlcywgYW5kLCB0aGVuLCB0aGUgZHJtIGRyaXZlciBpcyBh Y3RpdmF0ZWQgYnkgYSBjYWxsIHRvCiAgZHJtX3BsYXRmb3JtX2luaXQoKS4KCkkgZG9uJ3Qgc2Vl IGNsZWFybHkgaG93IHRvIGRvIHRoYXQgd2l0aCBhIHN0YXRpYyBpbml0aWFsaXphdGlvbiwgYW5k IEkKZG9uJ3Qgd2FudCB0byB3cml0ZSBhICJjdWJveC1zZXR1cC5jIi4gQSBrZXJuZWwgQ09ORklH X0NVQk9YID8KCi0tIApLZW4gYXIgYydoZW50YcOxCXwJICAgICAgKiogQnJlaXpoIGhhIExpbnV4 IGF0YXYhICoqCkplZgkJfAkJaHR0cDovL21vaW5lamYuZnJlZS5mci8KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK