aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2006-10-02 05:17:38 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-02 10:57:16 -0400
commitca8af486765852302931bb69075871d5564e1e5b (patch)
treeb298caf449ec0ab49bb7a477258c39e87227a985 /drivers/isdn
parentfd0fbcc27fd72a11dacc3f1a1681ee4dfd256a0b (diff)
[PATCH] isdn: work around excessive udelay()
As reported in http://bugzilla.kernel.org/show_bug.cgi?id=6970, ISDN can issue excessively-long udelays, which triggers a build-time error on ARM. This is very sucky of ISDN, but I doubt if anyone is going to suddenly fix it. So change the macro to do the microsecond counting itself. Cc: <tch@wpkg.org> Cc: Karsten Keil <kkeil@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/isdn')
-rw-r--r--drivers/isdn/hisax/hisax.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
index 75920aa0a3c5..2f9d5118ceaf 100644
--- a/drivers/isdn/hisax/hisax.h
+++ b/drivers/isdn/hisax/hisax.h
@@ -1316,7 +1316,18 @@ void dlogframe(struct IsdnCardState *cs, struct sk_buff *skb, int dir);
1316void iecpy(u_char * dest, u_char * iestart, int ieoffset); 1316void iecpy(u_char * dest, u_char * iestart, int ieoffset);
1317#endif /* __KERNEL__ */ 1317#endif /* __KERNEL__ */
1318 1318
1319#define HZDELAY(jiffs) {int tout = jiffs; while (tout--) udelay(1000000/HZ);} 1319/*
1320 * Busywait delay for `jiffs' jiffies
1321 */
1322#define HZDELAY(jiffs) do { \
1323 int tout = jiffs; \
1324 \
1325 while (tout--) { \
1326 int loops = USEC_PER_SEC / HZ; \
1327 while (loops--) \
1328 udelay(1); \
1329 } \
1330 } while (0)
1320 1331
1321int ll_run(struct IsdnCardState *cs, int addfeatures); 1332int ll_run(struct IsdnCardState *cs, int addfeatures);
1322int CallcNew(void); 1333int CallcNew(void);