3 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
4 * Authoer: Inki Dae <inki.dae@samsung.com>
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
12 #ifndef _EXYNOS_DRM_HDMI_H_
13 #define _EXYNOS_DRM_HDMI_H_
15 #define MIXER_WIN_NR 3
16 #define MIXER_DEFAULT_WIN 0
19 * exynos hdmi common context structure.
21 * @drm_dev: pointer to drm_device.
22 * @ctx: pointer to the context of specific device driver.
23 * this context should be hdmi_context or mixer_context.
25 struct exynos_drm_hdmi_context
{
26 struct drm_device
*drm_dev
;
30 struct exynos_hdmi_ops
{
32 bool (*is_connected
)(void *ctx
);
33 struct edid
*(*get_edid
)(void *ctx
,
34 struct drm_connector
*connector
);
35 int (*check_mode
)(void *ctx
, struct drm_display_mode
*mode
);
36 int (*power_on
)(void *ctx
, int mode
);
39 void (*mode_set
)(void *ctx
, struct drm_display_mode
*mode
);
40 void (*get_max_resol
)(void *ctx
, unsigned int *width
,
41 unsigned int *height
);
42 void (*commit
)(void *ctx
);
43 void (*dpms
)(void *ctx
, int mode
);
46 struct exynos_mixer_ops
{
48 int (*iommu_on
)(void *ctx
, bool enable
);
49 int (*enable_vblank
)(void *ctx
, int pipe
);
50 void (*disable_vblank
)(void *ctx
);
51 void (*wait_for_vblank
)(void *ctx
);
52 void (*dpms
)(void *ctx
, int mode
);
55 void (*win_mode_set
)(void *ctx
, struct exynos_drm_overlay
*overlay
);
56 void (*win_commit
)(void *ctx
, int zpos
);
57 void (*win_disable
)(void *ctx
, int zpos
);
60 int (*check_mode
)(void *ctx
, struct drm_display_mode
*mode
);
63 void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context
*ctx
);
64 void exynos_mixer_drv_attach(struct exynos_drm_hdmi_context
*ctx
);
65 void exynos_hdmi_ops_register(struct exynos_hdmi_ops
*ops
);
66 void exynos_mixer_ops_register(struct exynos_mixer_ops
*ops
);