#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/dma-buf.h>
#include <linux/media-bus-format.h>
#include <linux/of_graph.h>
#include <drm/drm_fb_dma_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_gem_atomic_helper.h>
#include <drm/drm_gem_dma_helper.h>
#include <drm/drm_vblank.h>
#include "pl111_drm.h"
irqreturn_t pl111_irq(int irq, void *data)
{ … }
static enum drm_mode_status
pl111_mode_valid(struct drm_simple_display_pipe *pipe,
const struct drm_display_mode *mode)
{ … }
static int pl111_display_check(struct drm_simple_display_pipe *pipe,
struct drm_plane_state *pstate,
struct drm_crtc_state *cstate)
{ … }
static void pl111_display_enable(struct drm_simple_display_pipe *pipe,
struct drm_crtc_state *cstate,
struct drm_plane_state *plane_state)
{ … }
static void pl111_display_disable(struct drm_simple_display_pipe *pipe)
{ … }
static void pl111_display_update(struct drm_simple_display_pipe *pipe,
struct drm_plane_state *old_pstate)
{ … }
static int pl111_display_enable_vblank(struct drm_simple_display_pipe *pipe)
{ … }
static void pl111_display_disable_vblank(struct drm_simple_display_pipe *pipe)
{ … }
static struct drm_simple_display_pipe_funcs pl111_display_funcs = …;
static int pl111_clk_div_choose_div(struct clk_hw *hw, unsigned long rate,
unsigned long *prate, bool set_parent)
{ … }
static long pl111_clk_div_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *prate)
{ … }
static unsigned long pl111_clk_div_recalc_rate(struct clk_hw *hw,
unsigned long prate)
{ … }
static int pl111_clk_div_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long prate)
{ … }
static const struct clk_ops pl111_clk_div_ops = …;
static int
pl111_init_clock_divider(struct drm_device *drm)
{ … }
int pl111_display_init(struct drm_device *drm)
{ … }