[ARM] pxa: introduce dedicated __mfp_validate() to check PXA2xx MFP
authorEric Miao <eric.miao@marvell.com>
Mon, 16 Jun 2008 01:38:27 +0000 (09:38 +0800)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 9 Jul 2008 20:38:32 +0000 (21:38 +0100)
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>
arch/arm/mach-pxa/mfp-pxa2xx.c

index d1cdb4ecb0b8c28c38586af34f035e2baca0cfcb..ed91c043471bbf32825a0200af9efdcfce53adcb 100644 (file)
@@ -91,6 +91,18 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c)
        return 0;
 }
 
+static inline int __mfp_validate(int mfp)
+{
+       int gpio = mfp_to_gpio(mfp);
+
+       if ((mfp > MFP_PIN_GPIO127) || !gpio_desc[gpio].valid) {
+               pr_warning("%s: GPIO%d is invalid pin\n", __func__, gpio);
+               return -1;
+       }
+
+       return gpio;
+}
+
 void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num)
 {
        unsigned long flags;
@@ -99,13 +111,9 @@ void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num)
 
        for (i = 0, c = mfp_cfgs; i < num; i++, c++) {
 
-               gpio = mfp_to_gpio(MFP_PIN(*c));
-
-               if (!gpio_desc[gpio].valid) {
-                       pr_warning("%s: GPIO%d is invalid pin\n",
-                               __func__, gpio);
+               gpio = __mfp_validate(MFP_PIN(*c));
+               if (gpio < 0)
                        continue;
-               }
 
                local_irq_save(flags);