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)107f4dd379Sjsgudelay(unsigned long usecs) 117f4dd379Sjsg { 127f4dd379Sjsg DELAY(usecs); 137f4dd379Sjsg } 147f4dd379Sjsg 157f4dd379Sjsg static inline void ndelay(unsigned long nsecs)167f4dd379Sjsgndelay(unsigned long nsecs) 177f4dd379Sjsg { 187f4dd379Sjsg DELAY(MAX(nsecs / 1000, 1)); 197f4dd379Sjsg } 207f4dd379Sjsg 217f4dd379Sjsg static inline void usleep_range(unsigned long min,unsigned long max)227f4dd379Sjsgusleep_range(unsigned long min, unsigned long max) 237f4dd379Sjsg { 240b50a22dSmglocker DELAY((min + max) / 2); 257f4dd379Sjsg } 267f4dd379Sjsg 277f4dd379Sjsg static inline void mdelay(unsigned long msecs)287f4dd379Sjsgmdelay(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*f005ef32Sjsgfsleep(unsigned long usecs) 39*f005ef32Sjsg { 40*f005ef32Sjsg DELAY(usecs); 41*f005ef32Sjsg } 42*f005ef32Sjsg 43db6c8e65Sjsg static inline unsigned int msleep_interruptible(unsigned int msecs)44db6c8e65Sjsgmsleep_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