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