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