xref: /rk3399_rockchip-uboot/board/freescale/mx23evk/mx23evk.c (revision eadfc135d3df76620cfef5e6928d64fb8874c665)
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  *
1281ca8409SOtavio Salvador  * See file CREDITS for list of people who contributed to this
1381ca8409SOtavio Salvador  * project.
1481ca8409SOtavio Salvador  *
1581ca8409SOtavio Salvador  * This program is free software; you can redistribute it and/or
1681ca8409SOtavio Salvador  * modify it under the terms of the GNU General Public License as
1781ca8409SOtavio Salvador  * published by the Free Software Foundation; either version 2 of
1881ca8409SOtavio Salvador  * the License, or (at your option) any later version.
1981ca8409SOtavio Salvador  *
2081ca8409SOtavio Salvador  * This program is distributed in the hope that it will be useful,
2181ca8409SOtavio Salvador  * but WITHOUT ANY WARRANTY; without even the implied warranty of
2281ca8409SOtavio Salvador  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2381ca8409SOtavio Salvador  * GNU General Public License for more details.
2481ca8409SOtavio Salvador  */
2581ca8409SOtavio Salvador 
2681ca8409SOtavio Salvador #include <common.h>
2781ca8409SOtavio Salvador #include <asm/gpio.h>
2881ca8409SOtavio Salvador #include <asm/arch/imx-regs.h>
2981ca8409SOtavio Salvador #include <asm/arch/clock.h>
3081ca8409SOtavio Salvador #include <asm/arch/iomux-mx23.h>
3181ca8409SOtavio Salvador #include <asm/arch/sys_proto.h>
3281ca8409SOtavio Salvador 
3381ca8409SOtavio Salvador DECLARE_GLOBAL_DATA_PTR;
3481ca8409SOtavio Salvador 
3581ca8409SOtavio Salvador /*
3681ca8409SOtavio Salvador  * Functions
3781ca8409SOtavio Salvador  */
3881ca8409SOtavio Salvador int board_early_init_f(void)
3981ca8409SOtavio Salvador {
4081ca8409SOtavio Salvador 	/* IO0 clock at 480MHz */
4181ca8409SOtavio Salvador 	mxs_set_ioclk(MXC_IOCLK0, 480000);
4281ca8409SOtavio Salvador 
4381ca8409SOtavio Salvador 	/* SSP0 clock at 96MHz */
4481ca8409SOtavio Salvador 	mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
4581ca8409SOtavio Salvador 
46*eadfc135SFabio Estevam 	/* Power on LCD */
47*eadfc135SFabio Estevam 	gpio_direction_output(MX23_PAD_LCD_RESET__GPIO_1_18, 1);
48*eadfc135SFabio Estevam 
49*eadfc135SFabio Estevam 	/* Set contrast to maximum */
50*eadfc135SFabio Estevam 	gpio_direction_output(MX23_PAD_PWM2__GPIO_1_28, 1);
51*eadfc135SFabio Estevam 
5281ca8409SOtavio Salvador 	return 0;
5381ca8409SOtavio Salvador }
5481ca8409SOtavio Salvador 
5581ca8409SOtavio Salvador int dram_init(void)
5681ca8409SOtavio Salvador {
5781ca8409SOtavio Salvador 	return mxs_dram_init();
5881ca8409SOtavio Salvador }
5981ca8409SOtavio Salvador 
6081ca8409SOtavio Salvador int board_init(void)
6181ca8409SOtavio Salvador {
6281ca8409SOtavio Salvador 	/* Adress of boot parameters */
6381ca8409SOtavio Salvador 	gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
6481ca8409SOtavio Salvador 
6581ca8409SOtavio Salvador 	return 0;
6681ca8409SOtavio Salvador }
6781ca8409SOtavio Salvador 
6881ca8409SOtavio Salvador #ifdef	CONFIG_CMD_MMC
6981ca8409SOtavio Salvador static int mx23evk_mmc_wp(int id)
7081ca8409SOtavio Salvador {
7181ca8409SOtavio Salvador 	if (id != 0) {
7281ca8409SOtavio Salvador 		printf("MXS MMC: Invalid card selected (card id = %d)\n", id);
7381ca8409SOtavio Salvador 		return 1;
7481ca8409SOtavio Salvador 	}
7581ca8409SOtavio Salvador 
7681ca8409SOtavio Salvador 	return gpio_get_value(MX23_PAD_PWM4__GPIO_1_30);
7781ca8409SOtavio Salvador }
7881ca8409SOtavio Salvador 
7981ca8409SOtavio Salvador int board_mmc_init(bd_t *bis)
8081ca8409SOtavio Salvador {
8181ca8409SOtavio Salvador 	/* Configure WP as input */
8281ca8409SOtavio Salvador 	gpio_direction_input(MX23_PAD_PWM4__GPIO_1_30);
8381ca8409SOtavio Salvador 
8481ca8409SOtavio Salvador 	/* Configure MMC0 Power Enable */
8581ca8409SOtavio Salvador 	gpio_direction_output(MX23_PAD_PWM3__GPIO_1_29, 0);
8681ca8409SOtavio Salvador 
8781ca8409SOtavio Salvador 	return mxsmmc_initialize(bis, 0, mx23evk_mmc_wp, NULL);
8881ca8409SOtavio Salvador }
8981ca8409SOtavio Salvador #endif
90