]> rtime.felk.cvut.cz Git - pes-rpp/rpp-test-sw.git/blob - include/gio.h
Rewritten for using one task and direct usage of interrupts
[pes-rpp/rpp-test-sw.git] / include / gio.h
1 /** @file gio.h\r
2 *   @brief GIO Driver Definition File\r
3 *   @date 15.Mar.2012\r
4 *   @version 03.01.00\r
5 *   \r
6 */\r
7 \r
8 /* (c) Texas Instruments 2009-2012, All rights reserved. */\r
9 \r
10 #include "sys_common.h"\r
11 \r
12 #ifndef __GIO_H__\r
13 #define __GIO_H__\r
14 \r
15 /** @struct gioBase\r
16 *   @brief GIO Base Register Definition\r
17 *\r
18 *   This structure is used to access the GIO module egisters.\r
19 */\r
20 /** @typedef gioBASE_t\r
21 *   @brief GIO Register Frame Type Definition\r
22 *\r
23 *   This type is used to access the GIO Registers.\r
24 */\r
25 typedef volatile struct gioBase\r
26 {\r
27     uint32_t GCR0;      /**< 0x0000: Global Control Register */\r
28     uint32_t PWDN;      /**< 0x0004: Power Down Register */\r
29     uint32_t INTDET;    /**< 0x0008: Interrupt Detect Regsiter*/\r
30     uint32_t POL;       /**< 0x000C: Interrupt Polarity Register */\r
31     uint32_t INTENASET; /**< 0x0010: Interrupt Enable Set Register */\r
32     uint32_t INTENACLR; /**< 0x0014: Interrupt Enable Clear Register */\r
33     uint32_t LVLSET;    /**< 0x0018: Interrupt Priority Set Register */\r
34     uint32_t LVLCLR;    /**< 0x001C: Interrupt Priority Clear Register */\r
35     uint32_t FLG;       /**< 0x0020: Interrupt Flag Register */\r
36     uint32_t OFFSET0;   /**< 0x0024: Interrupt Offset A Register */\r
37     uint32_t OFFSET1;   /**< 0x0028: Interrupt Offset B Register */\r
38 } gioBASE_t;\r
39 \r
40 \r
41 /** @struct gioPort\r
42 *   @brief GIO Port Register Definition\r
43 */\r
44 /** @typedef gioPORT_t\r
45 *   @brief GIO Port Register Type Definition\r
46 *\r
47 *   This type is used to access the GIO Port Registers.\r
48 */\r
49 typedef volatile struct gioPort\r
50 {\r
51     uint32_t DIR;    /**< 0x0000: Data Direction Register */\r
52     uint32_t DIN;    /**< 0x0004: Data Input Register */\r
53     uint32_t DOUT;   /**< 0x0008: Data Output Register */\r
54     uint32_t DSET;   /**< 0x000C: Data Output Set Register */\r
55     uint32_t DCLR;   /**< 0x0010: Data Output Clear Register */\r
56     uint32_t PDR;    /**< 0x0014: Open Drain Regsiter */\r
57     uint32_t PULDIS; /**< 0x0018: Pullup Disable Register */\r
58     uint32_t PSL;    /**< 0x001C: Pull Up/Down Selection Register */\r
59 } gioPORT_t;\r
60 \r
61 \r
62 /** @def gioREG\r
63 *   @brief GIO Register Frame Pointer\r
64 *\r
65 *   This pointer is used by the GIO driver to access the gio module registers.\r
66 */\r
67 #define gioREG   ((gioBASE_t *)0xFFF7BC00U)\r
68 \r
69 /** @def gioPORTA\r
70 *   @brief GIO Port (A) Register Pointer\r
71 *\r
72 *   Pointer used by the GIO driver to access PORTA\r
73 */\r
74 #define gioPORTA ((gioPORT_t *)0xFFF7BC34U)\r
75 \r
76 /** @def gioPORTB\r
77 *   @brief GIO Port (B) Register Pointer\r
78 *\r
79 *   Pointer used by the GIO driver to access PORTB\r
80 */\r
81 #define gioPORTB ((gioPORT_t *)0xFFF7BC54U)\r
82 \r
83 \r
84 /* GIO Interface Functions */\r
85 void gioInit(void);\r
86 void gioSetDirection(gioPORT_t *port, uint32_t dir);\r
87 void gioSetBit(gioPORT_t *port, uint32_t bit, uint32_t value);\r
88 void gioSetPort(gioPORT_t *port, uint32_t value);\r
89 uint32_t gioGetBit(gioPORT_t *port, uint32_t bit);\r
90 uint32_t gioGetPort(gioPORT_t *port);\r
91 void gioToggleBit(gioPORT_t *port, uint32_t bit);\r
92 void gioEnableNotification(uint32_t bit);\r
93 void gioDisableNotification(uint32_t bit);\r
94 void gioNotification(int bit);\r
95 \r
96 #endif\r