xref: /openbsd-src/sys/dev/pci/drm/include/linux/delay.h (revision f005ef32267c16bdb134f0e9fa4477dbe07c263a)
17f4dd379Sjsg /* Public domain. */
27f4dd379Sjsg 
37f4dd379Sjsg #ifndef _LINUX_DELAY_H
47f4dd379Sjsg #define _LINUX_DELAY_H
57f4dd379Sjsg 
67f4dd379Sjsg #include <sys/param.h>
71bb76ff1Sjsg #include <sys/systm.h>
87f4dd379Sjsg 
97f4dd379Sjsg static inline void
udelay(unsigned long usecs)107f4dd379Sjsg udelay(unsigned long usecs)
117f4dd379Sjsg {
127f4dd379Sjsg 	DELAY(usecs);
137f4dd379Sjsg }
147f4dd379Sjsg 
157f4dd379Sjsg static inline void
ndelay(unsigned long nsecs)167f4dd379Sjsg ndelay(unsigned long nsecs)
177f4dd379Sjsg {
187f4dd379Sjsg 	DELAY(MAX(nsecs / 1000, 1));
197f4dd379Sjsg }
207f4dd379Sjsg 
217f4dd379Sjsg static inline void
usleep_range(unsigned long min,unsigned long max)227f4dd379Sjsg usleep_range(unsigned long min, unsigned long max)
237f4dd379Sjsg {
240b50a22dSmglocker 	DELAY((min + max) / 2);
257f4dd379Sjsg }
267f4dd379Sjsg 
277f4dd379Sjsg static inline void
mdelay(unsigned long msecs)287f4dd379Sjsg mdelay(unsigned long msecs)
297f4dd379Sjsg {
307f4dd379Sjsg 	int loops = msecs;
317f4dd379Sjsg 	while (loops--)
327f4dd379Sjsg 		DELAY(1000);
337f4dd379Sjsg }
347f4dd379Sjsg 
35c349dbc7Sjsg #define drm_msleep(x)		mdelay(x)
36c349dbc7Sjsg 
37*f005ef32Sjsg static inline void
fsleep(unsigned long usecs)38*f005ef32Sjsg fsleep(unsigned long usecs)
39*f005ef32Sjsg {
40*f005ef32Sjsg 	DELAY(usecs);
41*f005ef32Sjsg }
42*f005ef32Sjsg 
43db6c8e65Sjsg static inline unsigned int
msleep_interruptible(unsigned int msecs)44db6c8e65Sjsg msleep_interruptible(unsigned int msecs)
45db6c8e65Sjsg {
46db6c8e65Sjsg 	int r = tsleep_nsec(&nowake, PWAIT|PCATCH, "msleepi",
47db6c8e65Sjsg 	    MSEC_TO_NSEC(msecs));
48db6c8e65Sjsg 	if (r == EINTR)
49db6c8e65Sjsg 		return 1;
50db6c8e65Sjsg 	return 0;
51db6c8e65Sjsg }
52db6c8e65Sjsg 
537f4dd379Sjsg #endif
54