xref: /linux/drivers/gpu/tests/gpu_random.h (revision 4a9671a03f2be13acde0cb15c5208767a9cc56e4)
1*4a9671a0SJoel Fernandes /* SPDX-License-Identifier: GPL-2.0 */
2*4a9671a0SJoel Fernandes #ifndef __DRM_RANDOM_H__
3*4a9671a0SJoel Fernandes #define __DRM_RANDOM_H__
4*4a9671a0SJoel Fernandes 
5*4a9671a0SJoel Fernandes /* This is a temporary home for a couple of utility functions that should
6*4a9671a0SJoel Fernandes  * be transposed to lib/ at the earliest convenience.
7*4a9671a0SJoel Fernandes  */
8*4a9671a0SJoel Fernandes 
9*4a9671a0SJoel Fernandes #include <linux/prandom.h>
10*4a9671a0SJoel Fernandes 
11*4a9671a0SJoel Fernandes #define DRM_RND_STATE_INITIALIZER(seed__) ({				\
12*4a9671a0SJoel Fernandes 	struct rnd_state state__;					\
13*4a9671a0SJoel Fernandes 	prandom_seed_state(&state__, (seed__));				\
14*4a9671a0SJoel Fernandes 	state__;							\
15*4a9671a0SJoel Fernandes })
16*4a9671a0SJoel Fernandes 
17*4a9671a0SJoel Fernandes #define DRM_RND_STATE(name__, seed__) \
18*4a9671a0SJoel Fernandes 	struct rnd_state name__ = DRM_RND_STATE_INITIALIZER(seed__)
19*4a9671a0SJoel Fernandes 
20*4a9671a0SJoel Fernandes unsigned int *drm_random_order(unsigned int count,
21*4a9671a0SJoel Fernandes 			       struct rnd_state *state);
22*4a9671a0SJoel Fernandes void drm_random_reorder(unsigned int *order,
23*4a9671a0SJoel Fernandes 			unsigned int count,
24*4a9671a0SJoel Fernandes 			struct rnd_state *state);
25*4a9671a0SJoel Fernandes u32 drm_prandom_u32_max_state(u32 ep_ro,
26*4a9671a0SJoel Fernandes 			      struct rnd_state *state);
27*4a9671a0SJoel Fernandes 
28*4a9671a0SJoel Fernandes #endif /* !__DRM_RANDOM_H__ */
29