2013-06-16 13:39:02 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2013 Marek Vasut <marex@denx.de>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License as
|
|
|
|
* published by the Free Software Foundation; either version 2 of
|
|
|
|
* the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
|
|
|
*/
|
|
|
|
#ifndef __CONFIGS_MXS_H__
|
|
|
|
#define __CONFIGS_MXS_H__
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Includes
|
|
|
|
*/
|
|
|
|
|
|
|
|
#if defined(CONFIG_MX23) && defined(CONFIG_MX28)
|
|
|
|
#error Select either CONFIG_MX23 or CONFIG_MX28 , never both!
|
|
|
|
#elif !defined(CONFIG_MX23) && !defined(CONFIG_MX28)
|
|
|
|
#error Select one of CONFIG_MX23 or CONFIG_MX28 !
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <asm/arch/regs-base.h>
|
|
|
|
|
|
|
|
#if defined(CONFIG_MX23)
|
|
|
|
#include <asm/arch/iomux-mx23.h>
|
|
|
|
#elif defined(CONFIG_MX28)
|
|
|
|
#include <asm/arch/iomux-mx28.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* CPU specifics
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Startup hooks */
|
|
|
|
|
|
|
|
/* SPL */
|
2018-04-21 15:11:10 +00:00
|
|
|
#ifndef CONFIG_SPL_FRAMEWORK
|
2013-06-16 13:39:02 +00:00
|
|
|
#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/arm926ejs/mxs"
|
2018-04-21 15:11:10 +00:00
|
|
|
#endif
|
2013-06-16 13:39:02 +00:00
|
|
|
|
|
|
|
/* Memory sizes */
|
|
|
|
|
|
|
|
/* OCRAM at 0x0 ; 32kB on MX23 ; 128kB on MX28 */
|
|
|
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x00000000
|
|
|
|
#if defined(CONFIG_MX23)
|
|
|
|
#define CONFIG_SYS_INIT_RAM_SIZE (32 * 1024)
|
|
|
|
#elif defined(CONFIG_MX28)
|
|
|
|
#define CONFIG_SYS_INIT_RAM_SIZE (128 * 1024)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Point initial SP in SRAM so SPL can use it too. */
|
|
|
|
#define CONFIG_SYS_INIT_SP_OFFSET \
|
|
|
|
(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
|
|
|
|
#define CONFIG_SYS_INIT_SP_ADDR \
|
|
|
|
(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* We need to sacrifice first 4 bytes of RAM here to avoid triggering some
|
|
|
|
* strange BUG in ROM corrupting first 4 bytes of RAM when loading U-Boot
|
|
|
|
* binary. In case there was more of this mess, 0x100 bytes are skipped.
|
arm: mxs: Adjust the load address of U-Boot and SPL for HAB
When using HAB, there are additional special requirements on the placement of
U-Boot and the U-Boot SPL in memory. To fullfill these, this patch moves the
U-Boot binary a little further from the begining of the DRAM, so the HAB CST
and IVT can be placed in front of the U-Boot binary. This is necessary, since
both the U-Boot and the IVT must be contained in single CST signature. To
make things worse, the IVT must be concatenated with one more entry at it's
end, that is the length of the entire CST signature, IVT and U-Boot binary
in memory. By placing the blocks in this order -- CST, IVT, U-Boot, we can
easily align them all and then produce the length field as needed.
As for the SPL, on i.MX23/i.MX28, the SPL size is limited to 32 KiB, thus
we place the IVT at 0x8000 offset, CST right past IVT and claim the size
is correct. The HAB library accepts this setup.
Finally, to make sure the vectoring in SPL still works even after moving
the SPL from 0x0 to 0x1000, we add a small function which copies the
vectoring code and tables to 0x0. This is fine, since the vectoring code
is position independent.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Stefano Babic <sbabic@denx.de>
2014-03-05 19:01:13 +00:00
|
|
|
*
|
|
|
|
* In case of a HAB boot, we cannot for some weird reason use the first 4KiB
|
|
|
|
* of DRAM when loading. Moreover, we use the first 4 KiB for IVT and CST
|
|
|
|
* blocks, thus U-Boot starts at offset +8 KiB of DRAM start.
|
|
|
|
*
|
|
|
|
* As for the SPL, we must avoid the first 4 KiB as well, but we load the
|
|
|
|
* IVT and CST to 0x8000, so we don't need to waste the subsequent 4 KiB.
|
2013-06-16 13:39:02 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
/* U-Boot general configuration */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Drivers
|
|
|
|
*/
|
2013-08-16 16:24:37 +00:00
|
|
|
/*
|
|
|
|
* DUART Serial Driver.
|
|
|
|
* Conflicts with AUART driver which can be set by board.
|
|
|
|
*/
|
2013-06-16 13:39:02 +00:00
|
|
|
#define CONFIG_PL011_CLOCK 24000000
|
|
|
|
#define CONFIG_PL01x_PORTS { (void *)MXS_UARTDBG_BASE }
|
2016-07-15 17:44:45 +00:00
|
|
|
/* Default baudrate can be overridden by board! */
|
2013-06-16 13:39:02 +00:00
|
|
|
|
|
|
|
/* NAND */
|
|
|
|
#ifdef CONFIG_CMD_NAND
|
|
|
|
#define CONFIG_SYS_MAX_NAND_DEVICE 1
|
|
|
|
#define CONFIG_SYS_NAND_BASE 0x60000000
|
|
|
|
#endif
|
|
|
|
|
2014-03-06 00:52:03 +00:00
|
|
|
/* OCOTP */
|
|
|
|
#ifdef CONFIG_CMD_FUSE
|
|
|
|
#define CONFIG_MXS_OCOTP
|
|
|
|
#endif
|
|
|
|
|
2013-06-16 13:39:02 +00:00
|
|
|
/* SPI */
|
|
|
|
#ifdef CONFIG_CMD_SPI
|
|
|
|
#define CONFIG_SPI_HALF_DUPLEX
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* __CONFIGS_MXS_H__ */
|