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: Sean Paul <seanpaul@chromium.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
cd706aa8df
commit
4b4052699a
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue