uboot/arch/blackfin/include/asm/gpio.h
<<
>>
Prefs
   1/*
   2 * Copyright 2006-2009 Analog Devices Inc.
   3 *
   4 * Licensed under the GPL-2 or later.
   5 */
   6
   7#ifndef __ARCH_BLACKFIN_GPIO_H__
   8#define __ARCH_BLACKFIN_GPIO_H__
   9
  10#define gpio_bank(x)    ((x) >> 4)
  11#define gpio_bit(x)     (1<<((x) & 0xF))
  12#define gpio_sub_n(x)   ((x) & 0xF)
  13
  14#define GPIO_BANKSIZE   16
  15#define GPIO_BANK_NUM   DIV_ROUND_UP(MAX_BLACKFIN_GPIOS, GPIO_BANKSIZE)
  16
  17#define GPIO_0  0
  18#define GPIO_1  1
  19#define GPIO_2  2
  20#define GPIO_3  3
  21#define GPIO_4  4
  22#define GPIO_5  5
  23#define GPIO_6  6
  24#define GPIO_7  7
  25#define GPIO_8  8
  26#define GPIO_9  9
  27#define GPIO_10 10
  28#define GPIO_11 11
  29#define GPIO_12 12
  30#define GPIO_13 13
  31#define GPIO_14 14
  32#define GPIO_15 15
  33#define GPIO_16 16
  34#define GPIO_17 17
  35#define GPIO_18 18
  36#define GPIO_19 19
  37#define GPIO_20 20
  38#define GPIO_21 21
  39#define GPIO_22 22
  40#define GPIO_23 23
  41#define GPIO_24 24
  42#define GPIO_25 25
  43#define GPIO_26 26
  44#define GPIO_27 27
  45#define GPIO_28 28
  46#define GPIO_29 29
  47#define GPIO_30 30
  48#define GPIO_31 31
  49#define GPIO_32 32
  50#define GPIO_33 33
  51#define GPIO_34 34
  52#define GPIO_35 35
  53#define GPIO_36 36
  54#define GPIO_37 37
  55#define GPIO_38 38
  56#define GPIO_39 39
  57#define GPIO_40 40
  58#define GPIO_41 41
  59#define GPIO_42 42
  60#define GPIO_43 43
  61#define GPIO_44 44
  62#define GPIO_45 45
  63#define GPIO_46 46
  64#define GPIO_47 47
  65
  66#define PERIPHERAL_USAGE 1
  67#define GPIO_USAGE 0
  68
  69#ifndef __ASSEMBLY__
  70
  71#ifndef CONFIG_BF54x
  72void set_gpio_dir(unsigned, unsigned short);
  73void set_gpio_inen(unsigned, unsigned short);
  74void set_gpio_polar(unsigned, unsigned short);
  75void set_gpio_edge(unsigned, unsigned short);
  76void set_gpio_both(unsigned, unsigned short);
  77void set_gpio_data(unsigned, unsigned short);
  78void set_gpio_maska(unsigned, unsigned short);
  79void set_gpio_maskb(unsigned, unsigned short);
  80void set_gpio_toggle(unsigned);
  81void set_gpiop_dir(unsigned, unsigned short);
  82void set_gpiop_inen(unsigned, unsigned short);
  83void set_gpiop_polar(unsigned, unsigned short);
  84void set_gpiop_edge(unsigned, unsigned short);
  85void set_gpiop_both(unsigned, unsigned short);
  86void set_gpiop_data(unsigned, unsigned short);
  87void set_gpiop_maska(unsigned, unsigned short);
  88void set_gpiop_maskb(unsigned, unsigned short);
  89unsigned short get_gpio_dir(unsigned);
  90unsigned short get_gpio_inen(unsigned);
  91unsigned short get_gpio_polar(unsigned);
  92unsigned short get_gpio_edge(unsigned);
  93unsigned short get_gpio_both(unsigned);
  94unsigned short get_gpio_maska(unsigned);
  95unsigned short get_gpio_maskb(unsigned);
  96unsigned short get_gpio_data(unsigned);
  97unsigned short get_gpiop_dir(unsigned);
  98unsigned short get_gpiop_inen(unsigned);
  99unsigned short get_gpiop_polar(unsigned);
 100unsigned short get_gpiop_edge(unsigned);
 101unsigned short get_gpiop_both(unsigned);
 102unsigned short get_gpiop_maska(unsigned);
 103unsigned short get_gpiop_maskb(unsigned);
 104unsigned short get_gpiop_data(unsigned);
 105
 106struct gpio_port_t {
 107        unsigned short data;
 108        unsigned short dummy1;
 109        unsigned short data_clear;
 110        unsigned short dummy2;
 111        unsigned short data_set;
 112        unsigned short dummy3;
 113        unsigned short toggle;
 114        unsigned short dummy4;
 115        unsigned short maska;
 116        unsigned short dummy5;
 117        unsigned short maska_clear;
 118        unsigned short dummy6;
 119        unsigned short maska_set;
 120        unsigned short dummy7;
 121        unsigned short maska_toggle;
 122        unsigned short dummy8;
 123        unsigned short maskb;
 124        unsigned short dummy9;
 125        unsigned short maskb_clear;
 126        unsigned short dummy10;
 127        unsigned short maskb_set;
 128        unsigned short dummy11;
 129        unsigned short maskb_toggle;
 130        unsigned short dummy12;
 131        unsigned short dir;
 132        unsigned short dummy13;
 133        unsigned short polar;
 134        unsigned short dummy14;
 135        unsigned short edge;
 136        unsigned short dummy15;
 137        unsigned short both;
 138        unsigned short dummy16;
 139        unsigned short inen;
 140};
 141#endif
 142
 143#ifdef CONFIG_BFIN_GPIO_TRACK
 144void bfin_gpio_labels(void);
 145#else
 146#define bfin_gpio_labels()
 147#define bfin_gpio_request(gpio, label) bfin_gpio_request(gpio)
 148#define bfin_special_gpio_request(gpio, label) bfin_special_gpio_request(gpio)
 149#endif
 150
 151#ifdef BFIN_SPECIAL_GPIO_BANKS
 152void bfin_special_gpio_free(unsigned gpio);
 153int bfin_special_gpio_request(unsigned gpio, const char *label);
 154#endif
 155
 156int bfin_gpio_request(unsigned gpio, const char *label);
 157void bfin_gpio_free(unsigned gpio);
 158int bfin_gpio_direction_input(unsigned gpio);
 159int bfin_gpio_direction_output(unsigned gpio, int value);
 160int bfin_gpio_get_value(unsigned gpio);
 161void bfin_gpio_set_value(unsigned gpio, int value);
 162void bfin_gpio_toggle_value(unsigned gpio);
 163
 164static inline int gpio_request(unsigned gpio, const char *label)
 165{
 166        return bfin_gpio_request(gpio, label);
 167}
 168
 169static inline void gpio_free(unsigned gpio)
 170{
 171        return bfin_gpio_free(gpio);
 172}
 173
 174static inline int gpio_direction_input(unsigned gpio)
 175{
 176        return bfin_gpio_direction_input(gpio);
 177}
 178
 179static inline int gpio_direction_output(unsigned gpio, int value)
 180{
 181        return bfin_gpio_direction_output(gpio, value);
 182}
 183
 184static inline int gpio_get_value(unsigned gpio)
 185{
 186        return bfin_gpio_get_value(gpio);
 187}
 188
 189static inline void gpio_set_value(unsigned gpio, int value)
 190{
 191        return bfin_gpio_set_value(gpio, value);
 192}
 193
 194static inline int gpio_is_valid(int number)
 195{
 196        return number >= 0 && number < MAX_BLACKFIN_GPIOS;
 197}
 198
 199#endif /* __ASSEMBLY__ */
 200
 201#endif /* __ARCH_BLACKFIN_GPIO_H__ */
 202