drm/pl111: Make the default BPP a per-variant variable
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 2 Mar 2018 09:09:45 +0000 (10:09 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 7 Mar 2018 21:46:46 +0000 (22:46 +0100)
The PL110, Integrator and Versatile boards strongly prefer to
use 16 BPP even if other modes are supported, both to keep down
memory consumption and also to easier find a good match to
supported resolutions with consideration taken to the memory
bandwidth of the platforms.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20180302090948.6399-2-linus.walleij@linaro.org
Link: https://patchwork.freedesktop.org/patch/msgid/20180307084316.23623-1-linus.walleij@linaro.org
Link: https://patchwork.freedesktop.org/patch/msgid/20180307084316.23623-1-linus.walleij@linaro.org
drivers/gpu/drm/pl111/pl111_drm.h
drivers/gpu/drm/pl111/pl111_drv.c
drivers/gpu/drm/pl111/pl111_versatile.c

index 8e252b561e2cbb2e5c1ce77f361dc74511ab2d74..2a93e0134061f4f923150d131cf1389ba9714654 100644 (file)
@@ -43,6 +43,7 @@ struct drm_minor;
  * @broken_vblank: the vblank IRQ is broken on this variant
  * @formats: array of supported pixel formats on this variant
  * @nformats: the length of the array of supported pixel formats
+ * @fb_bpp: desired bits per pixel on the default framebuffer
  */
 struct pl111_variant_data {
        const char *name;
@@ -52,6 +53,7 @@ struct pl111_variant_data {
        bool broken_vblank;
        const u32 *formats;
        unsigned int nformats;
+       unsigned int fb_bpp;
 };
 
 struct pl111_drm_dev_private {
index a7a3a49956c5be5772098a1ada858f2ec570ae84..e92a406c9ea97694ae234c51119c33d8b7c8b7ff 100644 (file)
@@ -192,7 +192,7 @@ static int pl111_modeset_init(struct drm_device *dev)
 
        drm_mode_config_reset(dev);
 
-       drm_fb_cma_fbdev_init(dev, 32, 0);
+       drm_fb_cma_fbdev_init(dev, priv->variant->fb_bpp, 0);
 
        drm_kms_helper_poll_init(dev);
 
@@ -336,6 +336,7 @@ static const struct pl111_variant_data pl110_variant = {
        .is_pl110 = true,
        .formats = pl110_pixel_formats,
        .nformats = ARRAY_SIZE(pl110_pixel_formats),
+       .fb_bpp = 16,
 };
 
 /* RealView, Versatile Express etc use this modern variant */
@@ -360,6 +361,7 @@ static const struct pl111_variant_data pl111_variant = {
        .name = "PL111",
        .formats = pl111_pixel_formats,
        .nformats = ARRAY_SIZE(pl111_pixel_formats),
+       .fb_bpp = 32,
 };
 
 static const struct amba_id pl111_id_table[] = {
index 05a4b89e093463299b8664d9ec9fab859cf2f74f..2c6fc50b0c127f13d159ca1893d19bea60fcf3ec 100644 (file)
@@ -241,6 +241,7 @@ static const struct pl111_variant_data pl110_integrator = {
        .broken_vblank = true,
        .formats = pl110_integrator_pixel_formats,
        .nformats = ARRAY_SIZE(pl110_integrator_pixel_formats),
+       .fb_bpp = 16,
 };
 
 /*
@@ -253,6 +254,7 @@ static const struct pl111_variant_data pl110_versatile = {
        .external_bgr = true,
        .formats = pl110_versatile_pixel_formats,
        .nformats = ARRAY_SIZE(pl110_versatile_pixel_formats),
+       .fb_bpp = 16,
 };
 
 int pl111_versatile_init(struct device *dev, struct pl111_drm_dev_private *priv)