Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / arch / arm / mach-mx3 / iomux.c
index 40ffc5a..c66ccbc 100644 (file)
@@ -21,7 +21,6 @@
 #include <linux/module.h>
 #include <linux/spinlock.h>
 #include <linux/io.h>
-#include <linux/gpio.h>
 #include <linux/kernel.h>
 #include <mach/hardware.h>
 #include <mach/gpio.h>
@@ -94,15 +93,13 @@ void mxc_iomux_set_pad(enum iomux_pins pin, u32 config)
 EXPORT_SYMBOL(mxc_iomux_set_pad);
 
 /*
- * setups a single pin:
+ * allocs a single pin:
  *     - reserves the pin so that it is not claimed by another driver
  *     - setups the iomux according to the configuration
- *     - if the pin is configured as a GPIO, we claim it through kernel gpiolib
  */
-int mxc_iomux_setup_pin(const unsigned int pin, const char *label)
+int mxc_iomux_alloc_pin(const unsigned int pin, const char *label)
 {
        unsigned pad = pin & IOMUX_PADNUM_MASK;
-       unsigned gpio;
 
        if (pad >= (PIN_MAX + 1)) {
                printk(KERN_ERR "mxc_iomux: Attempt to request nonexistant pin %u for \"%s\"\n",
@@ -113,19 +110,13 @@ int mxc_iomux_setup_pin(const unsigned int pin, const char *label)
        if (test_and_set_bit(pad, mxc_pin_alloc_map)) {
                printk(KERN_ERR "mxc_iomux: pin %u already used. Allocation for \"%s\" failed\n",
                        pad, label ? label : "?");
-               return -EINVAL;
+               return -EBUSY;
        }
        mxc_iomux_mode(pin);
 
-       /* if we have a gpio, we can allocate it */
-       gpio = (pin & IOMUX_GPIONUM_MASK) >> IOMUX_GPIONUM_SHIFT;
-       if (gpio < (GPIO_PORT_MAX + 1) * 32)
-               if (gpio_request(gpio, label))
-                       return -EINVAL;
-
        return 0;
 }
-EXPORT_SYMBOL(mxc_iomux_setup_pin);
+EXPORT_SYMBOL(mxc_iomux_alloc_pin);
 
 int mxc_iomux_setup_multiple_pins(unsigned int *pin_list, unsigned count,
                const char *label)
@@ -135,7 +126,8 @@ int mxc_iomux_setup_multiple_pins(unsigned int *pin_list, unsigned count,
        int ret = -EINVAL;
 
        for (i = 0; i < count; i++) {
-               if (mxc_iomux_setup_pin(*p, label))
+               ret = mxc_iomux_alloc_pin(*p, label);
+               if (ret)
                        goto setup_error;
                p++;
        }
@@ -150,14 +142,9 @@ EXPORT_SYMBOL(mxc_iomux_setup_multiple_pins);
 void mxc_iomux_release_pin(const unsigned int pin)
 {
        unsigned pad = pin & IOMUX_PADNUM_MASK;
-       unsigned gpio;
 
        if (pad < (PIN_MAX + 1))
                clear_bit(pad, mxc_pin_alloc_map);
-
-       gpio = (pin & IOMUX_GPIONUM_MASK) >> IOMUX_GPIONUM_SHIFT;
-       if (gpio < (GPIO_PORT_MAX + 1) * 32)
-               gpio_free(gpio);
 }
 EXPORT_SYMBOL(mxc_iomux_release_pin);