xref: /rk3399_rockchip-uboot/board/freescale/mx51evk/mx51evk.c (revision 68c07a0c215a64826ed13c2f9b00a6d3b298822e)
1c5fb70c9SStefano Babic /*
2c5fb70c9SStefano Babic  * (C) Copyright 2009 Freescale Semiconductor, Inc.
3c5fb70c9SStefano Babic  *
4c5fb70c9SStefano Babic  * See file CREDITS for list of people who contributed to this
5c5fb70c9SStefano Babic  * project.
6c5fb70c9SStefano Babic  *
7c5fb70c9SStefano Babic  * This program is free software; you can redistribute it and/or
8c5fb70c9SStefano Babic  * modify it under the terms of the GNU General Public License as
9c5fb70c9SStefano Babic  * published by the Free Software Foundation; either version 2 of
10c5fb70c9SStefano Babic  * the License, or (at your option) any later version.
11c5fb70c9SStefano Babic  *
12c5fb70c9SStefano Babic  * This program is distributed in the hope that it will be useful,
13c5fb70c9SStefano Babic  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14c5fb70c9SStefano Babic  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15c5fb70c9SStefano Babic  * GNU General Public License for more details.
16c5fb70c9SStefano Babic  *
17c5fb70c9SStefano Babic  * You should have received a copy of the GNU General Public License
18c5fb70c9SStefano Babic  * along with this program; if not, write to the Free Software
19c5fb70c9SStefano Babic  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20c5fb70c9SStefano Babic  * MA 02111-1307 USA
21c5fb70c9SStefano Babic  */
22c5fb70c9SStefano Babic 
23c5fb70c9SStefano Babic #include <common.h>
24c5fb70c9SStefano Babic #include <asm/io.h>
25c5fb70c9SStefano Babic #include <asm/arch/imx-regs.h>
26c5fb70c9SStefano Babic #include <asm/arch/mx51_pins.h>
27c5fb70c9SStefano Babic #include <asm/arch/iomux.h>
28c5fb70c9SStefano Babic #include <asm/errno.h>
29e4d34492SStefano Babic #include <asm/arch/sys_proto.h>
30c5fb70c9SStefano Babic #include <i2c.h>
31c5fb70c9SStefano Babic #include <mmc.h>
32c5fb70c9SStefano Babic #include <fsl_esdhc.h>
33c5fb70c9SStefano Babic #include "mx51evk.h"
34c5fb70c9SStefano Babic 
35c5fb70c9SStefano Babic DECLARE_GLOBAL_DATA_PTR;
36c5fb70c9SStefano Babic 
37c5fb70c9SStefano Babic static u32 system_rev;
38c5fb70c9SStefano Babic struct io_board_ctrl *mx51_io_board;
39c5fb70c9SStefano Babic 
40c5fb70c9SStefano Babic #ifdef CONFIG_FSL_ESDHC
41c5fb70c9SStefano Babic struct fsl_esdhc_cfg esdhc_cfg[2] = {
42*68c07a0cSStefano Babic 	{MMC_SDHC1_BASE_ADDR, 1},
43*68c07a0cSStefano Babic 	{MMC_SDHC2_BASE_ADDR, 1},
44c5fb70c9SStefano Babic };
45c5fb70c9SStefano Babic #endif
46c5fb70c9SStefano Babic 
47c5fb70c9SStefano Babic u32 get_board_rev(void)
48c5fb70c9SStefano Babic {
49c5fb70c9SStefano Babic 	return system_rev;
50c5fb70c9SStefano Babic }
51c5fb70c9SStefano Babic 
52c5fb70c9SStefano Babic int dram_init(void)
53c5fb70c9SStefano Babic {
54c5fb70c9SStefano Babic 	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
55c5fb70c9SStefano Babic 	gd->bd->bi_dram[0].size = get_ram_size((long *)PHYS_SDRAM_1,
56c5fb70c9SStefano Babic 			PHYS_SDRAM_1_SIZE);
57c5fb70c9SStefano Babic 	return 0;
58c5fb70c9SStefano Babic }
59c5fb70c9SStefano Babic 
60c5fb70c9SStefano Babic static void setup_iomux_uart(void)
61c5fb70c9SStefano Babic {
62c5fb70c9SStefano Babic 	unsigned int pad = PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE |
63c5fb70c9SStefano Babic 			PAD_CTL_PUE_PULL | PAD_CTL_DRV_HIGH;
64c5fb70c9SStefano Babic 
65c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_UART1_RXD, IOMUX_CONFIG_ALT0);
66c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_UART1_RXD, pad | PAD_CTL_SRE_FAST);
67c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_UART1_TXD, IOMUX_CONFIG_ALT0);
68c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_UART1_TXD, pad | PAD_CTL_SRE_FAST);
69c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_UART1_RTS, IOMUX_CONFIG_ALT0);
70c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_UART1_RTS, pad);
71c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_UART1_CTS, IOMUX_CONFIG_ALT0);
72c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_UART1_CTS, pad);
73c5fb70c9SStefano Babic }
74c5fb70c9SStefano Babic 
75c5fb70c9SStefano Babic static void setup_iomux_fec(void)
76c5fb70c9SStefano Babic {
77c5fb70c9SStefano Babic 	/*FEC_MDIO*/
78c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_EIM_EB2 , IOMUX_CONFIG_ALT3);
79c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_EIM_EB2 , 0x1FD);
80c5fb70c9SStefano Babic 
81c5fb70c9SStefano Babic 	/*FEC_MDC*/
82c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_CS3, IOMUX_CONFIG_ALT2);
83c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_CS3, 0x2004);
84c5fb70c9SStefano Babic 
85c5fb70c9SStefano Babic 	/* FEC RDATA[3] */
86c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_EIM_CS3, IOMUX_CONFIG_ALT3);
87c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_EIM_CS3, 0x180);
88c5fb70c9SStefano Babic 
89c5fb70c9SStefano Babic 	/* FEC RDATA[2] */
90c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_EIM_CS2, IOMUX_CONFIG_ALT3);
91c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_EIM_CS2, 0x180);
92c5fb70c9SStefano Babic 
93c5fb70c9SStefano Babic 	/* FEC RDATA[1] */
94c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_EIM_EB3, IOMUX_CONFIG_ALT3);
95c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_EIM_EB3, 0x180);
96c5fb70c9SStefano Babic 
97c5fb70c9SStefano Babic 	/* FEC RDATA[0] */
98c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_D9, IOMUX_CONFIG_ALT2);
99c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_D9, 0x2180);
100c5fb70c9SStefano Babic 
101c5fb70c9SStefano Babic 	/* FEC TDATA[3] */
102c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_CS6, IOMUX_CONFIG_ALT2);
103c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_CS6, 0x2004);
104c5fb70c9SStefano Babic 
105c5fb70c9SStefano Babic 	/* FEC TDATA[2] */
106c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_CS5, IOMUX_CONFIG_ALT2);
107c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_CS5, 0x2004);
108c5fb70c9SStefano Babic 
109c5fb70c9SStefano Babic 	/* FEC TDATA[1] */
110c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_CS4, IOMUX_CONFIG_ALT2);
111c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_CS4, 0x2004);
112c5fb70c9SStefano Babic 
113c5fb70c9SStefano Babic 	/* FEC TDATA[0] */
114c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_D8, IOMUX_CONFIG_ALT2);
115c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_D8, 0x2004);
116c5fb70c9SStefano Babic 
117c5fb70c9SStefano Babic 	/* FEC TX_EN */
118c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_CS7, IOMUX_CONFIG_ALT1);
119c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_CS7, 0x2004);
120c5fb70c9SStefano Babic 
121c5fb70c9SStefano Babic 	/* FEC TX_ER */
122c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_CS2, IOMUX_CONFIG_ALT2);
123c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_CS2, 0x2004);
124c5fb70c9SStefano Babic 
125c5fb70c9SStefano Babic 	/* FEC TX_CLK */
126c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_RDY_INT, IOMUX_CONFIG_ALT1);
127c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_RDY_INT, 0x2180);
128c5fb70c9SStefano Babic 
129c5fb70c9SStefano Babic 	/* FEC TX_COL */
130c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_RB2, IOMUX_CONFIG_ALT1);
131c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_RB2, 0x2180);
132c5fb70c9SStefano Babic 
133c5fb70c9SStefano Babic 	/* FEC RX_CLK */
134c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_RB3, IOMUX_CONFIG_ALT1);
135c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_RB3, 0x2180);
136c5fb70c9SStefano Babic 
137c5fb70c9SStefano Babic 	/* FEC RX_CRS */
138c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_EIM_CS5, IOMUX_CONFIG_ALT3);
139c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_EIM_CS5, 0x180);
140c5fb70c9SStefano Babic 
141c5fb70c9SStefano Babic 	/* FEC RX_ER */
142c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_EIM_CS4, IOMUX_CONFIG_ALT3);
143c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_EIM_CS4, 0x180);
144c5fb70c9SStefano Babic 
145c5fb70c9SStefano Babic 	/* FEC RX_DV */
146c5fb70c9SStefano Babic 	mxc_request_iomux(MX51_PIN_NANDF_D11, IOMUX_CONFIG_ALT2);
147c5fb70c9SStefano Babic 	mxc_iomux_set_pad(MX51_PIN_NANDF_D11, 0x2180);
148c5fb70c9SStefano Babic }
149c5fb70c9SStefano Babic 
150c5fb70c9SStefano Babic #ifdef CONFIG_FSL_ESDHC
151c5fb70c9SStefano Babic int board_mmc_getcd(u8 *cd, struct mmc *mmc)
152c5fb70c9SStefano Babic {
153c5fb70c9SStefano Babic 	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
154c5fb70c9SStefano Babic 
155c5fb70c9SStefano Babic 	if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR)
156c5fb70c9SStefano Babic 		*cd = readl(GPIO1_BASE_ADDR) & 0x01;
157c5fb70c9SStefano Babic 	else
158c5fb70c9SStefano Babic 		*cd = readl(GPIO1_BASE_ADDR) & 0x40;
159c5fb70c9SStefano Babic 
160c5fb70c9SStefano Babic 	return 0;
161c5fb70c9SStefano Babic }
162c5fb70c9SStefano Babic 
163c5fb70c9SStefano Babic int board_mmc_init(bd_t *bis)
164c5fb70c9SStefano Babic {
165c5fb70c9SStefano Babic 	u32 index;
166c5fb70c9SStefano Babic 	s32 status = 0;
167c5fb70c9SStefano Babic 
168c5fb70c9SStefano Babic 	for (index = 0; index < CONFIG_SYS_FSL_ESDHC_NUM;
169c5fb70c9SStefano Babic 			index++) {
170c5fb70c9SStefano Babic 		switch (index) {
171c5fb70c9SStefano Babic 		case 0:
172c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD1_CMD,
173c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
174c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD1_CLK,
175c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
176c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD1_DATA0,
177c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
178c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD1_DATA1,
179c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
180c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD1_DATA2,
181c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
182c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD1_DATA3,
183c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
184c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD1_CMD,
185c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_DRV_VOT_HIGH |
186c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE | PAD_CTL_47K_PU |
187c5fb70c9SStefano Babic 				PAD_CTL_PUE_PULL |
188c5fb70c9SStefano Babic 				PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
189c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD1_CLK,
190c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_DRV_VOT_HIGH |
191c5fb70c9SStefano Babic 				PAD_CTL_HYS_NONE | PAD_CTL_47K_PU |
192c5fb70c9SStefano Babic 				PAD_CTL_PUE_PULL |
193c5fb70c9SStefano Babic 				PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
194c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD1_DATA0,
195c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_DRV_VOT_HIGH |
196c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE | PAD_CTL_47K_PU |
197c5fb70c9SStefano Babic 				PAD_CTL_PUE_PULL |
198c5fb70c9SStefano Babic 				PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
199c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD1_DATA1,
200c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_DRV_VOT_HIGH |
201c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE | PAD_CTL_47K_PU |
202c5fb70c9SStefano Babic 				PAD_CTL_PUE_PULL |
203c5fb70c9SStefano Babic 				PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
204c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD1_DATA2,
205c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_DRV_VOT_HIGH |
206c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE | PAD_CTL_47K_PU |
207c5fb70c9SStefano Babic 				PAD_CTL_PUE_PULL |
208c5fb70c9SStefano Babic 				PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
209c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD1_DATA3,
210c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_DRV_VOT_HIGH |
211c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE | PAD_CTL_100K_PD |
212c5fb70c9SStefano Babic 				PAD_CTL_PUE_PULL |
213c5fb70c9SStefano Babic 				PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST);
214c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_GPIO1_0,
215c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
216c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_GPIO1_0,
217c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE);
218c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_GPIO1_1,
219c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
220c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_GPIO1_1,
221c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE);
222c5fb70c9SStefano Babic 			break;
223c5fb70c9SStefano Babic 		case 1:
224c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_CMD,
225c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
226c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_CLK,
227c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
228c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_DATA0,
229c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0);
230c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_DATA1,
231c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0);
232c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_DATA2,
233c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0);
234c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_DATA3,
235c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0);
236c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD2_CMD,
237c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_22K_PU |
238c5fb70c9SStefano Babic 				PAD_CTL_SRE_FAST);
239c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD2_CLK,
240c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_22K_PU |
241c5fb70c9SStefano Babic 				PAD_CTL_SRE_FAST);
242c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD2_DATA0,
243c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_22K_PU |
244c5fb70c9SStefano Babic 				PAD_CTL_SRE_FAST);
245c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD2_DATA1,
246c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_22K_PU |
247c5fb70c9SStefano Babic 				PAD_CTL_SRE_FAST);
248c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD2_DATA2,
249c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_22K_PU |
250c5fb70c9SStefano Babic 				PAD_CTL_SRE_FAST);
251c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_SD2_DATA3,
252c5fb70c9SStefano Babic 				PAD_CTL_DRV_MAX | PAD_CTL_22K_PU |
253c5fb70c9SStefano Babic 				PAD_CTL_SRE_FAST);
254c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_SD2_CMD,
255c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
256c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_GPIO1_6,
257c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
258c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_GPIO1_6,
259c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE);
260c5fb70c9SStefano Babic 			mxc_request_iomux(MX51_PIN_GPIO1_5,
261c5fb70c9SStefano Babic 				IOMUX_CONFIG_ALT0 | IOMUX_CONFIG_SION);
262c5fb70c9SStefano Babic 			mxc_iomux_set_pad(MX51_PIN_GPIO1_5,
263c5fb70c9SStefano Babic 				PAD_CTL_HYS_ENABLE);
264c5fb70c9SStefano Babic 			break;
265c5fb70c9SStefano Babic 		default:
266c5fb70c9SStefano Babic 			printf("Warning: you configured more ESDHC controller"
267c5fb70c9SStefano Babic 				"(%d) as supported by the board(2)\n",
268c5fb70c9SStefano Babic 				CONFIG_SYS_FSL_ESDHC_NUM);
269c5fb70c9SStefano Babic 			return status;
270c5fb70c9SStefano Babic 		}
271c5fb70c9SStefano Babic 		status |= fsl_esdhc_initialize(bis, &esdhc_cfg[index]);
272c5fb70c9SStefano Babic 	}
273c5fb70c9SStefano Babic 	return status;
274c5fb70c9SStefano Babic }
275c5fb70c9SStefano Babic #endif
276c5fb70c9SStefano Babic 
277c5fb70c9SStefano Babic int board_init(void)
278c5fb70c9SStefano Babic {
279c5fb70c9SStefano Babic 	system_rev = get_cpu_rev();
280c5fb70c9SStefano Babic 
281c5fb70c9SStefano Babic 	gd->bd->bi_arch_number = MACH_TYPE_MX51_BABBAGE;
282c5fb70c9SStefano Babic 	/* address of boot parameters */
283c5fb70c9SStefano Babic 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
284c5fb70c9SStefano Babic 
285c5fb70c9SStefano Babic 	setup_iomux_uart();
286c5fb70c9SStefano Babic 	setup_iomux_fec();
287c5fb70c9SStefano Babic 	return 0;
288c5fb70c9SStefano Babic }
289c5fb70c9SStefano Babic 
290c5fb70c9SStefano Babic int checkboard(void)
291c5fb70c9SStefano Babic {
292c5fb70c9SStefano Babic 	puts("Board: MX51EVK ");
293c5fb70c9SStefano Babic 
294c5fb70c9SStefano Babic 	switch (system_rev & 0xff) {
295c5fb70c9SStefano Babic 	case CHIP_REV_3_0:
296c5fb70c9SStefano Babic 		puts("3.0 [");
297c5fb70c9SStefano Babic 		break;
298c5fb70c9SStefano Babic 	case CHIP_REV_2_5:
299c5fb70c9SStefano Babic 		puts("2.5 [");
300c5fb70c9SStefano Babic 		break;
301c5fb70c9SStefano Babic 	case CHIP_REV_2_0:
302c5fb70c9SStefano Babic 		puts("2.0 [");
303c5fb70c9SStefano Babic 		break;
304c5fb70c9SStefano Babic 	case CHIP_REV_1_1:
305c5fb70c9SStefano Babic 		puts("1.1 [");
306c5fb70c9SStefano Babic 		break;
307c5fb70c9SStefano Babic 	case CHIP_REV_1_0:
308c5fb70c9SStefano Babic 	default:
309c5fb70c9SStefano Babic 		puts("1.0 [");
310c5fb70c9SStefano Babic 		break;
311c5fb70c9SStefano Babic 	}
312c5fb70c9SStefano Babic 
313c5fb70c9SStefano Babic 	switch (__raw_readl(SRC_BASE_ADDR + 0x8)) {
314c5fb70c9SStefano Babic 	case 0x0001:
315c5fb70c9SStefano Babic 		puts("POR");
316c5fb70c9SStefano Babic 		break;
317c5fb70c9SStefano Babic 	case 0x0009:
318c5fb70c9SStefano Babic 		puts("RST");
319c5fb70c9SStefano Babic 		break;
320c5fb70c9SStefano Babic 	case 0x0010:
321c5fb70c9SStefano Babic 	case 0x0011:
322c5fb70c9SStefano Babic 		puts("WDOG");
323c5fb70c9SStefano Babic 		break;
324c5fb70c9SStefano Babic 	default:
325c5fb70c9SStefano Babic 		puts("unknown");
326c5fb70c9SStefano Babic 	}
327c5fb70c9SStefano Babic 	puts("]\n");
328c5fb70c9SStefano Babic 	return 0;
329c5fb70c9SStefano Babic }
330