diff options
Diffstat (limited to 'drivers/pcmcia/db1xxx_ss.c')
-rw-r--r-- | drivers/pcmcia/db1xxx_ss.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/drivers/pcmcia/db1xxx_ss.c b/drivers/pcmcia/db1xxx_ss.c index b35b72b0d5b5..3889cf07d6ce 100644 --- a/drivers/pcmcia/db1xxx_ss.c +++ b/drivers/pcmcia/db1xxx_ss.c | |||
@@ -43,9 +43,9 @@ struct db1x_pcmcia_sock { | |||
43 | void *virt_io; | 43 | void *virt_io; |
44 | 44 | ||
45 | /* the "pseudo" addresses of the PCMCIA space. */ | 45 | /* the "pseudo" addresses of the PCMCIA space. */ |
46 | unsigned long phys_io; | 46 | phys_addr_t phys_io; |
47 | unsigned long phys_attr; | 47 | phys_addr_t phys_attr; |
48 | unsigned long phys_mem; | 48 | phys_addr_t phys_mem; |
49 | 49 | ||
50 | /* previous flags for set_socket() */ | 50 | /* previous flags for set_socket() */ |
51 | unsigned int old_flags; | 51 | unsigned int old_flags; |
@@ -404,7 +404,6 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
404 | { | 404 | { |
405 | struct db1x_pcmcia_sock *sock; | 405 | struct db1x_pcmcia_sock *sock; |
406 | struct resource *r; | 406 | struct resource *r; |
407 | phys_t physio; | ||
408 | int ret, bid; | 407 | int ret, bid; |
409 | 408 | ||
410 | sock = kzalloc(sizeof(struct db1x_pcmcia_sock), GFP_KERNEL); | 409 | sock = kzalloc(sizeof(struct db1x_pcmcia_sock), GFP_KERNEL); |
@@ -465,7 +464,7 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
465 | * for this socket (usually the 36bit address shifted 4 to the | 464 | * for this socket (usually the 36bit address shifted 4 to the |
466 | * right). | 465 | * right). |
467 | */ | 466 | */ |
468 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pseudo-attr"); | 467 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcmcia-attr"); |
469 | if (!r) { | 468 | if (!r) { |
470 | printk(KERN_ERR "pcmcia%d has no 'pseudo-attr' resource!\n", | 469 | printk(KERN_ERR "pcmcia%d has no 'pseudo-attr' resource!\n", |
471 | sock->nr); | 470 | sock->nr); |
@@ -477,7 +476,7 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
477 | * pseudo-mem: The 32bit address of the PCMCIA memory space for | 476 | * pseudo-mem: The 32bit address of the PCMCIA memory space for |
478 | * this socket (usually the 36bit address shifted 4 to the right) | 477 | * this socket (usually the 36bit address shifted 4 to the right) |
479 | */ | 478 | */ |
480 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pseudo-mem"); | 479 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcmcia-mem"); |
481 | if (!r) { | 480 | if (!r) { |
482 | printk(KERN_ERR "pcmcia%d has no 'pseudo-mem' resource!\n", | 481 | printk(KERN_ERR "pcmcia%d has no 'pseudo-mem' resource!\n", |
483 | sock->nr); | 482 | sock->nr); |
@@ -489,7 +488,7 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
489 | * pseudo-io: The 32bit address of the PCMCIA IO space for this | 488 | * pseudo-io: The 32bit address of the PCMCIA IO space for this |
490 | * socket (usually the 36bit address shifted 4 to the right). | 489 | * socket (usually the 36bit address shifted 4 to the right). |
491 | */ | 490 | */ |
492 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pseudo-io"); | 491 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcmcia-io"); |
493 | if (!r) { | 492 | if (!r) { |
494 | printk(KERN_ERR "pcmcia%d has no 'pseudo-io' resource!\n", | 493 | printk(KERN_ERR "pcmcia%d has no 'pseudo-io' resource!\n", |
495 | sock->nr); | 494 | sock->nr); |
@@ -497,12 +496,6 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
497 | } | 496 | } |
498 | sock->phys_io = r->start; | 497 | sock->phys_io = r->start; |
499 | 498 | ||
500 | |||
501 | /* IO: we must remap the full 36bit address (for reference see | ||
502 | * alchemy/common/setup.c::__fixup_bigphys_addr()) | ||
503 | */ | ||
504 | physio = ((phys_t)sock->phys_io) << 4; | ||
505 | |||
506 | /* | 499 | /* |
507 | * PCMCIA client drivers use the inb/outb macros to access | 500 | * PCMCIA client drivers use the inb/outb macros to access |
508 | * the IO registers. Since mips_io_port_base is added | 501 | * the IO registers. Since mips_io_port_base is added |
@@ -511,7 +504,7 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
511 | * to access the I/O or MEM address directly, without | 504 | * to access the I/O or MEM address directly, without |
512 | * going through this "mips_io_port_base" mechanism. | 505 | * going through this "mips_io_port_base" mechanism. |
513 | */ | 506 | */ |
514 | sock->virt_io = (void *)(ioremap(physio, IO_MAP_SIZE) - | 507 | sock->virt_io = (void *)(ioremap(sock->phys_io, IO_MAP_SIZE) - |
515 | mips_io_port_base); | 508 | mips_io_port_base); |
516 | 509 | ||
517 | if (!sock->virt_io) { | 510 | if (!sock->virt_io) { |
@@ -547,8 +540,8 @@ static int __devinit db1x_pcmcia_socket_probe(struct platform_device *pdev) | |||
547 | goto out2; | 540 | goto out2; |
548 | } | 541 | } |
549 | 542 | ||
550 | printk(KERN_INFO "Alchemy Db/Pb1xxx pcmcia%d @ io/attr/mem %08lx" | 543 | printk(KERN_INFO "Alchemy Db/Pb1xxx pcmcia%d @ io/attr/mem %09llx" |
551 | "(%p) %08lx %08lx card/insert/stschg/eject irqs @ %d " | 544 | "(%p) %09llx %09llx card/insert/stschg/eject irqs @ %d " |
552 | "%d %d %d\n", sock->nr, sock->phys_io, sock->virt_io, | 545 | "%d %d %d\n", sock->nr, sock->phys_io, sock->virt_io, |
553 | sock->phys_attr, sock->phys_mem, sock->card_irq, | 546 | sock->phys_attr, sock->phys_mem, sock->card_irq, |
554 | sock->insert_irq, sock->stschg_irq, sock->eject_irq); | 547 | sock->insert_irq, sock->stschg_irq, sock->eject_irq); |