|
@@ -324,9 +324,8 @@ static int smc91c92_probe(struct pcmcia_device *link)
|
|
|
link->priv = dev;
|
|
|
|
|
|
spin_lock_init(&smc->lock);
|
|
|
- link->io.NumPorts1 = 16;
|
|
|
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
|
|
|
- link->io.IOAddrLines = 4;
|
|
|
+ link->resource[0]->end = 16;
|
|
|
+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
|
|
|
link->conf.Attributes = CONF_ENABLE_IRQ;
|
|
|
link->conf.IntType = INT_MEMORY_AND_IO;
|
|
|
|
|
@@ -427,12 +426,13 @@ static int mhz_mfc_config_check(struct pcmcia_device *p_dev,
|
|
|
void *priv_data)
|
|
|
{
|
|
|
int k;
|
|
|
- p_dev->io.BasePort2 = cf->io.win[0].base;
|
|
|
+ p_dev->resource[1]->start = cf->io.win[0].base;
|
|
|
for (k = 0; k < 0x400; k += 0x10) {
|
|
|
if (k & 0x80)
|
|
|
continue;
|
|
|
- p_dev->io.BasePort1 = k ^ 0x300;
|
|
|
- if (!pcmcia_request_io(p_dev, &p_dev->io))
|
|
|
+ p_dev->resource[0]->start = k ^ 0x300;
|
|
|
+ p_dev->io_lines = 16;
|
|
|
+ if (!pcmcia_request_io(p_dev))
|
|
|
return 0;
|
|
|
}
|
|
|
return -ENODEV;
|
|
@@ -448,9 +448,8 @@ static int mhz_mfc_config(struct pcmcia_device *link)
|
|
|
|
|
|
link->conf.Attributes |= CONF_ENABLE_SPKR;
|
|
|
link->conf.Status = CCSR_AUDIO_ENA;
|
|
|
- link->io.IOAddrLines = 16;
|
|
|
- link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
|
|
|
- link->io.NumPorts2 = 8;
|
|
|
+ link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
|
|
|
+ link->resource[1]->end = 8;
|
|
|
|
|
|
/* The Megahertz combo cards have modem-like CIS entries, so
|
|
|
we have to explicitly try a bunch of port combinations. */
|
|
@@ -601,9 +600,9 @@ static int smc_configcheck(struct pcmcia_device *p_dev,
|
|
|
unsigned int vcc,
|
|
|
void *priv_data)
|
|
|
{
|
|
|
- p_dev->io.BasePort1 = cf->io.win[0].base;
|
|
|
- p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
|
|
|
- return pcmcia_request_io(p_dev, &p_dev->io);
|
|
|
+ p_dev->resource[0]->start = cf->io.win[0].base;
|
|
|
+ p_dev->io_lines = cf->io.flags & CISTPL_IO_LINES_MASK;
|
|
|
+ return pcmcia_request_io(p_dev);
|
|
|
}
|
|
|
|
|
|
static int smc_config(struct pcmcia_device *link)
|
|
@@ -611,7 +610,7 @@ static int smc_config(struct pcmcia_device *link)
|
|
|
struct net_device *dev = link->priv;
|
|
|
int i;
|
|
|
|
|
|
- link->io.NumPorts1 = 16;
|
|
|
+ link->resource[0]->end = 16;
|
|
|
i = pcmcia_loop_config(link, smc_configcheck, NULL);
|
|
|
if (!i)
|
|
|
dev->base_addr = link->resource[0]->start;
|
|
@@ -646,25 +645,25 @@ static int osi_config(struct pcmcia_device *link)
|
|
|
|
|
|
link->conf.Attributes |= CONF_ENABLE_SPKR;
|
|
|
link->conf.Status = CCSR_AUDIO_ENA;
|
|
|
- link->io.NumPorts1 = 64;
|
|
|
- link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
|
|
|
- link->io.NumPorts2 = 8;
|
|
|
- link->io.IOAddrLines = 16;
|
|
|
+ link->resource[0]->end = 64;
|
|
|
+ link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
|
|
|
+ link->resource[1]->end = 8;
|
|
|
|
|
|
/* Enable Hard Decode, LAN, Modem */
|
|
|
link->conf.ConfigIndex = 0x23;
|
|
|
+ link->io_lines = 16;
|
|
|
|
|
|
for (i = j = 0; j < 4; j++) {
|
|
|
- link->io.BasePort2 = com[j];
|
|
|
- i = pcmcia_request_io(link, &link->io);
|
|
|
+ link->resource[1]->start = com[j];
|
|
|
+ i = pcmcia_request_io(link);
|
|
|
if (i == 0)
|
|
|
break;
|
|
|
}
|
|
|
if (i != 0) {
|
|
|
/* Fallback: turn off hard decode */
|
|
|
link->conf.ConfigIndex = 0x03;
|
|
|
- link->io.NumPorts2 = 0;
|
|
|
- i = pcmcia_request_io(link, &link->io);
|
|
|
+ link->resource[1]->end = 0;
|
|
|
+ i = pcmcia_request_io(link);
|
|
|
}
|
|
|
dev->base_addr = link->resource[0]->start + 0x10;
|
|
|
return i;
|
|
@@ -803,7 +802,7 @@ static int check_sig(struct pcmcia_device *link)
|
|
|
}
|
|
|
|
|
|
/* Try setting bus width */
|
|
|
- width = (link->io.Attributes1 == IO_DATA_PATH_WIDTH_AUTO);
|
|
|
+ width = (link->resource[0]->flags == IO_DATA_PATH_WIDTH_AUTO);
|
|
|
s = inb(ioaddr + CONFIG);
|
|
|
if (width)
|
|
|
s |= CFG_16BIT;
|