Messages in this thread Patch in this message |  | | Date | Fri, 24 Nov 2000 15:58:18 +0300 | From | Andrey Panin <> | Subject | [PATCH] linux/drivers/media/radio check_region() removal |
| |
Hi all,
attached patch removes all check_region() calls from /linux/drivers/media/radio drivers. Most changes are obvious, except radio-cadet.c which needs some maintainer's attention.
I hope it will be usefull.
Best regards, Andrey
-- Andrey Panin | Embedded systems software engineer pazke@orbita1.ru | PGP key: http://www.orbita1.ru/~pazke/AndreyPanin.ascdiff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-aimslab.c /linux/drivers/media/radio/radio-aimslab.c --- /mnt/disk/linux/drivers/media/radio/radio-aimslab.c Mon Nov 20 21:01:53 2000 +++ /linux/drivers/media/radio/radio-aimslab.c Fri Nov 24 13:04:09 2000 @@ -29,7 +29,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -42,7 +42,7 @@ #endif static int io = CONFIG_RADIO_RTRACK_PORT; -static int users = 0; +static int users; static struct semaphore lock; struct rt_device @@ -338,7 +338,7 @@ return -EINVAL; } - if (check_region(io, 2)) + if (!request_region(io, 2, "rtrack")) { printk(KERN_ERR "rtrack: port 0x%x already in use\n", io); return -EBUSY; @@ -346,10 +346,11 @@ rtrack_radio.priv=&rtrack_unit; - if(video_register_device(&rtrack_radio, VFL_TYPE_RADIO)==-1) + if (video_register_device(&rtrack_radio, VFL_TYPE_RADIO) == -1) { + release_region(io, 2); return -EINVAL; + } - request_region(io, 2, "rtrack"); printk(KERN_INFO "AIMSlab RadioTrack/RadioReveal card driver.\n"); /* Set up the I/O locking */ diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-aztech.c /linux/drivers/media/radio/radio-aztech.c --- /mnt/disk/linux/drivers/media/radio/radio-aztech.c Mon Nov 20 21:01:53 2000 +++ /linux/drivers/media/radio/radio-aztech.c Fri Nov 24 13:04:09 2000 @@ -26,7 +26,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -41,7 +41,7 @@ static int io = CONFIG_RADIO_AZTECH_PORT; static int radio_wait_time = 1000; -static int users = 0; +static int users; static struct semaphore lock; struct az_device @@ -289,7 +289,7 @@ return -EINVAL; } - if (check_region(io, 2)) + if (!request_region(io, 2, "aztech")) { printk(KERN_ERR "aztech: port 0x%x already in use\n", io); return -EBUSY; @@ -298,10 +298,11 @@ init_MUTEX(&lock); aztech_radio.priv=&aztech_unit; - if(video_register_device(&aztech_radio, VFL_TYPE_RADIO)==-1) + if (video_register_device(&aztech_radio, VFL_TYPE_RADIO) == -1) { + release_region(io, 2); return -EINVAL; + } - request_region(io, 2, "aztech"); printk(KERN_INFO "Aztech radio card driver v1.00/19990224 rkroll@exploits.org\n"); /* mute card - prevents noisy bootups */ outb (0, io); diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-cadet.c /linux/drivers/media/radio/radio-cadet.c --- /mnt/disk/linux/drivers/media/radio/radio-cadet.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-cadet.c Fri Nov 24 13:17:22 2000 @@ -20,7 +20,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -34,15 +34,15 @@ #define RDS_BUFFER 256 static int io=CONFIG_RADIO_CADET_PORT; -static int users=0; -static int curtuner=0; -static int tunestat=0; -static int sigstrength=0; +static int users; +static int curtuner; +static int tunestat; +static int sigstrength; static wait_queue_head_t tunerq,rdsq,readq; struct timer_list tunertimer,rdstimer,readtimer; -static __u8 rdsin=0,rdsout=0,rdsstat=0; +static __u8 rdsin,rdsout,rdsstat; static unsigned char rdsbuf[RDS_BUFFER]; -static int cadet_lock=0; +static int cadet_lock; #ifndef MODULE static int cadet_probe(void); @@ -551,9 +551,28 @@ ioctl: cadet_ioctl, }; +#ifdef MODULE +static int __init cadet_probe(int ioaddr) +{ + if (!request_region(ioaddr, 2, "cadet")) + return -EBUSY; + + cadet_setfreq(1410); + if (cadet_getfreq() == 1410) { + io = ioaddr; + return 0; + } + + release_region(ioaddr, 2); + return -ENODEV; +} +#endif /* MODULE */ + #ifdef CONFIG_ISAPNP -static int isapnp_cadet_probe(void) +static int __init isapnp_cadet_probe(void) { + int retval; + dev = isapnp_find_dev (NULL, ISAPNP_VENDOR('M','S','M'), ISAPNP_FUNCTION(0x0c24), NULL); @@ -564,60 +583,61 @@ if (!(dev->resource[0].flags & IORESOURCE_IO)) return -ENODEV; if (dev->activate(dev)<0) { - printk ("radio-cadet: isapnp configure failed (out of resources?)\n"); + printk (KERN_ERR "radio-cadet: isapnp configure failed (out of resources?)\n"); return -ENOMEM; } - io = dev->resource[0].start; + printk (KERN_INFO "radio-cadet: ISAPnP reports card at %#x\n", io); + + if ((retval = cadet_probe(dev->resource[0].start))) { + dev->deactivate(dev); + return retval; + } - printk ("radio-cadet: ISAPnP reports card at %#x\n", io); + io = dev->resource[0].start; - return io; + return 0; } #endif /* CONFIG_ISAPNP */ -#ifdef MODULE -static int cadet_probe(void) +static int __init cadet_init(void) { - static int iovals[8]={0x330,0x332,0x334,0x336,0x338,0x33a,0x33c,0x33e}; int i; - for(i=0;i<8;i++) { - io=iovals[i]; - if(check_region(io,2)>=0) { - cadet_setfreq(1410); - if(cadet_getfreq()==1410) { - return io; - } - } - } - return -1; -} -#endif /* MODULE */ - -static int __init cadet_init(void) -{ #ifdef CONFIG_ISAPNP - io = isapnp_cadet_probe(); - - if (io < 0) - return (io); + if (isapnp_cadet_probe() == 0) + goto found; #else + #ifndef MODULE /* only probe on non-ISAPnP monolithic compiles */ - io = cadet_probe (); + { + int *port; + static int __initdata cadet_portlist[] = { + 0x330, 0x332, 0x334, 0x336, 0x338, + 0x33a, 0x33c, 0x33e, 0 + }; + + for (port = cadet_portlist; *port; port++) + if (cadet_probe(*port) == 0) + goto found; + } #endif /* MODULE */ + #endif /* CONFIG_ISAPNP */ - if(io < 0) { -#ifdef MODULE + if(io == 0) { +#ifdef MODULE printk(KERN_ERR "You must set an I/O address with io=0x???\n"); #endif return -EINVAL; } - if (!request_region(io,2,"cadet")) - return -EBUSY; - if(video_register_device(&cadet_radio,VFL_TYPE_RADIO)==-1) { - release_region(io,2); + + if ((i = cadet_probe(io))) + return i; + +found: + if (video_register_device(&cadet_radio, VFL_TYPE_RADIO) == -1) { + release_region(io, 2); return -EINVAL; } printk(KERN_INFO "ADS Cadet Radio Card at 0x%x\n",io); diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-gemtek.c /linux/drivers/media/radio/radio-gemtek.c --- /mnt/disk/linux/drivers/media/radio/radio-gemtek.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-gemtek.c Fri Nov 24 13:04:09 2000 @@ -17,7 +17,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -30,7 +30,7 @@ #endif static int io = CONFIG_RADIO_GEMTEK_PORT; -static int users = 0; +static int users; static spinlock_t lock; struct gemtek_device @@ -265,7 +265,7 @@ return -EINVAL; } - if (check_region(io, 4)) + if (!request_region(io, 4, "gemtek")) { printk(KERN_ERR "gemtek: port 0x%x already in use\n", io); return -EBUSY; @@ -273,10 +273,11 @@ gemtek_radio.priv=&gemtek_unit; - if(video_register_device(&gemtek_radio, VFL_TYPE_RADIO)==-1) + if (video_register_device(&gemtek_radio, VFL_TYPE_RADIO) == -1) { + release_region(io, 4); return -EINVAL; - - request_region(io, 4, "gemtek"); + } + printk(KERN_INFO "GemTek Radio Card driver.\n"); spin_lock_init(&lock); diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-maestro.c /linux/drivers/media/radio/radio-maestro.c --- /mnt/disk/linux/drivers/media/radio/radio-maestro.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-maestro.c Fri Nov 24 13:04:09 2000 @@ -84,9 +84,9 @@ stereo, /* VIDEO_TUNER_STEREO_ON */ tuned; /* signal strength (0 or 0xffff) */ struct semaphore lock; -} radio_unit = {0, 0, 0, 0, }; +} radio_unit; -static int users = 0; +static int users; static void sleep_125ms(void) { @@ -361,7 +361,7 @@ if(radio_power_on(&radio_unit)) { if(video_register_device(&maestro_radio, VFL_TYPE_RADIO)==-1) { - printk("radio-maestro: can't register device!"); + printk(KERN_ERR "radio-maestro: can't register device!"); return 0; } printk(KERN_INFO "radio-maestro: version " diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-miropcm20.c /linux/drivers/media/radio/radio-miropcm20.c --- /mnt/disk/linux/drivers/media/radio/radio-miropcm20.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-miropcm20.c Fri Nov 24 13:04:09 2000 @@ -12,7 +12,7 @@ #include <linux/videodev.h> /* kernel radio structs */ #include "../../sound/miroaci.h" /* ACI Control by acimixer */ -static int users = 0; +static int users; struct pcm20_device { diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-rtrack2.c /linux/drivers/media/radio/radio-rtrack2.c --- /mnt/disk/linux/drivers/media/radio/radio-rtrack2.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-rtrack2.c Fri Nov 24 13:04:09 2000 @@ -10,7 +10,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -23,7 +23,7 @@ #endif static int io = CONFIG_RADIO_RTRACK2_PORT; -static int users = 0; +static int users; static spinlock_t lock; struct rt_device @@ -230,7 +230,7 @@ printk(KERN_ERR "You must set an I/O address with io=0x20c or io=0x30c\n"); return -EINVAL; } - if (check_region(io, 4)) + if (!request_region(io, 4, "rtrack2")) { printk(KERN_ERR "rtrack2: port 0x%x already in use\n", io); return -EBUSY; @@ -242,7 +242,6 @@ if(video_register_device(&rtrack2_radio, VFL_TYPE_RADIO)==-1) return -EINVAL; - request_region(io, 4, "rtrack2"); printk(KERN_INFO "AIMSlab Radiotrack II card driver.\n"); /* mute card - prevents noisy bootups */ diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-sf16fmi.c /linux/drivers/media/radio/radio-sf16fmi.c --- /mnt/disk/linux/drivers/media/radio/radio-sf16fmi.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-sf16fmi.c Fri Nov 24 13:04:09 2000 @@ -16,7 +16,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -37,7 +37,7 @@ #endif static int io = CONFIG_RADIO_SF16FMI_PORT; -static int users = 0; +static int users; static struct semaphore lock; /* freq is in 1/16 kHz to internal number, hw precision is 50 kHz */ @@ -291,7 +291,7 @@ printk(KERN_ERR "You must set an I/O address with io=0x???\n"); return -EINVAL; } - if (check_region(io, 2)) + if (!request_region(io, 2, "fmi")) { printk(KERN_ERR "fmi: port 0x%x already in use\n", io); return -EBUSY; @@ -304,11 +304,12 @@ fmi_radio.priv = &fmi_unit; init_MUTEX(&lock); - - if(video_register_device(&fmi_radio, VFL_TYPE_RADIO)==-1) + + if(video_register_device(&fmi_radio, VFL_TYPE_RADIO)==-1) { + release_region(io, 2); return -EINVAL; - - request_region(io, 2, "fmi"); + } + printk(KERN_INFO "SF16FMx radio card driver at 0x%x.\n", io); printk(KERN_INFO "(c) 1998 Petr Vandrovec, vandrove@vc.cvut.cz.\n"); /* mute card - prevents noisy bootups */ diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-terratec.c /linux/drivers/media/radio/radio-terratec.c --- /mnt/disk/linux/drivers/media/radio/radio-terratec.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-terratec.c Fri Nov 24 13:04:09 2000 @@ -25,7 +25,7 @@ #include <linux/module.h> /* Modules */ #include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ +#include <linux/ioport.h> /* request_region */ #include <linux/delay.h> /* udelay */ #include <asm/io.h> /* outb, outb_p */ #include <asm/uaccess.h> /* copy to/from user */ @@ -50,7 +50,7 @@ /*******************************************************************/ static int io = CONFIG_RADIO_TERRATEC_PORT; -static int users = 0; +static int users; static spinlock_t lock; struct tt_device @@ -309,7 +309,7 @@ printk(KERN_ERR "You must set an I/O address with io=0x???\n"); return -EINVAL; } - if (check_region(io, 2)) + if (!request_region(io, 2, "terratec")) { printk(KERN_ERR "TerraTec: port 0x%x already in use\n", io); return -EBUSY; @@ -319,10 +319,11 @@ spin_lock_init(&lock); - if(video_register_device(&terratec_radio, VFL_TYPE_RADIO)==-1) + if(video_register_device(&terratec_radio, VFL_TYPE_RADIO)==-1) { + release_region(io, 2); return -EINVAL; + } - request_region(io, 2, "terratec"); printk(KERN_INFO "TERRATEC ActivRadio Standalone card driver.\n"); /* mute card - prevents noisy bootups */ diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-trust.c /linux/drivers/media/radio/radio-trust.c --- /mnt/disk/linux/drivers/media/radio/radio-trust.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-trust.c Fri Nov 24 13:04:09 2000 @@ -32,7 +32,7 @@ static int io = CONFIG_RADIO_TRUST_PORT; static int ioval = 0xf; -static int users = 0; +static int users; static __u16 curvol; static __u16 curbass; static __u16 curtreble; @@ -300,15 +300,15 @@ printk(KERN_ERR "You must set an I/O address with io=0x???\n"); return -EINVAL; } - if(check_region(io, 2)) { + if (!request_region(io, 2, "Trust FM Radio")) { printk(KERN_ERR "trust: port 0x%x already in use\n", io); return -EBUSY; } - if(video_register_device(&trust_radio, VFL_TYPE_RADIO)==-1) + if(video_register_device(&trust_radio, VFL_TYPE_RADIO)==-1) { + release_region(io, 2); return -EINVAL; + } - request_region(io, 2, "Trust FM Radio"); - printk(KERN_INFO "Trust FM Radio card driver v1.0.\n"); write_i2c(2, TDA7318_ADDR, 0x80); /* speaker att. LF = 0 dB */ diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-typhoon.c /linux/drivers/media/radio/radio-typhoon.c --- /mnt/disk/linux/drivers/media/radio/radio-typhoon.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-typhoon.c Fri Nov 24 13:04:09 2000 @@ -29,14 +29,14 @@ * completely silent. */ -#include <linux/module.h> /* Modules */ -#include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ -#include <linux/proc_fs.h> /* radio card status report */ -#include <asm/io.h> /* outb, outb_p */ -#include <asm/uaccess.h> /* copy to/from user */ -#include <linux/videodev.h> /* kernel radio structs */ -#include <linux/config.h> /* CONFIG_RADIO_TYPHOON_* */ +#include <linux/module.h> /* Modules */ +#include <linux/init.h> /* Initdata */ +#include <linux/ioport.h> /* request_region */ +#include <linux/proc_fs.h> /* radio card status report */ +#include <asm/io.h> /* outb, outb_p */ +#include <asm/uaccess.h> /* copy to/from user */ +#include <linux/videodev.h> /* kernel radio structs */ +#include <linux/config.h> /* CONFIG_RADIO_TYPHOON_* */ #define BANNER "Typhoon Radio Card driver v0.1\n" @@ -328,7 +328,7 @@ static int io = -1; #ifdef MODULE -static unsigned long mutefreq = 0; +static unsigned long mutefreq; #endif static int __init typhoon_init(void) @@ -350,17 +350,18 @@ printk(KERN_INFO BANNER); io = typhoon_unit.iobase; - if (check_region(io, 8)) { + if (!request_region(io, 8, "typhoon")) { printk(KERN_ERR "radio-typhoon: port 0x%x already in use\n", typhoon_unit.iobase); return -EBUSY; } typhoon_radio.priv = &typhoon_unit; - if (video_register_device(&typhoon_radio, VFL_TYPE_RADIO) == -1) + if (video_register_device(&typhoon_radio, VFL_TYPE_RADIO) == -1) { + release_region(io, 8); return -EINVAL; + } - request_region(typhoon_unit.iobase, 8, "typhoon"); printk(KERN_INFO "radio-typhoon: port 0x%x.\n", typhoon_unit.iobase); printk(KERN_INFO "radio-typhoon: mute frequency is %lu kHz.\n", typhoon_unit.mutefreq); diff -ur -x *.flags -x media.o /mnt/disk/linux/drivers/media/radio/radio-zoltrix.c /linux/drivers/media/radio/radio-zoltrix.c --- /mnt/disk/linux/drivers/media/radio/radio-zoltrix.c Mon Nov 20 21:01:54 2000 +++ /linux/drivers/media/radio/radio-zoltrix.c Fri Nov 24 13:04:09 2000 @@ -25,21 +25,21 @@ * - Reworked ioctl functions */ -#include <linux/module.h> /* Modules */ -#include <linux/init.h> /* Initdata */ -#include <linux/ioport.h> /* check_region, request_region */ -#include <linux/delay.h> /* udelay */ -#include <asm/io.h> /* outb, outb_p */ -#include <asm/uaccess.h> /* copy to/from user */ -#include <linux/videodev.h> /* kernel radio structs */ -#include <linux/config.h> /* CONFIG_RADIO_ZOLTRIX_PORT */ +#include <linux/module.h> /* Modules */ +#include <linux/init.h> /* Initdata */ +#include <linux/ioport.h> /* request_region */ +#include <linux/delay.h> /* udelay */ +#include <asm/io.h> /* outb, outb_p */ +#include <asm/uaccess.h> /* copy to/from user */ +#include <linux/videodev.h> /* kernel radio structs */ +#include <linux/config.h> /* CONFIG_RADIO_ZOLTRIX_PORT */ #ifndef CONFIG_RADIO_ZOLTRIX_PORT #define CONFIG_RADIO_ZOLTRIX_PORT -1 #endif static int io = CONFIG_RADIO_ZOLTRIX_PORT; -static int users = 0; +static int users; struct zol_device { int port; @@ -355,20 +355,22 @@ printk(KERN_ERR "You must set an I/O address with io=0x???\n"); return -EINVAL; } - if (check_region(io, 2)) { + if (!request_region(io, 2, "zoltrix")) { printk(KERN_ERR "zoltrix: port 0x%x already in use\n", io); return -EBUSY; } if ((io != 0x20c) && (io != 0x30c)) { printk(KERN_ERR "zoltrix: invalid port, try 0x20c or 0x30c\n"); + release_region(io, 2); return -ENXIO; } zoltrix_radio.priv = &zoltrix_unit; - if (video_register_device(&zoltrix_radio, VFL_TYPE_RADIO) == -1) + if (video_register_device(&zoltrix_radio, VFL_TYPE_RADIO) == -1) { + release_region(io, 2); return -EINVAL; + } - request_region(io, 2, "zoltrix"); printk(KERN_INFO "Zoltrix Radio Plus card driver.\n"); init_MUTEX(&zoltrix_unit.lock);[unhandled content-type:application/pgp-signature]
|  |