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