1 /*-
2  * Copyright (c) 2006 M. Warner Losh.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  */
25 
26 /* $FreeBSD: stable/9/sys/arm/at91/at91_pioreg.h 213496 2010-10-06 22:25:21Z cognet $ */
27 
28 #ifndef ARM_AT91_AT91_PIOREG_H
29 #define ARM_AT91_AT91_PIOREG_H
30 
31 /* Registers */
32 #define PIO_PER		0x00		/* PIO Enable Register */
33 #define PIO_PDR		0x04		/* PIO Disable Register */
34 #define PIO_PSR		0x08		/* PIO Status Register */
35 		/*	0x0c		   reserved */
36 #define PIO_OER		0x10		/* PIO Output Enable Register */
37 #define PIO_ODR		0x14		/* PIO Output Disable Register */
38 #define PIO_OSR		0x18		/* PIO Output Status Register */
39 		/*	0x1c		   reserved */
40 #define PIO_IFER	0x20		/* PIO Glitch Input Enable Register */
41 #define PIO_IFDR	0x24		/* PIO Glitch Input Disable Register */
42 #define PIO_IFSR	0x28		/* PIO Glitch Input Status Register */
43 		/*	0x2c		   reserved */
44 #define PIO_SODR	0x30		/* PIO Set Output Data Register */
45 #define PIO_CODR	0x34		/* PIO Clear Output Data Register */
46 #define PIO_ODSR	0x38		/* PIO Output Data Status Register */
47 #define PIO_PDSR	0x3c		/* PIO Pin Data Status Register */
48 #define PIO_IER		0x40		/* PIO Interrupt Enable Register */
49 #define PIO_IDR		0x44		/* PIO Interrupt Disable Register */
50 #define PIO_IMR		0x48		/* PIO Interrupt Mask Register */
51 #define PIO_ISR		0x4c		/* PIO Interrupt Status Register */
52 #define PIO_MDER	0x50		/* PIO Multi-Driver Enable Register */
53 #define PIO_MDDR	0x54		/* PIO Multi-Driver Disable Register */
54 #define PIO_MDSR	0x58		/* PIO Multi-Driver Status Register */
55 		/*	0x5c		   reserved */
56 #define PIO_PUDR	0x60		/* PIO Pull-up Disable Register */
57 #define PIO_PUER	0x64		/* PIO Pull-up Enable Register */
58 #define PIO_PUSR	0x68		/* PIO Pull-up Status Register */
59 		/*	0x6c		   reserved */
60 #define PIO_ASR		0x70		/* PIO Peripheral A Select Register */
61 #define PIO_BSR		0x74		/* PIO Peripheral B Select Register */
62 #define PIO_ABSR	0x78		/* PIO AB Status Register */
63 		/*	0x7c-0x9c	   reserved */
64 #define PIO_OWER	0xa0		/* PIO Output Write Enable Register */
65 #define PIO_OWDR	0xa4		/* PIO Output Write Disable Register */
66 #define PIO_OWSR	0xa8		/* PIO Output Write Status Register */
67 		/*	0xac		   reserved */
68 
69 #define AT91C_PIO_PA0        ((unsigned int) 1 <<  0) // Pin Controlled by PA0
70 #define AT91C_PIO_PA1        ((unsigned int) 1 <<  1) // Pin Controlled by PA1
71 #define AT91C_PIO_PA2        ((unsigned int) 1 <<  2) // Pin Controlled by PA2
72 #define AT91C_PIO_PA3        ((unsigned int) 1 <<  3) // Pin Controlled by PA3
73 #define AT91C_PIO_PA4        ((unsigned int) 1 <<  4) // Pin Controlled by PA4
74 #define AT91C_PIO_PA5        ((unsigned int) 1 <<  5) // Pin Controlled by PA5
75 #define AT91C_PIO_PA6        ((unsigned int) 1 <<  6) // Pin Controlled by PA6
76 #define AT91C_PIO_PA7        ((unsigned int) 1 <<  7) // Pin Controlled by PA7
77 #define AT91C_PIO_PA8        ((unsigned int) 1 <<  8) // Pin Controlled by PA8
78 #define AT91C_PIO_PA9        ((unsigned int) 1 <<  9) // Pin Controlled by PA9
79 #define AT91C_PIO_PA10       ((unsigned int) 1 << 10) // Pin Controlled by PA10
80 #define AT91C_PIO_PA11       ((unsigned int) 1 << 11) // Pin Controlled by PA11
81 #define AT91C_PIO_PA12       ((unsigned int) 1 << 12) // Pin Controlled by PA12
82 #define AT91C_PIO_PA13       ((unsigned int) 1 << 13) // Pin Controlled by PA13
83 #define AT91C_PIO_PA14       ((unsigned int) 1 << 14) // Pin Controlled by PA14
84 #define AT91C_PIO_PA15       ((unsigned int) 1 << 15) // Pin Controlled by PA15
85 #define AT91C_PIO_PA16       ((unsigned int) 1 << 16) // Pin Controlled by PA16
86 #define AT91C_PIO_PA17       ((unsigned int) 1 << 17) // Pin Controlled by PA17
87 #define AT91C_PIO_PA18       ((unsigned int) 1 << 18) // Pin Controlled by PA18
88 #define AT91C_PIO_PA19       ((unsigned int) 1 << 19) // Pin Controlled by PA19
89 #define AT91C_PIO_PA20       ((unsigned int) 1 << 20) // Pin Controlled by PA20
90 #define AT91C_PIO_PA21       ((unsigned int) 1 << 21) // Pin Controlled by PA21
91 #define AT91C_PIO_PA22       ((unsigned int) 1 << 22) // Pin Controlled by PA22
92 #define AT91C_PIO_PA23       ((unsigned int) 1 << 23) // Pin Controlled by PA23
93 #define AT91C_PIO_PA24       ((unsigned int) 1 << 24) // Pin Controlled by PA24
94 #define AT91C_PIO_PA25       ((unsigned int) 1 << 25) // Pin Controlled by PA25
95 #define AT91C_PIO_PA26       ((unsigned int) 1 << 26) // Pin Controlled by PA26
96 #define AT91C_PIO_PA27       ((unsigned int) 1 << 27) // Pin Controlled by PA27
97 #define AT91C_PIO_PA28       ((unsigned int) 1 << 28) // Pin Controlled by PA28
98 #define AT91C_PIO_PA29       ((unsigned int) 1 << 29) // Pin Controlled by PA29
99 #define AT91C_PIO_PA30       ((unsigned int) 1 << 30) // Pin Controlled by PA30
100 #define AT91C_PIO_PA31       ((unsigned int) 1 << 31) // Pin Controlled by PA31
101 #define AT91C_PIO_PB0        ((unsigned int) 1 <<  0) // Pin Controlled by PB0
102 #define AT91C_PIO_PB1        ((unsigned int) 1 <<  1) // Pin Controlled by PB1
103 #define AT91C_PIO_PB2        ((unsigned int) 1 <<  2) // Pin Controlled by PB2
104 #define AT91C_PIO_PB3        ((unsigned int) 1 <<  3) // Pin Controlled by PB3
105 #define AT91C_PIO_PB4        ((unsigned int) 1 <<  4) // Pin Controlled by PB4
106 #define AT91C_PIO_PB5        ((unsigned int) 1 <<  5) // Pin Controlled by PB5
107 #define AT91C_PIO_PB6        ((unsigned int) 1 <<  6) // Pin Controlled by PB6
108 #define AT91C_PIO_PB7        ((unsigned int) 1 <<  7) // Pin Controlled by PB7
109 #define AT91C_PIO_PB8        ((unsigned int) 1 <<  8) // Pin Controlled by PB8
110 #define AT91C_PIO_PB9        ((unsigned int) 1 <<  9) // Pin Controlled by PB9
111 #define AT91C_PIO_PB10       ((unsigned int) 1 << 10) // Pin Controlled by PB10
112 #define AT91C_PIO_PB11       ((unsigned int) 1 << 11) // Pin Controlled by PB11
113 #define AT91C_PIO_PB12       ((unsigned int) 1 << 12) // Pin Controlled by PB12
114 #define AT91C_PIO_PB13       ((unsigned int) 1 << 13) // Pin Controlled by PB13
115 #define AT91C_PIO_PB14       ((unsigned int) 1 << 14) // Pin Controlled by PB14
116 #define AT91C_PIO_PB15       ((unsigned int) 1 << 15) // Pin Controlled by PB15
117 #define AT91C_PIO_PB16       ((unsigned int) 1 << 16) // Pin Controlled by PB16
118 #define AT91C_PIO_PB17       ((unsigned int) 1 << 17) // Pin Controlled by PB17
119 #define AT91C_PIO_PB18       ((unsigned int) 1 << 18) // Pin Controlled by PB18
120 #define AT91C_PIO_PB19       ((unsigned int) 1 << 19) // Pin Controlled by PB19
121 #define AT91C_PIO_PB20       ((unsigned int) 1 << 20) // Pin Controlled by PB20
122 #define AT91C_PIO_PB21       ((unsigned int) 1 << 21) // Pin Controlled by PB21
123 #define AT91C_PIO_PB22       ((unsigned int) 1 << 22) // Pin Controlled by PB22
124 #define AT91C_PIO_PB23       ((unsigned int) 1 << 23) // Pin Controlled by PB23
125 #define AT91C_PIO_PB24       ((unsigned int) 1 << 24) // Pin Controlled by PB24
126 #define AT91C_PIO_PB25       ((unsigned int) 1 << 25) // Pin Controlled by PB25
127 #define AT91C_PIO_PB26       ((unsigned int) 1 << 26) // Pin Controlled by PB26
128 #define AT91C_PIO_PB27       ((unsigned int) 1 << 27) // Pin Controlled by PB27
129 #define AT91C_PIO_PB28       ((unsigned int) 1 << 28) // Pin Controlled by PB28
130 #define AT91C_PIO_PB29       ((unsigned int) 1 << 29) // Pin Controlled by PB29
131 #define AT91C_PIO_PB30       ((unsigned int) 1 << 30) // Pin Controlled by PB30
132 #define AT91C_PIO_PB31       ((unsigned int) 1 << 31) // Pin Controlled by PB31
133 #define AT91C_PIO_PC0        ((unsigned int) 1 <<  0) // Pin Controlled by PC0
134 #define AT91C_PIO_PC1        ((unsigned int) 1 <<  1) // Pin Controlled by PC1
135 #define AT91C_PIO_PC2        ((unsigned int) 1 <<  2) // Pin Controlled by PC2
136 #define AT91C_PIO_PC3        ((unsigned int) 1 <<  3) // Pin Controlled by PC3
137 #define AT91C_PIO_PC4        ((unsigned int) 1 <<  4) // Pin Controlled by PC4
138 #define AT91C_PIO_PC5        ((unsigned int) 1 <<  5) // Pin Controlled by PC5
139 #define AT91C_PIO_PC6        ((unsigned int) 1 <<  6) // Pin Controlled by PC6
140 #define AT91C_PIO_PC7        ((unsigned int) 1 <<  7) // Pin Controlled by PC7
141 #define AT91C_PIO_PC8        ((unsigned int) 1 <<  8) // Pin Controlled by PC8
142 #define AT91C_PIO_PC9        ((unsigned int) 1 <<  9) // Pin Controlled by PC9
143 #define AT91C_PIO_PC10       ((unsigned int) 1 << 10) // Pin Controlled by PC10
144 #define AT91C_PIO_PC11       ((unsigned int) 1 << 11) // Pin Controlled by PC11
145 #define AT91C_PIO_PC12       ((unsigned int) 1 << 12) // Pin Controlled by PC12
146 #define AT91C_PIO_PC13       ((unsigned int) 1 << 13) // Pin Controlled by PC13
147 #define AT91C_PIO_PC14       ((unsigned int) 1 << 14) // Pin Controlled by PC14
148 #define AT91C_PIO_PC15       ((unsigned int) 1 << 15) // Pin Controlled by PC15
149 #define AT91C_PIO_PC16       ((unsigned int) 1 << 16) // Pin Controlled by PC16
150 #define AT91C_PIO_PC17       ((unsigned int) 1 << 17) // Pin Controlled by PC17
151 #define AT91C_PIO_PC18       ((unsigned int) 1 << 18) // Pin Controlled by PC18
152 #define AT91C_PIO_PC19       ((unsigned int) 1 << 19) // Pin Controlled by PC19
153 #define AT91C_PIO_PC20       ((unsigned int) 1 << 20) // Pin Controlled by PC20
154 #define AT91C_PIO_PC21       ((unsigned int) 1 << 21) // Pin Controlled by PC21
155 #define AT91C_PIO_PC22       ((unsigned int) 1 << 22) // Pin Controlled by PC22
156 #define AT91C_PIO_PC23       ((unsigned int) 1 << 23) // Pin Controlled by PC23
157 #define AT91C_PIO_PC24       ((unsigned int) 1 << 24) // Pin Controlled by PC24
158 #define AT91C_PIO_PC25       ((unsigned int) 1 << 25) // Pin Controlled by PC25
159 #define AT91C_PIO_PC26       ((unsigned int) 1 << 26) // Pin Controlled by PC26
160 #define AT91C_PIO_PC27       ((unsigned int) 1 << 27) // Pin Controlled by PC27
161 #define AT91C_PIO_PC28       ((unsigned int) 1 << 28) // Pin Controlled by PC28
162 #define AT91C_PIO_PC29       ((unsigned int) 1 << 29) // Pin Controlled by PC29
163 #define AT91C_PIO_PC30       ((unsigned int) 1 << 30) // Pin Controlled by PC30
164 #define AT91C_PIO_PC31       ((unsigned int) 1 << 31) // Pin Controlled by PC31
165 
166 #endif /* ARM_AT91_AT91_PIOREG_H */
167