]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/pcmcia/rsrc_nonstatic.c
edac: mpc85xx: add support for new MPCxxx/Pxxxx EDAC controllers
[karo-tx-linux.git] / drivers / pcmcia / rsrc_nonstatic.c
index dcd1a4ad3d631b42dc93114e686231e733ff5718..96f348b35fdea356daabb8b1836d438b163ca117 100644 (file)
@@ -28,7 +28,6 @@
 
 #include <asm/irq.h>
 
-#include <pcmcia/cs_types.h>
 #include <pcmcia/ss.h>
 #include <pcmcia/cs.h>
 #include <pcmcia/cistpl.h>
@@ -64,6 +63,9 @@ struct socket_data {
 #define MEM_PROBE_LOW  (1 << 0)
 #define MEM_PROBE_HIGH (1 << 1)
 
+/* Action field */
+#define REMOVE_MANAGED_RESOURCE                1
+#define ADD_MANAGED_RESOURCE           2
 
 /*======================================================================
 
@@ -716,7 +718,7 @@ static struct resource *__nonstatic_find_io_region(struct pcmcia_socket *s,
 
 static int nonstatic_find_io(struct pcmcia_socket *s, unsigned int attr,
                        unsigned int *base, unsigned int num,
-                       unsigned int align)
+                       unsigned int align, struct resource **parent)
 {
        int i, ret = 0;
 
@@ -758,6 +760,7 @@ static int nonstatic_find_io(struct pcmcia_socket *s, unsigned int attr,
                                ((res->flags & ~IORESOURCE_BITS) |
                                        (attr & IORESOURCE_BITS));
                        s->io[i].InUse = num;
+                       *parent = res;
                        return 0;
                }
 
@@ -773,6 +776,7 @@ static int nonstatic_find_io(struct pcmcia_socket *s, unsigned int attr,
                                        continue;
                                *base = try;
                                s->io[i].InUse += num;
+                               *parent = res;
                                return 0;
                        }
                }
@@ -791,6 +795,7 @@ static int nonstatic_find_io(struct pcmcia_socket *s, unsigned int attr,
                                        continue;
                                *base = try;
                                s->io[i].InUse += num;
+                               *parent = res;
                                return 0;
                        }
                }
@@ -1055,8 +1060,6 @@ struct pccard_resource_ops pccard_nonstatic_ops = {
        .validate_mem = pcmcia_nonstatic_validate_mem,
        .find_io = nonstatic_find_io,
        .find_mem = nonstatic_find_mem_region,
-       .add_io = adjust_io,
-       .add_mem = adjust_memory,
        .init = nonstatic_init,
        .exit = nonstatic_release_resource_db,
 };
@@ -1115,8 +1118,6 @@ static ssize_t store_io_db(struct device *dev,
 
        mutex_lock(&s->ops_mutex);
        ret = adjust_io(s, add, start_addr, end_addr);
-       if (!ret)
-               s->resource_setup_new = 1;
        mutex_unlock(&s->ops_mutex);
 
        return ret ? ret : count;
@@ -1183,8 +1184,6 @@ static ssize_t store_mem_db(struct device *dev,
 
        mutex_lock(&s->ops_mutex);
        ret = adjust_memory(s, add, start_addr, end_addr);
-       if (!ret)
-               s->resource_setup_new = 1;
        mutex_unlock(&s->ops_mutex);
 
        return ret ? ret : count;