From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@ffwll.ch (Daniel Vetter) Date: Wed, 28 Mar 2018 14:22:36 +0200 Subject: [PATCH] drm/atmel-hlcdc: add command line option to specify preferred depth In-Reply-To: <20180328093454.4149fa3b@bbrezillon> References: <20180326073502.19259-1-peda@axentia.se> <20180328093454.4149fa3b@bbrezillon> Message-ID: <20180328122236.GF14155@phenom.ffwll.local> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Mar 28, 2018 at 09:34:54AM +0200, Boris Brezillon wrote: > Hi Peter, > > On Mon, 26 Mar 2018 09:35:02 +0200 > Peter Rosin wrote: > > > I have an sama5d31-based system with 64MB of memory and a 1920x1080 > > LVDS display wired for 16-bpp. When I enable legacy fbdev support, > > the contiguous memory allocator invariably fails with the order-11 > > allocation for a 1920x1080 at 24-bpp buffer (~6MB). But this HW can never > > make any good use of RGB888, so that is a wasted attempt anyway that > > would also waste precious memory should it succeed. > > > > Sure, I could rewrite user-space to go directly to KMS etc, and that > > makes the (attempted) order-11 allocation go away, replacing it with > > one order-10 allocation per application restart for a 1920x1080 at 16-bpp > > buffer (<4MB). But after a few restarts, order-10 allocations start to > > fail as well, which is only to be expected AFAIU. > > > > So, I'd rather not change user-space (which was originally written > > to target a smaller display) so that I at the same time get the > > benefit of an early pre-allocated fbdev frame-buffer that can be > > reused over and over. But to do that I need to tell the driver that > > 16-bpp is the preferred depth. Add a module parameter to do just that. > > > > Signed-off-by: Peter Rosin > > --- > > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 18 +++++++++++++++++- > > 1 file changed, 17 insertions(+), 1 deletion(-) > > > > I found some inspiration regarding naming and implementation here: > > https://patchwork.kernel.org/patch/9848631/ > > > > I have found no feedback on that patch though, which makes me wonder if > > I'm perhaps barking up the wronig tree? > > Hm, isn't that something you can already overload with the video= > parameter? > > video=:[-] > > AFAIR, encodes the color depth, so what is the benefit of adding > this new property to overload the default depth? > > Maybe I'm wrong and the default depth param is actually useful, but in > this case we should probably make it generic since other drivers seems > to need it too, and we might want to attach it to a specific display > engine instance. I think for the drm's fbdev emulation we ignore the bpp ... But yeah probably worth it to wire it up properly. -Daniel > > Thanks, > > Boris > > > > > Cheers, > > Peter > > > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > > index c1ea5c36b006..f0148627c221 100644 > > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > > @@ -29,6 +29,11 @@ > > > > #define ATMEL_HLCDC_LAYER_IRQS_OFFSET 8 > > > > +static int atmel_hlcdc_preferred_depth __read_mostly; > > + > > +MODULE_PARM_DESC(preferreddepth, "Set preferred bpp"); > > +module_param_named(preferreddepth, atmel_hlcdc_preferred_depth, int, 0400); > > + > > static const struct atmel_hlcdc_layer_desc atmel_hlcdc_at91sam9n12_layers[] = { > > { > > .name = "base", > > @@ -590,6 +595,7 @@ static int atmel_hlcdc_dc_modeset_init(struct drm_device *dev) > > dev->mode_config.min_height = dc->desc->min_height; > > dev->mode_config.max_width = dc->desc->max_width; > > dev->mode_config.max_height = dc->desc->max_height; > > + dev->mode_config.preferred_depth = 24; > > dev->mode_config.funcs = &mode_config_funcs; > > > > return 0; > > @@ -658,7 +664,7 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev) > > > > platform_set_drvdata(pdev, dev); > > > > - drm_fb_cma_fbdev_init(dev, 24, 0); > > + drm_fb_cma_fbdev_init(dev, atmel_hlcdc_preferred_depth, 0); > > > > drm_kms_helper_poll_init(dev); > > > > @@ -756,6 +762,16 @@ static int atmel_hlcdc_dc_drm_probe(struct platform_device *pdev) > > struct drm_device *ddev; > > int ret; > > > > + switch (atmel_hlcdc_preferred_depth) { > > + case 0: /* driver default */ > > + case 8: > > + case 16: > > + case 24: > > + break; > > + default: > > + return -EINVAL; > > + } > > + > > ddev = drm_dev_alloc(&atmel_hlcdc_dc_driver, &pdev->dev); > > if (IS_ERR(ddev)) > > return PTR_ERR(ddev); > > > > -- > Boris Brezillon, Bootlin (formerly Free Electrons) > Embedded Linux and Kernel engineering > https://bootlin.com > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/atmel-hlcdc: add command line option to specify preferred depth Date: Wed, 28 Mar 2018 14:22:36 +0200 Message-ID: <20180328122236.GF14155@phenom.ffwll.local> References: <20180326073502.19259-1-peda@axentia.se> <20180328093454.4149fa3b@bbrezillon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22b.google.com (mail-wm0-x22b.google.com [IPv6:2a00:1450:400c:c09::22b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 82E8C6E217 for ; Wed, 28 Mar 2018 12:22:40 +0000 (UTC) Received: by mail-wm0-x22b.google.com with SMTP id p9so4547843wmc.3 for ; Wed, 28 Mar 2018 05:22:40 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180328093454.4149fa3b@bbrezillon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Brezillon Cc: Egbert Eich , Boris Brezillon , Alexandre Belloni , David Airlie , linux-kernel@vger.kernel.org, Nicolas Ferre , dri-devel@lists.freedesktop.org, Takashi Iwai , Peter Rosin , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMjgsIDIwMTggYXQgMDk6MzQ6NTRBTSArMDIwMCwgQm9yaXMgQnJlemlsbG9u IHdyb3RlOgo+IEhpIFBldGVyLAo+IAo+IE9uIE1vbiwgMjYgTWFyIDIwMTggMDk6MzU6MDIgKzAy MDAKPiBQZXRlciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPiB3cm90ZToKPiAKPiA+IEkgaGF2ZSBh biBzYW1hNWQzMS1iYXNlZCBzeXN0ZW0gd2l0aCA2NE1CIG9mIG1lbW9yeSBhbmQgYSAxOTIweDEw ODAKPiA+IExWRFMgZGlzcGxheSB3aXJlZCBmb3IgMTYtYnBwLiBXaGVuIEkgZW5hYmxlIGxlZ2Fj eSBmYmRldiBzdXBwb3J0LAo+ID4gdGhlIGNvbnRpZ3VvdXMgbWVtb3J5IGFsbG9jYXRvciBpbnZh cmlhYmx5IGZhaWxzIHdpdGggdGhlIG9yZGVyLTExCj4gPiBhbGxvY2F0aW9uIGZvciBhIDE5MjB4 MTA4MEAyNC1icHAgYnVmZmVyICh+Nk1CKS4gQnV0IHRoaXMgSFcgY2FuIG5ldmVyCj4gPiBtYWtl IGFueSBnb29kIHVzZSBvZiBSR0I4ODgsIHNvIHRoYXQgaXMgYSB3YXN0ZWQgYXR0ZW1wdCBhbnl3 YXkgdGhhdAo+ID4gd291bGQgYWxzbyB3YXN0ZSBwcmVjaW91cyBtZW1vcnkgc2hvdWxkIGl0IHN1 Y2NlZWQuCj4gPiAKPiA+IFN1cmUsIEkgY291bGQgcmV3cml0ZSB1c2VyLXNwYWNlIHRvIGdvIGRp cmVjdGx5IHRvIEtNUyBldGMsIGFuZCB0aGF0Cj4gPiBtYWtlcyB0aGUgKGF0dGVtcHRlZCkgb3Jk ZXItMTEgYWxsb2NhdGlvbiBnbyBhd2F5LCByZXBsYWNpbmcgaXQgd2l0aAo+ID4gb25lIG9yZGVy LTEwIGFsbG9jYXRpb24gcGVyIGFwcGxpY2F0aW9uIHJlc3RhcnQgZm9yIGEgMTkyMHgxMDgwQDE2 LWJwcAo+ID4gYnVmZmVyICg8NE1CKS4gQnV0IGFmdGVyIGEgZmV3IHJlc3RhcnRzLCBvcmRlci0x MCBhbGxvY2F0aW9ucyBzdGFydCB0bwo+ID4gZmFpbCBhcyB3ZWxsLCB3aGljaCBpcyBvbmx5IHRv IGJlIGV4cGVjdGVkIEFGQUlVLgo+ID4gCj4gPiBTbywgSSdkIHJhdGhlciBub3QgY2hhbmdlIHVz ZXItc3BhY2UgKHdoaWNoIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4KPiA+IHRvIHRhcmdldCBhIHNt YWxsZXIgZGlzcGxheSkgc28gdGhhdCBJIGF0IHRoZSBzYW1lIHRpbWUgZ2V0IHRoZQo+ID4gYmVu ZWZpdCBvZiBhbiBlYXJseSBwcmUtYWxsb2NhdGVkIGZiZGV2IGZyYW1lLWJ1ZmZlciB0aGF0IGNh biBiZQo+ID4gcmV1c2VkIG92ZXIgYW5kIG92ZXIuIEJ1dCB0byBkbyB0aGF0IEkgbmVlZCB0byB0 ZWxsIHRoZSBkcml2ZXIgdGhhdAo+ID4gMTYtYnBwIGlzIHRoZSBwcmVmZXJyZWQgZGVwdGguIEFk ZCBhIG1vZHVsZSBwYXJhbWV0ZXIgdG8gZG8ganVzdCB0aGF0Lgo+ID4gCj4gPiBTaWduZWQtb2Zm LWJ5OiBQZXRlciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9n cHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2RjLmMgfCAxOCArKysrKysrKysrKysrKysr Ky0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ ID4gCj4gPiBJIGZvdW5kIHNvbWUgaW5zcGlyYXRpb24gcmVnYXJkaW5nIG5hbWluZyBhbmQgaW1w bGVtZW50YXRpb24gaGVyZToKPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gv OTg0ODYzMS8KPiA+IAo+ID4gSSBoYXZlIGZvdW5kIG5vIGZlZWRiYWNrIG9uIHRoYXQgcGF0Y2gg dGhvdWdoLCB3aGljaCBtYWtlcyBtZSB3b25kZXIgaWYKPiA+IEknbSBwZXJoYXBzIGJhcmtpbmcg dXAgdGhlIHdyb25pZyB0cmVlPwo+IAo+IEhtLCBpc24ndCB0aGF0IHNvbWV0aGluZyB5b3UgY2Fu IGFscmVhZHkgb3ZlcmxvYWQgd2l0aCB0aGUgdmlkZW89Cj4gcGFyYW1ldGVyPwo+IAo+IAl2aWRl bz08b3V0cHV0Pjo8cmVzb2x1dGlvbj5bLTxicHA+XQo+IAo+IEFGQUlSLCA8YnBwPiBlbmNvZGVz IHRoZSBjb2xvciBkZXB0aCwgc28gd2hhdCBpcyB0aGUgYmVuZWZpdCBvZiBhZGRpbmcKPiB0aGlz IG5ldyBwcm9wZXJ0eSB0byBvdmVybG9hZCB0aGUgZGVmYXVsdCBkZXB0aD8KPiAKPiBNYXliZSBJ J20gd3JvbmcgYW5kIHRoZSBkZWZhdWx0IGRlcHRoIHBhcmFtIGlzIGFjdHVhbGx5IHVzZWZ1bCwg YnV0IGluCj4gdGhpcyBjYXNlIHdlIHNob3VsZCBwcm9iYWJseSBtYWtlIGl0IGdlbmVyaWMgc2lu Y2Ugb3RoZXIgZHJpdmVycyBzZWVtcwo+IHRvIG5lZWQgaXQgdG9vLCBhbmQgd2UgbWlnaHQgd2Fu dCB0byBhdHRhY2ggaXQgdG8gYSBzcGVjaWZpYyBkaXNwbGF5Cj4gZW5naW5lIGluc3RhbmNlLgoK SSB0aGluayBmb3IgdGhlIGRybSdzIGZiZGV2IGVtdWxhdGlvbiB3ZSBpZ25vcmUgdGhlIGJwcCAu Li4KCkJ1dCB5ZWFoIHByb2JhYmx5IHdvcnRoIGl0IHRvIHdpcmUgaXQgdXAgcHJvcGVybHkuCi1E YW5pZWwKPiAKPiBUaGFua3MsCj4gCj4gQm9yaXMKPiAKPiA+IAo+ID4gQ2hlZXJzLAo+ID4gUGV0 ZXIKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1l bF9obGNkY19kYy5jIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2Rj LmMKPiA+IGluZGV4IGMxZWE1YzM2YjAwNi4uZjAxNDg2MjdjMjIxIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2RjLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19kYy5jCj4gPiBAQCAtMjksNiAr MjksMTEgQEAKPiA+ICAKPiA+ICAjZGVmaW5lIEFUTUVMX0hMQ0RDX0xBWUVSX0lSUVNfT0ZGU0VU CQk4Cj4gPiAgCj4gPiArc3RhdGljIGludCBhdG1lbF9obGNkY19wcmVmZXJyZWRfZGVwdGggX19y ZWFkX21vc3RseTsKPiA+ICsKPiA+ICtNT0RVTEVfUEFSTV9ERVNDKHByZWZlcnJlZGRlcHRoLCAi U2V0IHByZWZlcnJlZCBicHAiKTsKPiA+ICttb2R1bGVfcGFyYW1fbmFtZWQocHJlZmVycmVkZGVw dGgsIGF0bWVsX2hsY2RjX3ByZWZlcnJlZF9kZXB0aCwgaW50LCAwNDAwKTsKPiA+ICsKPiA+ICBz dGF0aWMgY29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgYXRtZWxfaGxjZGNfYXQ5 MXNhbTluMTJfbGF5ZXJzW10gPSB7Cj4gPiAgCXsKPiA+ICAJCS5uYW1lID0gImJhc2UiLAo+ID4g QEAgLTU5MCw2ICs1OTUsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2hsY2RjX2RjX21vZGVzZXRfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIAlkZXYtPm1vZGVfY29uZmlnLm1pbl9oZWln aHQgPSBkYy0+ZGVzYy0+bWluX2hlaWdodDsKPiA+ICAJZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lk dGggPSBkYy0+ZGVzYy0+bWF4X3dpZHRoOwo+ID4gIAlkZXYtPm1vZGVfY29uZmlnLm1heF9oZWln aHQgPSBkYy0+ZGVzYy0+bWF4X2hlaWdodDsKPiA+ICsJZGV2LT5tb2RlX2NvbmZpZy5wcmVmZXJy ZWRfZGVwdGggPSAyNDsKPiA+ICAJZGV2LT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZtb2RlX2NvbmZp Z19mdW5jczsKPiA+ICAKPiA+ICAJcmV0dXJuIDA7Cj4gPiBAQCAtNjU4LDcgKzY2NCw3IEBAIHN0 YXRpYyBpbnQgYXRtZWxfaGxjZGNfZGNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4g IAo+ID4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOwo+ID4gIAo+ID4gLQlkcm1f ZmJfY21hX2ZiZGV2X2luaXQoZGV2LCAyNCwgMCk7Cj4gPiArCWRybV9mYl9jbWFfZmJkZXZfaW5p dChkZXYsIGF0bWVsX2hsY2RjX3ByZWZlcnJlZF9kZXB0aCwgMCk7Cj4gPiAgCj4gPiAgCWRybV9r bXNfaGVscGVyX3BvbGxfaW5pdChkZXYpOwo+ID4gIAo+ID4gQEAgLTc1Niw2ICs3NjIsMTYgQEAg c3RhdGljIGludCBhdG1lbF9obGNkY19kY19kcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRkZXY7Cj4gPiAgCWludCByZXQ7Cj4g PiAgCj4gPiArCXN3aXRjaCAoYXRtZWxfaGxjZGNfcHJlZmVycmVkX2RlcHRoKSB7Cj4gPiArCWNh c2UgMDogLyogZHJpdmVyIGRlZmF1bHQgKi8KPiA+ICsJY2FzZSA4Ogo+ID4gKwljYXNlIDE2Ogo+ ID4gKwljYXNlIDI0Ogo+ID4gKwkJYnJlYWs7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlyZXR1cm4g LUVJTlZBTDsKPiA+ICsJfQo+ID4gKwo+ID4gIAlkZGV2ID0gZHJtX2Rldl9hbGxvYygmYXRtZWxf aGxjZGNfZGNfZHJpdmVyLCAmcGRldi0+ZGV2KTsKPiA+ICAJaWYgKElTX0VSUihkZGV2KSkKPiA+ ICAJCXJldHVybiBQVFJfRVJSKGRkZXYpOwo+IAo+IAo+IAo+IC0tIAo+IEJvcmlzIEJyZXppbGxv biwgQm9vdGxpbiAoZm9ybWVybHkgRnJlZSBFbGVjdHJvbnMpCj4gRW1iZWRkZWQgTGludXggYW5k IEtlcm5lbCBlbmdpbmVlcmluZwo+IGh0dHBzOi8vYm9vdGxpbi5jb20KPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752756AbeC1MWl (ORCPT ); Wed, 28 Mar 2018 08:22:41 -0400 Received: from mail-wm0-f50.google.com ([74.125.82.50]:51129 "EHLO mail-wm0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751207AbeC1MWk (ORCPT ); Wed, 28 Mar 2018 08:22:40 -0400 X-Google-Smtp-Source: AIpwx49eGfFLZ53p4MF9uAzMHS4hi1vODPejd8KIv/HSPeK2UjqirNDgTRSbTILbekl+b2B5Xkb4wQ== Date: Wed, 28 Mar 2018 14:22:36 +0200 From: Daniel Vetter To: Boris Brezillon Cc: Peter Rosin , Egbert Eich , Boris Brezillon , Alexandre Belloni , David Airlie , Nicolas Ferre , Takashi Iwai , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH] drm/atmel-hlcdc: add command line option to specify preferred depth Message-ID: <20180328122236.GF14155@phenom.ffwll.local> Mail-Followup-To: Boris Brezillon , Peter Rosin , Egbert Eich , Boris Brezillon , Alexandre Belloni , David Airlie , Nicolas Ferre , Takashi Iwai , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20180326073502.19259-1-peda@axentia.se> <20180328093454.4149fa3b@bbrezillon> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180328093454.4149fa3b@bbrezillon> X-Operating-System: Linux phenom 4.15.0-1-amd64 User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 28, 2018 at 09:34:54AM +0200, Boris Brezillon wrote: > Hi Peter, > > On Mon, 26 Mar 2018 09:35:02 +0200 > Peter Rosin wrote: > > > I have an sama5d31-based system with 64MB of memory and a 1920x1080 > > LVDS display wired for 16-bpp. When I enable legacy fbdev support, > > the contiguous memory allocator invariably fails with the order-11 > > allocation for a 1920x1080@24-bpp buffer (~6MB). But this HW can never > > make any good use of RGB888, so that is a wasted attempt anyway that > > would also waste precious memory should it succeed. > > > > Sure, I could rewrite user-space to go directly to KMS etc, and that > > makes the (attempted) order-11 allocation go away, replacing it with > > one order-10 allocation per application restart for a 1920x1080@16-bpp > > buffer (<4MB). But after a few restarts, order-10 allocations start to > > fail as well, which is only to be expected AFAIU. > > > > So, I'd rather not change user-space (which was originally written > > to target a smaller display) so that I at the same time get the > > benefit of an early pre-allocated fbdev frame-buffer that can be > > reused over and over. But to do that I need to tell the driver that > > 16-bpp is the preferred depth. Add a module parameter to do just that. > > > > Signed-off-by: Peter Rosin > > --- > > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 18 +++++++++++++++++- > > 1 file changed, 17 insertions(+), 1 deletion(-) > > > > I found some inspiration regarding naming and implementation here: > > https://patchwork.kernel.org/patch/9848631/ > > > > I have found no feedback on that patch though, which makes me wonder if > > I'm perhaps barking up the wronig tree? > > Hm, isn't that something you can already overload with the video= > parameter? > > video=:[-] > > AFAIR, encodes the color depth, so what is the benefit of adding > this new property to overload the default depth? > > Maybe I'm wrong and the default depth param is actually useful, but in > this case we should probably make it generic since other drivers seems > to need it too, and we might want to attach it to a specific display > engine instance. I think for the drm's fbdev emulation we ignore the bpp ... But yeah probably worth it to wire it up properly. -Daniel > > Thanks, > > Boris > > > > > Cheers, > > Peter > > > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > > index c1ea5c36b006..f0148627c221 100644 > > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > > @@ -29,6 +29,11 @@ > > > > #define ATMEL_HLCDC_LAYER_IRQS_OFFSET 8 > > > > +static int atmel_hlcdc_preferred_depth __read_mostly; > > + > > +MODULE_PARM_DESC(preferreddepth, "Set preferred bpp"); > > +module_param_named(preferreddepth, atmel_hlcdc_preferred_depth, int, 0400); > > + > > static const struct atmel_hlcdc_layer_desc atmel_hlcdc_at91sam9n12_layers[] = { > > { > > .name = "base", > > @@ -590,6 +595,7 @@ static int atmel_hlcdc_dc_modeset_init(struct drm_device *dev) > > dev->mode_config.min_height = dc->desc->min_height; > > dev->mode_config.max_width = dc->desc->max_width; > > dev->mode_config.max_height = dc->desc->max_height; > > + dev->mode_config.preferred_depth = 24; > > dev->mode_config.funcs = &mode_config_funcs; > > > > return 0; > > @@ -658,7 +664,7 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev) > > > > platform_set_drvdata(pdev, dev); > > > > - drm_fb_cma_fbdev_init(dev, 24, 0); > > + drm_fb_cma_fbdev_init(dev, atmel_hlcdc_preferred_depth, 0); > > > > drm_kms_helper_poll_init(dev); > > > > @@ -756,6 +762,16 @@ static int atmel_hlcdc_dc_drm_probe(struct platform_device *pdev) > > struct drm_device *ddev; > > int ret; > > > > + switch (atmel_hlcdc_preferred_depth) { > > + case 0: /* driver default */ > > + case 8: > > + case 16: > > + case 24: > > + break; > > + default: > > + return -EINVAL; > > + } > > + > > ddev = drm_dev_alloc(&atmel_hlcdc_dc_driver, &pdev->dev); > > if (IS_ERR(ddev)) > > return PTR_ERR(ddev); > > > > -- > Boris Brezillon, Bootlin (formerly Free Electrons) > Embedded Linux and Kernel engineering > https://bootlin.com > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch