aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Miao <eric.miao@marvell.com>2008-06-15 21:38:27 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-07-09 16:38:32 -0400
commit0fedb0cad6ebc00af01013b5bbe52dd596853c63 (patch)
tree40f6993a3926ec109e639dcb765db449c60a8f6b
parentd4a678080e83ff96e3933fa1e631cef3cda04bef (diff)
[ARM] pxa: introduce dedicated __mfp_validate() to check PXA2xx MFP
Signed-off-by: Eric Miao <eric.miao@marvell.com> Tested-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-pxa/mfp-pxa2xx.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c
index d1cdb4ecb0b..ed91c043471 100644
--- a/arch/arm/mach-pxa/mfp-pxa2xx.c
+++ b/arch/arm/mach-pxa/mfp-pxa2xx.c
@@ -91,6 +91,18 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c)
91 return 0; 91 return 0;
92} 92}
93 93
94static inline int __mfp_validate(int mfp)
95{
96 int gpio = mfp_to_gpio(mfp);
97
98 if ((mfp > MFP_PIN_GPIO127) || !gpio_desc[gpio].valid) {
99 pr_warning("%s: GPIO%d is invalid pin\n", __func__, gpio);
100 return -1;
101 }
102
103 return gpio;
104}
105
94void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num) 106void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num)
95{ 107{
96 unsigned long flags; 108 unsigned long flags;
@@ -99,13 +111,9 @@ void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num)
99 111
100 for (i = 0, c = mfp_cfgs; i < num; i++, c++) { 112 for (i = 0, c = mfp_cfgs; i < num; i++, c++) {
101 113
102 gpio = mfp_to_gpio(MFP_PIN(*c)); 114 gpio = __mfp_validate(MFP_PIN(*c));
103 115 if (gpio < 0)
104 if (!gpio_desc[gpio].valid) {
105 pr_warning("%s: GPIO%d is invalid pin\n",
106 __func__, gpio);
107 continue; 116 continue;
108 }
109 117
110 local_irq_save(flags); 118 local_irq_save(flags);
111 119