diff options
| author | Dmitry Baryshkov <dbaryshkov@gmail.com> | 2008-07-02 08:53:45 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-07-09 15:56:28 -0400 |
| commit | 918dbcba4ee3f0ad7d617b3969d5016481b9ceff (patch) | |
| tree | d86bc8e0a92f97631b0fd9c5b2543853dcaceaa9 | |
| parent | 330ff197fcdc83ba151960d78294fb37777ebe12 (diff) | |
[ARM] 5145/1: PXA2xx: provide api to control IrDA pins state
Provide a set of functions to control state of pins dedicated to IrDA.
Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| -rw-r--r-- | arch/arm/mach-pxa/Makefile | 4 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/pxa2xx.c | 46 | ||||
| -rw-r--r-- | include/asm-arm/arch-pxa/irda.h | 4 |
3 files changed, 52 insertions, 2 deletions
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index 02cbc3cfbe01..c4dfbe87fc4e 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
| @@ -13,8 +13,8 @@ obj-$(CONFIG_PXA_SSP) += ssp.o | |||
| 13 | obj-$(CONFIG_PXA_PWM) += pwm.o | 13 | obj-$(CONFIG_PXA_PWM) += pwm.o |
| 14 | 14 | ||
| 15 | # SoC-specific code | 15 | # SoC-specific code |
| 16 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa25x.o | 16 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa2xx.o pxa25x.o |
| 17 | obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o pxa27x.o | 17 | obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o pxa2xx.o pxa27x.o |
| 18 | obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o pxa3xx.o smemc.o | 18 | obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o pxa3xx.o smemc.o |
| 19 | obj-$(CONFIG_CPU_PXA300) += pxa300.o | 19 | obj-$(CONFIG_CPU_PXA300) += pxa300.o |
| 20 | obj-$(CONFIG_CPU_PXA320) += pxa320.o | 20 | obj-$(CONFIG_CPU_PXA320) += pxa320.o |
diff --git a/arch/arm/mach-pxa/pxa2xx.c b/arch/arm/mach-pxa/pxa2xx.c new file mode 100644 index 000000000000..d4f6415e8413 --- /dev/null +++ b/arch/arm/mach-pxa/pxa2xx.c | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | /* | ||
| 2 | * linux/arch/arm/mach-pxa/pxa2xx.c | ||
| 3 | * | ||
| 4 | * code specific to pxa2xx | ||
| 5 | * | ||
| 6 | * Copyright (C) 2008 Dmitry Baryshkov | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/module.h> | ||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/device.h> | ||
| 16 | |||
| 17 | #include <asm/arch/mfp-pxa2xx.h> | ||
| 18 | #include <asm/arch/mfp-pxa25x.h> | ||
| 19 | #include <asm/arch/irda.h> | ||
| 20 | |||
| 21 | static unsigned long pxa2xx_mfp_fir[] = { | ||
| 22 | GPIO46_FICP_RXD, | ||
| 23 | GPIO47_FICP_TXD, | ||
| 24 | }; | ||
| 25 | |||
| 26 | static unsigned long pxa2xx_mfp_sir[] = { | ||
| 27 | GPIO46_STUART_RXD, | ||
| 28 | GPIO47_STUART_TXD, | ||
| 29 | }; | ||
| 30 | |||
| 31 | static unsigned long pxa2xx_mfp_off[] = { | ||
| 32 | GPIO46_GPIO | MFP_LPM_DRIVE_LOW, | ||
| 33 | GPIO47_GPIO | MFP_LPM_DRIVE_LOW, | ||
| 34 | }; | ||
| 35 | |||
| 36 | void pxa2xx_transceiver_mode(struct device *dev, int mode) | ||
| 37 | { | ||
| 38 | if (mode & IR_OFF) { | ||
| 39 | pxa2xx_mfp_config(pxa2xx_mfp_off, ARRAY_SIZE(pxa2xx_mfp_off)); | ||
| 40 | } else if (mode & IR_SIRMODE) { | ||
| 41 | pxa2xx_mfp_config(pxa2xx_mfp_sir, ARRAY_SIZE(pxa2xx_mfp_sir)); | ||
| 42 | } else if (mode & IR_FIRMODE) { | ||
| 43 | pxa2xx_mfp_config(pxa2xx_mfp_fir, ARRAY_SIZE(pxa2xx_mfp_fir)); | ||
| 44 | } else | ||
| 45 | BUG(); | ||
| 46 | } | ||
diff --git a/include/asm-arm/arch-pxa/irda.h b/include/asm-arm/arch-pxa/irda.h index 99f4f423a8e1..0a50c3c763df 100644 --- a/include/asm-arm/arch-pxa/irda.h +++ b/include/asm-arm/arch-pxa/irda.h | |||
| @@ -16,4 +16,8 @@ struct pxaficp_platform_data { | |||
| 16 | 16 | ||
| 17 | extern void pxa_set_ficp_info(struct pxaficp_platform_data *info); | 17 | extern void pxa_set_ficp_info(struct pxaficp_platform_data *info); |
| 18 | 18 | ||
| 19 | #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) | ||
| 20 | void pxa2xx_transceiver_mode(struct device *dev, int mode); | ||
| 21 | #endif | ||
| 22 | |||
| 19 | #endif | 23 | #endif |
