]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/karo/tx6q/spl_boot.c
TX6 Release 2013-04-22
[karo-tx-uboot.git] / board / karo / tx6q / spl_boot.c
1 /*
2  * Copyright (C) 2011 Lothar Waßmann <LW@KARO-electronics.de>
3  * based on: board/freesclae/mx28_evk.c (C) 2010 Freescale Semiconductor, Inc.
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  */
23
24 #include <common.h>
25 #include <config.h>
26 #include <asm/io.h>
27 #include <asm/gpio.h>
28 #include <asm/arch/iomux-mx6.h>
29 #include <asm/arch/imx-regs.h>
30 #include <asm/arch/sys_proto.h>
31
32 #define MUX_CONFIG_LED  MX6_PAD_CTL_DSE_80ohm
33 #define MUX_CONFIG_LCD  (MX6_PAD_CTL_SPEED_HIGH | MX6_PAD_CTL_SRE_FAST | \
34                                 MX6_PAD_CTL_DSE_80ohm)
35 #define MUX_CONFIG_TSC  (MX6_PAD_CTL_SRE_FAST | MX6_PAD_CTL_DSE_80ohm | \
36                                 MX6_PAD_CTL_PUS_47K_UP)
37 #define MUX_CONFIG_GPMI MX6_PAD_CTL_DSE_80ohm
38 #define MUX_CONFIG_EMI  MX6Q_HIGH_DRV
39 #define MUX_CONFIG_GPIO MX6_PAD_CTL_PUS_47K_UP
40
41 static iomux_v3_cfg_t tx6q_stk5_pads[] = {
42         /* LED */
43         MX6Q_PAD_EIM_A18__GPIO_2_20,
44
45         /* framebuffer */
46         MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0,
47         MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1,
48         MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2,
49         MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3,
50         MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4,
51         MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5,
52         MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6,
53         MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7,
54         MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8,
55         MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9,
56         MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10,
57         MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11,
58         MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12,
59         MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13,
60         MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14,
61         MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15,
62         MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16,
63         MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17,
64         MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18,
65         MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19,
66         MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20,
67         MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21,
68         MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22,
69         MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23,
70         MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3, /* LCD VSYNC */
71         MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2, /* LCD HSYNC */
72         MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK, /* LCD DOTCLK */
73         MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15, /* LCD OE/ACD */
74
75         /* UART1 pads */
76         MX6Q_PAD_SD3_DAT7__UART1_TXD,
77         MX6Q_PAD_SD3_DAT6__UART1_RXD,
78         MX6Q_PAD_SD3_DAT1__UART1_RTS,
79         MX6Q_PAD_SD3_DAT0__UART1_CTS,
80
81         /* EMI */
82         MX6_PAD_EMI_D00__EMI_DATA0,
83         MX6_PAD_EMI_D01__EMI_DATA1,
84         MX6_PAD_EMI_D02__EMI_DATA2,
85         MX6_PAD_EMI_D03__EMI_DATA3,
86         MX6_PAD_EMI_D04__EMI_DATA4,
87         MX6_PAD_EMI_D05__EMI_DATA5,
88         MX6_PAD_EMI_D06__EMI_DATA6,
89         MX6_PAD_EMI_D07__EMI_DATA7,
90         MX6_PAD_EMI_D08__EMI_DATA8,
91         MX6_PAD_EMI_D09__EMI_DATA9,
92         MX6_PAD_EMI_D10__EMI_DATA10,
93         MX6_PAD_EMI_D11__EMI_DATA11,
94         MX6_PAD_EMI_D12__EMI_DATA12,
95         MX6_PAD_EMI_D13__EMI_DATA13,
96         MX6_PAD_EMI_D14__EMI_DATA14,
97         MX6_PAD_EMI_D15__EMI_DATA15,
98         MX6_PAD_EMI_ODT0__EMI_ODT0,
99         MX6_PAD_EMI_DQM0__EMI_DQM0,
100         MX6_PAD_EMI_ODT1__EMI_ODT1,
101         MX6_PAD_EMI_DQM1__EMI_DQM1,
102         MX6_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK,
103         MX6_PAD_EMI_CLK__EMI_CLK,
104         MX6_PAD_EMI_DQS0__EMI_DQS0,
105         MX6_PAD_EMI_DQS1__EMI_DQS1,
106         MX6_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN,
107
108         MX6_PAD_EMI_A00__EMI_ADDR0,
109         MX6_PAD_EMI_A01__EMI_ADDR1,
110         MX6_PAD_EMI_A02__EMI_ADDR2,
111         MX6_PAD_EMI_A03__EMI_ADDR3,
112         MX6_PAD_EMI_A04__EMI_ADDR4,
113         MX6_PAD_EMI_A05__EMI_ADDR5,
114         MX6_PAD_EMI_A06__EMI_ADDR6,
115         MX6_PAD_EMI_A07__EMI_ADDR7,
116         MX6_PAD_EMI_A08__EMI_ADDR8,
117         MX6_PAD_EMI_A09__EMI_ADDR9,
118         MX6_PAD_EMI_A10__EMI_ADDR10,
119         MX6_PAD_EMI_A11__EMI_ADDR11,
120         MX6_PAD_EMI_A12__EMI_ADDR12,
121         MX6_PAD_EMI_A13__EMI_ADDR13,
122         MX6_PAD_EMI_A14__EMI_ADDR14,
123         MX6_PAD_EMI_BA0__EMI_BA0,
124         MX6_PAD_EMI_BA1__EMI_BA1,
125         MX6_PAD_EMI_BA2__EMI_BA2,
126         MX6_PAD_EMI_CASN__EMI_CASN,
127         MX6_PAD_EMI_RASN__EMI_RASN,
128         MX6_PAD_EMI_WEN__EMI_WEN,
129         MX6_PAD_EMI_CE0N__EMI_CE0N,
130         MX6_PAD_EMI_CE1N__EMI_CE1N,
131         MX6_PAD_EMI_CKE__EMI_CKE,
132
133         /* FEC pads */
134         MX6_PAD_PWM4__GPIO_3_29,
135         MX6_PAD_ENET0_RX_CLK__GPIO_4_13,
136         MX6_PAD_ENET0_MDC__ENET0_MDC,
137         MX6_PAD_ENET0_MDIO__ENET0_MDIO,
138         MX6_PAD_ENET0_RX_EN__GPIO_4_2,  /* COL/CRS_DV/MODE2 */
139         MX6_PAD_ENET0_RXD0__GPIO_4_3,   /* RXD0/MODE0 */
140         MX6_PAD_ENET0_RXD1__GPIO_4_4,   /* RXD1/MODE1 */
141         MX6_PAD_ENET0_TX_CLK__GPIO_4_5, /* nINT/TX_ER/TXD4 */
142         MX6_PAD_ENET0_TX_EN__ENET0_TX_EN,
143         MX6_PAD_ENET0_TXD0__ENET0_TXD0,
144         MX6_PAD_ENET0_TXD1__ENET0_TXD1,
145         MX6_PAD_ENET_CLK__CLKCTRL_ENET,
146
147         /* MMC pads */
148         MX6_PAD_SSP0_DATA0__SSP0_D0,
149         MX6_PAD_SSP0_DATA1__SSP0_D1,
150         MX6_PAD_SSP0_DATA2__SSP0_D2,
151         MX6_PAD_SSP0_DATA3__SSP0_D3,
152         MX6_PAD_SSP0_CMD__SSP0_CMD,
153         MX6_PAD_SSP0_DETECT__SSP0_CARD_DETECT,
154         MX6_PAD_SSP0_SCK__SSP0_SCK,
155
156         /* GPMI pads */
157         MX6_PAD_GPMI_D00__GPMI_D0,
158         MX6_PAD_GPMI_D01__GPMI_D1,
159         MX6_PAD_GPMI_D02__GPMI_D2,
160         MX6_PAD_GPMI_D03__GPMI_D3,
161         MX6_PAD_GPMI_D04__GPMI_D4,
162         MX6_PAD_GPMI_D05__GPMI_D5,
163         MX6_PAD_GPMI_D06__GPMI_D6,
164         MX6_PAD_GPMI_D07__GPMI_D7,
165         MX6_PAD_GPMI_CE0N__GPMI_CE0N,
166         MX6_PAD_GPMI_RDY0__GPMI_READY0,
167         MX6_PAD_GPMI_RDN__GPMI_RDN,
168         MX6_PAD_GPMI_WRN__GPMI_WRN,
169         MX6_PAD_GPMI_ALE__GPMI_ALE,
170         MX6_PAD_GPMI_CLE__GPMI_CLE,
171         MX6_PAD_GPMI_RESETN__GPMI_RESETN,
172
173         /* maybe used for EDT-FT5x06 */
174         MX6_PAD_SSP0_DATA5__GPIO_2_5,
175         MX6_PAD_SSP0_DATA6__GPIO_2_6,
176         MX6_PAD_ENET0_RXD2__GPIO_4_9,
177
178         /* unused pads */
179         MX6_PAD_GPMI_RDY1__GPIO_0_21,
180         MX6_PAD_GPMI_RDY2__GPIO_0_22,
181         MX6_PAD_GPMI_RDY3__GPIO_0_23,
182         MX6_PAD_GPMI_CE1N__GPIO_0_17,
183         MX6_PAD_GPMI_CE2N__GPIO_0_18,
184         MX6_PAD_GPMI_CE3N__GPIO_0_19,
185
186         MX6_PAD_SSP0_DATA4__GPIO_2_4,
187         MX6_PAD_SSP0_DATA7__GPIO_2_7,
188
189         MX6_PAD_SSP2_SS0__GPIO_2_19,
190         MX6_PAD_SSP2_SS1__GPIO_2_20,
191         MX6_PAD_SSP2_SS2__GPIO_2_21,
192         MX6_PAD_SSP3_SS0__GPIO_2_27,
193
194         MX6_PAD_ENET0_TXD2__GPIO_4_11,
195         MX6_PAD_ENET0_TXD3__GPIO_4_12,
196         MX6_PAD_ENET0_CRS__GPIO_4_15,
197 };
198
199 static void tx6q_stk5_lcd_init(void)
200 {
201         gpio_direction_output(MX6_PAD_PWM0__GPIO_3_16, 1);
202         gpio_direction_output(MX6_PAD_LCD_RESET__GPIO_3_30, 0);
203         gpio_direction_output(MX6_PAD_LCD_ENABLE__GPIO_1_31, 0);
204 }
205
206 static void tx6q_stk5_led_on(void)
207 {
208         gpio_direction_output(MX6Q_PAD_EIM_A18__GPIO_2_20, 1);
209 }
210
211 void board_init_ll(void)
212 {
213         mx6_common_spl_init(tx6q_stk5_pads, ARRAY_SIZE(tx6q_stk5_pads));
214         tx6q_stk5_lcd_init();
215         tx6q_stk5_led_on();
216 }