diff options
Diffstat (limited to 'drivers/net/pcmcia/pcnet_cs.c')
-rw-r--r-- | drivers/net/pcmcia/pcnet_cs.c | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c index f9b509a6b09a..aa6ee6b264cd 100644 --- a/drivers/net/pcmcia/pcnet_cs.c +++ b/drivers/net/pcmcia/pcnet_cs.c | |||
@@ -300,22 +300,22 @@ static void pcnet_detach(struct pcmcia_device *link) | |||
300 | static hw_info_t *get_hwinfo(struct pcmcia_device *link) | 300 | static hw_info_t *get_hwinfo(struct pcmcia_device *link) |
301 | { | 301 | { |
302 | struct net_device *dev = link->priv; | 302 | struct net_device *dev = link->priv; |
303 | win_req_t req; | ||
304 | u_char __iomem *base, *virt; | 303 | u_char __iomem *base, *virt; |
305 | int i, j; | 304 | int i, j; |
306 | 305 | ||
307 | /* Allocate a small memory window */ | 306 | /* Allocate a small memory window */ |
308 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 307 | link->resource[2]->flags |= WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
309 | req.Base = 0; req.Size = 0; | 308 | link->resource[2]->start = 0; link->resource[2]->end = 0; |
310 | req.AccessSpeed = 0; | 309 | i = pcmcia_request_window(link, link->resource[2], 0); |
311 | i = pcmcia_request_window(link, &req, &link->win); | ||
312 | if (i != 0) | 310 | if (i != 0) |
313 | return NULL; | 311 | return NULL; |
314 | 312 | ||
315 | virt = ioremap(req.Base, req.Size); | 313 | virt = ioremap(link->resource[2]->start, |
314 | resource_size(link->resource[2])); | ||
316 | for (i = 0; i < NR_INFO; i++) { | 315 | for (i = 0; i < NR_INFO; i++) { |
317 | pcmcia_map_mem_page(link, link->win, hw_info[i].offset & ~(req.Size-1)); | 316 | pcmcia_map_mem_page(link, link->resource[2], |
318 | base = &virt[hw_info[i].offset & (req.Size-1)]; | 317 | hw_info[i].offset & ~(resource_size(link->resource[2])-1)); |
318 | base = &virt[hw_info[i].offset & (resource_size(link->resource[2])-1)]; | ||
319 | if ((readb(base+0) == hw_info[i].a0) && | 319 | if ((readb(base+0) == hw_info[i].a0) && |
320 | (readb(base+2) == hw_info[i].a1) && | 320 | (readb(base+2) == hw_info[i].a1) && |
321 | (readb(base+4) == hw_info[i].a2)) { | 321 | (readb(base+4) == hw_info[i].a2)) { |
@@ -326,7 +326,7 @@ static hw_info_t *get_hwinfo(struct pcmcia_device *link) | |||
326 | } | 326 | } |
327 | 327 | ||
328 | iounmap(virt); | 328 | iounmap(virt); |
329 | j = pcmcia_release_window(link, link->win); | 329 | j = pcmcia_release_window(link, link->resource[2]); |
330 | return (i < NR_INFO) ? hw_info+i : NULL; | 330 | return (i < NR_INFO) ? hw_info+i : NULL; |
331 | } /* get_hwinfo */ | 331 | } /* get_hwinfo */ |
332 | 332 | ||
@@ -1486,7 +1486,6 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1486 | { | 1486 | { |
1487 | struct net_device *dev = link->priv; | 1487 | struct net_device *dev = link->priv; |
1488 | pcnet_dev_t *info = PRIV(dev); | 1488 | pcnet_dev_t *info = PRIV(dev); |
1489 | win_req_t req; | ||
1490 | int i, window_size, offset, ret; | 1489 | int i, window_size, offset, ret; |
1491 | 1490 | ||
1492 | window_size = (stop_pg - start_pg) << 8; | 1491 | window_size = (stop_pg - start_pg) << 8; |
@@ -1497,22 +1496,22 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1497 | window_size = roundup_pow_of_two(window_size); | 1496 | window_size = roundup_pow_of_two(window_size); |
1498 | 1497 | ||
1499 | /* Allocate a memory window */ | 1498 | /* Allocate a memory window */ |
1500 | req.Attributes = WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM|WIN_ENABLE; | 1499 | link->resource[3]->flags |= WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM|WIN_ENABLE; |
1501 | req.Attributes |= WIN_USE_WAIT; | 1500 | link->resource[3]->flags |= WIN_USE_WAIT; |
1502 | req.Base = 0; req.Size = window_size; | 1501 | link->resource[3]->start = 0; link->resource[3]->end = window_size; |
1503 | req.AccessSpeed = mem_speed; | 1502 | ret = pcmcia_request_window(link, link->resource[3], mem_speed); |
1504 | ret = pcmcia_request_window(link, &req, &link->win); | ||
1505 | if (ret) | 1503 | if (ret) |
1506 | goto failed; | 1504 | goto failed; |
1507 | 1505 | ||
1508 | offset = (start_pg << 8) + cm_offset; | 1506 | offset = (start_pg << 8) + cm_offset; |
1509 | offset -= offset % window_size; | 1507 | offset -= offset % window_size; |
1510 | ret = pcmcia_map_mem_page(link, link->win, offset); | 1508 | ret = pcmcia_map_mem_page(link, link->resource[3], offset); |
1511 | if (ret) | 1509 | if (ret) |
1512 | goto failed; | 1510 | goto failed; |
1513 | 1511 | ||
1514 | /* Try scribbling on the buffer */ | 1512 | /* Try scribbling on the buffer */ |
1515 | info->base = ioremap(req.Base, window_size); | 1513 | info->base = ioremap(link->resource[3]->start, |
1514 | resource_size(link->resource[3])); | ||
1516 | for (i = 0; i < (TX_PAGES<<8); i += 2) | 1515 | for (i = 0; i < (TX_PAGES<<8); i += 2) |
1517 | __raw_writew((i>>1), info->base+offset+i); | 1516 | __raw_writew((i>>1), info->base+offset+i); |
1518 | udelay(100); | 1517 | udelay(100); |
@@ -1521,19 +1520,20 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, | |||
1521 | pcnet_reset_8390(dev); | 1520 | pcnet_reset_8390(dev); |
1522 | if (i != (TX_PAGES<<8)) { | 1521 | if (i != (TX_PAGES<<8)) { |
1523 | iounmap(info->base); | 1522 | iounmap(info->base); |
1524 | pcmcia_release_window(link, link->win); | 1523 | pcmcia_release_window(link, link->resource[3]); |
1525 | info->base = NULL; link->win = 0; | 1524 | info->base = NULL; |
1526 | goto failed; | 1525 | goto failed; |
1527 | } | 1526 | } |
1528 | 1527 | ||
1529 | ei_status.mem = info->base + offset; | 1528 | ei_status.mem = info->base + offset; |
1530 | ei_status.priv = req.Size; | 1529 | ei_status.priv = resource_size(link->resource[3]); |
1531 | dev->mem_start = (u_long)ei_status.mem; | 1530 | dev->mem_start = (u_long)ei_status.mem; |
1532 | dev->mem_end = dev->mem_start + req.Size; | 1531 | dev->mem_end = dev->mem_start + resource_size(link->resource[3]); |
1533 | 1532 | ||
1534 | ei_status.tx_start_page = start_pg; | 1533 | ei_status.tx_start_page = start_pg; |
1535 | ei_status.rx_start_page = start_pg + TX_PAGES; | 1534 | ei_status.rx_start_page = start_pg + TX_PAGES; |
1536 | ei_status.stop_page = start_pg + ((req.Size - offset) >> 8); | 1535 | ei_status.stop_page = start_pg + ( |
1536 | (resource_size(link->resource[3]) - offset) >> 8); | ||
1537 | 1537 | ||
1538 | /* set up block i/o functions */ | 1538 | /* set up block i/o functions */ |
1539 | ei_status.get_8390_hdr = &shmem_get_8390_hdr; | 1539 | ei_status.get_8390_hdr = &shmem_get_8390_hdr; |