-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathusbstk5515_gpio.c
102 lines (87 loc) · 3.82 KB
/
usbstk5515_gpio.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* Copyright 2010 by Spectrum Digital Incorporated.
* All rights reserved. Property of Spectrum Digital Incorporated.
*/
/*
* GPIO implementation
*
*/
#include "usbstk5515_gpio.h"
/* ------------------------------------------------------------------------ *
* *
* _GPIO_init( ) *
* *
* ------------------------------------------------------------------------ */
Int16 USBSTK5515_GPIO_init()
{
return 0;
}
/* ------------------------------------------------------------------------ *
* *
* _GPIO_setDirection( number, direction ) *
* *
* number <- GPIO# *
* direction <- 1:OUT 0:IN *
* *
* ------------------------------------------------------------------------ */
Int16 USBSTK5515_GPIO_setDirection( Uint16 number, Uint16 direction )
{
Uint32 bank_id = ( number >> 4);
Uint32 pin_id = ( 1 << ( number & 0xF ) );
if (bank_id == 0)
if ((direction & 1) == GPIO_IN)
SYS_GPIO_DIR0 &= ~pin_id;
else
SYS_GPIO_DIR0 |= pin_id;
if (bank_id == 1)
if ((direction & 1) == GPIO_IN)
SYS_GPIO_DIR1 &= ~pin_id;
else
SYS_GPIO_DIR1 |= pin_id;
return 0;
}
/* ------------------------------------------------------------------------ *
* *
* _GPIO_setOutput( number, output ) *
* *
* number <- GPIO# *
* value <- 0:LOW 1:HIGH *
* *
* ------------------------------------------------------------------------ */
Int16 USBSTK5515_GPIO_setOutput( Uint16 number, Uint16 output )
{
Uint32 bank_id = ( number >> 4 );
Uint32 pin_id = ( 1 << ( number & 0xF ) );
if (bank_id == 0)
if ((output & 1) == 0)
SYS_GPIO_DATAOUT0 &= ~pin_id;
else
SYS_GPIO_DATAOUT0 |= pin_id;
if (bank_id == 1)
if ((output & 1) == 0)
SYS_GPIO_DATAOUT1 &= ~pin_id;
else
SYS_GPIO_DATAOUT1 |= pin_id;
return 0;
}
/* ------------------------------------------------------------------------ *
* *
* _GPIO_getInput( number ) *
* *
* number <- GPIO# *
* *
* Returns: 0:LOW *
* 1:HIGH *
* *
* ------------------------------------------------------------------------ */
Int16 USBSTK5515_GPIO_getInput( Uint16 number )
{
Uint32 input;
Uint32 bank_id = ( number >> 4 );
Uint32 pin_id = ( number & 0xF );
if (bank_id == 0)
input = (SYS_GPIO_DATAIN0 >> pin_id) & 1;
if (bank_id == 1)
input = (SYS_GPIO_DATAIN1 >> pin_id) & 1;
return input;
}