[INKA4x0] NG hardware: flash support
[platform/kernel/u-boot.git] / cpu / at32ap / at32ap7000 / gpio.c
1 /*
2  * Copyright (C) 2006 Atmel Corporation
3  *
4  * See file CREDITS for list of people who contributed to this
5  * project.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation; either version 2 of
10  * the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20  * MA 02111-1307 USA
21  */
22 #include <common.h>
23
24 #include <asm/arch/gpio.h>
25
26 /*
27  * Lots of small functions here. We depend on --gc-sections getting
28  * rid of the ones we don't need.
29  */
30 void gpio_enable_ebi(void)
31 {
32 #ifdef CFG_HSDRAMC
33 #ifndef CFG_SDRAM_16BIT
34         gpio_select_periph_A(GPIO_PIN_PE0, 0);
35         gpio_select_periph_A(GPIO_PIN_PE1, 0);
36         gpio_select_periph_A(GPIO_PIN_PE2, 0);
37         gpio_select_periph_A(GPIO_PIN_PE3, 0);
38         gpio_select_periph_A(GPIO_PIN_PE4, 0);
39         gpio_select_periph_A(GPIO_PIN_PE5, 0);
40         gpio_select_periph_A(GPIO_PIN_PE6, 0);
41         gpio_select_periph_A(GPIO_PIN_PE7, 0);
42         gpio_select_periph_A(GPIO_PIN_PE8, 0);
43         gpio_select_periph_A(GPIO_PIN_PE9, 0);
44         gpio_select_periph_A(GPIO_PIN_PE10, 0);
45         gpio_select_periph_A(GPIO_PIN_PE11, 0);
46         gpio_select_periph_A(GPIO_PIN_PE12, 0);
47         gpio_select_periph_A(GPIO_PIN_PE13, 0);
48         gpio_select_periph_A(GPIO_PIN_PE14, 0);
49         gpio_select_periph_A(GPIO_PIN_PE15, 0);
50 #endif
51         gpio_select_periph_A(GPIO_PIN_PE26, 0);
52 #endif
53 }
54
55 void gpio_enable_usart0(void)
56 {
57         gpio_select_periph_B(GPIO_PIN_PA8, 0);
58         gpio_select_periph_B(GPIO_PIN_PA9, 0);
59 }
60
61 void gpio_enable_usart1(void)
62 {
63         gpio_select_periph_A(GPIO_PIN_PA17, 0);
64         gpio_select_periph_A(GPIO_PIN_PA18, 0);
65 }
66
67 void gpio_enable_usart2(void)
68 {
69         gpio_select_periph_B(GPIO_PIN_PB26, 0);
70         gpio_select_periph_B(GPIO_PIN_PB27, 0);
71 }
72
73 void gpio_enable_usart3(void)
74 {
75         gpio_select_periph_B(GPIO_PIN_PB18, 0);
76         gpio_select_periph_B(GPIO_PIN_PB19, 0);
77 }
78
79 void gpio_enable_macb0(void)
80 {
81         gpio_select_periph_A(GPIO_PIN_PC3,  0); /* TXD0 */
82         gpio_select_periph_A(GPIO_PIN_PC4,  0); /* TXD1 */
83         gpio_select_periph_A(GPIO_PIN_PC7,  0); /* TXEN */
84         gpio_select_periph_A(GPIO_PIN_PC8,  0); /* TXCK */
85         gpio_select_periph_A(GPIO_PIN_PC9,  0); /* RXD0 */
86         gpio_select_periph_A(GPIO_PIN_PC10, 0); /* RXD1 */
87         gpio_select_periph_A(GPIO_PIN_PC13, 0); /* RXER */
88         gpio_select_periph_A(GPIO_PIN_PC15, 0); /* RXDV */
89         gpio_select_periph_A(GPIO_PIN_PC16, 0); /* MDC  */
90         gpio_select_periph_A(GPIO_PIN_PC17, 0); /* MDIO */
91 #if !defined(CONFIG_RMII)
92         gpio_select_periph_A(GPIO_PIN_PC0,  0); /* COL  */
93         gpio_select_periph_A(GPIO_PIN_PC1,  0); /* CRS  */
94         gpio_select_periph_A(GPIO_PIN_PC2,  0); /* TXER */
95         gpio_select_periph_A(GPIO_PIN_PC5,  0); /* TXD2 */
96         gpio_select_periph_A(GPIO_PIN_PC6,  0); /* TXD3 */
97         gpio_select_periph_A(GPIO_PIN_PC11, 0); /* RXD2 */
98         gpio_select_periph_A(GPIO_PIN_PC12, 0); /* RXD3 */
99         gpio_select_periph_A(GPIO_PIN_PC14, 0); /* RXCK */
100         gpio_select_periph_A(GPIO_PIN_PC18, 0); /* SPD  */
101 #endif
102 }
103
104 void gpio_enable_macb1(void)
105 {
106         gpio_select_periph_B(GPIO_PIN_PD13, 0); /* TXD0 */
107         gpio_select_periph_B(GPIO_PIN_PD14, 0); /* TXD1 */
108         gpio_select_periph_B(GPIO_PIN_PD11, 0); /* TXEN */
109         gpio_select_periph_B(GPIO_PIN_PD12, 0); /* TXCK */
110         gpio_select_periph_B(GPIO_PIN_PD10, 0); /* RXD0 */
111         gpio_select_periph_B(GPIO_PIN_PD6,  0); /* RXD1 */
112         gpio_select_periph_B(GPIO_PIN_PD5,  0); /* RXER */
113         gpio_select_periph_B(GPIO_PIN_PD4,  0); /* RXDV */
114         gpio_select_periph_B(GPIO_PIN_PD3,  0); /* MDC  */
115         gpio_select_periph_B(GPIO_PIN_PD2,  0); /* MDIO */
116 #if !defined(CONFIG_RMII)
117         gpio_select_periph_B(GPIO_PIN_PC19, 0); /* COL  */
118         gpio_select_periph_B(GPIO_PIN_PC23, 0); /* CRS  */
119         gpio_select_periph_B(GPIO_PIN_PC26, 0); /* TXER */
120         gpio_select_periph_B(GPIO_PIN_PC27, 0); /* TXD2 */
121         gpio_select_periph_B(GPIO_PIN_PC28, 0); /* TXD3 */
122         gpio_select_periph_B(GPIO_PIN_PC29, 0); /* RXD2 */
123         gpio_select_periph_B(GPIO_PIN_PC30, 0); /* RXD3 */
124         gpio_select_periph_B(GPIO_PIN_PC24, 0); /* RXCK */
125         gpio_select_periph_B(GPIO_PIN_PD15, 0); /* SPD  */
126 #endif
127 }
128
129 void gpio_enable_mmci(void)
130 {
131         gpio_select_periph_A(GPIO_PIN_PA10, 0); /* CLK   */
132         gpio_select_periph_A(GPIO_PIN_PA11, 0); /* CMD   */
133         gpio_select_periph_A(GPIO_PIN_PA12, 0); /* DATA0 */
134         gpio_select_periph_A(GPIO_PIN_PA13, 0); /* DATA1 */
135         gpio_select_periph_A(GPIO_PIN_PA14, 0); /* DATA2 */
136         gpio_select_periph_A(GPIO_PIN_PA15, 0); /* DATA3 */
137 }