#ifndef _BEAGLEBONE_GPIO_H_
#define _BEAGLEBONE_GPIO_H_
#define CONTROL_MODULE_START_ADDR 0x44E10000
#define CONTROL_MODULE_END_ADDR 0x44E11FFF
#define CONTROL_MODULE_SIZE (CONTROL_MODULE_END_ADDR - CONTROL_MODULE_START_ADDR)
#define CM_PER_ADDR 0x44E00000
#define CM_PER_LEN 1024
#define CM_PER_GPIO1_CLKCTRL_OFFSET 0xAC
#define CM_PER_GPIO_CLKCTRL_MODMODE_MASK 0x00000003
#define CM_PER_GPIO_CLKCTRL_MODMODE_ENABLED 0x00000002
#define CM_PER_GPIO_CLKCTRL_MODMODE_DISABLED 0x00000000
#define PIN_RX_DISABLED 0
#define PIN_RX_ENABLED (1<<5)
#define PIN_PULLUD_DISABLED 0
#define PIN_PULLUD_ENABLED (1<<3)
#define PIN_PULLUP (1<<4)
#define PIN_PULLDOWN 0
#define PIN_SLEW_FAST 0
#define PIN_SLEW_SLOW (1<<6)
#define PIN_MODE0 0
#define PIN_MODE1 1
#define PIN_MODE2 2
#define PIN_MODE3 3
#define PIN_MODE4 4
#define PIN_MODE5 5
#define PIN_MODE6 6
#define PIN_MODE7 7
#define CONF_GPIO1_28 0x878
#define GPIO_SIZE 0x2000
#define GPIO0_START_ADDR 0x44E07000
#define GPIO1_START_ADDR 0x4804C000
#define GPIO2_START_ADDR 0x481AC000
#define GPIO3_START_ADDR 0x481AE000
#define GPIO_OE 0x134
#define GPIO_SETDATAOUT 0x194
#define GPIO_CLEARDATAOUT 0x190
#define GPIO_DATAIN 0x138
typedef struct {
volatile void *gpio_addr;
volatile unsigned int *oe_reg;
volatile unsigned int *setdataout_reg;
volatile unsigned int *clrdataout_reg;
volatile unsigned int *datain_reg;
} bb_gpio_port;
typedef struct {
bb_gpio_port *port;
char port_num;
char pin_num;
unsigned short control_offset;
char claimed;
} bb_gpio_pin;
volatile void *control_module;
bb_gpio_port *gpio_ports[4];
bb_gpio_pin user_led_gpio_pins[4] = {
{ NULL, 1, 21, 0x854, 0 }, { NULL, 1, 22, 0x858, 0 }, { NULL, 1, 23, 0x85C, 0 }, { NULL, 1, 24, 0x860, 0 } };
bb_gpio_pin p8_pins[47] = {
{ NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, 1, 6, 0x818, 0 }, { NULL, 1, 7, 0x81C, 0 }, { NULL, 1, 2, 0x808, 0 }, { NULL, 1, 3, 0x80C, 0 }, { NULL, 2, 2, 0x890, 0 }, { NULL, 2, 3, 0x894, 0 }, { NULL, 2, 5, 0x89C, 0 }, { NULL, 2, 4, 0x898, 0 }, { NULL, 1, 13, 0x834, 0 }, { NULL, 1, 12, 0x830, 0 }, { NULL, 0, 23, 0x824, 0 }, { NULL, 0, 26, 0x828, 0 }, { NULL, 1, 15, 0x83C, 0 }, { NULL, 1, 14, 0x838, 0 }, { NULL, 0, 27, 0x82C, 0 }, { NULL, 2, 1, 0x88C, 0 }, { NULL, 0, 22, 0x820, 0 }, { NULL, 1, 31, 0x884, 0 }, { NULL, 1, 30, 0x880, 0 }, { NULL, 1, 5, 0x814, 0 }, { NULL, 1, 4, 0x810, 0 }, { NULL, 1, 1, 0x804, 0 }, { NULL, 1, 0, 0x800, 0 }, { NULL, 1, 29, 0x87C, 0 }, { NULL, 2, 22, 0x8E0, 0 }, { NULL, 2, 24, 0x8E8, 0 }, { NULL, 2, 23, 0x8E4, 0 }, { NULL, 2, 25, 0x8EC, 0 }, { NULL, 0, 10, 0x8D8, 0 }, { NULL, 0, 11, 0x8DC, 0 }, { NULL, 0, 9, 0x8D4, 0 }, { NULL, 2, 17, 0x8CC, 0 }, { NULL, 0, 8, 0x8D0, 0 }, { NULL, 2, 16, 0x8C8, 0 }, { NULL, 2, 14, 0x8C0, 0 }, { NULL, 2, 15, 0x8C4, 0 }, { NULL, 2, 12, 0x8B8, 0 }, { NULL, 2, 13, 0x8BC, 0 }, { NULL, 2, 10, 0x8B0, 0 }, { NULL, 2, 11, 0x8B4, 0 }, { NULL, 2, 8, 0x8A8, 0 }, { NULL, 2, 9, 0x8AC, 0 }, { NULL, 2, 6, 0x8A0, 0 }, { NULL, 2, 7, 0x8A4, 0 } };
bb_gpio_pin p9_pins[47] = {
{ NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, 0, 30, 0x870, 0 }, { NULL, 1, 28, 0x878, 0 }, { NULL, 0, 31, 0x874, 0 }, { NULL, 1, 18, 0x848, 0 }, { NULL, 1, 16, 0x840, 0 }, { NULL, 1, 19, 0x84C, 0 }, { NULL, 0, 5, 0x95C, 0 }, { NULL, 0, 4, 0x958, 0 }, { NULL, 0, 13, 0x97C, 0 }, { NULL, 0, 12, 0x978, 0 }, { NULL, 0, 3, 0x954, 0 }, { NULL, 0, 2, 0x950, 0 }, { NULL, 1, 17, 0x844, 0 }, { NULL, 0, 15, 0x984, 0 }, { NULL, 3, 21, 0x9AC, 0 }, { NULL, 0, 14, 0x980, 0 }, { NULL, 3, 19, 0x9A4, 0 }, { NULL, 3, 17, 0x99C, 0 }, { NULL, 3, 15, 0x994, 0 }, { NULL, 3, 16, 0x998, 0 }, { NULL, 3, 14, 0x990, 0 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, 0, 20, 0x9B4, 0 }, { NULL, 0, 7, 0x964, 0 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, { NULL, -1, -1, -1, 1 }, };
#endif