File Index
Files and directories
Sign in
FILE

drm_bridge_helper.c

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/drm_bridge_helper.c C
 1// SPDX-License-Identifier: GPL-2.0-or-later
 2
 3#include <linux/export.h>
 4
 5#include <drm/drm_atomic.h>
 6#include <drm/drm_atomic_helper.h>
 7#include <drm/drm_bridge.h>
 8#include <drm/drm_bridge_helper.h>
 9#include <drm/drm_modeset_lock.h>
10
11/**
12 * drm_bridge_helper_reset_crtc - Reset the pipeline feeding a bridge
13 * @bridge: DRM bridge to reset
14 * @ctx: lock acquisition context
15 *
16 * Reset a @bridge pipeline. It will power-cycle all active components
17 * between the CRTC and connector that bridge is connected to.
18 *
19 * As it relies on drm_atomic_helper_reset_crtc(), the same limitations
20 * apply.
21 *
22 * Returns:
23 *
24 * 0 on success or a negative error code on failure. If the error
25 * returned is EDEADLK, the whole atomic sequence must be restarted.
26 */
27int drm_bridge_helper_reset_crtc(struct drm_bridge *bridge,
28				 struct drm_modeset_acquire_ctx *ctx)
29{
30	struct drm_connector *connector;
31	struct drm_encoder *encoder = bridge->encoder;
32	struct drm_device *dev = encoder->dev;
33	struct drm_crtc *crtc;
34	int ret;
35
36	ret = drm_modeset_lock(&dev->mode_config.connection_mutex, ctx);
37	if (ret)
38		return ret;
39
40	connector = drm_atomic_get_connector_for_encoder(encoder, ctx);
41	if (IS_ERR(connector)) {
42		ret = PTR_ERR(connector);
43		goto out;
44	}
45
46	if (!connector->state) {
47		ret = -EINVAL;
48		goto out;
49	}
50
51	crtc = connector->state->crtc;
52	ret = drm_atomic_helper_reset_crtc(crtc, ctx);
53	if (ret)
54		goto out;
55
56out:
57	drm_modeset_unlock(&dev->mode_config.connection_mutex);
58	return ret;
59}
60EXPORT_SYMBOL(drm_bridge_helper_reset_crtc);
~/ Read-only file preview.