diff options
Diffstat (limited to 'arch/arm/mach-pxa/viper.c')
-rw-r--r-- | arch/arm/mach-pxa/viper.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index d33c232b686c..5352b4e5a7dd 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <mach/pxafb.h> | 47 | #include <mach/pxafb.h> |
48 | #include <plat/i2c.h> | 48 | #include <plat/i2c.h> |
49 | #include <mach/regs-uart.h> | 49 | #include <mach/regs-uart.h> |
50 | #include <mach/arcom-pcmcia.h> | ||
50 | #include <mach/viper.h> | 51 | #include <mach/viper.h> |
51 | 52 | ||
52 | #include <asm/setup.h> | 53 | #include <asm/setup.h> |
@@ -76,14 +77,28 @@ static void viper_icr_clear_bit(unsigned int bit) | |||
76 | } | 77 | } |
77 | 78 | ||
78 | /* This function is used from the pcmcia module to reset the CF */ | 79 | /* This function is used from the pcmcia module to reset the CF */ |
79 | void viper_cf_rst(int state) | 80 | static void viper_cf_reset(int state) |
80 | { | 81 | { |
81 | if (state) | 82 | if (state) |
82 | viper_icr_set_bit(VIPER_ICR_CF_RST); | 83 | viper_icr_set_bit(VIPER_ICR_CF_RST); |
83 | else | 84 | else |
84 | viper_icr_clear_bit(VIPER_ICR_CF_RST); | 85 | viper_icr_clear_bit(VIPER_ICR_CF_RST); |
85 | } | 86 | } |
86 | EXPORT_SYMBOL(viper_cf_rst); | 87 | |
88 | static struct arcom_pcmcia_pdata viper_pcmcia_info = { | ||
89 | .cd_gpio = VIPER_CF_CD_GPIO, | ||
90 | .rdy_gpio = VIPER_CF_RDY_GPIO, | ||
91 | .pwr_gpio = VIPER_CF_POWER_GPIO, | ||
92 | .reset = viper_cf_reset, | ||
93 | }; | ||
94 | |||
95 | static struct platform_device viper_pcmcia_device = { | ||
96 | .name = "viper-pcmcia", | ||
97 | .id = -1, | ||
98 | .dev = { | ||
99 | .platform_data = &viper_pcmcia_info, | ||
100 | }, | ||
101 | }; | ||
87 | 102 | ||
88 | /* | 103 | /* |
89 | * The CPLD version register was not present on VIPER boards prior to | 104 | * The CPLD version register was not present on VIPER boards prior to |
@@ -301,15 +316,6 @@ static void __init viper_init_irq(void) | |||
301 | set_irq_chained_handler(gpio_to_irq(VIPER_CPLD_GPIO), | 316 | set_irq_chained_handler(gpio_to_irq(VIPER_CPLD_GPIO), |
302 | viper_irq_handler); | 317 | viper_irq_handler); |
303 | set_irq_type(gpio_to_irq(VIPER_CPLD_GPIO), IRQ_TYPE_EDGE_BOTH); | 318 | set_irq_type(gpio_to_irq(VIPER_CPLD_GPIO), IRQ_TYPE_EDGE_BOTH); |
304 | |||
305 | #ifndef CONFIG_SERIAL_PXA | ||
306 | /* | ||
307 | * 8250 doesn't support IRQ_TYPE being passed as part | ||
308 | * of the plat_serial8250_port structure... | ||
309 | */ | ||
310 | set_irq_type(gpio_to_irq(VIPER_UARTA_GPIO), IRQ_TYPE_EDGE_RISING); | ||
311 | set_irq_type(gpio_to_irq(VIPER_UARTB_GPIO), IRQ_TYPE_EDGE_RISING); | ||
312 | #endif | ||
313 | } | 319 | } |
314 | 320 | ||
315 | /* Flat Panel */ | 321 | /* Flat Panel */ |
@@ -539,6 +545,7 @@ static struct plat_serial8250_port serial_platform_data[] = { | |||
539 | { | 545 | { |
540 | .mapbase = VIPER_UARTA_PHYS, | 546 | .mapbase = VIPER_UARTA_PHYS, |
541 | .irq = gpio_to_irq(VIPER_UARTA_GPIO), | 547 | .irq = gpio_to_irq(VIPER_UARTA_GPIO), |
548 | .irqflags = IRQF_TRIGGER_RISING, | ||
542 | .uartclk = 1843200, | 549 | .uartclk = 1843200, |
543 | .regshift = 1, | 550 | .regshift = 1, |
544 | .iotype = UPIO_MEM, | 551 | .iotype = UPIO_MEM, |
@@ -548,6 +555,7 @@ static struct plat_serial8250_port serial_platform_data[] = { | |||
548 | { | 555 | { |
549 | .mapbase = VIPER_UARTB_PHYS, | 556 | .mapbase = VIPER_UARTB_PHYS, |
550 | .irq = gpio_to_irq(VIPER_UARTB_GPIO), | 557 | .irq = gpio_to_irq(VIPER_UARTB_GPIO), |
558 | .irqflags = IRQF_TRIGGER_RISING, | ||
551 | .uartclk = 1843200, | 559 | .uartclk = 1843200, |
552 | .regshift = 1, | 560 | .regshift = 1, |
553 | .iotype = UPIO_MEM, | 561 | .iotype = UPIO_MEM, |
@@ -692,6 +700,7 @@ static struct platform_device *viper_devs[] __initdata = { | |||
692 | &viper_mtd_devices[0], | 700 | &viper_mtd_devices[0], |
693 | &viper_mtd_devices[1], | 701 | &viper_mtd_devices[1], |
694 | &viper_backlight_device, | 702 | &viper_backlight_device, |
703 | &viper_pcmcia_device, | ||
695 | }; | 704 | }; |
696 | 705 | ||
697 | static mfp_cfg_t viper_pin_config[] __initdata = { | 706 | static mfp_cfg_t viper_pin_config[] __initdata = { |
@@ -908,6 +917,10 @@ static void __init viper_init(void) | |||
908 | 917 | ||
909 | pxa2xx_mfp_config(ARRAY_AND_SIZE(viper_pin_config)); | 918 | pxa2xx_mfp_config(ARRAY_AND_SIZE(viper_pin_config)); |
910 | 919 | ||
920 | pxa_set_ffuart_info(NULL); | ||
921 | pxa_set_btuart_info(NULL); | ||
922 | pxa_set_stuart_info(NULL); | ||
923 | |||
911 | /* Wake-up serial console */ | 924 | /* Wake-up serial console */ |
912 | viper_init_serial_gpio(); | 925 | viper_init_serial_gpio(); |
913 | 926 | ||