#include <linux/dma-mapping.h>
#include <linux/seq_file.h>
#include <drm/drm_blend.h>
#include <drm/drm_modeset_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include "omap_dmm_tiler.h"
#include "omap_drv.h"
static const u32 formats[] = …;
struct plane { … };
#define to_omap_framebuffer(x) …
struct omap_framebuffer { … };
static int omap_framebuffer_dirty(struct drm_framebuffer *fb,
struct drm_file *file_priv,
unsigned flags, unsigned color,
struct drm_clip_rect *clips,
unsigned num_clips)
{ … }
static const struct drm_framebuffer_funcs omap_framebuffer_funcs = …;
static u32 get_linear_addr(struct drm_framebuffer *fb,
const struct drm_format_info *format, int n, int x, int y)
{ … }
bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb)
{ … }
static u32 drm_rotation_to_tiler(unsigned int drm_rot)
{ … }
void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,
struct drm_plane_state *state,
struct omap_overlay_info *info,
struct omap_overlay_info *r_info)
{ … }
int omap_framebuffer_pin(struct drm_framebuffer *fb)
{ … }
void omap_framebuffer_unpin(struct drm_framebuffer *fb)
{ … }
#ifdef CONFIG_DEBUG_FS
void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m)
{ … }
#endif
struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd)
{ … }
struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos)
{ … }