]> git.hungrycats.org Git - linux/commitdiff
[PATCH] janitor: remove check_region from drivers/char/esp.c
authorMaximilian Attems <janitor@sternwelten.at>
Tue, 19 Oct 2004 01:20:50 +0000 (18:20 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 19 Oct 2004 01:20:50 +0000 (18:20 -0700)
Signed-off-by: Maximilian Attems <janitor@sternwelten.at>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/char/esp.c

index 19d17b0ef5e003ad4fa068a2942c9202f7b98b1e..7353c26789160d047645c672e7734e1012ebbea4 100644 (file)
@@ -71,6 +71,7 @@
 
 #define NR_PORTS 64    /* maximum number of ports */
 #define NR_PRIMARY 8   /* maximum number of primary ports */
+#define REGION_SIZE 8   /* size of io region to request */
 
 /* The following variables can be set by giving module options */
 static int irq[NR_PRIMARY];    /* IRQ for each base port */
@@ -2343,19 +2344,21 @@ static _INLINE_ void show_serial_version(void)
  * This routine is called by espserial_init() to initialize a specific serial
  * port.
  */
-static _INLINE_ int autoconfig(struct esp_struct * info, int *region_start)
+static _INLINE_ int autoconfig(struct esp_struct * info)
 {
        int port_detected = 0;
        unsigned long flags;
 
+       if (!request_region(info->port, REGION_SIZE, "esp serial"))
+               return -EIO;
+
        save_flags(flags); cli();
        
        /*
         * Check for ESP card
         */
 
-       if (!check_region(info->port, 8) && 
-           serial_in(info, UART_ESI_BASE) == 0xf3) {
+       if (serial_in(info, UART_ESI_BASE) == 0xf3) {
                serial_out(info, UART_ESI_CMD1, 0x00);
                serial_out(info, UART_ESI_CMD1, 0x01);
 
@@ -2371,19 +2374,6 @@ static _INLINE_ int autoconfig(struct esp_struct * info, int *region_start)
                                        info->irq = 4;
                        }
 
-                       if (ports && (ports->port == (info->port - 8))) {
-                               release_region(*region_start,
-                                              info->port - *region_start);
-                       } else
-                               *region_start = info->port;
-
-                       if (!request_region(*region_start,
-                                      info->port - *region_start + 8,
-                                      "esp serial"))
-                       {
-                               restore_flags(flags);
-                               return -EIO;
-                       }
 
                        /* put card in enhanced mode */
                        /* this prevents access through */
@@ -2396,6 +2386,8 @@ static _INLINE_ int autoconfig(struct esp_struct * info, int *region_start)
                        serial_out(info, UART_ESI_CMD2, 0x00);
                }
        }
+       if (!port_detected)
+               release_region(info->port, REGION_SIZE);
 
        restore_flags(flags);
        return (port_detected);
@@ -2429,7 +2421,6 @@ static struct tty_operations esp_ops = {
 int __init espserial_init(void)
 {
        int i, offset;
-       int region_start;
        struct esp_struct * info;
        struct esp_struct *last_primary = NULL;
        int esp[] = {0x100,0x140,0x180,0x200,0x240,0x280,0x300,0x380};
@@ -2515,7 +2506,7 @@ int __init espserial_init(void)
                info->irq = irq[i];
                info->line = (i * 8) + (offset / 8);
 
-               if (!autoconfig(info, &region_start)) {
+               if (!autoconfig(info)) {
                        i++;
                        offset = 0;
                        continue;
@@ -2591,7 +2582,6 @@ static void __exit espserial_exit(void)
 {
        unsigned long flags;
        int e1;
-       unsigned int region_start, region_end;
        struct esp_struct *temp_async;
        struct esp_pio_buffer *pio_buf;
 
@@ -2606,27 +2596,8 @@ static void __exit espserial_exit(void)
 
        while (ports) {
                if (ports->port) {
-                       region_start = region_end = ports->port;
-                       temp_async = ports;
-
-                       while (temp_async) {
-                               if ((region_start - temp_async->port) == 8) {
-                                       region_start = temp_async->port;
-                                       temp_async->port = 0;
-                                       temp_async = ports;
-                               } else if ((temp_async->port - region_end)
-                                          == 8) {
-                                       region_end = temp_async->port;
-                                       temp_async->port = 0;
-                                       temp_async = ports;
-                               } else
-                                       temp_async = temp_async->next_port;
-                       }
-                       
-                       release_region(region_start,
-                                      region_end - region_start + 8);
+                       release_region(ports->port, REGION_SIZE);
                }
-
                temp_async = ports->next_port;
                kfree(ports);
                ports = temp_async;