/* SPDX-License-Identifier: MIT */ /* * Copyright © 2023 Intel Corporation */ #ifndef __INTEL_MODESET_LOCK_H__ #define __INTEL_MODESET_LOCK_H__ #include <linux/types.h> struct drm_modeset_acquire_ctx; struct intel_atomic_state; void _intel_modeset_lock_begin(struct drm_modeset_acquire_ctx *ctx, struct intel_atomic_state *state, unsigned int flags, int *ret); bool _intel_modeset_lock_loop(int *ret); void _intel_modeset_lock_end(struct drm_modeset_acquire_ctx *ctx, struct intel_atomic_state *state, int *ret); /* * Note that one must always use "continue" rather than * "break" or "return" to handle errors within the * intel_modeset_lock_ctx_retry() block. */ #define intel_modeset_lock_ctx_retry(ctx, state, flags, ret) \ for (_intel_modeset_lock_begin((ctx), (state), (flags), &(ret)); \ _intel_modeset_lock_loop(&(ret)); \ _intel_modeset_lock_end((ctx), (state), &(ret))) #endif /* __INTEL_MODESET_LOCK_H__ */