#include <linux/clk.h>
#include <linux/media-bus-format.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/pm_runtime.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_atomic_state_helper.h>
#include <drm/drm_atomic_uapi.h>
#include <drm/drm_bridge.h>
#include <drm/drm_bridge_connector.h>
#include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_dma_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_gem_dma_helper.h>
#include <drm/drm_modeset_helper.h>
#include <drm/drm_modeset_helper_vtables.h>
#include <drm/drm_panel.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_simple_kms_helper.h>
#include <drm/drm_vblank.h>
#include <video/videomode.h>
#include "shmob_drm_crtc.h"
#include "shmob_drm_drv.h"
#include "shmob_drm_kms.h"
#include "shmob_drm_plane.h"
#include "shmob_drm_regs.h"
void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc)
{ … }
static bool shmob_drm_crtc_page_flip_pending(struct shmob_drm_crtc *scrtc)
{ … }
static void shmob_drm_crtc_wait_page_flip(struct shmob_drm_crtc *scrtc)
{ … }
static const struct { … } shmob_drm_bus_fmts[] = …;
static void shmob_drm_crtc_setup_geometry(struct shmob_drm_crtc *scrtc)
{ … }
static void shmob_drm_crtc_start_stop(struct shmob_drm_crtc *scrtc, bool start)
{ … }
static inline struct shmob_drm_crtc *to_shmob_crtc(struct drm_crtc *crtc)
{ … }
static void shmob_drm_crtc_atomic_enable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{ … }
static void shmob_drm_crtc_atomic_disable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{ … }
static void shmob_drm_crtc_atomic_flush(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{ … }
static const struct drm_crtc_helper_funcs crtc_helper_funcs = …;
static int shmob_drm_crtc_page_flip(struct drm_crtc *crtc,
struct drm_framebuffer *fb,
struct drm_pending_vblank_event *event,
uint32_t page_flip_flags,
struct drm_modeset_acquire_ctx *ctx)
{ … }
static void shmob_drm_crtc_enable_vblank(struct shmob_drm_device *sdev,
bool enable)
{ … }
static int shmob_drm_enable_vblank(struct drm_crtc *crtc)
{ … }
static void shmob_drm_disable_vblank(struct drm_crtc *crtc)
{ … }
static const struct drm_crtc_funcs crtc_funcs = …;
int shmob_drm_crtc_create(struct shmob_drm_device *sdev)
{ … }
static bool shmob_drm_encoder_mode_fixup(struct drm_encoder *encoder,
const struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
{ … }
static const struct drm_encoder_helper_funcs encoder_helper_funcs = …;
int shmob_drm_encoder_create(struct shmob_drm_device *sdev)
{ … }
static inline struct shmob_drm_connector *to_shmob_connector(struct drm_connector *connector)
{ … }
static int shmob_drm_connector_get_modes(struct drm_connector *connector)
{ … }
static struct drm_encoder *
shmob_drm_connector_best_encoder(struct drm_connector *connector)
{ … }
static const struct drm_connector_helper_funcs connector_helper_funcs = …;
static void shmob_drm_connector_destroy(struct drm_connector *connector)
{ … }
static const struct drm_connector_funcs connector_funcs = …;
static struct drm_connector *
shmob_drm_connector_init(struct shmob_drm_device *sdev,
struct drm_encoder *encoder)
{ … }
int shmob_drm_connector_create(struct shmob_drm_device *sdev,
struct drm_encoder *encoder)
{ … }