diff options
author | Manuel Lauss <manuel.lauss@googlemail.com> | 2009-10-04 08:55:27 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2010-02-27 06:52:51 -0500 |
commit | 66213b3ccfc770704025ce9465fa3aaedde21b55 (patch) | |
tree | 2f74c1819b371926952c9c5b8f98ae808588e728 /arch/mips/alchemy | |
parent | 7e50b2b741bb4f9dbddc9f56972ef82a7d4b33ed (diff) |
MIPS: PCMCIA: new socket driver for Au1000 demoboards.
New PCMCIA socket driver for all Db/Pb1xxx boards (except Pb1000),
which replaces au1000_db1x00.c and (most of) au1000_pb1x00.c.
Notable improvements:
- supports Db1000, DB/PB1100/1500/1550/1200.
- support for carddetect and statuschange IRQs.
- pcmcia socket mem/io/attr areas and irqs passed through
platform resource information.
- doesn't freeze system during card insertion/ejection like
the one it replaces.
- boardtype is automatically detected using BCSR ID register.
Run-tested on the DB1200.
Cc: Linux-PCMCIA <linux-pcmcia@lists.infradead.org>
Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/alchemy')
-rw-r--r-- | arch/mips/alchemy/common/platform.c | 6 | ||||
-rw-r--r-- | arch/mips/alchemy/common/setup.c | 3 |
2 files changed, 2 insertions, 7 deletions
diff --git a/arch/mips/alchemy/common/platform.c b/arch/mips/alchemy/common/platform.c index 117f99f70649..2b76a57c4947 100644 --- a/arch/mips/alchemy/common/platform.c +++ b/arch/mips/alchemy/common/platform.c | |||
@@ -308,11 +308,6 @@ static struct platform_device au1200_mmc1_device = { | |||
308 | #endif /* #ifndef CONFIG_MIPS_DB1200 */ | 308 | #endif /* #ifndef CONFIG_MIPS_DB1200 */ |
309 | #endif /* #ifdef CONFIG_SOC_AU1200 */ | 309 | #endif /* #ifdef CONFIG_SOC_AU1200 */ |
310 | 310 | ||
311 | static struct platform_device au1x00_pcmcia_device = { | ||
312 | .name = "au1x00-pcmcia", | ||
313 | .id = 0, | ||
314 | }; | ||
315 | |||
316 | /* All Alchemy demoboards with I2C have this #define in their headers */ | 311 | /* All Alchemy demoboards with I2C have this #define in their headers */ |
317 | #ifdef SMBUS_PSC_BASE | 312 | #ifdef SMBUS_PSC_BASE |
318 | static struct resource pbdb_smbus_resources[] = { | 313 | static struct resource pbdb_smbus_resources[] = { |
@@ -334,7 +329,6 @@ static struct platform_device pbdb_smbus_device = { | |||
334 | static struct platform_device *au1xxx_platform_devices[] __initdata = { | 329 | static struct platform_device *au1xxx_platform_devices[] __initdata = { |
335 | &au1xx0_uart_device, | 330 | &au1xx0_uart_device, |
336 | &au1xxx_usb_ohci_device, | 331 | &au1xxx_usb_ohci_device, |
337 | &au1x00_pcmcia_device, | ||
338 | #ifdef CONFIG_FB_AU1100 | 332 | #ifdef CONFIG_FB_AU1100 |
339 | &au1100_lcd_device, | 333 | &au1100_lcd_device, |
340 | #endif | 334 | #endif |
diff --git a/arch/mips/alchemy/common/setup.c b/arch/mips/alchemy/common/setup.c index 6184baa56786..375984e5c2e6 100644 --- a/arch/mips/alchemy/common/setup.c +++ b/arch/mips/alchemy/common/setup.c | |||
@@ -107,7 +107,8 @@ phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) | |||
107 | * The pseudo address we use is 0xF400 0000. Any address over | 107 | * The pseudo address we use is 0xF400 0000. Any address over |
108 | * 0xF400 0000 is a PCMCIA pseudo address. | 108 | * 0xF400 0000 is a PCMCIA pseudo address. |
109 | */ | 109 | */ |
110 | if ((phys_addr >= 0xF4000000) && (phys_addr < 0xFFFFFFFF)) | 110 | if ((phys_addr >= PCMCIA_ATTR_PSEUDO_PHYS) && |
111 | (phys_addr < PCMCIA_PSEUDO_END)) | ||
111 | return (phys_t)(phys_addr << 4); | 112 | return (phys_t)(phys_addr << 4); |
112 | 113 | ||
113 | /* default nop */ | 114 | /* default nop */ |