aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-sa1100
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2014-01-09 07:32:18 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2014-02-12 05:36:05 -0500
commit287d4d51e6bb1cd43cb77352bdec5bac1b2e1226 (patch)
tree1e49e1dd21eb6b766ea9602f502f6c9b49a31749 /arch/arm/mach-sa1100
parent75916d5549e4c134f69068de175c90c170c17a7a (diff)
ARM: 7936/1: sa1100: collie: add support for IrDA transceiver
Collie has onboard IrDA transceiver controlled via active-low gpio. Add corresponding platform data. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-sa1100')
-rw-r--r--arch/arm/mach-sa1100/collie.c33
-rw-r--r--arch/arm/mach-sa1100/include/mach/collie.h2
2 files changed, 34 insertions, 1 deletions
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
index 831a15824ec8..f9874ba60cc8 100644
--- a/arch/arm/mach-sa1100/collie.c
+++ b/arch/arm/mach-sa1100/collie.c
@@ -43,6 +43,7 @@
43#include <asm/mach/arch.h> 43#include <asm/mach/arch.h>
44#include <asm/mach/flash.h> 44#include <asm/mach/flash.h>
45#include <asm/mach/map.h> 45#include <asm/mach/map.h>
46#include <asm/mach/irda.h>
46 47
47#include <asm/hardware/scoop.h> 48#include <asm/hardware/scoop.h>
48#include <asm/mach/sharpsl_param.h> 49#include <asm/mach/sharpsl_param.h>
@@ -96,6 +97,37 @@ static struct mcp_plat_data collie_mcp_data = {
96 .codec_pdata = &collie_ucb1x00_data, 97 .codec_pdata = &collie_ucb1x00_data,
97}; 98};
98 99
100static int collie_ir_startup(struct device *dev)
101{
102 int rc = gpio_request(COLLIE_GPIO_IR_ON, "IrDA");
103 if (rc)
104 return rc;
105 rc = gpio_direction_output(COLLIE_GPIO_IR_ON, 1);
106
107 if (!rc)
108 return 0;
109
110 gpio_free(COLLIE_GPIO_IR_ON);
111 return rc;
112}
113
114static void collie_ir_shutdown(struct device *dev)
115{
116 gpio_free(COLLIE_GPIO_IR_ON);
117}
118
119static int collie_ir_set_power(struct device *dev, unsigned int state)
120{
121 gpio_set_value(COLLIE_GPIO_IR_ON, !state);
122 return 0;
123}
124
125static struct irda_platform_data collie_ir_data = {
126 .startup = collie_ir_startup,
127 .shutdown = collie_ir_shutdown,
128 .set_power = collie_ir_set_power,
129};
130
99/* 131/*
100 * Collie AC IN 132 * Collie AC IN
101 */ 133 */
@@ -400,6 +432,7 @@ static void __init collie_init(void)
400 sa11x0_register_mtd(&collie_flash_data, collie_flash_resources, 432 sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
401 ARRAY_SIZE(collie_flash_resources)); 433 ARRAY_SIZE(collie_flash_resources));
402 sa11x0_register_mcp(&collie_mcp_data); 434 sa11x0_register_mcp(&collie_mcp_data);
435 sa11x0_register_irda(&collie_ir_data);
403 436
404 sharpsl_save_param(); 437 sharpsl_save_param();
405} 438}
diff --git a/arch/arm/mach-sa1100/include/mach/collie.h b/arch/arm/mach-sa1100/include/mach/collie.h
index f33679d2d3ee..0ef22f9cda95 100644
--- a/arch/arm/mach-sa1100/include/mach/collie.h
+++ b/arch/arm/mach-sa1100/include/mach/collie.h
@@ -78,7 +78,7 @@ extern void locomolcd_power(int on);
78#define COLLIE_TC35143_GPIO_VERSION0 UCB_IO_0 78#define COLLIE_TC35143_GPIO_VERSION0 UCB_IO_0
79#define COLLIE_TC35143_GPIO_TBL_CHK UCB_IO_1 79#define COLLIE_TC35143_GPIO_TBL_CHK UCB_IO_1
80#define COLLIE_TC35143_GPIO_VPEN_ON UCB_IO_2 80#define COLLIE_TC35143_GPIO_VPEN_ON UCB_IO_2
81#define COLLIE_TC35143_GPIO_IR_ON UCB_IO_3 81#define COLLIE_GPIO_IR_ON (COLLIE_TC35143_GPIO_BASE + 3)
82#define COLLIE_TC35143_GPIO_AMP_ON UCB_IO_4 82#define COLLIE_TC35143_GPIO_AMP_ON UCB_IO_4
83#define COLLIE_TC35143_GPIO_VERSION1 UCB_IO_5 83#define COLLIE_TC35143_GPIO_VERSION1 UCB_IO_5
84#define COLLIE_TC35143_GPIO_FS8KLPF UCB_IO_5 84#define COLLIE_TC35143_GPIO_FS8KLPF UCB_IO_5