drm/exynos: add mode_valid callback to exynos_drm
crtc::mode_valid callback is required to implement proper pipeline validation for command/video modes. Since Exynos uses private framework such callback should be added to it. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
34c3db6c22
commit
c3653fede5
@ -84,7 +84,19 @@ static void exynos_crtc_atomic_flush(struct drm_crtc *crtc,
|
|||||||
exynos_crtc->ops->atomic_flush(exynos_crtc);
|
exynos_crtc->ops->atomic_flush(exynos_crtc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum drm_mode_status exynos_crtc_mode_valid(struct drm_crtc *crtc,
|
||||||
|
const struct drm_display_mode *mode)
|
||||||
|
{
|
||||||
|
struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
|
||||||
|
|
||||||
|
if (exynos_crtc->ops->mode_valid)
|
||||||
|
return exynos_crtc->ops->mode_valid(exynos_crtc, mode);
|
||||||
|
|
||||||
|
return MODE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
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,
|
||||||
.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,
|
||||||
|
@ -117,6 +117,7 @@ struct exynos_drm_plane_config {
|
|||||||
* @disable: disable the device
|
* @disable: disable the device
|
||||||
* @enable_vblank: specific driver callback for enabling vblank interrupt.
|
* @enable_vblank: specific driver callback for enabling vblank interrupt.
|
||||||
* @disable_vblank: specific driver callback for disabling vblank interrupt.
|
* @disable_vblank: specific driver callback for disabling vblank interrupt.
|
||||||
|
* @mode_valid: specific driver callback for mode validation
|
||||||
* @atomic_check: validate state
|
* @atomic_check: validate state
|
||||||
* @atomic_begin: prepare device to receive an update
|
* @atomic_begin: prepare device to receive an update
|
||||||
* @atomic_flush: mark the end of device update
|
* @atomic_flush: mark the end of device update
|
||||||
@ -132,6 +133,8 @@ struct exynos_drm_crtc_ops {
|
|||||||
int (*enable_vblank)(struct exynos_drm_crtc *crtc);
|
int (*enable_vblank)(struct exynos_drm_crtc *crtc);
|
||||||
void (*disable_vblank)(struct exynos_drm_crtc *crtc);
|
void (*disable_vblank)(struct exynos_drm_crtc *crtc);
|
||||||
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,
|
||||||
|
const struct drm_display_mode *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