Logo Search packages:      
Sourcecode: linux version File versions

gpio.h

/*
 * File:         arch/blackfin/kernel/bfin_gpio.h
 * Based on:
 * Author:   Michael Hennerich (hennerich@blackfin.uclinux.org)
 *
 * Created:
 * Description:
 *
 * Modified:
 *               Copyright 2004-2008 Analog Devices Inc.
 *
 * Bugs:         Enter bugs at http://blackfin.uclinux.org/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see the file COPYING, or write
 * to the Free Software Foundation, Inc.,
 * 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_BANKSIZE 16

#define     GPIO_0      0
#define     GPIO_1      1
#define     GPIO_2      2
#define     GPIO_3      3
#define     GPIO_4      4
#define     GPIO_5      5
#define     GPIO_6      6
#define     GPIO_7      7
#define     GPIO_8      8
#define     GPIO_9      9
#define     GPIO_10     10
#define     GPIO_11     11
#define     GPIO_12     12
#define     GPIO_13     13
#define     GPIO_14     14
#define     GPIO_15     15
#define     GPIO_16     16
#define     GPIO_17     17
#define     GPIO_18     18
#define     GPIO_19     19
#define     GPIO_20     20
#define     GPIO_21     21
#define     GPIO_22     22
#define     GPIO_23     23
#define     GPIO_24     24
#define     GPIO_25     25
#define     GPIO_26     26
#define     GPIO_27     27
#define     GPIO_28     28
#define     GPIO_29     29
#define     GPIO_30     30
#define     GPIO_31     31
#define     GPIO_32     32
#define     GPIO_33     33
#define     GPIO_34     34
#define     GPIO_35     35
#define     GPIO_36     36
#define     GPIO_37     37
#define     GPIO_38     38
#define     GPIO_39     39
#define     GPIO_40     40
#define     GPIO_41     41
#define     GPIO_42     42
#define     GPIO_43     43
#define     GPIO_44     44
#define     GPIO_45     45
#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__

/***********************************************************
*
* FUNCTIONS: Blackfin General Purpose Ports Access Functions
*
* INPUTS/OUTPUTS:
* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
*
*
* DESCRIPTION: These functions abstract direct register access
*              to Blackfin processor General Purpose
*              Ports Regsiters
*
* CAUTION: These functions do not belong to the GPIO Driver API
*************************************************************
* MODIFICATION HISTORY :
**************************************************************/

#ifndef BF548_FAMILY
void set_gpio_dir(unsigned, unsigned short);
void set_gpio_inen(unsigned, unsigned short);
void set_gpio_polar(unsigned, unsigned short);
void set_gpio_edge(unsigned, unsigned short);
void set_gpio_both(unsigned, unsigned short);
void set_gpio_data(unsigned, unsigned short);
void set_gpio_maska(unsigned, unsigned short);
void set_gpio_maskb(unsigned, unsigned short);
void set_gpio_toggle(unsigned);
void set_gpiop_dir(unsigned, unsigned short);
void set_gpiop_inen(unsigned, unsigned short);
void set_gpiop_polar(unsigned, unsigned short);
void set_gpiop_edge(unsigned, unsigned short);
void set_gpiop_both(unsigned, unsigned short);
void set_gpiop_data(unsigned, unsigned short);
void set_gpiop_maska(unsigned, unsigned short);
void set_gpiop_maskb(unsigned, unsigned short);
unsigned short get_gpio_dir(unsigned);
unsigned short get_gpio_inen(unsigned);
unsigned short get_gpio_polar(unsigned);
unsigned short get_gpio_edge(unsigned);
unsigned short get_gpio_both(unsigned);
unsigned short get_gpio_maska(unsigned);
unsigned short get_gpio_maskb(unsigned);
unsigned short get_gpio_data(unsigned);
unsigned short get_gpiop_dir(unsigned);
unsigned short get_gpiop_inen(unsigned);
unsigned short get_gpiop_polar(unsigned);
unsigned short get_gpiop_edge(unsigned);
unsigned short get_gpiop_both(unsigned);
unsigned short get_gpiop_maska(unsigned);
unsigned short get_gpiop_maskb(unsigned);
unsigned short get_gpiop_data(unsigned);

struct gpio_port_t {
      unsigned short data;
      unsigned short dummy1;
      unsigned short data_clear;
      unsigned short dummy2;
      unsigned short data_set;
      unsigned short dummy3;
      unsigned short toggle;
      unsigned short dummy4;
      unsigned short maska;
      unsigned short dummy5;
      unsigned short maska_clear;
      unsigned short dummy6;
      unsigned short maska_set;
      unsigned short dummy7;
      unsigned short maska_toggle;
      unsigned short dummy8;
      unsigned short maskb;
      unsigned short dummy9;
      unsigned short maskb_clear;
      unsigned short dummy10;
      unsigned short maskb_set;
      unsigned short dummy11;
      unsigned short maskb_toggle;
      unsigned short dummy12;
      unsigned short dir;
      unsigned short dummy13;
      unsigned short polar;
      unsigned short dummy14;
      unsigned short edge;
      unsigned short dummy15;
      unsigned short both;
      unsigned short dummy16;
      unsigned short inen;
};
#endif

#ifdef CONFIG_PM

unsigned int bfin_pm_standby_setup(void);
void bfin_pm_standby_restore(void);

void bfin_gpio_pm_hibernate_restore(void);
void bfin_gpio_pm_hibernate_suspend(void);

#ifndef CONFIG_BF54x
#define PM_WAKE_RISING  0x1
#define PM_WAKE_FALLING 0x2
#define PM_WAKE_HIGH    0x4
#define PM_WAKE_LOW     0x8
#define PM_WAKE_BOTH_EDGES    (PM_WAKE_RISING | PM_WAKE_FALLING)
#define PM_WAKE_IGNORE  0xF0

int gpio_pm_wakeup_request(unsigned gpio, unsigned char type);
void gpio_pm_wakeup_free(unsigned gpio);

struct gpio_port_s {
      unsigned short data;
      unsigned short maska;
      unsigned short maskb;
      unsigned short dir;
      unsigned short polar;
      unsigned short edge;
      unsigned short both;
      unsigned short inen;

      unsigned short fer;
      unsigned short reserved;
      unsigned short mux;
};
#endif /*CONFIG_BF54x*/
#endif /*CONFIG_PM*/
/***********************************************************
*
* FUNCTIONS: Blackfin GPIO Driver
*
* INPUTS/OUTPUTS:
* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
*
*
* DESCRIPTION: Blackfin GPIO Driver API
*
* CAUTION:
*************************************************************
* MODIFICATION HISTORY :
**************************************************************/

int gpio_request(unsigned, const char *);
void gpio_free(unsigned);

void gpio_set_value(unsigned gpio, int arg);
int gpio_get_value(unsigned gpio);

#ifndef BF548_FAMILY
#define gpio_set_value(gpio, value) set_gpio_data(gpio, value)
#endif

int gpio_direction_input(unsigned gpio);
int gpio_direction_output(unsigned gpio, int value);

#include <asm-generic/gpio.h>       /* cansleep wrappers */
#include <asm/irq.h>

static inline int gpio_to_irq(unsigned gpio)
{
      return (gpio + GPIO_IRQ_BASE);
}

static inline int irq_to_gpio(unsigned irq)
{
      return (irq - GPIO_IRQ_BASE);
}

#endif /* __ASSEMBLY__ */

#endif /* __ARCH_BLACKFIN_GPIO_H__ */

Generated by  Doxygen 1.6.0   Back to index