mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-04 19:54:03 +08:00
drm/exynos: add mode_fixup callback to exynos_drm_crtc_ops
crtc::mode_fixup callback is required by crtcs which internally use a different mode than requested by user - case of Exynos Mixer. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
991ea04e2c
commit
2466db97e3
@ -95,8 +95,23 @@ static enum drm_mode_status exynos_crtc_mode_valid(struct drm_crtc *crtc,
|
|||||||
return MODE_OK;
|
return MODE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool exynos_crtc_mode_fixup(struct drm_crtc *crtc,
|
||||||
|
const struct drm_display_mode *mode,
|
||||||
|
struct drm_display_mode *adjusted_mode)
|
||||||
|
{
|
||||||
|
struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
|
||||||
|
|
||||||
|
if (exynos_crtc->ops->mode_fixup)
|
||||||
|
return exynos_crtc->ops->mode_fixup(exynos_crtc, mode,
|
||||||
|
adjusted_mode);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct drm_crtc_helper_funcs exynos_crtc_helper_funcs = {
|
static const struct drm_crtc_helper_funcs exynos_crtc_helper_funcs = {
|
||||||
.mode_valid = exynos_crtc_mode_valid,
|
.mode_valid = exynos_crtc_mode_valid,
|
||||||
|
.mode_fixup = exynos_crtc_mode_fixup,
|
||||||
.atomic_check = exynos_crtc_atomic_check,
|
.atomic_check = exynos_crtc_atomic_check,
|
||||||
.atomic_begin = exynos_crtc_atomic_begin,
|
.atomic_begin = exynos_crtc_atomic_begin,
|
||||||
.atomic_flush = exynos_crtc_atomic_flush,
|
.atomic_flush = exynos_crtc_atomic_flush,
|
||||||
|
@ -136,6 +136,9 @@ struct exynos_drm_crtc_ops {
|
|||||||
u32 (*get_vblank_counter)(struct exynos_drm_crtc *crtc);
|
u32 (*get_vblank_counter)(struct exynos_drm_crtc *crtc);
|
||||||
enum drm_mode_status (*mode_valid)(struct exynos_drm_crtc *crtc,
|
enum drm_mode_status (*mode_valid)(struct exynos_drm_crtc *crtc,
|
||||||
const struct drm_display_mode *mode);
|
const struct drm_display_mode *mode);
|
||||||
|
bool (*mode_fixup)(struct exynos_drm_crtc *crtc,
|
||||||
|
const struct drm_display_mode *mode,
|
||||||
|
struct drm_display_mode *adjusted_mode);
|
||||||
int (*atomic_check)(struct exynos_drm_crtc *crtc,
|
int (*atomic_check)(struct exynos_drm_crtc *crtc,
|
||||||
struct drm_crtc_state *state);
|
struct drm_crtc_state *state);
|
||||||
void (*atomic_begin)(struct exynos_drm_crtc *crtc);
|
void (*atomic_begin)(struct exynos_drm_crtc *crtc);
|
||||||
|
Loading…
Reference in New Issue
Block a user