OpenCores
URL https://opencores.org/ocsvn/minsoc/minsoc/trunk

Subversion Repositories minsoc

[/] [minsoc/] [branches/] [rc-1.0/] [utils/] [contributions/] [gpio/] [sw/] [gpio.h] - Diff between revs 40 and 109

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 40 Rev 109
#ifndef __GPIO_H__
#ifndef __GPIO_H__
 
 
#define __GPIO_H__
#define __GPIO_H__
 
 
#define MIN_GPIO_BIT            0
#define MIN_GPIO_BIT            0
#define MAX_GPIO_BIT            31
#define MAX_GPIO_BIT            31
 
 
#define TOTAL_GPIO_BITS         ((MAX_GPIO_BIT-MIN_GPIO_BIT+1))
#define TOTAL_GPIO_BITS         ((MAX_GPIO_BIT-MIN_GPIO_BIT+1))
 
 
 
 
#define IN_REG_OFFSET           0x00
#define IN_REG_OFFSET           0x00
#define OUT_REG_OFFSET          0x04
#define OUT_REG_OFFSET          0x04
#define OE_REG_OFFSET           0x08
#define OE_REG_OFFSET           0x08
#define INTE_REG_OFFSET         0x0C
#define INTE_REG_OFFSET         0x0C
#define PTRIG_REG_OFFSET        0x10
#define PTRIG_REG_OFFSET        0x10
#define AUX_REG_OFFSET          0x14
#define AUX_REG_OFFSET          0x14
#define CTRL_REG_OFFSET         0x18
#define CTRL_REG_OFFSET         0x18
#define INTS_REG_OFFSET         0x1C
#define INTS_REG_OFFSET         0x1C
#define ECLK_REG_OFFSET         0x20
#define ECLK_REG_OFFSET         0x20
#define NEC_REG_OFFSET          0x24
#define NEC_REG_OFFSET          0x24
 
 
 
 
typedef struct vector_t_
typedef struct vector_t_
{
{
        void (*vec)();
        void (*vec)();
} vector_t;
} vector_t;
 
 
typedef struct gpio_t_
typedef struct gpio_t_
{
{
        volatile unsigned char *base_addr;
        volatile unsigned char *base_addr;
        unsigned int instance_num;
        unsigned int instance_num;
        unsigned int io_config;
        unsigned int io_config;
        vector_t vectors[TOTAL_GPIO_BITS];
        vector_t vectors[TOTAL_GPIO_BITS];
} gpio_t;
} gpio_t;
 
 
typedef enum iotype_t_
typedef enum iotype_t_
{
{
        IO_OUTPUT = 0,
        IO_OUTPUT = 0,
        IO_INPUT = 1
        IO_INPUT = 1
} iotype_t;
} iotype_t;
 
 
typedef enum edge_t_
typedef enum edge_t_
{
{
        NEG_EDGE = 0,
        NEG_EDGE = 0,
        POS_EDGE = 1
        POS_EDGE = 1
} edge_t;
} edge_t;
 
 
 
 
#define LED_0                   0x00
#define LED_0                   0x00
#define LED_1                   0x01
#define LED_1                   0x01
#define LED_2                   0x02
#define LED_2                   0x02
#define LED_3                   0x03
#define LED_3                   0x03
#define LED_4                   0x04
#define LED_4                   0x04
#define LED_5                   0x05
#define LED_5                   0x05
#define LED_6                   0x06
#define LED_6                   0x06
#define LED_7                   0x07
#define LED_7                   0x07
 
 
#define DIP_0                   0x08
#define DIP_0                   0x08
#define DIP_1                   0x09
#define DIP_1                   0x09
#define DIP_2                   0x0A
#define DIP_2                   0x0A
#define DIP_3                   0x0B
#define DIP_3                   0x0B
 
 
#define PUSH_EAST               0x0C
#define PUSH_EAST               0x0C
#define PUSH_WEST               0x0D
#define PUSH_WEST               0x0D
#define PUSH_NORTH              0x0E
#define PUSH_NORTH              0x0E
#define PUSH_SOUTH              0x0F
#define PUSH_SOUTH              0x0F
 
 
 
 
void gpio_init(gpio_t *, long, unsigned long);
void gpio_init(gpio_t *, long, unsigned long);
void gpio_config_bit(gpio_t *, unsigned long, iotype_t);
void gpio_config_bit(gpio_t *, unsigned long, iotype_t);
void gpio_set_bit(gpio_t *, unsigned long, unsigned long);
void gpio_set_bit(gpio_t *, unsigned long, unsigned long);
void gpio_get_bit(gpio_t *, unsigned long, unsigned long *);
void gpio_get_bit(gpio_t *, unsigned long, unsigned long *);
void gpio_add_interrupt(gpio_t *, unsigned int, edge_t,void (*func)() );
void gpio_add_interrupt(gpio_t *, unsigned int, edge_t,void (*func)() );
void gpio_interrupt(gpio_t *gpio);
void gpio_interrupt(gpio_t *gpio);
 
 
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.