]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/char/pcmcia/ipwireless/main.c
pcmcia: move config_{base,index,regs} to struct pcmcia_device
[mirror_ubuntu-jammy-kernel.git] / drivers / char / pcmcia / ipwireless / main.c
index 67bdb05798b1943c8c2242f85494f70c6e2c7e3c..05c4e6834a6b23e363271cc56f5c5db85d5fcc05 100644 (file)
@@ -92,7 +92,7 @@ static int ipwireless_probe(struct pcmcia_device *p_dev,
 
        /* 0x40 causes it to generate level mode interrupts. */
        /* 0x04 enables IREQ pin. */
-       p_dev->conf.ConfigIndex = cfg->index | 0x44;
+       p_dev->config_index = cfg->index | 0x44;
        p_dev->io_lines = 16;
        ret = pcmcia_request_io(p_dev);
        if (ret)
@@ -105,62 +105,54 @@ static int ipwireless_probe(struct pcmcia_device *p_dev,
        if (cfg->mem.nwin == 0)
                return 0;
 
-       ipw->request_common_memory.Attributes =
+       p_dev->resource[2]->flags |=
                WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_CM | WIN_ENABLE;
-       ipw->request_common_memory.Base = cfg->mem.win[0].host_addr;
-       ipw->request_common_memory.Size = cfg->mem.win[0].len;
-       if (ipw->request_common_memory.Size < 0x1000)
-               ipw->request_common_memory.Size = 0x1000;
-       ipw->request_common_memory.AccessSpeed = 0;
-
-       ret = pcmcia_request_window(p_dev, &ipw->request_common_memory,
-                               &ipw->handle_common_memory);
+       p_dev->resource[2]->start = cfg->mem.win[0].host_addr;
+       p_dev->resource[2]->end = cfg->mem.win[0].len;
+       if (p_dev->resource[2]->end < 0x1000)
+               p_dev->resource[2]->end = 0x1000;
 
+       ret = pcmcia_request_window(p_dev, p_dev->resource[2], 0);
        if (ret != 0)
                goto exit1;
 
-       ret = pcmcia_map_mem_page(p_dev, ipw->handle_common_memory,
+       ret = pcmcia_map_mem_page(p_dev, p_dev->resource[2],
                                cfg->mem.win[0].card_addr);
-
        if (ret != 0)
                goto exit2;
 
        ipw->is_v2_card = cfg->mem.win[0].len == 0x100;
 
-       ipw->common_memory = ioremap(ipw->request_common_memory.Base,
-                               ipw->request_common_memory.Size);
-       request_mem_region(ipw->request_common_memory.Base,
-                       ipw->request_common_memory.Size,
+       ipw->attr_memory = ioremap(p_dev->resource[2]->start,
+                               resource_size(p_dev->resource[2]));
+       request_mem_region(p_dev->resource[2]->start,
+                       resource_size(p_dev->resource[2]),
                        IPWIRELESS_PCCARD_NAME);
 
-       ipw->request_attr_memory.Attributes =
-               WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_AM | WIN_ENABLE;
-       ipw->request_attr_memory.Base = 0;
-       ipw->request_attr_memory.Size = 0;      /* this used to be 0x1000 */
-       ipw->request_attr_memory.AccessSpeed = 0;
-
-       ret = pcmcia_request_window(p_dev, &ipw->request_attr_memory,
-                               &ipw->handle_attr_memory);
-
+       p_dev->resource[3]->flags |= WIN_DATA_WIDTH_16 | WIN_MEMORY_TYPE_AM |
+                                       WIN_ENABLE;
+       p_dev->resource[3]->end = 0; /* this used to be 0x1000 */
+       ret = pcmcia_request_window(p_dev, p_dev->resource[3], 0);
        if (ret != 0)
                goto exit2;
 
-       ret = pcmcia_map_mem_page(p_dev, ipw->handle_attr_memory, 0);
+       ret = pcmcia_map_mem_page(p_dev, p_dev->resource[3], 0);
        if (ret != 0)
                goto exit3;
 
-       ipw->attr_memory = ioremap(ipw->request_attr_memory.Base,
-                               ipw->request_attr_memory.Size);
-       request_mem_region(ipw->request_attr_memory.Base,
-                       ipw->request_attr_memory.Size, IPWIRELESS_PCCARD_NAME);
+       ipw->attr_memory = ioremap(p_dev->resource[3]->start,
+                               resource_size(p_dev->resource[3]));
+       request_mem_region(p_dev->resource[3]->start,
+                       resource_size(p_dev->resource[3]),
+                       IPWIRELESS_PCCARD_NAME);
 
        return 0;
 
 exit3:
 exit2:
        if (ipw->common_memory) {
-               release_mem_region(ipw->request_common_memory.Base,
-                               ipw->request_common_memory.Size);
+               release_mem_region(p_dev->resource[2]->start,
+                               resource_size(p_dev->resource[2]));
                iounmap(ipw->common_memory);
        }
 exit1:
@@ -181,7 +173,6 @@ static int config_ipwireless(struct ipw_dev *ipw)
                return ret;
 
        link->conf.Attributes = CONF_ENABLE_IRQ;
-       link->conf.IntType = INT_MEMORY_AND_IO;
 
        INIT_WORK(&ipw->work_reboot, signalled_reboot_work);
 
@@ -201,13 +192,9 @@ static int config_ipwireless(struct ipw_dev *ipw)
                        (unsigned int) link->irq);
        if (ipw->attr_memory && ipw->common_memory)
                printk(KERN_INFO IPWIRELESS_PCCARD_NAME
-                       ": attr memory 0x%08lx-0x%08lx, common memory 0x%08lx-0x%08lx\n",
-                       ipw->request_attr_memory.Base,
-                       ipw->request_attr_memory.Base
-                       + ipw->request_attr_memory.Size - 1,
-                       ipw->request_common_memory.Base,
-                       ipw->request_common_memory.Base
-                       + ipw->request_common_memory.Size - 1);
+                       ": attr memory %pR, common memory %pR\n",
+                       link->resource[3],
+                       link->resource[2]);
 
        ipw->network = ipwireless_network_create(ipw->hardware);
        if (!ipw->network)
@@ -231,17 +218,16 @@ static int config_ipwireless(struct ipw_dev *ipw)
        return 0;
 
 exit:
-       if (ipw->attr_memory) {
-               release_mem_region(ipw->request_attr_memory.Base,
-                               ipw->request_attr_memory.Size);
-               iounmap(ipw->attr_memory);
-
-       }
        if (ipw->common_memory) {
-               release_mem_region(ipw->request_common_memory.Base,
-                               ipw->request_common_memory.Size);
+               release_mem_region(link->resource[2]->start,
+                               resource_size(link->resource[2]));
                iounmap(ipw->common_memory);
        }
+       if (ipw->attr_memory) {
+               release_mem_region(link->resource[3]->start,
+                               resource_size(link->resource[3]));
+               iounmap(ipw->attr_memory);
+       }
        pcmcia_disable_device(link);
        return -1;
 }
@@ -249,13 +235,13 @@ exit:
 static void release_ipwireless(struct ipw_dev *ipw)
 {
        if (ipw->common_memory) {
-               release_mem_region(ipw->request_common_memory.Base,
-                               ipw->request_common_memory.Size);
+               release_mem_region(ipw->link->resource[2]->start,
+                               resource_size(ipw->link->resource[2]));
                iounmap(ipw->common_memory);
        }
        if (ipw->attr_memory) {
-               release_mem_region(ipw->request_attr_memory.Base,
-                               ipw->request_attr_memory.Size);
+               release_mem_region(ipw->link->resource[3]->start,
+                               resource_size(ipw->link->resource[3]));
                iounmap(ipw->attr_memory);
        }
        pcmcia_disable_device(ipw->link);