xref: /linux/drivers/gpu/tests/gpu_random.h (revision ba110db8e1bc206c13fd7d985e79b033f53bfdea)
14a9671a0SJoel Fernandes /* SPDX-License-Identifier: GPL-2.0 */
2*ba110db8SJoel Fernandes #ifndef __GPU_RANDOM_H__
3*ba110db8SJoel Fernandes #define __GPU_RANDOM_H__
44a9671a0SJoel Fernandes 
54a9671a0SJoel Fernandes /* This is a temporary home for a couple of utility functions that should
64a9671a0SJoel Fernandes  * be transposed to lib/ at the earliest convenience.
74a9671a0SJoel Fernandes  */
84a9671a0SJoel Fernandes 
94a9671a0SJoel Fernandes #include <linux/prandom.h>
104a9671a0SJoel Fernandes 
11*ba110db8SJoel Fernandes #define GPU_RND_STATE_INITIALIZER(seed__) ({				\
124a9671a0SJoel Fernandes 	struct rnd_state state__;					\
134a9671a0SJoel Fernandes 	prandom_seed_state(&state__, (seed__));				\
144a9671a0SJoel Fernandes 	state__;							\
154a9671a0SJoel Fernandes })
164a9671a0SJoel Fernandes 
17*ba110db8SJoel Fernandes #define GPU_RND_STATE(name__, seed__) \
18*ba110db8SJoel Fernandes 	struct rnd_state name__ = GPU_RND_STATE_INITIALIZER(seed__)
194a9671a0SJoel Fernandes 
20*ba110db8SJoel Fernandes unsigned int *gpu_random_order(unsigned int count,
214a9671a0SJoel Fernandes 			       struct rnd_state *state);
22*ba110db8SJoel Fernandes void gpu_random_reorder(unsigned int *order,
234a9671a0SJoel Fernandes 			unsigned int count,
244a9671a0SJoel Fernandes 			struct rnd_state *state);
25*ba110db8SJoel Fernandes u32 gpu_prandom_u32_max_state(u32 ep_ro,
264a9671a0SJoel Fernandes 			      struct rnd_state *state);
274a9671a0SJoel Fernandes 
28*ba110db8SJoel Fernandes #endif /* !__GPU_RANDOM_H__ */
29