164a93860SMarek Vasut /* 264a93860SMarek Vasut * Olimex MX23 Olinuxino board 364a93860SMarek Vasut * 464a93860SMarek Vasut * Copyright (C) 2013 Marek Vasut <marex@denx.de> 564a93860SMarek Vasut * 664a93860SMarek Vasut * See file CREDITS for list of people who contributed to this 764a93860SMarek Vasut * project. 864a93860SMarek Vasut * 964a93860SMarek Vasut * This program is free software; you can redistribute it and/or 1064a93860SMarek Vasut * modify it under the terms of the GNU General Public License as 1164a93860SMarek Vasut * published by the Free Software Foundation; either version 2 of 1264a93860SMarek Vasut * the License, or (at your option) any later version. 1364a93860SMarek Vasut * 1464a93860SMarek Vasut * This program is distributed in the hope that it will be useful, 1564a93860SMarek Vasut * but WITHOUT ANY WARRANTY; without even the implied warranty of 1664a93860SMarek Vasut * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1764a93860SMarek Vasut * GNU General Public License for more details. 1864a93860SMarek Vasut * 1964a93860SMarek Vasut * You should have received a copy of the GNU General Public License 2064a93860SMarek Vasut * along with this program; if not, write to the Free Software 2164a93860SMarek Vasut * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 2264a93860SMarek Vasut * MA 02111-1307 USA 2364a93860SMarek Vasut */ 2464a93860SMarek Vasut 2564a93860SMarek Vasut #include <common.h> 26*13b1ebdeSMarek Vasut #include <asm/io.h> 27*13b1ebdeSMarek Vasut #include <asm/arch/iomux-mx23.h> 2864a93860SMarek Vasut #include <asm/arch/imx-regs.h> 29*13b1ebdeSMarek Vasut #include <asm/arch/clock.h> 3064a93860SMarek Vasut #include <asm/arch/sys_proto.h> 3164a93860SMarek Vasut 3264a93860SMarek Vasut DECLARE_GLOBAL_DATA_PTR; 3364a93860SMarek Vasut 3464a93860SMarek Vasut /* 3564a93860SMarek Vasut * Functions 3664a93860SMarek Vasut */ 3764a93860SMarek Vasut int board_early_init_f(void) 3864a93860SMarek Vasut { 39*13b1ebdeSMarek Vasut /* IO0 clock at 480MHz */ 40*13b1ebdeSMarek Vasut mxs_set_ioclk(MXC_IOCLK0, 480000); 41*13b1ebdeSMarek Vasut 42*13b1ebdeSMarek Vasut /* SSP0 clock at 96MHz */ 43*13b1ebdeSMarek Vasut mxs_set_sspclk(MXC_SSPCLK0, 96000, 0); 44*13b1ebdeSMarek Vasut 4564a93860SMarek Vasut return 0; 4664a93860SMarek Vasut } 4764a93860SMarek Vasut 4864a93860SMarek Vasut int dram_init(void) 4964a93860SMarek Vasut { 5064a93860SMarek Vasut return mxs_dram_init(); 5164a93860SMarek Vasut } 5264a93860SMarek Vasut 53*13b1ebdeSMarek Vasut #ifdef CONFIG_CMD_MMC 54*13b1ebdeSMarek Vasut static int mx23_olx_mmc_cd(int id) 55*13b1ebdeSMarek Vasut { 56*13b1ebdeSMarek Vasut return 1; /* Card always present */ 57*13b1ebdeSMarek Vasut } 58*13b1ebdeSMarek Vasut 59*13b1ebdeSMarek Vasut int board_mmc_init(bd_t *bis) 60*13b1ebdeSMarek Vasut { 61*13b1ebdeSMarek Vasut return mxsmmc_initialize(bis, 0, NULL, mx23_olx_mmc_cd); 62*13b1ebdeSMarek Vasut } 63*13b1ebdeSMarek Vasut #endif 64*13b1ebdeSMarek Vasut 6564a93860SMarek Vasut int board_init(void) 6664a93860SMarek Vasut { 6764a93860SMarek Vasut /* Adress of boot parameters */ 6864a93860SMarek Vasut gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; 6964a93860SMarek Vasut 7064a93860SMarek Vasut return 0; 7164a93860SMarek Vasut } 72