aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa/zeus.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-pxa/zeus.c')
-rw-r--r--arch/arm/mach-pxa/zeus.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index ae1c3d2f6d5b..5b986a8bd9e6 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -43,6 +43,7 @@
43#include <mach/mfp-pxa27x.h> 43#include <mach/mfp-pxa27x.h>
44#include <mach/pm.h> 44#include <mach/pm.h>
45#include <mach/audio.h> 45#include <mach/audio.h>
46#include <mach/arcom-pcmcia.h>
46#include <mach/zeus.h> 47#include <mach/zeus.h>
47 48
48#include "generic.h" 49#include "generic.h"
@@ -428,6 +429,33 @@ static struct platform_device zeus_leds_device = {
428 }, 429 },
429}; 430};
430 431
432static void zeus_cf_reset(int state)
433{
434 u16 cpld_state = __raw_readw(ZEUS_CPLD_CONTROL);
435
436 if (state)
437 cpld_state |= ZEUS_CPLD_CONTROL_CF_RST;
438 else
439 cpld_state &= ~ZEUS_CPLD_CONTROL_CF_RST;
440
441 __raw_writew(cpld_state, ZEUS_CPLD_CONTROL);
442}
443
444static struct arcom_pcmcia_pdata zeus_pcmcia_info = {
445 .cd_gpio = ZEUS_CF_CD_GPIO,
446 .rdy_gpio = ZEUS_CF_RDY_GPIO,
447 .pwr_gpio = ZEUS_CF_PWEN_GPIO,
448 .reset = zeus_cf_reset,
449};
450
451static struct platform_device zeus_pcmcia_device = {
452 .name = "zeus-pcmcia",
453 .id = -1,
454 .dev = {
455 .platform_data = &zeus_pcmcia_info,
456 },
457};
458
431static struct platform_device *zeus_devices[] __initdata = { 459static struct platform_device *zeus_devices[] __initdata = {
432 &zeus_serial_device, 460 &zeus_serial_device,
433 &zeus_mtd_devices[0], 461 &zeus_mtd_devices[0],
@@ -436,6 +464,7 @@ static struct platform_device *zeus_devices[] __initdata = {
436 &zeus_sram_device, 464 &zeus_sram_device,
437 &pxa2xx_spi_ssp3_device, 465 &pxa2xx_spi_ssp3_device,
438 &zeus_leds_device, 466 &zeus_leds_device,
467 &zeus_pcmcia_device,
439}; 468};
440 469
441/* AC'97 */ 470/* AC'97 */