linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrey Panin <pazke@orbita.don.sitek.net>
To: linux-kernel@vger.kernel.org
Subject: [PATCH] linux/drivers/media/radio check_region() removal
Date: Fri, 24 Nov 2000 15:58:18 +0300	[thread overview]
Message-ID: <20001124155818.B3900@debian> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 404 bytes --]


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.asc

[-- Attachment #1.2: patch-radio-2.4.0t11 --]
[-- Type: text/plain, Size: 20003 bytes --]

diff -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);

[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]

             reply	other threads:[~2000-11-24 14:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-24 12:58 Andrey Panin [this message]
2000-11-24 14:05 ` [PATCH] linux/drivers/media/radio check_region() removal Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20001124155818.B3900@debian \
    --to=pazke@orbita.don.sitek.net \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).