pcmcia: do not use io_req_t after call to pcmcia_request_io()
After pcmcia_request_io(), do not make use of the values stored in io_req_t, but instead use those found in struct pcmcia_device->resource[]. CC: netdev@vger.kernel.org CC: linux-wireless@vger.kernel.org CC: linux-ide@vger.kernel.org CC: linux-usb@vger.kernel.org CC: laforge@gnumonks.org CC: linux-mtd@lists.infradead.org CC: alsa-devel@alsa-project.org CC: linux-serial@vger.kernel.org Acked-by: Marcel Holtmann <marcel@holtmann.org> (for drivers/bluetooth/) Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
@@ -167,7 +167,7 @@ static int aha152x_config_cs(struct pcmcia_device *link)
|
||||
/* Set configuration options for the aha152x driver */
|
||||
memset(&s, 0, sizeof(s));
|
||||
s.conf = "PCMCIA setup";
|
||||
s.io_port = link->io.BasePort1;
|
||||
s.io_port = link->resource[0]->start;
|
||||
s.irq = link->irq;
|
||||
s.scsiid = host_id;
|
||||
s.reconnect = reconnect;
|
||||
|
@@ -137,10 +137,10 @@ static int fdomain_config(struct pcmcia_device *link)
|
||||
goto failed;
|
||||
|
||||
/* A bad hack... */
|
||||
release_region(link->io.BasePort1, link->io.NumPorts1);
|
||||
release_region(link->resource[0]->start, resource_size(link->resource[0]));
|
||||
|
||||
/* Set configuration options for the fdomain driver */
|
||||
sprintf(str, "%d,%d", link->io.BasePort1, link->irq);
|
||||
sprintf(str, "%d,%d", (unsigned int) link->resource[0]->start, link->irq);
|
||||
fdomain_setup(str);
|
||||
|
||||
host = __fdomain_16x0_detect(&fdomain_driver_template);
|
||||
|
@@ -1719,17 +1719,19 @@ static int nsp_cs_config(struct pcmcia_device *link)
|
||||
goto cs_failed;
|
||||
|
||||
if (free_ports) {
|
||||
if (link->io.BasePort1) {
|
||||
release_region(link->io.BasePort1, link->io.NumPorts1);
|
||||
if (link->resource[0]) {
|
||||
release_region(link->resource[0]->start,
|
||||
resource_size(link->resource[0]));
|
||||
}
|
||||
if (link->io.BasePort2) {
|
||||
release_region(link->io.BasePort2, link->io.NumPorts2);
|
||||
if (link->resource[1]) {
|
||||
release_region(link->resource[1]->start,
|
||||
resource_size(link->resource[1]));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set port and IRQ */
|
||||
data->BaseAddress = link->io.BasePort1;
|
||||
data->NumAddress = link->io.NumPorts1;
|
||||
data->BaseAddress = link->resource[0]->start;
|
||||
data->NumAddress = resource_size(link->resource[0]);
|
||||
data->IrqNumber = link->irq;
|
||||
|
||||
nsp_dbg(NSP_DEBUG_INIT, "I/O[0x%x+0x%x] IRQ %d",
|
||||
@@ -1764,13 +1766,10 @@ static int nsp_cs_config(struct pcmcia_device *link)
|
||||
if (link->conf.Attributes & CONF_ENABLE_IRQ) {
|
||||
printk(", irq %d", link->irq);
|
||||
}
|
||||
if (link->io.NumPorts1) {
|
||||
printk(", io 0x%04x-0x%04x", link->io.BasePort1,
|
||||
link->io.BasePort1+link->io.NumPorts1-1);
|
||||
}
|
||||
if (link->io.NumPorts2)
|
||||
printk(" & 0x%04x-0x%04x", link->io.BasePort2,
|
||||
link->io.BasePort2+link->io.NumPorts2-1);
|
||||
if (link->resource[0])
|
||||
printk(", io %pR", link->resource[0]);
|
||||
if (link->resource[1])
|
||||
printk(" & %pR", link->resource[1]);
|
||||
if (link->win)
|
||||
printk(", mem 0x%06lx-0x%06lx", cfg_mem->req.Base,
|
||||
cfg_mem->req.Base+cfg_mem->req.Size-1);
|
||||
|
@@ -215,18 +215,18 @@ static int qlogic_config(struct pcmcia_device * link)
|
||||
|
||||
if ((info->manf_id == MANFID_MACNICA) || (info->manf_id == MANFID_PIONEER) || (info->manf_id == 0x0098)) {
|
||||
/* set ATAcmd */
|
||||
outb(0xb4, link->io.BasePort1 + 0xd);
|
||||
outb(0x24, link->io.BasePort1 + 0x9);
|
||||
outb(0x04, link->io.BasePort1 + 0xd);
|
||||
outb(0xb4, link->resource[0]->start + 0xd);
|
||||
outb(0x24, link->resource[0]->start + 0x9);
|
||||
outb(0x04, link->resource[0]->start + 0xd);
|
||||
}
|
||||
|
||||
/* The KXL-810AN has a bigger IO port window */
|
||||
if (link->io.NumPorts1 == 32)
|
||||
if (resource_size(link->resource[0]) == 32)
|
||||
host = qlogic_detect(&qlogicfas_driver_template, link,
|
||||
link->io.BasePort1 + 16, link->irq);
|
||||
link->resource[0]->start + 16, link->irq);
|
||||
else
|
||||
host = qlogic_detect(&qlogicfas_driver_template, link,
|
||||
link->io.BasePort1, link->irq);
|
||||
link->resource[0]->start, link->irq);
|
||||
|
||||
if (!host) {
|
||||
printk(KERN_INFO "%s: no SCSI devices found\n", qlogic_name);
|
||||
@@ -268,9 +268,9 @@ static int qlogic_resume(struct pcmcia_device *link)
|
||||
if ((info->manf_id == MANFID_MACNICA) ||
|
||||
(info->manf_id == MANFID_PIONEER) ||
|
||||
(info->manf_id == 0x0098)) {
|
||||
outb(0x80, link->io.BasePort1 + 0xd);
|
||||
outb(0x24, link->io.BasePort1 + 0x9);
|
||||
outb(0x04, link->io.BasePort1 + 0xd);
|
||||
outb(0x80, link->resource[0]->start + 0xd);
|
||||
outb(0x24, link->resource[0]->start + 0x9);
|
||||
outb(0x04, link->resource[0]->start + 0xd);
|
||||
}
|
||||
/* Ugggglllyyyy!!! */
|
||||
qlogicfas408_bus_reset(NULL);
|
||||
|
@@ -733,9 +733,9 @@ SYM53C500_config(struct pcmcia_device *link)
|
||||
(info->manf_id == MANFID_PIONEER) ||
|
||||
(info->manf_id == 0x0098)) {
|
||||
/* set ATAcmd */
|
||||
outb(0xb4, link->io.BasePort1 + 0xd);
|
||||
outb(0x24, link->io.BasePort1 + 0x9);
|
||||
outb(0x04, link->io.BasePort1 + 0xd);
|
||||
outb(0xb4, link->resource[0]->start + 0xd);
|
||||
outb(0x24, link->resource[0]->start + 0x9);
|
||||
outb(0x04, link->resource[0]->start + 0xd);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -748,7 +748,7 @@ SYM53C500_config(struct pcmcia_device *link)
|
||||
* 0x130, 0x230, 0x280, 0x290,
|
||||
* 0x320, 0x330, 0x340, 0x350
|
||||
*/
|
||||
port_base = link->io.BasePort1;
|
||||
port_base = link->resource[0]->start;
|
||||
irq_level = link->irq;
|
||||
|
||||
DEB(printk("SYM53C500: port_base=0x%x, irq=%d, fast_pio=%d\n",
|
||||
@@ -821,15 +821,15 @@ static int sym53c500_resume(struct pcmcia_device *link)
|
||||
if ((info->manf_id == MANFID_MACNICA) ||
|
||||
(info->manf_id == MANFID_PIONEER) ||
|
||||
(info->manf_id == 0x0098)) {
|
||||
outb(0x80, link->io.BasePort1 + 0xd);
|
||||
outb(0x24, link->io.BasePort1 + 0x9);
|
||||
outb(0x04, link->io.BasePort1 + 0xd);
|
||||
outb(0x80, link->resource[0]->start + 0xd);
|
||||
outb(0x24, link->resource[0]->start + 0x9);
|
||||
outb(0x04, link->resource[0]->start + 0xd);
|
||||
}
|
||||
/*
|
||||
* If things don't work after a "resume",
|
||||
* this is a good place to start looking.
|
||||
*/
|
||||
SYM53C500_int_host_reset(link->io.BasePort1);
|
||||
SYM53C500_int_host_reset(link->resource[0]->start);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user