From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [RFC 1/6] drm: Add top level Kconfig option for DRM fbdev emulation Date: Fri, 13 Mar 2015 16:30:06 +0530 Message-ID: <5502C336.2060206@codeaurora.org> References: <1425980493-27533-1-git-send-email-architt@codeaurora.org> <1425980493-27533-2-git-send-email-architt@codeaurora.org> <20150310094756.GE3800@phenom.ffwll.local> <54FEBEF1.5000103@codeaurora.org> <20150310100547.GG3800@phenom.ffwll.local> <54FEC5F1.90208@codeaurora.org> <20150310121702.GO3800@phenom.ffwll.local> <54FFFAEE.3020301@codeaurora.org> <20150311151731.GJ3800@phenom.ffwll.local> <550282C3.10903@codeaurora.org> <20150313090651.GZ3800@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20150313090651.GZ3800@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: treding@nvidia.com, p.zabel@pengutronix.de, benjamin.gaignard@linaro.org, daniel@ffwll.ch Cc: linux-fbdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com List-Id: linux-arm-msm@vger.kernel.org CgpPbiAwMy8xMy8yMDE1IDAyOjM2IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIEZyaSwg TWFyIDEzLCAyMDE1IGF0IDExOjU1OjA3QU0gKzA1MzAsIEFyY2hpdCBUYW5lamEgd3JvdGU6Cj4+ Cj4+Cj4+IE9uIDAzLzExLzIwMTUgMDg6NDcgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+PiBP biBXZWQsIE1hciAxMSwgMjAxNSBhdCAwMTo1MTowMlBNICswNTMwLCBBcmNoaXQgVGFuZWphIHdy b3RlOgo+Pj4+Cj4+Pj4KPj4+PiBPbiAwMy8xMC8yMDE1IDA1OjQ3IFBNLCBEYW5pZWwgVmV0dGVy IHdyb3RlOgo+Pj4+PiBPbiBUdWUsIE1hciAxMCwgMjAxNSBhdCAwMzo1Mjo0MVBNICswNTMwLCBB cmNoaXQgVGFuZWphIHdyb3RlOgo+Pj4+Pj4gT24gMDMvMTAvMjAxNSAwMzozNSBQTSwgRGFuaWVs IFZldHRlciB3cm90ZToKPj4+Pj4+PiBPbiBUdWUsIE1hciAxMCwgMjAxNSBhdCAwMzoyMjo0OVBN ICswNTMwLCBBcmNoaXQgVGFuZWphIHdyb3RlOgo+Pj4+Pj4+PiBPbiAwMy8xMC8yMDE1IDAzOjE3 IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+Pj4+Pj4gT24gVHVlLCBNYXIgMTAsIDIwMTUg YXQgMDM6MTE6MjhQTSArMDUzMCwgQXJjaGl0IFRhbmVqYSB3cm90ZToKPj4+Pj4+Pj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp Zwo+Pj4+Pj4+Pj4+IGluZGV4IDE1MWEwNTAuLjM4ZjgzYTAgMTAwNjQ0Cj4+Pj4+Pj4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vS2NvbmZpZwo+Pj4+Pj4+Pj4+IEBAIC00MCw2ICs0MCwyNCBAQCBjb25maWcgRFJNX0tNU19G Ql9IRUxQRVIKPj4+Pj4+Pj4+PiAgIAloZWxwCj4+Pj4+Pj4+Pj4gICAJICBGQkRFViBoZWxwZXJz IGZvciBLTVMgZHJpdmVycy4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ICtjb25maWcgRFJNX0ZCREVW X0VNVUxBVElPTgo+Pj4+Pj4+Pj4+ICsJYm9vbCAiRW5hYmxlIGxlZ2FjeSBmYmRldiBzdXBwb3J0 IGZvciB5b3VyIG1vZGVzZXR0aW5nIGRyaXZlciIKPj4+Pj4+Pj4+PiArCWRlcGVuZHMgb24gRFJN Cj4+Pj4+Pj4+Pj4gKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKPj4+Pj4+Pj4+PiArCXNlbGVjdCBE Uk1fS01TX0ZCX0hFTFBFUgo+Pj4+Pj4+Pj4+ICsJc2VsZWN0IEZCX1NZU19GSUxMUkVDVAo+Pj4+ Pj4+Pj4+ICsJc2VsZWN0IEZCX1NZU19DT1BZQVJFQQo+Pj4+Pj4+Pj4+ICsJc2VsZWN0IEZCX1NZ U19JTUFHRUJMSVQKPj4+Pj4+Pj4+PiArCXNlbGVjdCBGQl9TWVNfRk9QUwo+Pj4+Pj4+Pj4+ICsJ c2VsZWN0IEZCX0NGQl9GSUxMUkVDVAo+Pj4+Pj4+Pj4+ICsJc2VsZWN0IEZCX0NGQl9DT1BZQVJF QQo+Pj4+Pj4+Pj4+ICsJc2VsZWN0IEZCX0NGQl9JTUFHRUJMSVQKPj4+Pj4+Pj4+PiArCWRlZmF1 bHQgeQo+Pj4+Pj4+Pj4+ICsJaGVscAo+Pj4+Pj4+Pj4+ICsJICBDaG9vc2UgdGhpcyBvcHRpb24g aWYgeW91IGhhdmUgYSBuZWVkIGZvciB0aGUgbGVnYWN5IGZiZGV2Cj4+Pj4+Pj4+Pj4gKwkgIHN1 cHBvcnQuIE5vdGUgdGhhdCB0aGlzIHN1cHBvcnQgYWxzbyBwcm92aWRlIHRoZSBsaW51eCBjb25z b2xlCj4+Pj4+Pj4+Pj4gKwkgIHN1cHBvcnQgb24gdG9wIG9mIHlvdXIgbW9kZXNldHRpbmcgZHJp dmVyLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IE1heWJlIGNsYXJpZnkgdGhhdCBmb3IgbGludXggY29u c29sZSBzdXBwb3J0IHlvdSBhbHNvIG5lZWQKPj4+Pj4+Pj4+IENPTkZJR19GUkFNRUJVRkZFUl9D T05TT0xFPyBmYmRldiBhbG9uZSBpc24ndCBlbm91Z2guCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IERSTV9L TVNfRkJfSEVMUEVSIHNlbGVjdHMgdGhhdCBmb3IgdXMsIHJpZ2h0Pwo+Pj4+Pj4+Cj4+Pj4+Pj4g SG0gcmlnaHQgSSd2ZSBtaXNzZWQgdGhhdC4gUmVtaW5kcyBtZSB0aGF0IHlvdSBuZWVkIG9uZSBt b3JlIHBhdGNoIGF0IHRoZQo+Pj4+Pj4+IGVuZCB0byByZW1vdmUgYWxsIHRoZSB2YXJpb3VzIHNl bGVjdCBEUk1fS01TX0ZCX0hFTFBFUiBmcm9tIGFsbCBkcm0KPj4+Pj4+PiBkcml2ZXJzLiBPdGhl cndpc2UgdGhpcyBrbm9iIGhlcmUgd29uJ3Qgd29yayBieSBkZWZhdWx0IGlmIHlvdSBlLmcuIHNl bGVjdAo+Pj4+Pj4+IHJhZGVvbi4gSW4gZ2VuZXJhbCB3ZSBjYW4ndCBtaXggZXhwbGljaXQgb3B0 aW9ucyB3aXRoIG1lbnUgZW50cmllcyB3aXRoIGEKPj4+Pj4+PiBzZWxlY3QuCj4+Pj4+Pgo+Pj4+ Pj4gSSB3YXMgdHJ5aW5nIHRoYXQgb3V0LiBSZW1vdmluZyBEUk1fS01TX0ZCX0hFTFBFUiBhbmQg aGF2aW5nCj4+Pj4+PiBEUk1fRkJERVZfRU1VTEFUSU9OIGRpc2FibGVkIGJyZWFrcyBkcml2ZXJz IHdoaWNoIHVzZSBGQiBzdHVmZiBpbnRlcm5hbGx5IGluCj4+Pj4+PiB0aGVpciByZXNwZWN0aXZl IHh5el9mYmRldi5jIGZpbGVzLgo+Pj4+Pgo+Pj4+PiBCdXQgd2l0aCB0aGUgc3R1YmJlZCBvdXQg ZnVuY3Rpb25zIHRoYXQgc2hvdWxkIHdvcmssIHJpZ2h0PyBXaHkgZG9lc24ndAo+Pj4+PiBpdD8K Pj4+Pgo+Pj4+IFRoZXJlIGFyZSBzdGlsbCBjYWxscyB0byBmdW5jdGlvbnMgZnJvbSBmYiBjb3Jl IGxpa2UgZmJfc2V0X3N1c3BlbmQgYW5kCj4+Pj4gcmVnaXN0ZXJfZnJhbWVidWZmZXIgd2hpY2gg YXJlbid0IGNvdmVyZWQgYnkgdGhlIGRybSBmYiBoZWxwZXIgZnVuY3Rpb25zLgo+Pj4KPj4+IEht LCBzb3VuZHMgbGlrZSB3ZSBuZWVkIGFub3RoZXIgcGF0Y2ggdG8gc3R1YiBvdXQgZmJfc2V0X3N1 c3BlbmQgd2hlbgo+Pj4gZmJkZXYgaXNuJ3QgZW5hYmxlZC4gSXMgdGhlcmUgYW55dGhpbmcgZWxz ZT8KPj4KPj4gVGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBmYiBjb3JlIGZ1bmN0aW9ucyB3aGljaCBh cmUgY2FsbGVkIGJ5IGRybSBkcml2ZXJzOgo+Pgo+PiBmYl9hbGxvY19jbWFwL2ZiX2RlYWxsb2Nf Y21hcAo+Pgo+PiBmYl9zeXNfcmVhZC9mYl9zeXNfd3JpdGUKPj4KPj4gcmVnaXN0ZXJfZnJhbWVi dWZmZXIvdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlci91bmxpbmtfZnJhbWVidWZmZXIvCj4+IHJlbW92 ZV9jb25mbGljdGluZ19mcmFtZWJ1ZmZlcnMKPj4KPj4gZmJfc2V0X3N1c3BlbmQKPj4KPj4gZmJf ZGVmZXJyZWRfaW9faW5pdC9mYl9kZWZlcnJlZF9pb19jbGVhbnVwCj4+Cj4+IGZyYW1lYnVmZmVy X2FsbG9jL2ZyYW1lYnVmZmVyX3JlbGVhc2UKPgo+IEhtIHllYWggdGhhdCdzIHNvbWV3aGF0IGFu bm95aW5nIGluZGVlZC4gV2hhdCBhYm91dCB0aGUgZm9sbG93aW5nOgo+IDEuIFdlIG1vdmUgYWxs IHRoZSAjaW5jbHVkZSA8bGludXgvZmIuaD4gZnJvbSBkcml2ZXJzIGludG8gZHJtX2ZiX2hlbHBl ci5oCj4KPiAyLiBUaGVuIHdlIGFkZCBzdHVicyBmb3IgdGhlc2UgZnVuY3Rpb25zIGluIGRybV9m Yl9oZWxwZXIuaCwgbGlrZSB0aGlzCj4KPiAjaWYgZGVmaW5lZChDT05GSUdfRkIpCj4gI2luY2x1 ZGUgPGxpbnV4L2ZiLmg+Cj4gI2Vsc2UKPgo+IC8qIHN0YXRpYyBpbmxpbmUgc3R1YnMgZm9yIGFs bCB0aGUgZmIgc3R1ZmYgdXNlZCBieSBrbXMgZHJpdmVycyAqLwo+ICNlbmRpZgo+Cj4gSW1vIHRo aXMgbWFrZXMgc2Vuc2Ugc2luY2Uga21zIGRyaXZlcnMgcmVhbGx5IGhhdmUgYSBiaXQgYSBzcGVj aWFsCj4gc2l0dWF0aW9uIHdpdGggZmJkZXYuIFRoZXkncmUgbm90IGZ1bGwtYmxvd24gZmJkZXYg ZHJpdmVycyBhbmQgY2FuIGJlCj4gdXNlZnVsIGZ1bGx5IHdpdGhvdXQgZmJkZXYuCj4KPiBXaGF0 IGRvIHlvdSB0aGluaz8KClRoaXMgbG9va3MgZ29vZCEgSSdsbCBnaXZlIGl0IGEgdHJ5LgoKQXJj aGl0CgotLSAKUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2Yg Q29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2pl Y3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Date: Fri, 13 Mar 2015 11:12:06 +0000 Subject: Re: [RFC 1/6] drm: Add top level Kconfig option for DRM fbdev emulation Message-Id: <5502C336.2060206@codeaurora.org> List-Id: References: <1425980493-27533-1-git-send-email-architt@codeaurora.org> <1425980493-27533-2-git-send-email-architt@codeaurora.org> <20150310094756.GE3800@phenom.ffwll.local> <54FEBEF1.5000103@codeaurora.org> <20150310100547.GG3800@phenom.ffwll.local> <54FEC5F1.90208@codeaurora.org> <20150310121702.GO3800@phenom.ffwll.local> <54FFFAEE.3020301@codeaurora.org> <20150311151731.GJ3800@phenom.ffwll.local> <550282C3.10903@codeaurora.org> <20150313090651.GZ3800@phenom.ffwll.local> In-Reply-To: <20150313090651.GZ3800@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: treding@nvidia.com, p.zabel@pengutronix.de, benjamin.gaignard@linaro.org, daniel@ffwll.ch Cc: linux-fbdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com On 03/13/2015 02:36 PM, Daniel Vetter wrote: > On Fri, Mar 13, 2015 at 11:55:07AM +0530, Archit Taneja wrote: >> >> >> On 03/11/2015 08:47 PM, Daniel Vetter wrote: >>> On Wed, Mar 11, 2015 at 01:51:02PM +0530, Archit Taneja wrote: >>>> >>>> >>>> On 03/10/2015 05:47 PM, Daniel Vetter wrote: >>>>> On Tue, Mar 10, 2015 at 03:52:41PM +0530, Archit Taneja wrote: >>>>>> On 03/10/2015 03:35 PM, Daniel Vetter wrote: >>>>>>> On Tue, Mar 10, 2015 at 03:22:49PM +0530, Archit Taneja wrote: >>>>>>>> On 03/10/2015 03:17 PM, Daniel Vetter wrote: >>>>>>>>> On Tue, Mar 10, 2015 at 03:11:28PM +0530, Archit Taneja wrote: >>>>>>>>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>>>>>>>> index 151a050..38f83a0 100644 >>>>>>>>>> --- a/drivers/gpu/drm/Kconfig >>>>>>>>>> +++ b/drivers/gpu/drm/Kconfig >>>>>>>>>> @@ -40,6 +40,24 @@ config DRM_KMS_FB_HELPER >>>>>>>>>> help >>>>>>>>>> FBDEV helpers for KMS drivers. >>>>>>>>>> >>>>>>>>>> +config DRM_FBDEV_EMULATION >>>>>>>>>> + bool "Enable legacy fbdev support for your modesetting driver" >>>>>>>>>> + depends on DRM >>>>>>>>>> + select DRM_KMS_HELPER >>>>>>>>>> + select DRM_KMS_FB_HELPER >>>>>>>>>> + select FB_SYS_FILLRECT >>>>>>>>>> + select FB_SYS_COPYAREA >>>>>>>>>> + select FB_SYS_IMAGEBLIT >>>>>>>>>> + select FB_SYS_FOPS >>>>>>>>>> + select FB_CFB_FILLRECT >>>>>>>>>> + select FB_CFB_COPYAREA >>>>>>>>>> + select FB_CFB_IMAGEBLIT >>>>>>>>>> + default y >>>>>>>>>> + help >>>>>>>>>> + Choose this option if you have a need for the legacy fbdev >>>>>>>>>> + support. Note that this support also provide the linux console >>>>>>>>>> + support on top of your modesetting driver. >>>>>>>>> >>>>>>>>> Maybe clarify that for linux console support you also need >>>>>>>>> CONFIG_FRAMEBUFFER_CONSOLE? fbdev alone isn't enough. >>>>>>>> >>>>>>>> DRM_KMS_FB_HELPER selects that for us, right? >>>>>>> >>>>>>> Hm right I've missed that. Reminds me that you need one more patch at the >>>>>>> end to remove all the various select DRM_KMS_FB_HELPER from all drm >>>>>>> drivers. Otherwise this knob here won't work by default if you e.g. select >>>>>>> radeon. In general we can't mix explicit options with menu entries with a >>>>>>> select. >>>>>> >>>>>> I was trying that out. Removing DRM_KMS_FB_HELPER and having >>>>>> DRM_FBDEV_EMULATION disabled breaks drivers which use FB stuff internally in >>>>>> their respective xyz_fbdev.c files. >>>>> >>>>> But with the stubbed out functions that should work, right? Why doesn't >>>>> it? >>>> >>>> There are still calls to functions from fb core like fb_set_suspend and >>>> register_framebuffer which aren't covered by the drm fb helper functions. >>> >>> Hm, sounds like we need another patch to stub out fb_set_suspend when >>> fbdev isn't enabled. Is there anything else? >> >> There are a handful of fb core functions which are called by drm drivers: >> >> fb_alloc_cmap/fb_dealloc_cmap >> >> fb_sys_read/fb_sys_write >> >> register_framebuffer/unregister_framebuffer/unlink_framebuffer/ >> remove_conflicting_framebuffers >> >> fb_set_suspend >> >> fb_deferred_io_init/fb_deferred_io_cleanup >> >> framebuffer_alloc/framebuffer_release > > Hm yeah that's somewhat annoying indeed. What about the following: > 1. We move all the #include from drivers into drm_fb_helper.h > > 2. Then we add stubs for these functions in drm_fb_helper.h, like this > > #if defined(CONFIG_FB) > #include > #else > > /* static inline stubs for all the fb stuff used by kms drivers */ > #endif > > Imo this makes sense since kms drivers really have a bit a special > situation with fbdev. They're not full-blown fbdev drivers and can be > useful fully without fbdev. > > What do you think? This looks good! I'll give it a try. Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754738AbbCMLAU (ORCPT ); Fri, 13 Mar 2015 07:00:20 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:34298 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752312AbbCMLAR (ORCPT ); Fri, 13 Mar 2015 07:00:17 -0400 Message-ID: <5502C336.2060206@codeaurora.org> Date: Fri, 13 Mar 2015 16:30:06 +0530 From: Archit Taneja User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: treding@nvidia.com, p.zabel@pengutronix.de, benjamin.gaignard@linaro.org, daniel@ffwll.ch CC: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Jani Nikula , robdclark@gmail.com, airlied@linux.ie, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, tomi.valkeinen@ti.com Subject: Re: [RFC 1/6] drm: Add top level Kconfig option for DRM fbdev emulation References: <1425980493-27533-1-git-send-email-architt@codeaurora.org> <1425980493-27533-2-git-send-email-architt@codeaurora.org> <20150310094756.GE3800@phenom.ffwll.local> <54FEBEF1.5000103@codeaurora.org> <20150310100547.GG3800@phenom.ffwll.local> <54FEC5F1.90208@codeaurora.org> <20150310121702.GO3800@phenom.ffwll.local> <54FFFAEE.3020301@codeaurora.org> <20150311151731.GJ3800@phenom.ffwll.local> <550282C3.10903@codeaurora.org> <20150313090651.GZ3800@phenom.ffwll.local> In-Reply-To: <20150313090651.GZ3800@phenom.ffwll.local> 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 03/13/2015 02:36 PM, Daniel Vetter wrote: > On Fri, Mar 13, 2015 at 11:55:07AM +0530, Archit Taneja wrote: >> >> >> On 03/11/2015 08:47 PM, Daniel Vetter wrote: >>> On Wed, Mar 11, 2015 at 01:51:02PM +0530, Archit Taneja wrote: >>>> >>>> >>>> On 03/10/2015 05:47 PM, Daniel Vetter wrote: >>>>> On Tue, Mar 10, 2015 at 03:52:41PM +0530, Archit Taneja wrote: >>>>>> On 03/10/2015 03:35 PM, Daniel Vetter wrote: >>>>>>> On Tue, Mar 10, 2015 at 03:22:49PM +0530, Archit Taneja wrote: >>>>>>>> On 03/10/2015 03:17 PM, Daniel Vetter wrote: >>>>>>>>> On Tue, Mar 10, 2015 at 03:11:28PM +0530, Archit Taneja wrote: >>>>>>>>>> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >>>>>>>>>> index 151a050..38f83a0 100644 >>>>>>>>>> --- a/drivers/gpu/drm/Kconfig >>>>>>>>>> +++ b/drivers/gpu/drm/Kconfig >>>>>>>>>> @@ -40,6 +40,24 @@ config DRM_KMS_FB_HELPER >>>>>>>>>> help >>>>>>>>>> FBDEV helpers for KMS drivers. >>>>>>>>>> >>>>>>>>>> +config DRM_FBDEV_EMULATION >>>>>>>>>> + bool "Enable legacy fbdev support for your modesetting driver" >>>>>>>>>> + depends on DRM >>>>>>>>>> + select DRM_KMS_HELPER >>>>>>>>>> + select DRM_KMS_FB_HELPER >>>>>>>>>> + select FB_SYS_FILLRECT >>>>>>>>>> + select FB_SYS_COPYAREA >>>>>>>>>> + select FB_SYS_IMAGEBLIT >>>>>>>>>> + select FB_SYS_FOPS >>>>>>>>>> + select FB_CFB_FILLRECT >>>>>>>>>> + select FB_CFB_COPYAREA >>>>>>>>>> + select FB_CFB_IMAGEBLIT >>>>>>>>>> + default y >>>>>>>>>> + help >>>>>>>>>> + Choose this option if you have a need for the legacy fbdev >>>>>>>>>> + support. Note that this support also provide the linux console >>>>>>>>>> + support on top of your modesetting driver. >>>>>>>>> >>>>>>>>> Maybe clarify that for linux console support you also need >>>>>>>>> CONFIG_FRAMEBUFFER_CONSOLE? fbdev alone isn't enough. >>>>>>>> >>>>>>>> DRM_KMS_FB_HELPER selects that for us, right? >>>>>>> >>>>>>> Hm right I've missed that. Reminds me that you need one more patch at the >>>>>>> end to remove all the various select DRM_KMS_FB_HELPER from all drm >>>>>>> drivers. Otherwise this knob here won't work by default if you e.g. select >>>>>>> radeon. In general we can't mix explicit options with menu entries with a >>>>>>> select. >>>>>> >>>>>> I was trying that out. Removing DRM_KMS_FB_HELPER and having >>>>>> DRM_FBDEV_EMULATION disabled breaks drivers which use FB stuff internally in >>>>>> their respective xyz_fbdev.c files. >>>>> >>>>> But with the stubbed out functions that should work, right? Why doesn't >>>>> it? >>>> >>>> There are still calls to functions from fb core like fb_set_suspend and >>>> register_framebuffer which aren't covered by the drm fb helper functions. >>> >>> Hm, sounds like we need another patch to stub out fb_set_suspend when >>> fbdev isn't enabled. Is there anything else? >> >> There are a handful of fb core functions which are called by drm drivers: >> >> fb_alloc_cmap/fb_dealloc_cmap >> >> fb_sys_read/fb_sys_write >> >> register_framebuffer/unregister_framebuffer/unlink_framebuffer/ >> remove_conflicting_framebuffers >> >> fb_set_suspend >> >> fb_deferred_io_init/fb_deferred_io_cleanup >> >> framebuffer_alloc/framebuffer_release > > Hm yeah that's somewhat annoying indeed. What about the following: > 1. We move all the #include from drivers into drm_fb_helper.h > > 2. Then we add stubs for these functions in drm_fb_helper.h, like this > > #if defined(CONFIG_FB) > #include > #else > > /* static inline stubs for all the fb stuff used by kms drivers */ > #endif > > Imo this makes sense since kms drivers really have a bit a special > situation with fbdev. They're not full-blown fbdev drivers and can be > useful fully without fbdev. > > What do you think? This looks good! I'll give it a try. Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project