[ARM] 3068/1: Add corgi irda platform support
authorRichard Purdie <rpurdie@rpsys.net>
Sun, 30 Oct 2005 14:38:53 +0000 (14:38 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 30 Oct 2005 14:38:53 +0000 (14:38 +0000)
Patch from Richard Purdie

Add corgi irda platform support

Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-pxa/corgi.c

index 60c8b9d8bb9c8c16acf0cae9c82e9bc555923e60..656f73bbcb5a9d6c80fb130b95c1cf6e954764ce 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <asm/arch/pxa-regs.h>
 #include <asm/arch/irq.h>
+#include <asm/arch/irda.h>
 #include <asm/arch/mmc.h>
 #include <asm/arch/udc.h>
 #include <asm/arch/corgi.h>
@@ -224,6 +225,22 @@ static struct pxamci_platform_data corgi_mci_platform_data = {
 };
 
 
+/*
+ * Irda
+ */
+static void corgi_irda_transceiver_mode(struct device *dev, int mode)
+{
+       if (mode & IR_OFF)
+               GPSR(CORGI_GPIO_IR_ON) = GPIO_bit(CORGI_GPIO_IR_ON);
+       else
+               GPCR(CORGI_GPIO_IR_ON) = GPIO_bit(CORGI_GPIO_IR_ON);
+}
+
+static struct pxaficp_platform_data corgi_ficp_platform_data = {
+       .transceiver_cap  = IR_SIRMODE | IR_OFF,
+       .transceiver_mode = corgi_irda_transceiver_mode,
+};
+
 
 /*
  * USB Device Controller
@@ -269,10 +286,13 @@ static void __init corgi_init(void)
 
        corgi_ssp_set_machinfo(&corgi_ssp_machinfo);
 
+       pxa_gpio_mode(CORGI_GPIO_IR_ON | GPIO_OUT);
        pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT);
        pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN);
+
        pxa_set_udc_info(&udc_info);
        pxa_set_mci_info(&corgi_mci_platform_data);
+       pxa_set_ficp_info(&corgi_ficp_platform_data);
 
        scoop_num = 1;
        scoop_devs = &corgi_pcmcia_scoop[0];