diff options
| -rw-r--r-- | arch/mips/alchemy/common/setup.c | 32 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/db1200/platform.c | 24 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/db1x00/platform.c | 24 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/pb1100/platform.c | 12 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/pb1200/platform.c | 24 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/pb1500/platform.c | 12 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/pb1550/platform.c | 24 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/platform.c | 34 | ||||
| -rw-r--r-- | arch/mips/alchemy/devboards/platform.h | 12 | ||||
| -rw-r--r-- | arch/mips/alchemy/xxs1500/platform.c | 18 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-au1x00/au1000.h | 14 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-au1x00/ioremap.h | 2 | ||||
| -rw-r--r-- | drivers/pcmcia/au1000_generic.c | 10 | ||||
| -rw-r--r-- | drivers/pcmcia/au1000_generic.h | 6 | ||||
| -rw-r--r-- | drivers/pcmcia/db1xxx_ss.c | 25 | ||||
| -rw-r--r-- | drivers/pcmcia/xxs1500_ss.c | 27 |
16 files changed, 123 insertions, 177 deletions
diff --git a/arch/mips/alchemy/common/setup.c b/arch/mips/alchemy/common/setup.c index 193ba166affd..561e5da2658b 100644 --- a/arch/mips/alchemy/common/setup.c +++ b/arch/mips/alchemy/common/setup.c | |||
| @@ -69,38 +69,20 @@ void __init plat_mem_setup(void) | |||
| 69 | iomem_resource.end = IOMEM_RESOURCE_END; | 69 | iomem_resource.end = IOMEM_RESOURCE_END; |
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | #if defined(CONFIG_64BIT_PHYS_ADDR) | 72 | #if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_PCI) |
| 73 | /* This routine should be valid for all Au1x based boards */ | 73 | /* This routine should be valid for all Au1x based boards */ |
| 74 | phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) | 74 | phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) |
| 75 | { | 75 | { |
| 76 | u32 start = (u32)Au1500_PCI_MEM_START; | ||
| 77 | u32 end = (u32)Au1500_PCI_MEM_END; | ||
| 78 | |||
| 76 | /* Don't fixup 36-bit addresses */ | 79 | /* Don't fixup 36-bit addresses */ |
| 77 | if ((phys_addr >> 32) != 0) | 80 | if ((phys_addr >> 32) != 0) |
| 78 | return phys_addr; | 81 | return phys_addr; |
| 79 | 82 | ||
| 80 | #ifdef CONFIG_PCI | 83 | /* Check for PCI memory window */ |
| 81 | { | 84 | if (phys_addr >= start && (phys_addr + size - 1) <= end) |
| 82 | u32 start = (u32)Au1500_PCI_MEM_START; | 85 | return (phys_t)((phys_addr - start) + Au1500_PCI_MEM_START); |
| 83 | u32 end = (u32)Au1500_PCI_MEM_END; | ||
| 84 | |||
| 85 | /* Check for PCI memory window */ | ||
| 86 | if (phys_addr >= start && (phys_addr + size - 1) <= end) | ||
| 87 | return (phys_t) | ||
| 88 | ((phys_addr - start) + Au1500_PCI_MEM_START); | ||
| 89 | } | ||
| 90 | #endif | ||
| 91 | |||
| 92 | /* | ||
| 93 | * All Au1xx0 SOCs have a PCMCIA controller. | ||
| 94 | * We setup our 32-bit pseudo addresses to be equal to the | ||
| 95 | * 36-bit addr >> 4, to make it easier to check the address | ||
| 96 | * and fix it. | ||
| 97 | * The PCMCIA socket 0 physical attribute address is 0xF 4000 0000. | ||
| 98 | * The pseudo address we use is 0xF400 0000. Any address over | ||
| 99 | * 0xF400 0000 is a PCMCIA pseudo address. | ||
| 100 | */ | ||
| 101 | if ((phys_addr >= PCMCIA_ATTR_PSEUDO_PHYS) && | ||
| 102 | (phys_addr < PCMCIA_PSEUDO_END)) | ||
| 103 | return (phys_t)(phys_addr << 4); | ||
| 104 | 86 | ||
| 105 | /* default nop */ | 87 | /* default nop */ |
| 106 | return phys_addr; | 88 | return phys_addr; |
diff --git a/arch/mips/alchemy/devboards/db1200/platform.c b/arch/mips/alchemy/devboards/db1200/platform.c index d6b3e64376c0..3cb95a98ab31 100644 --- a/arch/mips/alchemy/devboards/db1200/platform.c +++ b/arch/mips/alchemy/devboards/db1200/platform.c | |||
| @@ -507,24 +507,24 @@ static int __init db1200_dev_init(void) | |||
| 507 | (void __iomem *)KSEG1ADDR(PSC1_PHYS_ADDR) + PSC_SEL_OFFSET); | 507 | (void __iomem *)KSEG1ADDR(PSC1_PHYS_ADDR) + PSC_SEL_OFFSET); |
| 508 | wmb(); | 508 | wmb(); |
| 509 | 509 | ||
| 510 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS, | 510 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, |
| 511 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 511 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 512 | PCMCIA_MEM_PSEUDO_PHYS, | 512 | PCMCIA_MEM_PHYS_ADDR, |
| 513 | PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1, | 513 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 514 | PCMCIA_IO_PSEUDO_PHYS, | 514 | PCMCIA_IO_PHYS_ADDR, |
| 515 | PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1, | 515 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, |
| 516 | DB1200_PC0_INT, | 516 | DB1200_PC0_INT, |
| 517 | DB1200_PC0_INSERT_INT, | 517 | DB1200_PC0_INSERT_INT, |
| 518 | /*DB1200_PC0_STSCHG_INT*/0, | 518 | /*DB1200_PC0_STSCHG_INT*/0, |
| 519 | DB1200_PC0_EJECT_INT, | 519 | DB1200_PC0_EJECT_INT, |
| 520 | 0); | 520 | 0); |
| 521 | 521 | ||
| 522 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00400000, | 522 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x004000000, |
| 523 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00440000 - 1, | 523 | PCMCIA_ATTR_PHYS_ADDR + 0x004400000 - 1, |
| 524 | PCMCIA_MEM_PSEUDO_PHYS + 0x00400000, | 524 | PCMCIA_MEM_PHYS_ADDR + 0x004000000, |
| 525 | PCMCIA_MEM_PSEUDO_PHYS + 0x00440000 - 1, | 525 | PCMCIA_MEM_PHYS_ADDR + 0x004400000 - 1, |
| 526 | PCMCIA_IO_PSEUDO_PHYS + 0x00400000, | 526 | PCMCIA_IO_PHYS_ADDR + 0x004000000, |
| 527 | PCMCIA_IO_PSEUDO_PHYS + 0x00401000 - 1, | 527 | PCMCIA_IO_PHYS_ADDR + 0x004010000 - 1, |
| 528 | DB1200_PC1_INT, | 528 | DB1200_PC1_INT, |
| 529 | DB1200_PC1_INSERT_INT, | 529 | DB1200_PC1_INSERT_INT, |
| 530 | /*DB1200_PC1_STSCHG_INT*/0, | 530 | /*DB1200_PC1_STSCHG_INT*/0, |
diff --git a/arch/mips/alchemy/devboards/db1x00/platform.c b/arch/mips/alchemy/devboards/db1x00/platform.c index 62e2a96fe119..978d5ab3d678 100644 --- a/arch/mips/alchemy/devboards/db1x00/platform.c +++ b/arch/mips/alchemy/devboards/db1x00/platform.c | |||
| @@ -88,24 +88,24 @@ | |||
| 88 | static int __init db1xxx_dev_init(void) | 88 | static int __init db1xxx_dev_init(void) |
| 89 | { | 89 | { |
| 90 | #ifdef DB1XXX_HAS_PCMCIA | 90 | #ifdef DB1XXX_HAS_PCMCIA |
| 91 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS, | 91 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, |
| 92 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 92 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 93 | PCMCIA_MEM_PSEUDO_PHYS, | 93 | PCMCIA_MEM_PHYS_ADDR, |
| 94 | PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1, | 94 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 95 | PCMCIA_IO_PSEUDO_PHYS, | 95 | PCMCIA_IO_PHYS_ADDR, |
| 96 | PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1, | 96 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, |
| 97 | DB1XXX_PCMCIA_CARD0, | 97 | DB1XXX_PCMCIA_CARD0, |
| 98 | DB1XXX_PCMCIA_CD0, | 98 | DB1XXX_PCMCIA_CD0, |
| 99 | /*DB1XXX_PCMCIA_STSCHG0*/0, | 99 | /*DB1XXX_PCMCIA_STSCHG0*/0, |
| 100 | 0, | 100 | 0, |
| 101 | 0); | 101 | 0); |
| 102 | 102 | ||
| 103 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00400000, | 103 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x004000000, |
| 104 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00440000 - 1, | 104 | PCMCIA_ATTR_PHYS_ADDR + 0x004400000 - 1, |
| 105 | PCMCIA_MEM_PSEUDO_PHYS + 0x00400000, | 105 | PCMCIA_MEM_PHYS_ADDR + 0x004000000, |
| 106 | PCMCIA_MEM_PSEUDO_PHYS + 0x00440000 - 1, | 106 | PCMCIA_MEM_PHYS_ADDR + 0x004400000 - 1, |
| 107 | PCMCIA_IO_PSEUDO_PHYS + 0x00400000, | 107 | PCMCIA_IO_PHYS_ADDR + 0x004000000, |
| 108 | PCMCIA_IO_PSEUDO_PHYS + 0x00401000 - 1, | 108 | PCMCIA_IO_PHYS_ADDR + 0x004010000 - 1, |
| 109 | DB1XXX_PCMCIA_CARD1, | 109 | DB1XXX_PCMCIA_CARD1, |
| 110 | DB1XXX_PCMCIA_CD1, | 110 | DB1XXX_PCMCIA_CD1, |
| 111 | /*DB1XXX_PCMCIA_STSCHG1*/0, | 111 | /*DB1XXX_PCMCIA_STSCHG1*/0, |
diff --git a/arch/mips/alchemy/devboards/pb1100/platform.c b/arch/mips/alchemy/devboards/pb1100/platform.c index bfc5ab6a121c..2c8dc29759fd 100644 --- a/arch/mips/alchemy/devboards/pb1100/platform.c +++ b/arch/mips/alchemy/devboards/pb1100/platform.c | |||
| @@ -30,12 +30,12 @@ static int __init pb1100_dev_init(void) | |||
| 30 | int swapped; | 30 | int swapped; |
| 31 | 31 | ||
| 32 | /* PCMCIA. single socket, identical to Pb1500 */ | 32 | /* PCMCIA. single socket, identical to Pb1500 */ |
| 33 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS, | 33 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, |
| 34 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 34 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 35 | PCMCIA_MEM_PSEUDO_PHYS, | 35 | PCMCIA_MEM_PHYS_ADDR, |
| 36 | PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1, | 36 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 37 | PCMCIA_IO_PSEUDO_PHYS, | 37 | PCMCIA_IO_PHYS_ADDR, |
| 38 | PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1, | 38 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, |
| 39 | AU1100_GPIO11_INT, /* card */ | 39 | AU1100_GPIO11_INT, /* card */ |
| 40 | AU1100_GPIO9_INT, /* insert */ | 40 | AU1100_GPIO9_INT, /* insert */ |
| 41 | /*AU1100_GPIO10_INT*/0, /* stschg */ | 41 | /*AU1100_GPIO10_INT*/0, /* stschg */ |
diff --git a/arch/mips/alchemy/devboards/pb1200/platform.c b/arch/mips/alchemy/devboards/pb1200/platform.c index 14e889fffcc5..3ef2dceeb796 100644 --- a/arch/mips/alchemy/devboards/pb1200/platform.c +++ b/arch/mips/alchemy/devboards/pb1200/platform.c | |||
| @@ -170,24 +170,24 @@ static int __init board_register_devices(void) | |||
| 170 | { | 170 | { |
| 171 | int swapped; | 171 | int swapped; |
| 172 | 172 | ||
| 173 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS, | 173 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, |
| 174 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 174 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 175 | PCMCIA_MEM_PSEUDO_PHYS, | 175 | PCMCIA_MEM_PHYS_ADDR, |
| 176 | PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1, | 176 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 177 | PCMCIA_IO_PSEUDO_PHYS, | 177 | PCMCIA_IO_PHYS_ADDR, |
| 178 | PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1, | 178 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, |
| 179 | PB1200_PC0_INT, | 179 | PB1200_PC0_INT, |
| 180 | PB1200_PC0_INSERT_INT, | 180 | PB1200_PC0_INSERT_INT, |
| 181 | /*PB1200_PC0_STSCHG_INT*/0, | 181 | /*PB1200_PC0_STSCHG_INT*/0, |
| 182 | PB1200_PC0_EJECT_INT, | 182 | PB1200_PC0_EJECT_INT, |
| 183 | 0); | 183 | 0); |
| 184 | 184 | ||
| 185 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00800000, | 185 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x008000000, |
| 186 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00840000 - 1, | 186 | PCMCIA_ATTR_PHYS_ADDR + 0x008400000 - 1, |
| 187 | PCMCIA_MEM_PSEUDO_PHYS + 0x00800000, | 187 | PCMCIA_MEM_PHYS_ADDR + 0x008000000, |
| 188 | PCMCIA_MEM_PSEUDO_PHYS + 0x00840000 - 1, | 188 | PCMCIA_MEM_PHYS_ADDR + 0x008400000 - 1, |
| 189 | PCMCIA_IO_PSEUDO_PHYS + 0x00800000, | 189 | PCMCIA_IO_PHYS_ADDR + 0x008000000, |
| 190 | PCMCIA_IO_PSEUDO_PHYS + 0x00801000 - 1, | 190 | PCMCIA_IO_PHYS_ADDR + 0x008010000 - 1, |
| 191 | PB1200_PC1_INT, | 191 | PB1200_PC1_INT, |
| 192 | PB1200_PC1_INSERT_INT, | 192 | PB1200_PC1_INSERT_INT, |
| 193 | /*PB1200_PC1_STSCHG_INT*/0, | 193 | /*PB1200_PC1_STSCHG_INT*/0, |
diff --git a/arch/mips/alchemy/devboards/pb1500/platform.c b/arch/mips/alchemy/devboards/pb1500/platform.c index 529acb789254..d443bc7aa76e 100644 --- a/arch/mips/alchemy/devboards/pb1500/platform.c +++ b/arch/mips/alchemy/devboards/pb1500/platform.c | |||
| @@ -29,12 +29,12 @@ static int __init pb1500_dev_init(void) | |||
| 29 | int swapped; | 29 | int swapped; |
| 30 | 30 | ||
| 31 | /* PCMCIA. single socket, identical to Pb1500 */ | 31 | /* PCMCIA. single socket, identical to Pb1500 */ |
| 32 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS, | 32 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, |
| 33 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 33 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 34 | PCMCIA_MEM_PSEUDO_PHYS, | 34 | PCMCIA_MEM_PHYS_ADDR, |
| 35 | PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1, | 35 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 36 | PCMCIA_IO_PSEUDO_PHYS, | 36 | PCMCIA_IO_PHYS_ADDR, |
| 37 | PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1, | 37 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, |
| 38 | AU1500_GPIO11_INT, /* card */ | 38 | AU1500_GPIO11_INT, /* card */ |
| 39 | AU1500_GPIO9_INT, /* insert */ | 39 | AU1500_GPIO9_INT, /* insert */ |
| 40 | /*AU1500_GPIO10_INT*/0, /* stschg */ | 40 | /*AU1500_GPIO10_INT*/0, /* stschg */ |
diff --git a/arch/mips/alchemy/devboards/pb1550/platform.c b/arch/mips/alchemy/devboards/pb1550/platform.c index 461339166a4e..d7150d0f49c0 100644 --- a/arch/mips/alchemy/devboards/pb1550/platform.c +++ b/arch/mips/alchemy/devboards/pb1550/platform.c | |||
| @@ -37,24 +37,24 @@ static int __init pb1550_dev_init(void) | |||
| 37 | * drivers are used to shared irqs and b) statuschange isn't really use- | 37 | * drivers are used to shared irqs and b) statuschange isn't really use- |
| 38 | * ful anyway. | 38 | * ful anyway. |
| 39 | */ | 39 | */ |
| 40 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS, | 40 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR, |
| 41 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 41 | PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 42 | PCMCIA_MEM_PSEUDO_PHYS, | 42 | PCMCIA_MEM_PHYS_ADDR, |
| 43 | PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1, | 43 | PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 44 | PCMCIA_IO_PSEUDO_PHYS, | 44 | PCMCIA_IO_PHYS_ADDR, |
| 45 | PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1, | 45 | PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1, |
| 46 | AU1550_GPIO201_205_INT, | 46 | AU1550_GPIO201_205_INT, |
| 47 | AU1550_GPIO0_INT, | 47 | AU1550_GPIO0_INT, |
| 48 | 0, | 48 | 0, |
| 49 | 0, | 49 | 0, |
| 50 | 0); | 50 | 0); |
| 51 | 51 | ||
| 52 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00800000, | 52 | db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x008000000, |
| 53 | PCMCIA_ATTR_PSEUDO_PHYS + 0x00840000 - 1, | 53 | PCMCIA_ATTR_PHYS_ADDR + 0x008400000 - 1, |
| 54 | PCMCIA_MEM_PSEUDO_PHYS + 0x00800000, | 54 | PCMCIA_MEM_PHYS_ADDR + 0x008000000, |
| 55 | PCMCIA_MEM_PSEUDO_PHYS + 0x00840000 - 1, | 55 | PCMCIA_MEM_PHYS_ADDR + 0x008400000 - 1, |
| 56 | PCMCIA_IO_PSEUDO_PHYS + 0x00800000, | 56 | PCMCIA_IO_PHYS_ADDR + 0x008000000, |
| 57 | PCMCIA_IO_PSEUDO_PHYS + 0x00801000 - 1, | 57 | PCMCIA_IO_PHYS_ADDR + 0x008010000 - 1, |
| 58 | AU1550_GPIO201_205_INT, | 58 | AU1550_GPIO201_205_INT, |
| 59 | AU1550_GPIO1_INT, | 59 | AU1550_GPIO1_INT, |
| 60 | 0, | 60 | 0, |
diff --git a/arch/mips/alchemy/devboards/platform.c b/arch/mips/alchemy/devboards/platform.c index febf4e042343..49a4b3244d8e 100644 --- a/arch/mips/alchemy/devboards/platform.c +++ b/arch/mips/alchemy/devboards/platform.c | |||
| @@ -39,12 +39,12 @@ static int __init db1x_poweroff_setup(void) | |||
| 39 | late_initcall(db1x_poweroff_setup); | 39 | late_initcall(db1x_poweroff_setup); |
| 40 | 40 | ||
| 41 | /* register a pcmcia socket */ | 41 | /* register a pcmcia socket */ |
| 42 | int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start, | 42 | int __init db1x_register_pcmcia_socket(phys_addr_t pcmcia_attr_start, |
| 43 | unsigned long pseudo_attr_end, | 43 | phys_addr_t pcmcia_attr_end, |
| 44 | unsigned long pseudo_mem_start, | 44 | phys_addr_t pcmcia_mem_start, |
| 45 | unsigned long pseudo_mem_end, | 45 | phys_addr_t pcmcia_mem_end, |
| 46 | unsigned long pseudo_io_start, | 46 | phys_addr_t pcmcia_io_start, |
| 47 | unsigned long pseudo_io_end, | 47 | phys_addr_t pcmcia_io_end, |
| 48 | int card_irq, | 48 | int card_irq, |
| 49 | int cd_irq, | 49 | int cd_irq, |
| 50 | int stschg_irq, | 50 | int stschg_irq, |
| @@ -71,20 +71,20 @@ int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start, | |||
| 71 | goto out; | 71 | goto out; |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | sr[0].name = "pseudo-attr"; | 74 | sr[0].name = "pcmcia-attr"; |
| 75 | sr[0].flags = IORESOURCE_MEM; | 75 | sr[0].flags = IORESOURCE_MEM; |
| 76 | sr[0].start = pseudo_attr_start; | 76 | sr[0].start = pcmcia_attr_start; |
| 77 | sr[0].end = pseudo_attr_end; | 77 | sr[0].end = pcmcia_attr_end; |
| 78 | 78 | ||
| 79 | sr[1].name = "pseudo-mem"; | 79 | sr[1].name = "pcmcia-mem"; |
| 80 | sr[1].flags = IORESOURCE_MEM; | 80 | sr[1].flags = IORESOURCE_MEM; |
| 81 | sr[1].start = pseudo_mem_start; | 81 | sr[1].start = pcmcia_mem_start; |
| 82 | sr[1].end = pseudo_mem_end; | 82 | sr[1].end = pcmcia_mem_end; |
| 83 | 83 | ||
| 84 | sr[2].name = "pseudo-io"; | 84 | sr[2].name = "pcmcia-io"; |
| 85 | sr[2].flags = IORESOURCE_MEM; | 85 | sr[2].flags = IORESOURCE_MEM; |
| 86 | sr[2].start = pseudo_io_start; | 86 | sr[2].start = pcmcia_io_start; |
| 87 | sr[2].end = pseudo_io_end; | 87 | sr[2].end = pcmcia_io_end; |
| 88 | 88 | ||
| 89 | sr[3].name = "insert"; | 89 | sr[3].name = "insert"; |
| 90 | sr[3].flags = IORESOURCE_IRQ; | 90 | sr[3].flags = IORESOURCE_IRQ; |
| @@ -96,9 +96,9 @@ int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start, | |||
| 96 | 96 | ||
| 97 | i = 5; | 97 | i = 5; |
| 98 | if (stschg_irq) { | 98 | if (stschg_irq) { |
| 99 | sr[i].name = "insert"; | 99 | sr[i].name = "stschg"; |
| 100 | sr[i].flags = IORESOURCE_IRQ; | 100 | sr[i].flags = IORESOURCE_IRQ; |
| 101 | sr[i].start = sr[i].end = cd_irq; | 101 | sr[i].start = sr[i].end = stschg_irq; |
| 102 | i++; | 102 | i++; |
| 103 | } | 103 | } |
| 104 | if (eject_irq) { | 104 | if (eject_irq) { |
diff --git a/arch/mips/alchemy/devboards/platform.h b/arch/mips/alchemy/devboards/platform.h index 828c54e31157..5ac055d2cda9 100644 --- a/arch/mips/alchemy/devboards/platform.h +++ b/arch/mips/alchemy/devboards/platform.h | |||
| @@ -3,12 +3,12 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/init.h> | 4 | #include <linux/init.h> |
| 5 | 5 | ||
| 6 | int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start, | 6 | int __init db1x_register_pcmcia_socket(phys_addr_t pcmcia_attr_start, |
| 7 | unsigned long pseudo_attr_len, | 7 | phys_addr_t pcmcia_attr_len, |
| 8 | unsigned long pseudo_mem_start, | 8 | phys_addr_t pcmcia_mem_start, |
| 9 | unsigned long pseudo_mem_end, | 9 | phys_addr_t pcmcia_mem_end, |
| 10 | unsigned long pseudo_io_start, | 10 | phys_addr_t pcmcia_io_start, |
| 11 | unsigned long pseudo_io_end, | 11 | phys_addr_t pcmcia_io_end, |
| 12 | int card_irq, | 12 | int card_irq, |
| 13 | int cd_irq, | 13 | int cd_irq, |
| 14 | int stschg_irq, | 14 | int stschg_irq, |
diff --git a/arch/mips/alchemy/xxs1500/platform.c b/arch/mips/alchemy/xxs1500/platform.c index c14dcaa95311..e87c45cde61b 100644 --- a/arch/mips/alchemy/xxs1500/platform.c +++ b/arch/mips/alchemy/xxs1500/platform.c | |||
| @@ -25,22 +25,22 @@ | |||
| 25 | 25 | ||
| 26 | static struct resource xxs1500_pcmcia_res[] = { | 26 | static struct resource xxs1500_pcmcia_res[] = { |
| 27 | { | 27 | { |
| 28 | .name = "pseudo-io", | 28 | .name = "pcmcia-io", |
| 29 | .flags = IORESOURCE_MEM, | 29 | .flags = IORESOURCE_MEM, |
| 30 | .start = PCMCIA_IO_PSEUDO_PHYS, | 30 | .start = PCMCIA_IO_PHYS_ADDR, |
| 31 | .end = PCMCIA_IO_PSEUDO_PHYS + 0x00040000 - 1, | 31 | .end = PCMCIA_IO_PHYS_ADDR + 0x000400000 - 1, |
| 32 | }, | 32 | }, |
| 33 | { | 33 | { |
| 34 | .name = "pseudo-attr", | 34 | .name = "pcmcia-attr", |
| 35 | .flags = IORESOURCE_MEM, | 35 | .flags = IORESOURCE_MEM, |
| 36 | .start = PCMCIA_ATTR_PSEUDO_PHYS, | 36 | .start = PCMCIA_ATTR_PHYS_ADDR, |
| 37 | .end = PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1, | 37 | .end = PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1, |
| 38 | }, | 38 | }, |
| 39 | { | 39 | { |
| 40 | .name = "pseudo-mem", | 40 | .name = "pcmcia-mem", |
| 41 | .flags = IORESOURCE_MEM, | 41 | .flags = IORESOURCE_MEM, |
| 42 | .start = PCMCIA_IO_PSEUDO_PHYS, | 42 | .start = PCMCIA_MEM_PHYS_ADDR, |
| 43 | .end = PCMCIA_IO_PSEUDO_PHYS + 0x00040000 - 1, | 43 | .end = PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1, |
| 44 | }, | 44 | }, |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
diff --git a/arch/mips/include/asm/mach-au1x00/au1000.h b/arch/mips/include/asm/mach-au1x00/au1000.h index 2805fc56484d..ae07423e6e82 100644 --- a/arch/mips/include/asm/mach-au1x00/au1000.h +++ b/arch/mips/include/asm/mach-au1x00/au1000.h | |||
| @@ -1678,18 +1678,4 @@ enum soc_au1200_ints { | |||
| 1678 | 1678 | ||
| 1679 | #endif | 1679 | #endif |
| 1680 | 1680 | ||
| 1681 | /* | ||
| 1682 | * All Au1xx0 SOCs have a PCMCIA controller. | ||
| 1683 | * We setup our 32-bit pseudo addresses to be equal to the | ||
| 1684 | * 36-bit addr >> 4, to make it easier to check the address | ||
| 1685 | * and fix it. | ||
| 1686 | * The PCMCIA socket 0 physical attribute address is 0xF 4000 0000. | ||
| 1687 | * The pseudo address we use is 0xF400 0000. Any address over | ||
| 1688 | * 0xF400 0000 is a PCMCIA pseudo address. | ||
| 1689 | */ | ||
| 1690 | #define PCMCIA_IO_PSEUDO_PHYS (PCMCIA_IO_PHYS_ADDR >> 4) | ||
| 1691 | #define PCMCIA_ATTR_PSEUDO_PHYS (PCMCIA_ATTR_PHYS_ADDR >> 4) | ||
| 1692 | #define PCMCIA_MEM_PSEUDO_PHYS (PCMCIA_MEM_PHYS_ADDR >> 4) | ||
| 1693 | #define PCMCIA_PSEUDO_END (0xffffffff) | ||
| 1694 | |||
| 1695 | #endif | 1681 | #endif |
diff --git a/arch/mips/include/asm/mach-au1x00/ioremap.h b/arch/mips/include/asm/mach-au1x00/ioremap.h index 364cea2dc71f..75a94ad3ac91 100644 --- a/arch/mips/include/asm/mach-au1x00/ioremap.h +++ b/arch/mips/include/asm/mach-au1x00/ioremap.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
| 13 | 13 | ||
| 14 | #ifdef CONFIG_64BIT_PHYS_ADDR | 14 | #if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_PCI) |
| 15 | extern phys_t __fixup_bigphys_addr(phys_t, phys_t); | 15 | extern phys_t __fixup_bigphys_addr(phys_t, phys_t); |
| 16 | #else | 16 | #else |
| 17 | static inline phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) | 17 | static inline phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) |
diff --git a/drivers/pcmcia/au1000_generic.c b/drivers/pcmcia/au1000_generic.c index 02088704ac2c..171c8a654887 100644 --- a/drivers/pcmcia/au1000_generic.c +++ b/drivers/pcmcia/au1000_generic.c | |||
| @@ -405,18 +405,16 @@ int au1x00_pcmcia_socket_probe(struct device *dev, struct pcmcia_low_level *ops, | |||
| 405 | skt->virt_io = (void *) | 405 | skt->virt_io = (void *) |
| 406 | (ioremap((phys_t)AU1X_SOCK0_IO, 0x1000) - | 406 | (ioremap((phys_t)AU1X_SOCK0_IO, 0x1000) - |
| 407 | (u32)mips_io_port_base); | 407 | (u32)mips_io_port_base); |
| 408 | skt->phys_attr = AU1X_SOCK0_PSEUDO_PHYS_ATTR; | 408 | skt->phys_attr = AU1X_SOCK0_PHYS_ATTR; |
| 409 | skt->phys_mem = AU1X_SOCK0_PSEUDO_PHYS_MEM; | 409 | skt->phys_mem = AU1X_SOCK0_PHYS_MEM; |
| 410 | } | 410 | } |
| 411 | #ifndef CONFIG_MIPS_XXS1500 | ||
| 412 | else { | 411 | else { |
| 413 | skt->virt_io = (void *) | 412 | skt->virt_io = (void *) |
| 414 | (ioremap((phys_t)AU1X_SOCK1_IO, 0x1000) - | 413 | (ioremap((phys_t)AU1X_SOCK1_IO, 0x1000) - |
| 415 | (u32)mips_io_port_base); | 414 | (u32)mips_io_port_base); |
| 416 | skt->phys_attr = AU1X_SOCK1_PSEUDO_PHYS_ATTR; | 415 | skt->phys_attr = AU1X_SOCK1_PHYS_ATTR; |
| 417 | skt->phys_mem = AU1X_SOCK1_PSEUDO_PHYS_MEM; | 416 | skt->phys_mem = AU1X_SOCK1_PHYS_MEM; |
| 418 | } | 417 | } |
| 419 | #endif | ||
| 420 | pcmcia_base_vaddrs[i] = (u32 *)skt->virt_io; | 418 | pcmcia_base_vaddrs[i] = (u32 *)skt->virt_io; |
| 421 | ret = ops->hw_init(skt); | 419 | ret = ops->hw_init(skt); |
| 422 | 420 | ||
diff --git a/drivers/pcmcia/au1000_generic.h b/drivers/pcmcia/au1000_generic.h index aa743f6875bd..a324d329dea6 100644 --- a/drivers/pcmcia/au1000_generic.h +++ b/drivers/pcmcia/au1000_generic.h | |||
| @@ -36,10 +36,6 @@ | |||
| 36 | #define AU1X_SOCK0_IO 0xF00000000ULL | 36 | #define AU1X_SOCK0_IO 0xF00000000ULL |
| 37 | #define AU1X_SOCK0_PHYS_ATTR 0xF40000000ULL | 37 | #define AU1X_SOCK0_PHYS_ATTR 0xF40000000ULL |
| 38 | #define AU1X_SOCK0_PHYS_MEM 0xF80000000ULL | 38 | #define AU1X_SOCK0_PHYS_MEM 0xF80000000ULL |
| 39 | /* pseudo 32 bit phys addresses, which get fixed up to the | ||
| 40 | * real 36 bit address in fixup_bigphys_addr() */ | ||
| 41 | #define AU1X_SOCK0_PSEUDO_PHYS_ATTR 0xF4000000 | ||
| 42 | #define AU1X_SOCK0_PSEUDO_PHYS_MEM 0xF8000000 | ||
| 43 | 39 | ||
| 44 | /* pcmcia socket 1 needs external glue logic so the memory map | 40 | /* pcmcia socket 1 needs external glue logic so the memory map |
| 45 | * differs from board to board. | 41 | * differs from board to board. |
| @@ -48,8 +44,6 @@ | |||
| 48 | #define AU1X_SOCK1_IO 0xF08000000ULL | 44 | #define AU1X_SOCK1_IO 0xF08000000ULL |
| 49 | #define AU1X_SOCK1_PHYS_ATTR 0xF48000000ULL | 45 | #define AU1X_SOCK1_PHYS_ATTR 0xF48000000ULL |
| 50 | #define AU1X_SOCK1_PHYS_MEM 0xF88000000ULL | 46 | #define AU1X_SOCK1_PHYS_MEM 0xF88000000ULL |
| 51 | #define AU1X_SOCK1_PSEUDO_PHYS_ATTR 0xF4800000 | ||
| 52 | #define AU1X_SOCK1_PSEUDO_PHYS_MEM 0xF8800000 | ||
| 53 | #endif | 47 | #endif |
| 54 | 48 | ||
| 55 | struct pcmcia_state { | 49 | struct pcmcia_state { |
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); |
diff --git a/drivers/pcmcia/xxs1500_ss.c b/drivers/pcmcia/xxs1500_ss.c index 4e36930b51ce..61560cd6e287 100644 --- a/drivers/pcmcia/xxs1500_ss.c +++ b/drivers/pcmcia/xxs1500_ss.c | |||
| @@ -56,10 +56,9 @@ struct xxs1500_pcmcia_sock { | |||
| 56 | struct pcmcia_socket socket; | 56 | struct pcmcia_socket socket; |
| 57 | void *virt_io; | 57 | void *virt_io; |
| 58 | 58 | ||
| 59 | /* the "pseudo" addresses of the PCMCIA space. */ | 59 | phys_addr_t phys_io; |
| 60 | unsigned long phys_io; | 60 | phys_addr_t phys_attr; |
| 61 | unsigned long phys_attr; | 61 | phys_addr_t phys_mem; |
| 62 | unsigned long phys_mem; | ||
| 63 | 62 | ||
| 64 | /* previous flags for set_socket() */ | 63 | /* previous flags for set_socket() */ |
| 65 | unsigned int old_flags; | 64 | unsigned int old_flags; |
| @@ -211,7 +210,6 @@ static int __devinit xxs1500_pcmcia_probe(struct platform_device *pdev) | |||
| 211 | { | 210 | { |
| 212 | struct xxs1500_pcmcia_sock *sock; | 211 | struct xxs1500_pcmcia_sock *sock; |
| 213 | struct resource *r; | 212 | struct resource *r; |
| 214 | phys_t physio; | ||
| 215 | int ret, irq; | 213 | int ret, irq; |
| 216 | 214 | ||
| 217 | sock = kzalloc(sizeof(struct xxs1500_pcmcia_sock), GFP_KERNEL); | 215 | sock = kzalloc(sizeof(struct xxs1500_pcmcia_sock), GFP_KERNEL); |
| @@ -225,9 +223,9 @@ static int __devinit xxs1500_pcmcia_probe(struct platform_device *pdev) | |||
| 225 | * for this socket (usually the 36bit address shifted 4 to the | 223 | * for this socket (usually the 36bit address shifted 4 to the |
| 226 | * right). | 224 | * right). |
| 227 | */ | 225 | */ |
| 228 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pseudo-attr"); | 226 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcmcia-attr"); |
| 229 | if (!r) { | 227 | if (!r) { |
| 230 | dev_err(&pdev->dev, "missing 'pseudo-attr' resource!\n"); | 228 | dev_err(&pdev->dev, "missing 'pcmcia-attr' resource!\n"); |
| 231 | goto out0; | 229 | goto out0; |
| 232 | } | 230 | } |
| 233 | sock->phys_attr = r->start; | 231 | sock->phys_attr = r->start; |
| @@ -236,9 +234,9 @@ static int __devinit xxs1500_pcmcia_probe(struct platform_device *pdev) | |||
| 236 | * pseudo-mem: The 32bit address of the PCMCIA memory space for | 234 | * pseudo-mem: The 32bit address of the PCMCIA memory space for |
| 237 | * this socket (usually the 36bit address shifted 4 to the right) | 235 | * this socket (usually the 36bit address shifted 4 to the right) |
| 238 | */ | 236 | */ |
| 239 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pseudo-mem"); | 237 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcmcia-mem"); |
| 240 | if (!r) { | 238 | if (!r) { |
| 241 | dev_err(&pdev->dev, "missing 'pseudo-mem' resource!\n"); | 239 | dev_err(&pdev->dev, "missing 'pcmcia-mem' resource!\n"); |
| 242 | goto out0; | 240 | goto out0; |
| 243 | } | 241 | } |
| 244 | sock->phys_mem = r->start; | 242 | sock->phys_mem = r->start; |
| @@ -247,19 +245,14 @@ static int __devinit xxs1500_pcmcia_probe(struct platform_device *pdev) | |||
| 247 | * pseudo-io: The 32bit address of the PCMCIA IO space for this | 245 | * pseudo-io: The 32bit address of the PCMCIA IO space for this |
| 248 | * socket (usually the 36bit address shifted 4 to the right). | 246 | * socket (usually the 36bit address shifted 4 to the right). |
| 249 | */ | 247 | */ |
| 250 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pseudo-io"); | 248 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcmcia-io"); |
| 251 | if (!r) { | 249 | if (!r) { |
| 252 | dev_err(&pdev->dev, "missing 'pseudo-io' resource!\n"); | 250 | dev_err(&pdev->dev, "missing 'pcmcia-io' resource!\n"); |
| 253 | goto out0; | 251 | goto out0; |
| 254 | } | 252 | } |
| 255 | sock->phys_io = r->start; | 253 | sock->phys_io = r->start; |
| 256 | 254 | ||
| 257 | 255 | ||
| 258 | /* for io must remap the full 36bit address (for reference see | ||
| 259 | * alchemy/common/setup.c::__fixup_bigphys_addr) | ||
| 260 | */ | ||
| 261 | physio = ((phys_t)sock->phys_io) << 4; | ||
| 262 | |||
| 263 | /* | 256 | /* |
| 264 | * PCMCIA client drivers use the inb/outb macros to access | 257 | * PCMCIA client drivers use the inb/outb macros to access |
| 265 | * the IO registers. Since mips_io_port_base is added | 258 | * the IO registers. Since mips_io_port_base is added |
| @@ -268,7 +261,7 @@ static int __devinit xxs1500_pcmcia_probe(struct platform_device *pdev) | |||
| 268 | * to access the I/O or MEM address directly, without | 261 | * to access the I/O or MEM address directly, without |
| 269 | * going through this "mips_io_port_base" mechanism. | 262 | * going through this "mips_io_port_base" mechanism. |
| 270 | */ | 263 | */ |
| 271 | sock->virt_io = (void *)(ioremap(physio, IO_MAP_SIZE) - | 264 | sock->virt_io = (void *)(ioremap(sock->phys_io, IO_MAP_SIZE) - |
| 272 | mips_io_port_base); | 265 | mips_io_port_base); |
| 273 | 266 | ||
| 274 | if (!sock->virt_io) { | 267 | if (!sock->virt_io) { |
