#include <linux/fb.h>
#include <drm/drm_drv.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_file.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_util.h>
#include "omap_drv.h"
#include "omap_fbdev.h"
MODULE_PARM_DESC(…) …;
static bool ywrap_enabled = …;
module_param_named(ywrap, ywrap_enabled, bool, 0644);
#define to_omap_fbdev(x) …
struct omap_fbdev { … };
static struct drm_fb_helper *get_fb(struct fb_info *fbi);
static void pan_worker(struct work_struct *work)
{ … }
FB_GEN_DEFAULT_DEFERRED_DMAMEM_OPS(omap_fbdev,
drm_fb_helper_damage_range,
drm_fb_helper_damage_area)
static int omap_fbdev_pan_display(struct fb_var_screeninfo *var,
struct fb_info *fbi)
{ … }
static int omap_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
{ … }
static void omap_fbdev_fb_destroy(struct fb_info *info)
{ … }
static const struct fb_ops omap_fb_ops = …;
static int omap_fbdev_create(struct drm_fb_helper *helper,
struct drm_fb_helper_surface_size *sizes)
{ … }
static int omap_fbdev_dirty(struct drm_fb_helper *helper, struct drm_clip_rect *clip)
{ … }
static const struct drm_fb_helper_funcs omap_fb_helper_funcs = …;
static struct drm_fb_helper *get_fb(struct fb_info *fbi)
{ … }
static void omap_fbdev_client_unregister(struct drm_client_dev *client)
{ … }
static int omap_fbdev_client_restore(struct drm_client_dev *client)
{ … }
static int omap_fbdev_client_hotplug(struct drm_client_dev *client)
{ … }
static const struct drm_client_funcs omap_fbdev_client_funcs = …;
void omap_fbdev_setup(struct drm_device *dev)
{ … }