]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/blackfin/include/asm/gpio.h
Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug...
[linux-2.6-omap-h63xx.git] / arch / blackfin / include / asm / gpio.h
index ad33ac271fd9d57d19ea37bb7565349ecb9ce0ac..d4a082ef75b472456f3f206b7d087ead9e2da39d 100644 (file)
  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-/*
-*  Number     BF537/6/4    BF561    BF533/2/1
-*             BF527/5/2
-*
-*  GPIO_0       PF0         PF0        PF0
-*  GPIO_1       PF1         PF1        PF1
-*  GPIO_2       PF2         PF2        PF2
-*  GPIO_3       PF3         PF3        PF3
-*  GPIO_4       PF4         PF4        PF4
-*  GPIO_5       PF5         PF5        PF5
-*  GPIO_6       PF6         PF6        PF6
-*  GPIO_7       PF7         PF7        PF7
-*  GPIO_8       PF8         PF8        PF8
-*  GPIO_9       PF9         PF9        PF9
-*  GPIO_10      PF10        PF10       PF10
-*  GPIO_11      PF11        PF11       PF11
-*  GPIO_12      PF12        PF12       PF12
-*  GPIO_13      PF13        PF13       PF13
-*  GPIO_14      PF14        PF14       PF14
-*  GPIO_15      PF15        PF15       PF15
-*  GPIO_16      PG0         PF16
-*  GPIO_17      PG1         PF17
-*  GPIO_18      PG2         PF18
-*  GPIO_19      PG3         PF19
-*  GPIO_20      PG4         PF20
-*  GPIO_21      PG5         PF21
-*  GPIO_22      PG6         PF22
-*  GPIO_23      PG7         PF23
-*  GPIO_24      PG8         PF24
-*  GPIO_25      PG9         PF25
-*  GPIO_26      PG10        PF26
-*  GPIO_27      PG11        PF27
-*  GPIO_28      PG12        PF28
-*  GPIO_29      PG13        PF29
-*  GPIO_30      PG14        PF30
-*  GPIO_31      PG15        PF31
-*  GPIO_32      PH0         PF32
-*  GPIO_33      PH1         PF33
-*  GPIO_34      PH2         PF34
-*  GPIO_35      PH3         PF35
-*  GPIO_36      PH4         PF36
-*  GPIO_37      PH5         PF37
-*  GPIO_38      PH6         PF38
-*  GPIO_39      PH7         PF39
-*  GPIO_40      PH8         PF40
-*  GPIO_41      PH9         PF41
-*  GPIO_42      PH10        PF42
-*  GPIO_43      PH11        PF43
-*  GPIO_44      PH12        PF44
-*  GPIO_45      PH13        PF45
-*  GPIO_46      PH14        PF46
-*  GPIO_47      PH15        PF47
-*/
-
 #ifndef __ARCH_BLACKFIN_GPIO_H__
 #define __ARCH_BLACKFIN_GPIO_H__
 
-#define gpio_bank(x) ((x) >> 4)
-#define gpio_bit(x)  (1<<((x) & 0xF))
-#define gpio_sub_n(x) ((x) & 0xF)
+#define gpio_bank(x)   ((x) >> 4)
+#define gpio_bit(x)    (1<<((x) & 0xF))
+#define gpio_sub_n(x)  ((x) & 0xF)
 
-#define GPIO_BANKSIZE 16
+#define GPIO_BANKSIZE  16
+#define GPIO_BANK_NUM  DIV_ROUND_UP(MAX_BLACKFIN_GPIOS, GPIO_BANKSIZE)
+
+#include <mach/gpio.h>
 
 #define        GPIO_0  0
 #define        GPIO_1  1
 #define        GPIO_46 46
 #define        GPIO_47 47
 
-
 #define PERIPHERAL_USAGE 1
 #define GPIO_USAGE 0
 
-#ifdef BF533_FAMILY
-#define MAX_BLACKFIN_GPIOS 16
-
-#define        GPIO_PF0        0
-#define        GPIO_PF1        1
-#define        GPIO_PF2        2
-#define        GPIO_PF3        3
-#define        GPIO_PF4        4
-#define        GPIO_PF5        5
-#define        GPIO_PF6        6
-#define        GPIO_PF7        7
-#define        GPIO_PF8        8
-#define        GPIO_PF9        9
-#define        GPIO_PF10       10
-#define        GPIO_PF11       11
-#define        GPIO_PF12       12
-#define        GPIO_PF13       13
-#define        GPIO_PF14       14
-#define        GPIO_PF15       15
-
-#endif
-
-#if defined(BF527_FAMILY) || defined(BF537_FAMILY)
-#define MAX_BLACKFIN_GPIOS 48
-
-#define        GPIO_PF0        0
-#define        GPIO_PF1        1
-#define        GPIO_PF2        2
-#define        GPIO_PF3        3
-#define        GPIO_PF4        4
-#define        GPIO_PF5        5
-#define        GPIO_PF6        6
-#define        GPIO_PF7        7
-#define        GPIO_PF8        8
-#define        GPIO_PF9        9
-#define        GPIO_PF10       10
-#define        GPIO_PF11       11
-#define        GPIO_PF12       12
-#define        GPIO_PF13       13
-#define        GPIO_PF14       14
-#define        GPIO_PF15       15
-#define        GPIO_PG0        16
-#define        GPIO_PG1        17
-#define        GPIO_PG2        18
-#define        GPIO_PG3        19
-#define        GPIO_PG4        20
-#define        GPIO_PG5        21
-#define        GPIO_PG6        22
-#define        GPIO_PG7        23
-#define        GPIO_PG8        24
-#define        GPIO_PG9        25
-#define        GPIO_PG10       26
-#define        GPIO_PG11       27
-#define        GPIO_PG12       28
-#define        GPIO_PG13       29
-#define        GPIO_PG14       30
-#define        GPIO_PG15       31
-#define        GPIO_PH0        32
-#define        GPIO_PH1        33
-#define        GPIO_PH2        34
-#define        GPIO_PH3        35
-#define        GPIO_PH4        36
-#define        GPIO_PH5        37
-#define        GPIO_PH6        38
-#define        GPIO_PH7        39
-#define        GPIO_PH8        40
-#define        GPIO_PH9        41
-#define        GPIO_PH10       42
-#define        GPIO_PH11       43
-#define        GPIO_PH12       44
-#define        GPIO_PH13       45
-#define        GPIO_PH14       46
-#define        GPIO_PH15       47
-
-#define PORT_F GPIO_PF0
-#define PORT_G GPIO_PG0
-#define PORT_H GPIO_PH0
-
-#endif
-
-#ifdef BF548_FAMILY
-#include <mach/gpio.h>
-#endif
-
-#ifdef BF561_FAMILY
-#define MAX_BLACKFIN_GPIOS 48
-
-#define        GPIO_PF0        0
-#define        GPIO_PF1        1
-#define        GPIO_PF2        2
-#define        GPIO_PF3        3
-#define        GPIO_PF4        4
-#define        GPIO_PF5        5
-#define        GPIO_PF6        6
-#define        GPIO_PF7        7
-#define        GPIO_PF8        8
-#define        GPIO_PF9        9
-#define        GPIO_PF10       10
-#define        GPIO_PF11       11
-#define        GPIO_PF12       12
-#define        GPIO_PF13       13
-#define        GPIO_PF14       14
-#define        GPIO_PF15       15
-#define        GPIO_PF16       16
-#define        GPIO_PF17       17
-#define        GPIO_PF18       18
-#define        GPIO_PF19       19
-#define        GPIO_PF20       20
-#define        GPIO_PF21       21
-#define        GPIO_PF22       22
-#define        GPIO_PF23       23
-#define        GPIO_PF24       24
-#define        GPIO_PF25       25
-#define        GPIO_PF26       26
-#define        GPIO_PF27       27
-#define        GPIO_PF28       28
-#define        GPIO_PF29       29
-#define        GPIO_PF30       30
-#define        GPIO_PF31       31
-#define        GPIO_PF32       32
-#define        GPIO_PF33       33
-#define        GPIO_PF34       34
-#define        GPIO_PF35       35
-#define        GPIO_PF36       36
-#define        GPIO_PF37       37
-#define        GPIO_PF38       38
-#define        GPIO_PF39       39
-#define        GPIO_PF40       40
-#define        GPIO_PF41       41
-#define        GPIO_PF42       42
-#define        GPIO_PF43       43
-#define        GPIO_PF44       44
-#define        GPIO_PF45       45
-#define        GPIO_PF46       46
-#define        GPIO_PF47       47
-
-#define PORT_FIO0 GPIO_0
-#define PORT_FIO1 GPIO_16
-#define PORT_FIO2 GPIO_32
-#endif
-
 #ifndef __ASSEMBLY__
 
 /***********************************************************
@@ -425,20 +232,73 @@ struct gpio_port_s {
 * MODIFICATION HISTORY :
 **************************************************************/
 
-int gpio_request(unsigned, const char *);
-void gpio_free(unsigned);
+int bfin_gpio_request(unsigned gpio, const char *label);
+void bfin_gpio_free(unsigned gpio);
+int bfin_gpio_irq_request(unsigned gpio, const char *label);
+void bfin_gpio_irq_free(unsigned gpio);
+int bfin_gpio_direction_input(unsigned gpio);
+int bfin_gpio_direction_output(unsigned gpio, int value);
+int bfin_gpio_get_value(unsigned gpio);
+void bfin_gpio_set_value(unsigned gpio, int value);
 
-void gpio_set_value(unsigned gpio, int arg);
-int gpio_get_value(unsigned gpio);
+#ifdef CONFIG_GPIOLIB
+#include <asm-generic/gpio.h>          /* cansleep wrappers */
 
-#ifndef BF548_FAMILY
-#define gpio_set_value(gpio, value)    set_gpio_data(gpio, value)
-#endif
+static inline int gpio_get_value(unsigned int gpio)
+{
+       if (gpio < MAX_BLACKFIN_GPIOS)
+               return bfin_gpio_get_value(gpio);
+       else
+               return __gpio_get_value(gpio);
+}
+
+static inline void gpio_set_value(unsigned int gpio, int value)
+{
+       if (gpio < MAX_BLACKFIN_GPIOS)
+               bfin_gpio_set_value(gpio, value);
+       else
+               __gpio_set_value(gpio, value);
+}
+
+static inline int gpio_cansleep(unsigned int gpio)
+{
+       return __gpio_cansleep(gpio);
+}
+
+#else /* !CONFIG_GPIOLIB */
+
+static inline int gpio_request(unsigned gpio, const char *label)
+{
+       return bfin_gpio_request(gpio, label);
+}
+
+static inline void gpio_free(unsigned gpio)
+{
+       return bfin_gpio_free(gpio);
+}
 
-int gpio_direction_input(unsigned gpio);
-int gpio_direction_output(unsigned gpio, int value);
+static inline int gpio_direction_input(unsigned gpio)
+{
+       return bfin_gpio_direction_input(gpio);
+}
+
+static inline int gpio_direction_output(unsigned gpio, int value)
+{
+       return bfin_gpio_direction_output(gpio, value);
+}
+
+static inline int gpio_get_value(unsigned gpio)
+{
+       return bfin_gpio_get_value(gpio);
+}
+
+static inline void gpio_set_value(unsigned gpio, int value)
+{
+       return bfin_gpio_set_value(gpio, value);
+}
 
 #include <asm-generic/gpio.h>          /* cansleep wrappers */
+#endif /* !CONFIG_GPIOLIB */
 #include <asm/irq.h>
 
 static inline int gpio_to_irq(unsigned gpio)