Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1// SPDX-License-Identifier: MIT
 2/*
 3 * Copyright © 2023 Intel Corporation
 4 */
 5
 6#include <drm/drm_modeset_lock.h>
 7
 8#include "intel_display_types.h"
 9#include "intel_modeset_lock.h"
10
11void _intel_modeset_lock_begin(struct drm_modeset_acquire_ctx *ctx,
12			       struct intel_atomic_state *state,
13			       unsigned int flags, int *ret)
14{
15	drm_modeset_acquire_init(ctx, flags);
16
17	if (state)
18		state->base.acquire_ctx = ctx;
19
20	*ret = -EDEADLK;
21}
22
23bool _intel_modeset_lock_loop(int *ret)
24{
25	if (*ret == -EDEADLK) {
26		*ret = 0;
27		return true;
28	}
29
30	return false;
31}
32
33void _intel_modeset_lock_end(struct drm_modeset_acquire_ctx *ctx,
34			     struct intel_atomic_state *state,
35			     int *ret)
36{
37	if (*ret == -EDEADLK) {
38		if (state)
39			drm_atomic_state_clear(&state->base);
40
41		*ret = drm_modeset_backoff(ctx);
42		if (*ret == 0) {
43			*ret = -EDEADLK;
44			return;
45		}
46	}
47
48	drm_modeset_drop_locks(ctx);
49	drm_modeset_acquire_fini(ctx);
50}