Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73fe26a4 authored by Stefan Agner's avatar Stefan Agner
Browse files

drm/fsl-dcu: introduce kernel parameter to specify fbdev depth



Add a kernel parameter legancyfb_depth (like the i.MX drm driver)
to control the legancy fbdev depth. Default to the so far hard
coded depth of 24-bit. Currently changing the framebuffer depth
is not possible from user space when using the fbdev emulation
layer... This provides a rudimentary mechanism to change depth
without having to change kernel code.

Signed-off-by: default avatarStefan Agner <stefan@agner.ch>
parent c162215f
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -32,6 +32,9 @@
#include "fsl_dcu_drm_drv.h"
#include "fsl_tcon.h"

static int legacyfb_depth = 24;
module_param(legacyfb_depth, int, 0444);

static bool fsl_dcu_drm_is_volatile_reg(struct device *dev, unsigned int reg)
{
	if (reg == DCU_INT_STATUS || reg == DCU_UPDATE_MODE)
@@ -87,7 +90,18 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
		goto done;
	dev->irq_enabled = true;

	fsl_dev->fbdev = drm_fbdev_cma_init(dev, 24, 1, 1);
	if (legacyfb_depth != 16 && legacyfb_depth != 24 &&
	    legacyfb_depth != 32) {
		dev_warn(dev->dev,
			"Invalid legacyfb_depth.  Defaulting to 24bpp\n");
		legacyfb_depth = 24;
	}
	fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1, 1);
	if (IS_ERR(fsl_dev->fbdev)) {
		ret = PTR_ERR(fsl_dev->fbdev);
		fsl_dev->fbdev = NULL;
		goto done;
	}

	return 0;
done: