aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa/viper.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-pxa/viper.c')
-rw-r--r--arch/arm/mach-pxa/viper.c35
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 */
79void viper_cf_rst(int state) 80static 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}
86EXPORT_SYMBOL(viper_cf_rst); 87
88static 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
95static 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
697static mfp_cfg_t viper_pin_config[] __initdata = { 706static 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