aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2006-10-02 02:17:38 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-02 07:57:16 -0700
commitca8af486765852302931bb69075871d5564e1e5b (patch)
treeb298caf449ec0ab49bb7a477258c39e87227a985
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>
-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 75920aa0a3c..2f9d5118cea 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);
void iecpy(u_char * dest, u_char * iestart, int ieoffset);
#endif /* __KERNEL__ */
-#define HZDELAY(jiffs) {int tout = jiffs; while (tout--) udelay(1000000/HZ);}
+/*
+ * Busywait delay for `jiffs' jiffies
+ */
+#define HZDELAY(jiffs) do { \
+ int tout = jiffs; \
+ \
+ while (tout--) { \
+ int loops = USEC_PER_SEC / HZ; \
+ while (loops--) \
+ udelay(1); \
+ } \
+ } while (0)
int ll_run(struct IsdnCardState *cs, int addfeatures);
int CallcNew(void);