From: Tero Kristo Date: Tue, 4 Mar 2014 16:19:02 +0000 (+0200) Subject: ARM: OMAP2+: prcm: add omap_test_timeout to prcm-common.h X-Git-Tag: next-20140530~119^2~31^2^2^2~8 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=250e27ee950bf67ceeb812eb4c8f2fea58d3e2b6;p=karo-tx-linux.git ARM: OMAP2+: prcm: add omap_test_timeout to prcm-common.h Done in preparation to move cm/prm to drivers. These will still use omap_test_timeout, but will not have access to common.h header under mach-omap2 anymore. Signed-off-by: Tero Kristo Signed-off-by: Paul Walmsley --- diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h index 0e841fd9498a..e982598386a5 100644 --- a/arch/arm/mach-omap2/prcm-common.h +++ b/arch/arm/mach-omap2/prcm-common.h @@ -428,6 +428,26 @@ #define MAX_IOPAD_LATCH_TIME 100 # ifndef __ASSEMBLER__ +/** + * omap_test_timeout - busy-loop, testing a condition + * @cond: condition to test until it evaluates to true + * @timeout: maximum number of microseconds in the timeout + * @index: loop index (integer) + * + * Loop waiting for @cond to become true or until at least @timeout + * microseconds have passed. To use, define some integer @index in the + * calling code. After running, if @index == @timeout, then the loop has + * timed out. + */ +#define omap_test_timeout(cond, timeout, index) \ +({ \ + for (index = 0; index < timeout; index++) { \ + if (cond) \ + break; \ + udelay(1); \ + } \ +}) + /** * struct omap_prcm_irq - describes a PRCM interrupt bit * @name: a short name describing the interrupt type, e.g. "wkup" or "io"