Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b405269 authored by Sean Paul's avatar Sean Paul Committed by Inki Dae
Browse files

drm/exynos: Implement mode_fixup manager operation



This patch adds a new manager callback for mode_fixup and pipes it
through exynos_drm_crtc. This will allow the manager drivers to
alter the mode during modeset.

Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent cd706aa8
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -105,7 +105,12 @@ exynos_drm_crtc_mode_fixup(struct drm_crtc *crtc,
			    const struct drm_display_mode *mode,
			    struct drm_display_mode *adjusted_mode)
{
	/* drm framework doesn't check NULL */
	struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
	struct exynos_drm_manager *manager = exynos_crtc->manager;

	if (manager->ops->mode_fixup)
		return manager->ops->mode_fixup(manager, mode, adjusted_mode);

	return true;
}

+4 −0
Original line number Diff line number Diff line
@@ -184,6 +184,7 @@ struct exynos_drm_display {
 * @initialize: initializes the manager with drm_dev
 * @remove: cleans up the manager for removal
 * @dpms: control device power.
 * @mode_fixup: fix mode data before applying it
 * @mode_set: set the given mode to the manager
 * @commit: set current hw specific display mode to hw.
 * @enable_vblank: specific driver callback for enabling vblank interrupt.
@@ -201,6 +202,9 @@ struct exynos_drm_manager_ops {
				struct drm_device *drm_dev, int pipe);
	void (*remove)(struct exynos_drm_manager *mgr);
	void (*dpms)(struct exynos_drm_manager *mgr, int mode);
	bool (*mode_fixup)(struct exynos_drm_manager *mgr,
				const struct drm_display_mode *mode,
				struct drm_display_mode *adjusted_mode);
	void (*mode_set)(struct exynos_drm_manager *mgr,
				const struct drm_display_mode *mode);
	void (*commit)(struct exynos_drm_manager *mgr);