OSDN Git Service

pcmcia: Use CardBus window names (PCI_CB_BRIDGE_IO_0_WINDOW etc) when freeing
authorKrzysztof Wilczynski <kw@linux.com>
Wed, 20 May 2020 18:34:11 +0000 (18:34 +0000)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 21 May 2020 20:53:07 +0000 (15:53 -0500)
Remove the loop used to free CardBus resources and replace it with
a yenta_free_res() helper used to release bridge resources explicitly.

Link: https://lore.kernel.org/r/20200520183411.1534621-3-kw@linux.com
Signed-off-by: Krzysztof Wilczynski <kw@linux.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Dominik Brodowski <linux@dominikbrodowski.net>
drivers/pcmcia/yenta_socket.c

index 5fe58da..84bfc0e 100644 (file)
@@ -745,6 +745,18 @@ static int yenta_allocate_res(struct yenta_socket *socket, int nr, unsigned type
        return 0;
 }
 
+static void yenta_free_res(struct yenta_socket *socket, int nr)
+{
+       struct pci_dev *dev = socket->dev;
+       struct resource *res;
+
+       res = &dev->resource[nr];
+       if (res->start != 0 && res->end != 0)
+               release_resource(res);
+
+       res->start = res->end = res->flags = 0;
+}
+
 /*
  * Allocate the bridge mappings for the device..
  */
@@ -773,14 +785,10 @@ static void yenta_allocate_resources(struct yenta_socket *socket)
  */
 static void yenta_free_resources(struct yenta_socket *socket)
 {
-       int i;
-       for (i = 0; i < 4; i++) {
-               struct resource *res;
-               res = socket->dev->resource + PCI_BRIDGE_RESOURCES + i;
-               if (res->start != 0 && res->end != 0)
-                       release_resource(res);
-               res->start = res->end = res->flags = 0;
-       }
+       yenta_free_res(socket, PCI_CB_BRIDGE_IO_0_WINDOW);
+       yenta_free_res(socket, PCI_CB_BRIDGE_IO_1_WINDOW);
+       yenta_free_res(socket, PCI_CB_BRIDGE_MEM_0_WINDOW);
+       yenta_free_res(socket, PCI_CB_BRIDGE_MEM_1_WINDOW);
 }