]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/pcmcia/rsrc_nonstatic.c
PCI: add pci_bus_for_each_resource(), remove direct bus->resource[] refs
[mv-sheeva.git] / drivers / pcmcia / rsrc_nonstatic.c
index 9b0dc433a8c3a6953f223dd6160adbdc22db5b20..c67638fe69146b05656187f94a41f76a06de32ad 100644 (file)
@@ -533,8 +533,8 @@ struct pcmcia_align_data {
        struct resource_map     *map;
 };
 
-static void
-pcmcia_common_align(void *align_data, struct resource *res,
+static resource_size_t
+pcmcia_common_align(void *align_data, const struct resource *res,
                        resource_size_t size, resource_size_t align)
 {
        struct pcmcia_align_data *data = align_data;
@@ -545,17 +545,18 @@ pcmcia_common_align(void *align_data, struct resource *res,
        start = (res->start & ~data->mask) + data->offset;
        if (start < res->start)
                start += data->mask + 1;
-       res->start = start;
+       return start;
 }
 
-static void
-pcmcia_align(void *align_data, struct resource *res, resource_size_t size,
-               resource_size_t align)
+static resource_size_t
+pcmcia_align(void *align_data, const struct resource *res,
+       resource_size_t size, resource_size_t align)
 {
        struct pcmcia_align_data *data = align_data;
        struct resource_map *m;
+       resource_size_t start;
 
-       pcmcia_common_align(data, res, size, align);
+       start = pcmcia_common_align(data, res, size, align);
 
        for (m = data->map->next; m != data->map; m = m->next) {
                unsigned long start = m->base;
@@ -567,8 +568,7 @@ pcmcia_align(void *align_data, struct resource *res, resource_size_t size,
                 * fit here.
                 */
                if (res->start < start) {
-                       res->start = start;
-                       pcmcia_common_align(data, res, size, align);
+                       start = pcmcia_common_align(data, res, size, align);
                }
 
                /*
@@ -586,7 +586,9 @@ pcmcia_align(void *align_data, struct resource *res, resource_size_t size,
         * If we failed to find something suitable, ensure we fail.
         */
        if (m == data->map)
-               res->start = res->end;
+               start = res->end;
+
+       return start;
 }
 
 /*
@@ -801,8 +803,7 @@ static int nonstatic_autoadd_resources(struct pcmcia_socket *s)
                return -EINVAL;
 #endif
 
-       for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
-               res = s->cb_dev->bus->resource[i];
+       pci_bus_for_each_resource(s->cb_dev->bus, res, i) {
                if (!res)
                        continue;