]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
radio-aimslab.c: Fix gcc 4.5+ bug
authorMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 6 Jan 2011 10:16:04 +0000 (08:16 -0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 17 Feb 2011 23:14:03 +0000 (15:14 -0800)
commit e3c92215198cb6aa00ad38db2780faa6b72e0a3f upstream.

gcc 4.5+ doesn't properly evaluate some inlined expressions.
A previous patch were proposed by Andrew Morton using noinline.
However, the entire inlined function is bogus, so let's just
remove it and be happy.

Reported-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/media/radio/radio-aimslab.c

index 05e832f61c3e88772e1ae8b3b1059a0825a5b86c..6cc5d130fbc84b3251a995499da96c504b8d59cf 100644 (file)
@@ -31,7 +31,6 @@
 #include <linux/module.h>      /* Modules                      */
 #include <linux/init.h>                /* Initdata                     */
 #include <linux/ioport.h>      /* request_region               */
-#include <linux/delay.h>       /* udelay                       */
 #include <linux/videodev2.h>   /* kernel radio structs         */
 #include <linux/version.h>     /* for KERNEL_VERSION MACRO     */
 #include <linux/io.h>          /* outb, outb_p                 */
@@ -71,27 +70,17 @@ static struct rtrack rtrack_card;
 
 /* local things */
 
-static void sleep_delay(long n)
-{
-       /* Sleep nicely for 'n' uS */
-       int d = n / msecs_to_jiffies(1000);
-       if (!d)
-               udelay(n);
-       else
-               msleep(jiffies_to_msecs(d));
-}
-
 static void rt_decvol(struct rtrack *rt)
 {
        outb(0x58, rt->io);             /* volume down + sigstr + on    */
-       sleep_delay(100000);
+       msleep(100);
        outb(0xd8, rt->io);             /* volume steady + sigstr + on  */
 }
 
 static void rt_incvol(struct rtrack *rt)
 {
        outb(0x98, rt->io);             /* volume up + sigstr + on      */
-       sleep_delay(100000);
+       msleep(100);
        outb(0xd8, rt->io);             /* volume steady + sigstr + on  */
 }
 
@@ -120,7 +109,7 @@ static int rt_setvol(struct rtrack *rt, int vol)
 
        if (vol == 0) {                 /* volume = 0 means mute the card */
                outb(0x48, rt->io);     /* volume down but still "on"   */
-               sleep_delay(2000000);   /* make sure it's totally down  */
+               msleep(2000);   /* make sure it's totally down  */
                outb(0xd0, rt->io);     /* volume steady, off           */
                rt->curvol = 0;         /* track the volume state!      */
                mutex_unlock(&rt->lock);
@@ -155,7 +144,7 @@ static void send_0_byte(struct rtrack *rt)
                outb_p(128+64+16+8+  1, rt->io);  /* on + wr-enable + data low */
                outb_p(128+64+16+8+2+1, rt->io);  /* clock */
        }
-       sleep_delay(1000);
+       msleep(1);
 }
 
 static void send_1_byte(struct rtrack *rt)
@@ -169,7 +158,7 @@ static void send_1_byte(struct rtrack *rt)
                outb_p(128+64+16+8+4+2+1, rt->io); /* clock */
        }
 
-       sleep_delay(1000);
+       msleep(1);
 }
 
 static int rt_setfreq(struct rtrack *rt, unsigned long freq)
@@ -420,7 +409,7 @@ static int __init rtrack_init(void)
 
        /* this ensures that the volume is all the way down  */
        outb(0x48, rt->io);             /* volume down but still "on"   */
-       sleep_delay(2000000);   /* make sure it's totally down  */
+       msleep(2000);   /* make sure it's totally down  */
        outb(0xc0, rt->io);             /* steady volume, mute card     */
 
        if (video_register_device(&rt->vdev, VFL_TYPE_RADIO, radio_nr) < 0) {