Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 182148
b: refs/heads/master
c: 11b897c
h: refs/heads/master
v: v3
  • Loading branch information
Manuel Lauss authored and Ralf Baechle committed Feb 27, 2010
1 parent a55c876 commit d5836e1
Show file tree
Hide file tree
Showing 17 changed files with 124 additions and 178 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b9b37787d24cca9fbd63f767663e9439fa69aa22
refs/heads/master: 11b897cf84c37e6522db914793677e933ef311fb
32 changes: 7 additions & 25 deletions trunk/arch/mips/alchemy/common/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,38 +69,20 @@ void __init plat_mem_setup(void)
iomem_resource.end = IOMEM_RESOURCE_END;
}

#if defined(CONFIG_64BIT_PHYS_ADDR)
#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_PCI)
/* This routine should be valid for all Au1x based boards */
phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
{
u32 start = (u32)Au1500_PCI_MEM_START;
u32 end = (u32)Au1500_PCI_MEM_END;

/* Don't fixup 36-bit addresses */
if ((phys_addr >> 32) != 0)
return phys_addr;

#ifdef CONFIG_PCI
{
u32 start = (u32)Au1500_PCI_MEM_START;
u32 end = (u32)Au1500_PCI_MEM_END;

/* Check for PCI memory window */
if (phys_addr >= start && (phys_addr + size - 1) <= end)
return (phys_t)
((phys_addr - start) + Au1500_PCI_MEM_START);
}
#endif

/*
* All Au1xx0 SOCs have a PCMCIA controller.
* We setup our 32-bit pseudo addresses to be equal to the
* 36-bit addr >> 4, to make it easier to check the address
* and fix it.
* The PCMCIA socket 0 physical attribute address is 0xF 4000 0000.
* The pseudo address we use is 0xF400 0000. Any address over
* 0xF400 0000 is a PCMCIA pseudo address.
*/
if ((phys_addr >= PCMCIA_ATTR_PSEUDO_PHYS) &&
(phys_addr < PCMCIA_PSEUDO_END))
return (phys_t)(phys_addr << 4);
/* Check for PCI memory window */
if (phys_addr >= start && (phys_addr + size - 1) <= end)
return (phys_t)((phys_addr - start) + Au1500_PCI_MEM_START);

/* default nop */
return phys_addr;
Expand Down
24 changes: 12 additions & 12 deletions trunk/arch/mips/alchemy/devboards/db1200/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -507,24 +507,24 @@ static int __init db1200_dev_init(void)
(void __iomem *)KSEG1ADDR(PSC1_PHYS_ADDR) + PSC_SEL_OFFSET);
wmb();

db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_MEM_PSEUDO_PHYS,
PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_IO_PSEUDO_PHYS,
PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_MEM_PHYS_ADDR,
PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_IO_PHYS_ADDR,
PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
DB1200_PC0_INT,
DB1200_PC0_INSERT_INT,
/*DB1200_PC0_STSCHG_INT*/0,
DB1200_PC0_EJECT_INT,
0);

db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00400000,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00440000 - 1,
PCMCIA_MEM_PSEUDO_PHYS + 0x00400000,
PCMCIA_MEM_PSEUDO_PHYS + 0x00440000 - 1,
PCMCIA_IO_PSEUDO_PHYS + 0x00400000,
PCMCIA_IO_PSEUDO_PHYS + 0x00401000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x004000000,
PCMCIA_ATTR_PHYS_ADDR + 0x004400000 - 1,
PCMCIA_MEM_PHYS_ADDR + 0x004000000,
PCMCIA_MEM_PHYS_ADDR + 0x004400000 - 1,
PCMCIA_IO_PHYS_ADDR + 0x004000000,
PCMCIA_IO_PHYS_ADDR + 0x004010000 - 1,
DB1200_PC1_INT,
DB1200_PC1_INSERT_INT,
/*DB1200_PC1_STSCHG_INT*/0,
Expand Down
24 changes: 12 additions & 12 deletions trunk/arch/mips/alchemy/devboards/db1x00/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,24 +88,24 @@
static int __init db1xxx_dev_init(void)
{
#ifdef DB1XXX_HAS_PCMCIA
db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_MEM_PSEUDO_PHYS,
PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_IO_PSEUDO_PHYS,
PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_MEM_PHYS_ADDR,
PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_IO_PHYS_ADDR,
PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
DB1XXX_PCMCIA_CARD0,
DB1XXX_PCMCIA_CD0,
/*DB1XXX_PCMCIA_STSCHG0*/0,
0,
0);

db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00400000,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00440000 - 1,
PCMCIA_MEM_PSEUDO_PHYS + 0x00400000,
PCMCIA_MEM_PSEUDO_PHYS + 0x00440000 - 1,
PCMCIA_IO_PSEUDO_PHYS + 0x00400000,
PCMCIA_IO_PSEUDO_PHYS + 0x00401000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x004000000,
PCMCIA_ATTR_PHYS_ADDR + 0x004400000 - 1,
PCMCIA_MEM_PHYS_ADDR + 0x004000000,
PCMCIA_MEM_PHYS_ADDR + 0x004400000 - 1,
PCMCIA_IO_PHYS_ADDR + 0x004000000,
PCMCIA_IO_PHYS_ADDR + 0x004010000 - 1,
DB1XXX_PCMCIA_CARD1,
DB1XXX_PCMCIA_CD1,
/*DB1XXX_PCMCIA_STSCHG1*/0,
Expand Down
12 changes: 6 additions & 6 deletions trunk/arch/mips/alchemy/devboards/pb1100/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ static int __init pb1100_dev_init(void)
int swapped;

/* PCMCIA. single socket, identical to Pb1500 */
db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_MEM_PSEUDO_PHYS,
PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_IO_PSEUDO_PHYS,
PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_MEM_PHYS_ADDR,
PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_IO_PHYS_ADDR,
PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
AU1100_GPIO11_INT, /* card */
AU1100_GPIO9_INT, /* insert */
/*AU1100_GPIO10_INT*/0, /* stschg */
Expand Down
24 changes: 12 additions & 12 deletions trunk/arch/mips/alchemy/devboards/pb1200/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,24 +170,24 @@ static int __init board_register_devices(void)
{
int swapped;

db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_MEM_PSEUDO_PHYS,
PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_IO_PSEUDO_PHYS,
PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_MEM_PHYS_ADDR,
PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_IO_PHYS_ADDR,
PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
PB1200_PC0_INT,
PB1200_PC0_INSERT_INT,
/*PB1200_PC0_STSCHG_INT*/0,
PB1200_PC0_EJECT_INT,
0);

db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00800000,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00840000 - 1,
PCMCIA_MEM_PSEUDO_PHYS + 0x00800000,
PCMCIA_MEM_PSEUDO_PHYS + 0x00840000 - 1,
PCMCIA_IO_PSEUDO_PHYS + 0x00800000,
PCMCIA_IO_PSEUDO_PHYS + 0x00801000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x008000000,
PCMCIA_ATTR_PHYS_ADDR + 0x008400000 - 1,
PCMCIA_MEM_PHYS_ADDR + 0x008000000,
PCMCIA_MEM_PHYS_ADDR + 0x008400000 - 1,
PCMCIA_IO_PHYS_ADDR + 0x008000000,
PCMCIA_IO_PHYS_ADDR + 0x008010000 - 1,
PB1200_PC1_INT,
PB1200_PC1_INSERT_INT,
/*PB1200_PC1_STSCHG_INT*/0,
Expand Down
12 changes: 6 additions & 6 deletions trunk/arch/mips/alchemy/devboards/pb1500/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ static int __init pb1500_dev_init(void)
int swapped;

/* PCMCIA. single socket, identical to Pb1500 */
db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_MEM_PSEUDO_PHYS,
PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_IO_PSEUDO_PHYS,
PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_MEM_PHYS_ADDR,
PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_IO_PHYS_ADDR,
PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
AU1500_GPIO11_INT, /* card */
AU1500_GPIO9_INT, /* insert */
/*AU1500_GPIO10_INT*/0, /* stschg */
Expand Down
24 changes: 12 additions & 12 deletions trunk/arch/mips/alchemy/devboards/pb1550/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,24 +37,24 @@ static int __init pb1550_dev_init(void)
* drivers are used to shared irqs and b) statuschange isn't really use-
* ful anyway.
*/
db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_MEM_PSEUDO_PHYS,
PCMCIA_MEM_PSEUDO_PHYS + 0x00040000 - 1,
PCMCIA_IO_PSEUDO_PHYS,
PCMCIA_IO_PSEUDO_PHYS + 0x00001000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR,
PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_MEM_PHYS_ADDR,
PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
PCMCIA_IO_PHYS_ADDR,
PCMCIA_IO_PHYS_ADDR + 0x000010000 - 1,
AU1550_GPIO201_205_INT,
AU1550_GPIO0_INT,
0,
0,
0);

db1x_register_pcmcia_socket(PCMCIA_ATTR_PSEUDO_PHYS + 0x00800000,
PCMCIA_ATTR_PSEUDO_PHYS + 0x00840000 - 1,
PCMCIA_MEM_PSEUDO_PHYS + 0x00800000,
PCMCIA_MEM_PSEUDO_PHYS + 0x00840000 - 1,
PCMCIA_IO_PSEUDO_PHYS + 0x00800000,
PCMCIA_IO_PSEUDO_PHYS + 0x00801000 - 1,
db1x_register_pcmcia_socket(PCMCIA_ATTR_PHYS_ADDR + 0x008000000,
PCMCIA_ATTR_PHYS_ADDR + 0x008400000 - 1,
PCMCIA_MEM_PHYS_ADDR + 0x008000000,
PCMCIA_MEM_PHYS_ADDR + 0x008400000 - 1,
PCMCIA_IO_PHYS_ADDR + 0x008000000,
PCMCIA_IO_PHYS_ADDR + 0x008010000 - 1,
AU1550_GPIO201_205_INT,
AU1550_GPIO1_INT,
0,
Expand Down
34 changes: 17 additions & 17 deletions trunk/arch/mips/alchemy/devboards/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ static int __init db1x_poweroff_setup(void)
late_initcall(db1x_poweroff_setup);

/* register a pcmcia socket */
int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start,
unsigned long pseudo_attr_end,
unsigned long pseudo_mem_start,
unsigned long pseudo_mem_end,
unsigned long pseudo_io_start,
unsigned long pseudo_io_end,
int __init db1x_register_pcmcia_socket(phys_addr_t pcmcia_attr_start,
phys_addr_t pcmcia_attr_end,
phys_addr_t pcmcia_mem_start,
phys_addr_t pcmcia_mem_end,
phys_addr_t pcmcia_io_start,
phys_addr_t pcmcia_io_end,
int card_irq,
int cd_irq,
int stschg_irq,
Expand All @@ -71,20 +71,20 @@ int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start,
goto out;
}

sr[0].name = "pseudo-attr";
sr[0].name = "pcmcia-attr";
sr[0].flags = IORESOURCE_MEM;
sr[0].start = pseudo_attr_start;
sr[0].end = pseudo_attr_end;
sr[0].start = pcmcia_attr_start;
sr[0].end = pcmcia_attr_end;

sr[1].name = "pseudo-mem";
sr[1].name = "pcmcia-mem";
sr[1].flags = IORESOURCE_MEM;
sr[1].start = pseudo_mem_start;
sr[1].end = pseudo_mem_end;
sr[1].start = pcmcia_mem_start;
sr[1].end = pcmcia_mem_end;

sr[2].name = "pseudo-io";
sr[2].name = "pcmcia-io";
sr[2].flags = IORESOURCE_MEM;
sr[2].start = pseudo_io_start;
sr[2].end = pseudo_io_end;
sr[2].start = pcmcia_io_start;
sr[2].end = pcmcia_io_end;

sr[3].name = "insert";
sr[3].flags = IORESOURCE_IRQ;
Expand All @@ -96,9 +96,9 @@ int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start,

i = 5;
if (stschg_irq) {
sr[i].name = "insert";
sr[i].name = "stschg";
sr[i].flags = IORESOURCE_IRQ;
sr[i].start = sr[i].end = cd_irq;
sr[i].start = sr[i].end = stschg_irq;
i++;
}
if (eject_irq) {
Expand Down
12 changes: 6 additions & 6 deletions trunk/arch/mips/alchemy/devboards/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

#include <linux/init.h>

int __init db1x_register_pcmcia_socket(unsigned long pseudo_attr_start,
unsigned long pseudo_attr_len,
unsigned long pseudo_mem_start,
unsigned long pseudo_mem_end,
unsigned long pseudo_io_start,
unsigned long pseudo_io_end,
int __init db1x_register_pcmcia_socket(phys_addr_t pcmcia_attr_start,
phys_addr_t pcmcia_attr_len,
phys_addr_t pcmcia_mem_start,
phys_addr_t pcmcia_mem_end,
phys_addr_t pcmcia_io_start,
phys_addr_t pcmcia_io_end,
int card_irq,
int cd_irq,
int stschg_irq,
Expand Down
18 changes: 9 additions & 9 deletions trunk/arch/mips/alchemy/xxs1500/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,22 @@

static struct resource xxs1500_pcmcia_res[] = {
{
.name = "pseudo-io",
.name = "pcmcia-io",
.flags = IORESOURCE_MEM,
.start = PCMCIA_IO_PSEUDO_PHYS,
.end = PCMCIA_IO_PSEUDO_PHYS + 0x00040000 - 1,
.start = PCMCIA_IO_PHYS_ADDR,
.end = PCMCIA_IO_PHYS_ADDR + 0x000400000 - 1,
},
{
.name = "pseudo-attr",
.name = "pcmcia-attr",
.flags = IORESOURCE_MEM,
.start = PCMCIA_ATTR_PSEUDO_PHYS,
.end = PCMCIA_ATTR_PSEUDO_PHYS + 0x00040000 - 1,
.start = PCMCIA_ATTR_PHYS_ADDR,
.end = PCMCIA_ATTR_PHYS_ADDR + 0x000400000 - 1,
},
{
.name = "pseudo-mem",
.name = "pcmcia-mem",
.flags = IORESOURCE_MEM,
.start = PCMCIA_IO_PSEUDO_PHYS,
.end = PCMCIA_IO_PSEUDO_PHYS + 0x00040000 - 1,
.start = PCMCIA_MEM_PHYS_ADDR,
.end = PCMCIA_MEM_PHYS_ADDR + 0x000400000 - 1,
},
};

Expand Down
14 changes: 0 additions & 14 deletions trunk/arch/mips/include/asm/mach-au1x00/au1000.h
Original file line number Diff line number Diff line change
Expand Up @@ -1678,18 +1678,4 @@ enum soc_au1200_ints {

#endif

/*
* All Au1xx0 SOCs have a PCMCIA controller.
* We setup our 32-bit pseudo addresses to be equal to the
* 36-bit addr >> 4, to make it easier to check the address
* and fix it.
* The PCMCIA socket 0 physical attribute address is 0xF 4000 0000.
* The pseudo address we use is 0xF400 0000. Any address over
* 0xF400 0000 is a PCMCIA pseudo address.
*/
#define PCMCIA_IO_PSEUDO_PHYS (PCMCIA_IO_PHYS_ADDR >> 4)
#define PCMCIA_ATTR_PSEUDO_PHYS (PCMCIA_ATTR_PHYS_ADDR >> 4)
#define PCMCIA_MEM_PSEUDO_PHYS (PCMCIA_MEM_PHYS_ADDR >> 4)
#define PCMCIA_PSEUDO_END (0xffffffff)

#endif
2 changes: 1 addition & 1 deletion trunk/arch/mips/include/asm/mach-au1x00/ioremap.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

#include <linux/types.h>

#ifdef CONFIG_64BIT_PHYS_ADDR
#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_PCI)
extern phys_t __fixup_bigphys_addr(phys_t, phys_t);
#else
static inline phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
Expand Down
10 changes: 4 additions & 6 deletions trunk/drivers/pcmcia/au1000_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -405,18 +405,16 @@ int au1x00_pcmcia_socket_probe(struct device *dev, struct pcmcia_low_level *ops,
skt->virt_io = (void *)
(ioremap((phys_t)AU1X_SOCK0_IO, 0x1000) -
(u32)mips_io_port_base);
skt->phys_attr = AU1X_SOCK0_PSEUDO_PHYS_ATTR;
skt->phys_mem = AU1X_SOCK0_PSEUDO_PHYS_MEM;
skt->phys_attr = AU1X_SOCK0_PHYS_ATTR;
skt->phys_mem = AU1X_SOCK0_PHYS_MEM;
}
#ifndef CONFIG_MIPS_XXS1500
else {
skt->virt_io = (void *)
(ioremap((phys_t)AU1X_SOCK1_IO, 0x1000) -
(u32)mips_io_port_base);
skt->phys_attr = AU1X_SOCK1_PSEUDO_PHYS_ATTR;
skt->phys_mem = AU1X_SOCK1_PSEUDO_PHYS_MEM;
skt->phys_attr = AU1X_SOCK1_PHYS_ATTR;
skt->phys_mem = AU1X_SOCK1_PHYS_MEM;
}
#endif
pcmcia_base_vaddrs[i] = (u32 *)skt->virt_io;
ret = ops->hw_init(skt);

Expand Down
Loading

0 comments on commit d5836e1

Please sign in to comment.