V4L/DVB (8876): budget: udelay changed to mdelay
authorThierry MERLE <thierry.merle@free.fr>
Mon, 1 Sep 2008 20:28:57 +0000 (17:28 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 4 Sep 2008 21:26:48 +0000 (18:26 -0300)
budget.ko fails to build on ARM with:

ERROR: "__bad_udelay" [drivers/media/dvb/ttpci/budget.ko] undefined!
make[1]: *** [__modpost] Error 1

__bad_udelay is specifically designed on ARM to fail when udelay is
called in a bad way.  arch/arm/include/asm/delay.h has this to say
about __bad_udelay:

/*
 * This function intentionally does not exist; if you see references to
 * it, it means that you're calling udelay() with an out of range value.
 *
 * With currently imposed limits, this means that we support a max delay
 * of 2000us. Further limits: HZ<=1000 and bogomips<=3355
 */
extern void __bad_udelay(void);

Solution is to replace udelay by a mdelay and udelay with value less than 2000

Acked-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Thierry MERLE <thierry.merle@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/ttpci/budget-patch.c
drivers/media/dvb/ttpci/budget.c

index 39bd0a20f53a41f4d8cf51ecdc41644abb039994..aa5ed4ef19f24cfcf68eb8282cb369317c9478d3 100644 (file)
@@ -116,7 +116,8 @@ static int SendDiSEqCMsg (struct budget *budget, int len, u8 *msg, unsigned long
                        DiseqcSendByte(budget, 0xff);
                else {
                        saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI);
-                       udelay(12500);
+                       mdelay(12);
+                       udelay(500);
                        saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO);
                }
                msleep(20);
index 2293d80c6e5131fcad7feed54d7823581571ac65..f0068996ac07eb907e4042ed01be74e5c0bdd462 100644 (file)
@@ -108,7 +108,8 @@ static int SendDiSEqCMsg (struct budget *budget, int len, u8 *msg, unsigned long
                        DiseqcSendByte(budget, 0xff);
                else {
                        saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI);
-                       udelay(12500);
+                       mdelay(12);
+                       udelay(500);
                        saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO);
                }
                msleep(20);