xref: /rk3399_rockchip-uboot/board/freescale/mx23evk/mx23evk.c (revision 81ca840976e8e418ae8decaf03ea01f59b1b5be2)
1*81ca8409SOtavio Salvador /*
2*81ca8409SOtavio Salvador  * Freescale MX23EVK board
3*81ca8409SOtavio Salvador  *
4*81ca8409SOtavio Salvador  * (C) Copyright 2013 O.S. Systems Software LTDA.
5*81ca8409SOtavio Salvador  *
6*81ca8409SOtavio Salvador  * Author: Otavio Salvador <otavio@ossystems.com.br>
7*81ca8409SOtavio Salvador  *
8*81ca8409SOtavio Salvador  * Based on m28evk.c:
9*81ca8409SOtavio Salvador  * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
10*81ca8409SOtavio Salvador  * on behalf of DENX Software Engineering GmbH
11*81ca8409SOtavio Salvador  *
12*81ca8409SOtavio Salvador  * See file CREDITS for list of people who contributed to this
13*81ca8409SOtavio Salvador  * project.
14*81ca8409SOtavio Salvador  *
15*81ca8409SOtavio Salvador  * This program is free software; you can redistribute it and/or
16*81ca8409SOtavio Salvador  * modify it under the terms of the GNU General Public License as
17*81ca8409SOtavio Salvador  * published by the Free Software Foundation; either version 2 of
18*81ca8409SOtavio Salvador  * the License, or (at your option) any later version.
19*81ca8409SOtavio Salvador  *
20*81ca8409SOtavio Salvador  * This program is distributed in the hope that it will be useful,
21*81ca8409SOtavio Salvador  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22*81ca8409SOtavio Salvador  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23*81ca8409SOtavio Salvador  * GNU General Public License for more details.
24*81ca8409SOtavio Salvador  */
25*81ca8409SOtavio Salvador 
26*81ca8409SOtavio Salvador #include <common.h>
27*81ca8409SOtavio Salvador #include <asm/gpio.h>
28*81ca8409SOtavio Salvador #include <asm/arch/imx-regs.h>
29*81ca8409SOtavio Salvador #include <asm/arch/clock.h>
30*81ca8409SOtavio Salvador #include <asm/arch/iomux-mx23.h>
31*81ca8409SOtavio Salvador #include <asm/arch/sys_proto.h>
32*81ca8409SOtavio Salvador 
33*81ca8409SOtavio Salvador DECLARE_GLOBAL_DATA_PTR;
34*81ca8409SOtavio Salvador 
35*81ca8409SOtavio Salvador /*
36*81ca8409SOtavio Salvador  * Functions
37*81ca8409SOtavio Salvador  */
38*81ca8409SOtavio Salvador int board_early_init_f(void)
39*81ca8409SOtavio Salvador {
40*81ca8409SOtavio Salvador 	/* IO0 clock at 480MHz */
41*81ca8409SOtavio Salvador 	mxs_set_ioclk(MXC_IOCLK0, 480000);
42*81ca8409SOtavio Salvador 
43*81ca8409SOtavio Salvador 	/* SSP0 clock at 96MHz */
44*81ca8409SOtavio Salvador 	mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
45*81ca8409SOtavio Salvador 
46*81ca8409SOtavio Salvador 	return 0;
47*81ca8409SOtavio Salvador }
48*81ca8409SOtavio Salvador 
49*81ca8409SOtavio Salvador int dram_init(void)
50*81ca8409SOtavio Salvador {
51*81ca8409SOtavio Salvador 	return mxs_dram_init();
52*81ca8409SOtavio Salvador }
53*81ca8409SOtavio Salvador 
54*81ca8409SOtavio Salvador int board_init(void)
55*81ca8409SOtavio Salvador {
56*81ca8409SOtavio Salvador 	/* Adress of boot parameters */
57*81ca8409SOtavio Salvador 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
58*81ca8409SOtavio Salvador 
59*81ca8409SOtavio Salvador 	return 0;
60*81ca8409SOtavio Salvador }
61*81ca8409SOtavio Salvador 
62*81ca8409SOtavio Salvador #ifdef	CONFIG_CMD_MMC
63*81ca8409SOtavio Salvador static int mx23evk_mmc_wp(int id)
64*81ca8409SOtavio Salvador {
65*81ca8409SOtavio Salvador 	if (id != 0) {
66*81ca8409SOtavio Salvador 		printf("MXS MMC: Invalid card selected (card id = %d)\n", id);
67*81ca8409SOtavio Salvador 		return 1;
68*81ca8409SOtavio Salvador 	}
69*81ca8409SOtavio Salvador 
70*81ca8409SOtavio Salvador 	return gpio_get_value(MX23_PAD_PWM4__GPIO_1_30);
71*81ca8409SOtavio Salvador }
72*81ca8409SOtavio Salvador 
73*81ca8409SOtavio Salvador int board_mmc_init(bd_t *bis)
74*81ca8409SOtavio Salvador {
75*81ca8409SOtavio Salvador 	/* Configure WP as input */
76*81ca8409SOtavio Salvador 	gpio_direction_input(MX23_PAD_PWM4__GPIO_1_30);
77*81ca8409SOtavio Salvador 
78*81ca8409SOtavio Salvador 	/* Configure MMC0 Power Enable */
79*81ca8409SOtavio Salvador 	gpio_direction_output(MX23_PAD_PWM3__GPIO_1_29, 0);
80*81ca8409SOtavio Salvador 
81*81ca8409SOtavio Salvador 	return mxsmmc_initialize(bis, 0, mx23evk_mmc_wp, NULL);
82*81ca8409SOtavio Salvador }
83*81ca8409SOtavio Salvador #endif
84