PATCH: Misc PCMCIA fixes for DB1200 Signed-off-by: Jordan Crouse --- arch/mips/au1000/common/setup.c | 2 +- drivers/pcmcia/au1000_generic.c | 5 +++-- include/asm-mips/mach-pb1x00/pb1200.h | 8 ++++++++ include/pcmcia/cs_types.h | 5 +++-- include/pcmcia/ss.h | 2 +- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/arch/mips/au1000/common/setup.c b/arch/mips/au1000/common/setup.c index eb155c0..fcfe306 100644 --- a/arch/mips/au1000/common/setup.c +++ b/arch/mips/au1000/common/setup.c @@ -153,7 +153,7 @@ phys_t __fixup_bigphys_addr(phys_t phys_ /* Don't fixup 36 bit addresses */ if ((phys_addr >> 32) != 0) return phys_addr; -#ifdef CONFIG_PCI +#if defined(CONFIG_PCI) && !defined(CONFIG_SOC_AU1200) start = (u32)Au1500_PCI_MEM_START; end = (u32)Au1500_PCI_MEM_END; /* check for pci memory window */ diff --git a/drivers/pcmcia/au1000_generic.c b/drivers/pcmcia/au1000_generic.c index 971a352..55a46e2 100644 --- a/drivers/pcmcia/au1000_generic.c +++ b/drivers/pcmcia/au1000_generic.c @@ -402,7 +402,7 @@ int au1x00_pcmcia_socket_probe(struct de */ if (i == 0) { skt->virt_io = (void *) - (ioremap((phys_t)AU1X_SOCK0_IO, 0x1000) - + (u32)(ioremap((ioaddr_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; @@ -410,7 +410,7 @@ int au1x00_pcmcia_socket_probe(struct de #ifndef CONFIG_MIPS_XXS1500 else { skt->virt_io = (void *) - (ioremap((phys_t)AU1X_SOCK1_IO, 0x1000) - + (u32)(ioremap((ioaddr_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; @@ -420,6 +420,7 @@ int au1x00_pcmcia_socket_probe(struct de ret = ops->hw_init(skt); skt->socket.features = SS_CAP_STATIC_MAP|SS_CAP_PCCARD; + skt->socket.resource_ops = &pccard_static_ops; skt->socket.irq_mask = 0; skt->socket.map_size = MAP_SIZE; skt->socket.pci_irq = skt->irq; diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index 409d443..15823eb 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h @@ -181,6 +181,14 @@ static BCSR * const bcsr = (BCSR *)BCSR_ #define SET_VCC_VPP(VCC, VPP, SLOT)\ ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8)) +/* PCMCIA Db1x00 specific defines */ +#define PCMCIA_MAX_SOCK 1 +#define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK+1) + +/* VPP/VCC */ +#define SET_VCC_VPP(VCC, VPP, SLOT)\ + ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8)) + #define AU1XXX_SMC91111_PHYS_ADDR (0x0D000300) #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT diff --git a/include/pcmcia/cs_types.h b/include/pcmcia/cs_types.h index c1d1629..8e8c20d 100644 --- a/include/pcmcia/cs_types.h +++ b/include/pcmcia/cs_types.h @@ -21,9 +21,10 @@ #include #endif -#if defined(__arm__) || defined(__mips__) -/* This (ioaddr_t) is exposed to userspace & hence cannot be changed. */ +#if defined(__arm__) typedef u_int ioaddr_t; +#elif defined(__mips__) +typedef unsigned long long ioaddr_t; #else typedef u_short ioaddr_t; #endif diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index 2889a69..b828471 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h @@ -99,7 +99,7 @@ typedef struct pccard_mem_map { u_char map; u_char flags; u_short speed; - u_long static_start; + ioaddr_t static_start; u_int card_start; struct resource *res; } pccard_mem_map;