#include <linux/fb.h>
#include <drm/drm_drv.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_prime.h>
#include "msm_drv.h"
#include "msm_gem.h"
#include "msm_kms.h"
static bool fbdev = …;
MODULE_PARM_DESC(…) …;
module_param(fbdev, bool, 0600);
FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(msm_fbdev,
drm_fb_helper_damage_range,
drm_fb_helper_damage_area)
static int msm_fbdev_mmap(struct fb_info *info, struct vm_area_struct *vma)
{ … }
static void msm_fbdev_fb_destroy(struct fb_info *info)
{ … }
static const struct fb_ops msm_fb_ops = …;
static int msm_fbdev_create(struct drm_fb_helper *helper,
struct drm_fb_helper_surface_size *sizes)
{ … }
static int msm_fbdev_fb_dirty(struct drm_fb_helper *helper,
struct drm_clip_rect *clip)
{ … }
static const struct drm_fb_helper_funcs msm_fb_helper_funcs = …;
static void msm_fbdev_client_unregister(struct drm_client_dev *client)
{ … }
static int msm_fbdev_client_restore(struct drm_client_dev *client)
{ … }
static int msm_fbdev_client_hotplug(struct drm_client_dev *client)
{ … }
static const struct drm_client_funcs msm_fbdev_client_funcs = …;
void msm_fbdev_setup(struct drm_device *dev)
{ … }