75 lines
1.8 KiB
C
75 lines
1.8 KiB
C
|
/*
|
||
|
* i.MX drm driver
|
||
|
*
|
||
|
* Copyright (C) 2012 Sascha Hauer, Pengutronix
|
||
|
*
|
||
|
* Based on Samsung Exynos code
|
||
|
*
|
||
|
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; either version 2
|
||
|
* of the License, or (at your option) any later version.
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
*/
|
||
|
#include <linux/module.h>
|
||
|
#include <drm/drmP.h>
|
||
|
#include <drm/drm_crtc.h>
|
||
|
#include <drm/drm_crtc_helper.h>
|
||
|
#include <drm/drm_fb_cma_helper.h>
|
||
|
|
||
|
#include "imx-drm.h"
|
||
|
|
||
|
#define MAX_CONNECTOR 4
|
||
|
#define PREFERRED_BPP 16
|
||
|
|
||
|
static struct drm_fbdev_cma *fbdev_cma;
|
||
|
|
||
|
static int legacyfb_depth = 16;
|
||
|
|
||
|
module_param(legacyfb_depth, int, 0444);
|
||
|
|
||
|
static int __init imx_fb_helper_init(void)
|
||
|
{
|
||
|
struct drm_device *drm = imx_drm_device_get();
|
||
|
|
||
|
if (!drm)
|
||
|
return -EINVAL;
|
||
|
|
||
|
if (legacyfb_depth != 16 && legacyfb_depth != 32) {
|
||
|
pr_warn("i.MX legacyfb: invalid legacyfb_depth setting. defaulting to 16bpp\n");
|
||
|
legacyfb_depth = 16;
|
||
|
}
|
||
|
|
||
|
fbdev_cma = drm_fbdev_cma_init(drm, legacyfb_depth,
|
||
|
drm->mode_config.num_crtc, MAX_CONNECTOR);
|
||
|
|
||
|
if (IS_ERR(fbdev_cma)) {
|
||
|
imx_drm_device_put();
|
||
|
return PTR_ERR(fbdev_cma);
|
||
|
}
|
||
|
|
||
|
imx_drm_fb_helper_set(fbdev_cma);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static void __exit imx_fb_helper_exit(void)
|
||
|
{
|
||
|
imx_drm_fb_helper_set(NULL);
|
||
|
drm_fbdev_cma_fini(fbdev_cma);
|
||
|
imx_drm_device_put();
|
||
|
}
|
||
|
|
||
|
late_initcall(imx_fb_helper_init);
|
||
|
module_exit(imx_fb_helper_exit);
|
||
|
|
||
|
MODULE_DESCRIPTION("Freescale i.MX legacy fb driver");
|
||
|
MODULE_AUTHOR("Sascha Hauer, Pengutronix");
|
||
|
MODULE_LICENSE("GPL");
|