mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-04-13 09:59:31 +00:00
drm/atomic-helper: Introduce drm_atomic_helper_reset_crtc()
drm_atomic_helper_reset_crtc() allows to reset the CRTC active outputs. This resets all active components available between the CRTC and connectors. Signed-off-by: Herve Codina <herve.codina@bootlin.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Maxime Ripard <mripard@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20250210132620.42263-3-herve.codina@bootlin.com Signed-off-by: Maxime Ripard <mripard@kernel.org>
This commit is contained in:
parent
feb7ef6e2b
commit
ab83b7f6a0
2 changed files with 43 additions and 0 deletions
|
@ -3400,6 +3400,47 @@ free:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_atomic_helper_disable_all);
|
EXPORT_SYMBOL(drm_atomic_helper_disable_all);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* drm_atomic_helper_reset_crtc - reset the active outputs of a CRTC
|
||||||
|
* @crtc: DRM CRTC
|
||||||
|
* @ctx: lock acquisition context
|
||||||
|
*
|
||||||
|
* Reset the active outputs by indicating that connectors have changed.
|
||||||
|
* This implies a reset of all active components available between the CRTC and
|
||||||
|
* connectors.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* 0 on success or a negative error code on failure.
|
||||||
|
*/
|
||||||
|
int drm_atomic_helper_reset_crtc(struct drm_crtc *crtc,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
|
{
|
||||||
|
struct drm_atomic_state *state;
|
||||||
|
struct drm_crtc_state *crtc_state;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
state = drm_atomic_state_alloc(crtc->dev);
|
||||||
|
if (!state)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
state->acquire_ctx = ctx;
|
||||||
|
|
||||||
|
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
||||||
|
if (IS_ERR(crtc_state)) {
|
||||||
|
ret = PTR_ERR(crtc_state);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
crtc_state->connectors_changed = true;
|
||||||
|
|
||||||
|
ret = drm_atomic_commit(state);
|
||||||
|
out:
|
||||||
|
drm_atomic_state_put(state);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(drm_atomic_helper_reset_crtc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_atomic_helper_shutdown - shutdown all CRTC
|
* drm_atomic_helper_shutdown - shutdown all CRTC
|
||||||
* @dev: DRM device
|
* @dev: DRM device
|
||||||
|
|
|
@ -139,6 +139,8 @@ int drm_atomic_helper_set_config(struct drm_mode_set *set,
|
||||||
|
|
||||||
int drm_atomic_helper_disable_all(struct drm_device *dev,
|
int drm_atomic_helper_disable_all(struct drm_device *dev,
|
||||||
struct drm_modeset_acquire_ctx *ctx);
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
|
int drm_atomic_helper_reset_crtc(struct drm_crtc *crtc,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
void drm_atomic_helper_shutdown(struct drm_device *dev);
|
void drm_atomic_helper_shutdown(struct drm_device *dev);
|
||||||
struct drm_atomic_state *
|
struct drm_atomic_state *
|
||||||
drm_atomic_helper_duplicate_state(struct drm_device *dev,
|
drm_atomic_helper_duplicate_state(struct drm_device *dev,
|
||||||
|
|
Loading…
Add table
Reference in a new issue