#ifndef _EXYNOS_DRM_DRV_H_
#define _EXYNOS_DRM_DRV_H_
#include <linux/module.h>
#include <drm/drm_crtc.h>
#include <drm/drm_device.h>
#include <drm/drm_plane.h>
#define MAX_CRTC …
#define MAX_PLANE …
#define MAX_FB_BUFFER …
#define DEFAULT_WIN …
struct drm_crtc_state;
struct drm_display_mode;
#define to_exynos_crtc(x) …
#define to_exynos_plane(x) …
enum exynos_drm_output_type { … };
struct exynos_drm_rect { … };
struct exynos_drm_plane_state { … };
static inline struct exynos_drm_plane_state *
to_exynos_plane_state(struct drm_plane_state *state)
{ … }
struct exynos_drm_plane { … };
#define EXYNOS_DRM_PLANE_CAP_DOUBLE …
#define EXYNOS_DRM_PLANE_CAP_SCALE …
#define EXYNOS_DRM_PLANE_CAP_ZPOS …
#define EXYNOS_DRM_PLANE_CAP_TILE …
#define EXYNOS_DRM_PLANE_CAP_PIX_BLEND …
#define EXYNOS_DRM_PLANE_CAP_WIN_BLEND …
struct exynos_drm_plane_config { … };
struct exynos_drm_crtc;
struct exynos_drm_crtc_ops { … };
struct exynos_drm_clk { … };
struct exynos_drm_crtc { … };
static inline void exynos_drm_pipe_clk_enable(struct exynos_drm_crtc *crtc,
bool enable)
{ … }
struct drm_exynos_file_private { … };
struct exynos_drm_private { … };
static inline struct device *to_dma_dev(struct drm_device *dev)
{ … }
static inline bool is_drm_iommu_supported(struct drm_device *drm_dev)
{ … }
int exynos_drm_register_dma(struct drm_device *drm, struct device *dev,
void **dma_priv);
void exynos_drm_unregister_dma(struct drm_device *drm, struct device *dev,
void **dma_priv);
void exynos_drm_cleanup_dma(struct drm_device *drm);
#ifdef CONFIG_DRM_EXYNOS_DPI
struct drm_encoder *exynos_dpi_probe(struct device *dev);
int exynos_dpi_remove(struct drm_encoder *encoder);
int exynos_dpi_bind(struct drm_device *dev, struct drm_encoder *encoder);
#else
static inline struct drm_encoder *
exynos_dpi_probe(struct device *dev) { … }
static inline int exynos_dpi_remove(struct drm_encoder *encoder)
{ … }
static inline int exynos_dpi_bind(struct drm_device *dev,
struct drm_encoder *encoder)
{ … }
#endif
#ifdef CONFIG_DRM_EXYNOS_FIMC
int exynos_drm_check_fimc_device(struct device *dev);
#else
static inline int exynos_drm_check_fimc_device(struct device *dev)
{
return 0;
}
#endif
int exynos_atomic_commit(struct drm_device *dev, struct drm_atomic_state *state,
bool nonblock);
extern struct platform_driver fimd_driver;
extern struct platform_driver exynos5433_decon_driver;
extern struct platform_driver decon_driver;
extern struct platform_driver dp_driver;
extern struct platform_driver dsi_driver;
extern struct platform_driver mixer_driver;
extern struct platform_driver hdmi_driver;
extern struct platform_driver vidi_driver;
extern struct platform_driver g2d_driver;
extern struct platform_driver fimc_driver;
extern struct platform_driver rotator_driver;
extern struct platform_driver scaler_driver;
extern struct platform_driver gsc_driver;
extern struct platform_driver mic_driver;
#endif