xref: /rk3399_rockchip-uboot/board/freescale/mx23evk/mx23evk.c (revision 326ea986ac150acdc7656d57fca647db80b50158)
181ca8409SOtavio Salvador /*
281ca8409SOtavio Salvador  * Freescale MX23EVK board
381ca8409SOtavio Salvador  *
481ca8409SOtavio Salvador  * (C) Copyright 2013 O.S. Systems Software LTDA.
581ca8409SOtavio Salvador  *
681ca8409SOtavio Salvador  * Author: Otavio Salvador <otavio@ossystems.com.br>
781ca8409SOtavio Salvador  *
881ca8409SOtavio Salvador  * Based on m28evk.c:
981ca8409SOtavio Salvador  * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
1081ca8409SOtavio Salvador  * on behalf of DENX Software Engineering GmbH
1181ca8409SOtavio Salvador  *
12*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
1381ca8409SOtavio Salvador  */
1481ca8409SOtavio Salvador 
1581ca8409SOtavio Salvador #include <common.h>
1681ca8409SOtavio Salvador #include <asm/gpio.h>
1781ca8409SOtavio Salvador #include <asm/arch/imx-regs.h>
1881ca8409SOtavio Salvador #include <asm/arch/clock.h>
1981ca8409SOtavio Salvador #include <asm/arch/iomux-mx23.h>
2081ca8409SOtavio Salvador #include <asm/arch/sys_proto.h>
2181ca8409SOtavio Salvador 
2281ca8409SOtavio Salvador DECLARE_GLOBAL_DATA_PTR;
2381ca8409SOtavio Salvador 
2481ca8409SOtavio Salvador /*
2581ca8409SOtavio Salvador  * Functions
2681ca8409SOtavio Salvador  */
board_early_init_f(void)2781ca8409SOtavio Salvador int board_early_init_f(void)
2881ca8409SOtavio Salvador {
2981ca8409SOtavio Salvador 	/* IO0 clock at 480MHz */
3081ca8409SOtavio Salvador 	mxs_set_ioclk(MXC_IOCLK0, 480000);
3181ca8409SOtavio Salvador 
3281ca8409SOtavio Salvador 	/* SSP0 clock at 96MHz */
3381ca8409SOtavio Salvador 	mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
3481ca8409SOtavio Salvador 
35eadfc135SFabio Estevam 	/* Power on LCD */
36eadfc135SFabio Estevam 	gpio_direction_output(MX23_PAD_LCD_RESET__GPIO_1_18, 1);
37eadfc135SFabio Estevam 
38eadfc135SFabio Estevam 	/* Set contrast to maximum */
39eadfc135SFabio Estevam 	gpio_direction_output(MX23_PAD_PWM2__GPIO_1_28, 1);
40eadfc135SFabio Estevam 
4181ca8409SOtavio Salvador 	return 0;
4281ca8409SOtavio Salvador }
4381ca8409SOtavio Salvador 
dram_init(void)4481ca8409SOtavio Salvador int dram_init(void)
4581ca8409SOtavio Salvador {
4681ca8409SOtavio Salvador 	return mxs_dram_init();
4781ca8409SOtavio Salvador }
4881ca8409SOtavio Salvador 
board_init(void)4981ca8409SOtavio Salvador int board_init(void)
5081ca8409SOtavio Salvador {
5181ca8409SOtavio Salvador 	/* Adress of boot parameters */
5281ca8409SOtavio Salvador 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
5381ca8409SOtavio Salvador 
5481ca8409SOtavio Salvador 	return 0;
5581ca8409SOtavio Salvador }
5681ca8409SOtavio Salvador 
5781ca8409SOtavio Salvador #ifdef	CONFIG_CMD_MMC
mx23evk_mmc_wp(int id)5881ca8409SOtavio Salvador static int mx23evk_mmc_wp(int id)
5981ca8409SOtavio Salvador {
6081ca8409SOtavio Salvador 	if (id != 0) {
6181ca8409SOtavio Salvador 		printf("MXS MMC: Invalid card selected (card id = %d)\n", id);
6281ca8409SOtavio Salvador 		return 1;
6381ca8409SOtavio Salvador 	}
6481ca8409SOtavio Salvador 
6581ca8409SOtavio Salvador 	return gpio_get_value(MX23_PAD_PWM4__GPIO_1_30);
6681ca8409SOtavio Salvador }
6781ca8409SOtavio Salvador 
board_mmc_init(bd_t * bis)6881ca8409SOtavio Salvador int board_mmc_init(bd_t *bis)
6981ca8409SOtavio Salvador {
7081ca8409SOtavio Salvador 	/* Configure WP as input */
7181ca8409SOtavio Salvador 	gpio_direction_input(MX23_PAD_PWM4__GPIO_1_30);
7281ca8409SOtavio Salvador 
7381ca8409SOtavio Salvador 	/* Configure MMC0 Power Enable */
7481ca8409SOtavio Salvador 	gpio_direction_output(MX23_PAD_PWM3__GPIO_1_29, 0);
7581ca8409SOtavio Salvador 
7681ca8409SOtavio Salvador 	return mxsmmc_initialize(bis, 0, mx23evk_mmc_wp, NULL);
7781ca8409SOtavio Salvador }
7881ca8409SOtavio Salvador #endif
79