#ifndef DRM_ATMEL_HLCDC_H
#define DRM_ATMEL_HLCDC_H
#include <linux/regmap.h>
#include <drm/drm_plane.h>
#define ATMEL_HLCDC_LAYER_CHER …
#define ATMEL_HLCDC_LAYER_CHDR …
#define ATMEL_HLCDC_LAYER_CHSR …
#define ATMEL_HLCDC_LAYER_EN …
#define ATMEL_HLCDC_LAYER_UPDATE …
#define ATMEL_HLCDC_LAYER_A2Q …
#define ATMEL_HLCDC_LAYER_RST …
#define ATMEL_HLCDC_LAYER_IER …
#define ATMEL_HLCDC_LAYER_IDR …
#define ATMEL_HLCDC_LAYER_IMR …
#define ATMEL_HLCDC_LAYER_ISR …
#define ATMEL_HLCDC_LAYER_DFETCH …
#define ATMEL_HLCDC_LAYER_LFETCH …
#define ATMEL_HLCDC_LAYER_DMA_IRQ(p) …
#define ATMEL_HLCDC_LAYER_DSCR_IRQ(p) …
#define ATMEL_HLCDC_LAYER_ADD_IRQ(p) …
#define ATMEL_HLCDC_LAYER_DONE_IRQ(p) …
#define ATMEL_HLCDC_LAYER_OVR_IRQ(p) …
#define ATMEL_HLCDC_LAYER_PLANE_HEAD(p) …
#define ATMEL_HLCDC_LAYER_PLANE_ADDR(p) …
#define ATMEL_HLCDC_LAYER_PLANE_CTRL(p) …
#define ATMEL_HLCDC_LAYER_PLANE_NEXT(p) …
#define ATMEL_HLCDC_LAYER_DMA_CFG …
#define ATMEL_HLCDC_LAYER_DMA_SIF …
#define ATMEL_HLCDC_LAYER_DMA_BLEN_MASK …
#define ATMEL_HLCDC_LAYER_DMA_BLEN_SINGLE …
#define ATMEL_HLCDC_LAYER_DMA_BLEN_INCR4 …
#define ATMEL_HLCDC_LAYER_DMA_BLEN_INCR8 …
#define ATMEL_HLCDC_LAYER_DMA_BLEN_INCR16 …
#define ATMEL_HLCDC_LAYER_DMA_DLBO …
#define ATMEL_HLCDC_LAYER_DMA_ROTDIS …
#define ATMEL_HLCDC_LAYER_DMA_LOCKDIS …
#define ATMEL_HLCDC_LAYER_FORMAT_CFG …
#define ATMEL_HLCDC_LAYER_RGB …
#define ATMEL_HLCDC_LAYER_CLUT …
#define ATMEL_HLCDC_LAYER_YUV …
#define ATMEL_HLCDC_RGB_MODE(m) …
#define ATMEL_HLCDC_CLUT_MODE(m) …
#define ATMEL_HLCDC_YUV_MODE(m) …
#define ATMEL_HLCDC_YUV422ROT …
#define ATMEL_HLCDC_YUV422SWP …
#define ATMEL_HLCDC_DSCALEOPT …
#define ATMEL_HLCDC_C1_MODE …
#define ATMEL_HLCDC_C2_MODE …
#define ATMEL_HLCDC_C4_MODE …
#define ATMEL_HLCDC_C8_MODE …
#define ATMEL_HLCDC_XRGB4444_MODE …
#define ATMEL_HLCDC_ARGB4444_MODE …
#define ATMEL_HLCDC_RGBA4444_MODE …
#define ATMEL_HLCDC_RGB565_MODE …
#define ATMEL_HLCDC_ARGB1555_MODE …
#define ATMEL_HLCDC_XRGB8888_MODE …
#define ATMEL_HLCDC_RGB888_MODE …
#define ATMEL_HLCDC_ARGB8888_MODE …
#define ATMEL_HLCDC_RGBA8888_MODE …
#define ATMEL_HLCDC_AYUV_MODE …
#define ATMEL_HLCDC_YUYV_MODE …
#define ATMEL_HLCDC_UYVY_MODE …
#define ATMEL_HLCDC_YVYU_MODE …
#define ATMEL_HLCDC_VYUY_MODE …
#define ATMEL_HLCDC_NV61_MODE …
#define ATMEL_HLCDC_YUV422_MODE …
#define ATMEL_HLCDC_NV21_MODE …
#define ATMEL_HLCDC_YUV420_MODE …
#define ATMEL_HLCDC_LAYER_POS(x, y) …
#define ATMEL_HLCDC_LAYER_SIZE(w, h) …
#define ATMEL_HLCDC_LAYER_CRKEY …
#define ATMEL_HLCDC_LAYER_INV …
#define ATMEL_HLCDC_LAYER_ITER2BL …
#define ATMEL_HLCDC_LAYER_ITER …
#define ATMEL_HLCDC_LAYER_REVALPHA …
#define ATMEL_HLCDC_LAYER_GAEN …
#define ATMEL_HLCDC_LAYER_LAEN …
#define ATMEL_HLCDC_LAYER_OVR …
#define ATMEL_HLCDC_LAYER_DMA …
#define ATMEL_HLCDC_LAYER_REP …
#define ATMEL_HLCDC_LAYER_DSTKEY …
#define ATMEL_HLCDC_LAYER_DISCEN …
#define ATMEL_HLCDC_LAYER_GA_SHIFT …
#define ATMEL_HLCDC_LAYER_GA_MASK …
#define ATMEL_HLCDC_LAYER_GA(x) …
#define ATMEL_HLCDC_LAYER_DISC_POS(x, y) …
#define ATMEL_HLCDC_LAYER_DISC_SIZE(w, h) …
#define ATMEL_HLCDC_LAYER_SCALER_FACTORS(x, y) …
#define ATMEL_HLCDC_LAYER_SCALER_ENABLE …
#define ATMEL_HLCDC_LAYER_MAX_PLANES …
#define ATMEL_HLCDC_DMA_CHANNEL_DSCR_RESERVED …
#define ATMEL_HLCDC_DMA_CHANNEL_DSCR_LOADED …
#define ATMEL_HLCDC_DMA_CHANNEL_DSCR_DONE …
#define ATMEL_HLCDC_DMA_CHANNEL_DSCR_OVERRUN …
#define ATMEL_HLCDC_CLUT_SIZE …
#define ATMEL_HLCDC_MAX_LAYERS …
#define ATMEL_XLCDC_LAYER_ENR …
#define ATMEL_XLCDC_LAYER_EN …
#define ATMEL_XLCDC_LAYER_IER …
#define ATMEL_XLCDC_LAYER_IDR …
#define ATMEL_XLCDC_LAYER_ISR …
#define ATMEL_XLCDC_LAYER_OVR_IRQ(p) …
#define ATMEL_XLCDC_LAYER_PLANE_ADDR(p) …
#define ATMEL_XLCDC_LAYER_DMA_CFG …
#define ATMEL_XLCDC_LAYER_DMA …
#define ATMEL_XLCDC_LAYER_REP …
#define ATMEL_XLCDC_LAYER_DISCEN …
#define ATMEL_XLCDC_LAYER_SFACTC_A0_MULT_AS …
#define ATMEL_XLCDC_LAYER_SFACTA_ONE …
#define ATMEL_XLCDC_LAYER_DFACTC_M_A0_MULT_AS …
#define ATMEL_XLCDC_LAYER_DFACTA_ONE …
#define ATMEL_XLCDC_LAYER_A0_SHIFT …
#define ATMEL_XLCDC_LAYER_A0(x) …
#define ATMEL_XLCDC_LAYER_VSCALER_LUMA_ENABLE …
#define ATMEL_XLCDC_LAYER_VSCALER_CHROMA_ENABLE …
#define ATMEL_XLCDC_LAYER_HSCALER_LUMA_ENABLE …
#define ATMEL_XLCDC_LAYER_HSCALER_CHROMA_ENABLE …
#define ATMEL_XLCDC_LAYER_VXSYCFG_ONE …
#define ATMEL_XLCDC_LAYER_VXSYTAP2_ENABLE …
#define ATMEL_XLCDC_LAYER_VXSCCFG_ONE …
#define ATMEL_XLCDC_LAYER_VXSCTAP2_ENABLE …
#define ATMEL_XLCDC_LAYER_HXSYCFG_ONE …
#define ATMEL_XLCDC_LAYER_HXSYTAP2_ENABLE …
#define ATMEL_XLCDC_LAYER_HXSCCFG_ONE …
#define ATMEL_XLCDC_LAYER_HXSCTAP2_ENABLE …
struct atmel_hlcdc_layer_cfg_layout { … };
struct atmel_hlcdc_dma_channel_dscr { … } __aligned(…);
enum atmel_hlcdc_layer_type { … };
struct atmel_hlcdc_formats { … };
struct atmel_hlcdc_layer_desc { … };
struct atmel_hlcdc_layer { … };
struct atmel_hlcdc_plane { … };
static inline struct atmel_hlcdc_plane *
drm_plane_to_atmel_hlcdc_plane(struct drm_plane *p)
{ … }
static inline struct atmel_hlcdc_plane *
atmel_hlcdc_layer_to_plane(struct atmel_hlcdc_layer *layer)
{ … }
struct atmel_hlcdc_dc { … };
struct atmel_hlcdc_plane_state;
struct atmel_lcdc_dc_ops { … };
extern const struct atmel_lcdc_dc_ops atmel_hlcdc_ops;
extern const struct atmel_lcdc_dc_ops atmel_xlcdc_ops;
struct atmel_hlcdc_dc_desc { … };
extern struct atmel_hlcdc_formats atmel_hlcdc_plane_rgb_formats;
extern struct atmel_hlcdc_formats atmel_hlcdc_plane_rgb_and_yuv_formats;
static inline void atmel_hlcdc_layer_write_reg(struct atmel_hlcdc_layer *layer,
unsigned int reg, u32 val)
{ … }
static inline u32 atmel_hlcdc_layer_read_reg(struct atmel_hlcdc_layer *layer,
unsigned int reg)
{ … }
static inline void atmel_hlcdc_layer_write_cfg(struct atmel_hlcdc_layer *layer,
unsigned int cfgid, u32 val)
{ … }
static inline u32 atmel_hlcdc_layer_read_cfg(struct atmel_hlcdc_layer *layer,
unsigned int cfgid)
{ … }
static inline void atmel_hlcdc_layer_write_clut(struct atmel_hlcdc_layer *layer,
unsigned int c, u32 val)
{ … }
static inline void atmel_hlcdc_layer_init(struct atmel_hlcdc_layer *layer,
const struct atmel_hlcdc_layer_desc *desc,
struct regmap *regmap)
{ … }
enum drm_mode_status
atmel_hlcdc_dc_mode_valid(struct atmel_hlcdc_dc *dc,
const struct drm_display_mode *mode);
int atmel_hlcdc_create_planes(struct drm_device *dev);
void atmel_hlcdc_plane_irq(struct atmel_hlcdc_plane *plane);
int atmel_hlcdc_plane_prepare_disc_area(struct drm_crtc_state *c_state);
int atmel_hlcdc_plane_prepare_ahb_routing(struct drm_crtc_state *c_state);
void atmel_hlcdc_crtc_irq(struct drm_crtc *c);
int atmel_hlcdc_crtc_create(struct drm_device *dev);
int atmel_hlcdc_create_outputs(struct drm_device *dev);
int atmel_hlcdc_encoder_get_bus_fmt(struct drm_encoder *encoder);
#endif