diff options
| author | Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 2014-01-09 07:32:18 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-02-12 05:36:05 -0500 |
| commit | 287d4d51e6bb1cd43cb77352bdec5bac1b2e1226 (patch) | |
| tree | 1e49e1dd21eb6b766ea9602f502f6c9b49a31749 /arch/arm | |
| parent | 75916d5549e4c134f69068de175c90c170c17a7a (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')
| -rw-r--r-- | arch/arm/mach-sa1100/collie.c | 33 | ||||
| -rw-r--r-- | arch/arm/mach-sa1100/include/mach/collie.h | 2 |
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 | ||
| 100 | static 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 | |||
| 114 | static void collie_ir_shutdown(struct device *dev) | ||
| 115 | { | ||
| 116 | gpio_free(COLLIE_GPIO_IR_ON); | ||
| 117 | } | ||
| 118 | |||
| 119 | static 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 | |||
| 125 | static 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 |
