#include <linux/clk.h>
#include <linux/media-bus-format.h>
#include <linux/mfd/atmel-hlcdc.h>
#include <linux/pinctrl/consumer.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
#include <video/videomode.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h>
#include <drm/drm_modeset_helper_vtables.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>
#include "atmel_hlcdc_dc.h"
struct atmel_hlcdc_crtc_state { … };
static inline struct atmel_hlcdc_crtc_state *
drm_crtc_state_to_atmel_hlcdc_crtc_state(struct drm_crtc_state *state)
{ … }
struct atmel_hlcdc_crtc { … };
static inline struct atmel_hlcdc_crtc *
drm_crtc_to_atmel_hlcdc_crtc(struct drm_crtc *crtc)
{ … }
static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c)
{ … }
static enum drm_mode_status
atmel_hlcdc_crtc_mode_valid(struct drm_crtc *c,
const struct drm_display_mode *mode)
{ … }
static void atmel_hlcdc_crtc_atomic_disable(struct drm_crtc *c,
struct drm_atomic_state *state)
{ … }
static void atmel_hlcdc_crtc_atomic_enable(struct drm_crtc *c,
struct drm_atomic_state *state)
{ … }
#define ATMEL_HLCDC_RGB444_OUTPUT …
#define ATMEL_HLCDC_RGB565_OUTPUT …
#define ATMEL_HLCDC_RGB666_OUTPUT …
#define ATMEL_HLCDC_RGB888_OUTPUT …
#define ATMEL_HLCDC_DPI_RGB565C1_OUTPUT …
#define ATMEL_HLCDC_DPI_RGB565C2_OUTPUT …
#define ATMEL_HLCDC_DPI_RGB565C3_OUTPUT …
#define ATMEL_HLCDC_DPI_RGB666C1_OUTPUT …
#define ATMEL_HLCDC_DPI_RGB666C2_OUTPUT …
#define ATMEL_HLCDC_DPI_RGB888_OUTPUT …
#define ATMEL_HLCDC_OUTPUT_MODE_MASK …
#define ATMEL_XLCDC_OUTPUT_MODE_MASK …
static int atmel_xlcdc_connector_output_dsi(struct drm_encoder *encoder,
struct drm_display_info *info)
{ … }
static int atmel_hlcdc_connector_output_mode(struct drm_connector_state *state)
{ … }
static int atmel_hlcdc_crtc_select_output_mode(struct drm_crtc_state *state)
{ … }
static int atmel_hlcdc_crtc_atomic_check(struct drm_crtc *c,
struct drm_atomic_state *state)
{ … }
static void atmel_hlcdc_crtc_atomic_begin(struct drm_crtc *c,
struct drm_atomic_state *state)
{ … }
static void atmel_hlcdc_crtc_atomic_flush(struct drm_crtc *c,
struct drm_atomic_state *state)
{ … }
static const struct drm_crtc_helper_funcs lcdc_crtc_helper_funcs = …;
static void atmel_hlcdc_crtc_destroy(struct drm_crtc *c)
{ … }
static void atmel_hlcdc_crtc_finish_page_flip(struct atmel_hlcdc_crtc *crtc)
{ … }
void atmel_hlcdc_crtc_irq(struct drm_crtc *c)
{ … }
static void atmel_hlcdc_crtc_reset(struct drm_crtc *crtc)
{ … }
static struct drm_crtc_state *
atmel_hlcdc_crtc_duplicate_state(struct drm_crtc *crtc)
{ … }
static void atmel_hlcdc_crtc_destroy_state(struct drm_crtc *crtc,
struct drm_crtc_state *s)
{ … }
static int atmel_hlcdc_crtc_enable_vblank(struct drm_crtc *c)
{ … }
static void atmel_hlcdc_crtc_disable_vblank(struct drm_crtc *c)
{ … }
static const struct drm_crtc_funcs atmel_hlcdc_crtc_funcs = …;
int atmel_hlcdc_crtc_create(struct drm_device *dev)
{ … }