diff options
| -rw-r--r-- | board/freescale/common/Makefile | 6 | ||||
| -rw-r--r-- | board/freescale/p1022ds/Makefile | 14 | ||||
| -rw-r--r-- | board/freescale/p1022ds/law.c | 1 | ||||
| -rw-r--r-- | board/freescale/p1022ds/spl_minimal.c | 129 | ||||
| -rw-r--r-- | board/freescale/p1022ds/tlb.c | 20 | ||||
| -rw-r--r-- | boards.cfg | 2 | ||||
| -rw-r--r-- | include/configs/P1022DS.h | 132 | 
7 files changed, 284 insertions, 20 deletions
| diff --git a/board/freescale/common/Makefile b/board/freescale/common/Makefile index 75725b49a..72bb56cac 100644 --- a/board/freescale/common/Makefile +++ b/board/freescale/common/Makefile @@ -33,10 +33,14 @@ COBJS-$(CONFIG_FSL_CADMUS)	+= cadmus.o  COBJS-$(CONFIG_FSL_VIA)		+= cds_via.o  COBJS-$(CONFIG_FMAN_ENET)	+= fman.o  COBJS-$(CONFIG_FSL_PIXIS)	+= pixis.o +ifndef CONFIG_SPL_BUILD  COBJS-$(CONFIG_FSL_NGPIXIS)	+= ngpixis.o +endif  COBJS-$(CONFIG_FSL_QIXIS)	+= qixis.o  COBJS-$(CONFIG_PQ_MDS_PIB)	+= pq-mds-pib.o +ifndef CONFIG_SPL_BUILD  COBJS-$(CONFIG_ID_EEPROM)	+= sys_eeprom.o +endif  COBJS-$(CONFIG_FSL_SGMII_RISER)	+= sgmii_riser.o  ifndef CONFIG_RAMBOOT_PBL  COBJS-$(CONFIG_FSL_FIXED_MMC_LOCATION)	+= sdhc_boot.o @@ -48,7 +52,9 @@ COBJS-$(CONFIG_MPC8555CDS)	+= cds_pci_ft.o  COBJS-$(CONFIG_MPC8536DS)	+= ics307_clk.o  COBJS-$(CONFIG_MPC8572DS)	+= ics307_clk.o +ifndef CONFIG_SPL_BUILD  COBJS-$(CONFIG_P1022DS)		+= ics307_clk.o +endif  COBJS-$(CONFIG_P2020DS)		+= ics307_clk.o  COBJS-$(CONFIG_P3041DS)		+= ics307_clk.o  COBJS-$(CONFIG_P4080DS)		+= ics307_clk.o diff --git a/board/freescale/p1022ds/Makefile b/board/freescale/p1022ds/Makefile index c6d3418c1..0eeef0526 100644 --- a/board/freescale/p1022ds/Makefile +++ b/board/freescale/p1022ds/Makefile @@ -11,12 +11,26 @@ include $(TOPDIR)/config.mk  LIB	= $(obj)lib$(BOARD).o +MINIMAL= + +ifdef CONFIG_SPL_BUILD +ifdef CONFIG_SPL_INIT_MINIMAL +MINIMAL=y +endif +endif + +ifdef MINIMAL + +COBJS-y        += spl_minimal.o tlb.o law.o + +else  COBJS-y	+= $(BOARD).o  COBJS-y	+= ddr.o  COBJS-y	+= law.o  COBJS-y	+= tlb.o  COBJS-$(CONFIG_FSL_DIU_FB) += diu.o +endif  SRCS	:= $(SOBJS:.o=.S) $(COBJS-y:.o=.c)  OBJS	:= $(addprefix $(obj),$(COBJS-y)) diff --git a/board/freescale/p1022ds/law.c b/board/freescale/p1022ds/law.c index b23b8f9af..c4398ddff 100644 --- a/board/freescale/p1022ds/law.c +++ b/board/freescale/p1022ds/law.c @@ -16,6 +16,7 @@  struct law_entry law_table[] = {  	SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_256M, LAW_TRGT_IF_LBC),  	SET_LAW(PIXIS_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_LBC), +	SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_32K, LAW_TRGT_IF_LBC),  };  int num_law_entries = ARRAY_SIZE(law_table); diff --git a/board/freescale/p1022ds/spl_minimal.c b/board/freescale/p1022ds/spl_minimal.c new file mode 100644 index 000000000..8d12fa6c7 --- /dev/null +++ b/board/freescale/p1022ds/spl_minimal.c @@ -0,0 +1,129 @@ +/* + * Copyright 2011 Freescale Semiconductor, Inc. + * + * 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 + * + */ + +#include <common.h> +#include <ns16550.h> +#include <asm/io.h> +#include <nand.h> +#include <asm/fsl_law.h> +#include <asm/fsl_ddr_sdram.h> + + +/* + * Fixed sdram init -- doesn't use serial presence detect. + */ +void sdram_init(void) +{ +	volatile ccsr_ddr_t *ddr = (ccsr_ddr_t *)CONFIG_SYS_MPC8xxx_DDR_ADDR; + +	__raw_writel(CONFIG_SYS_DDR_CS0_BNDS, &ddr->cs0_bnds); +	__raw_writel(CONFIG_SYS_DDR_CS0_CONFIG, &ddr->cs0_config); +#if CONFIG_CHIP_SELECTS_PER_CTRL > 1 +	__raw_writel(CONFIG_SYS_DDR_CS1_BNDS, &ddr->cs1_bnds); +	__raw_writel(CONFIG_SYS_DDR_CS1_CONFIG, &ddr->cs1_config); +#endif +	__raw_writel(CONFIG_SYS_DDR_TIMING_3, &ddr->timing_cfg_3); +	__raw_writel(CONFIG_SYS_DDR_TIMING_0, &ddr->timing_cfg_0); +	__raw_writel(CONFIG_SYS_DDR_TIMING_1, &ddr->timing_cfg_1); +	__raw_writel(CONFIG_SYS_DDR_TIMING_2, &ddr->timing_cfg_2); + +	__raw_writel(CONFIG_SYS_DDR_CONTROL_2, &ddr->sdram_cfg_2); +	__raw_writel(CONFIG_SYS_DDR_MODE_1, &ddr->sdram_mode); +	__raw_writel(CONFIG_SYS_DDR_MODE_2, &ddr->sdram_mode_2); + +	__raw_writel(CONFIG_SYS_DDR_INTERVAL, &ddr->sdram_interval); +	__raw_writel(CONFIG_SYS_DDR_DATA_INIT, &ddr->sdram_data_init); +	__raw_writel(CONFIG_SYS_DDR_CLK_CTRL, &ddr->sdram_clk_cntl); + +	__raw_writel(CONFIG_SYS_DDR_TIMING_4, &ddr->timing_cfg_4); +	__raw_writel(CONFIG_SYS_DDR_TIMING_5, &ddr->timing_cfg_5); +	__raw_writel(CONFIG_SYS_DDR_ZQ_CONTROL, &ddr->ddr_zq_cntl); +	__raw_writel(CONFIG_SYS_DDR_WRLVL_CONTROL, &ddr->ddr_wrlvl_cntl); + +	/* Set, but do not enable the memory */ +	__raw_writel(CONFIG_SYS_DDR_CONTROL & ~SDRAM_CFG_MEM_EN, +			&ddr->sdram_cfg); + +	in_be32(&ddr->sdram_cfg); +	udelay(500); + +	/* Let the controller go */ +	out_be32(&ddr->sdram_cfg, in_be32(&ddr->sdram_cfg) | SDRAM_CFG_MEM_EN); +	in_be32(&ddr->sdram_cfg); + +	set_next_law(0, CONFIG_SYS_SDRAM_SIZE_LAW, LAW_TRGT_IF_DDR_1); +} + +const static u32 sysclk_tbl[] = { +	66666000, 7499900, 83332500, 8999900, +	99999000, 11111000, 12499800, 13333200 +}; + +void board_init_f(ulong bootflag) +{ +	int px_spd; +	u32 plat_ratio, sys_clk, bus_clk; +	ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR; + +	/* for FPGA */ +	set_lbc_br(2, CONFIG_SYS_BR2_PRELIM); +	set_lbc_or(2, CONFIG_SYS_OR2_PRELIM); + +	/* initialize selected port with appropriate baud rate */ +	px_spd = in_8((unsigned char *)(PIXIS_BASE + PIXIS_SPD)); +	sys_clk = sysclk_tbl[px_spd & PIXIS_SPD_SYSCLK_MASK]; +	plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO; +	bus_clk = sys_clk * plat_ratio / 2; + +	NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1, +			bus_clk / 16 / CONFIG_BAUDRATE); + +	puts("\nNAND boot... "); + +	/* Initialize the DDR3 */ +	sdram_init(); + +	/* copy code to RAM and jump to it - this should not return */ +	/* NOTE - code has to be copied out of NAND buffer before +	 * other blocks can be read. +	 */ +	relocate_code(CONFIG_SPL_RELOC_STACK, 0, +			CONFIG_SPL_RELOC_TEXT_BASE); +} + +void board_init_r(gd_t *gd, ulong dest_addr) +{ +	nand_boot(); +} + +void putc(char c) +{ +	if (c == '\n') +		NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r'); + +	NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c); +} + +void puts(const char *str) +{ +	while (*str) +		putc(*str++); +} diff --git a/board/freescale/p1022ds/tlb.c b/board/freescale/p1022ds/tlb.c index 71e71f707..3acc44912 100644 --- a/board/freescale/p1022ds/tlb.c +++ b/board/freescale/p1022ds/tlb.c @@ -41,6 +41,7 @@ struct fsl_e_tlb_entry tlb_table[] = {  		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,  		      0, 1, BOOKE_PAGESZ_1M, 1), +#ifndef CONFIG_SPL_BUILD  	/* W**G* - Flash/promjet, localbus */  	/* This will be changed to *I*G* after relocation to RAM. */  	SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS, @@ -67,24 +68,31 @@ struct fsl_e_tlb_entry tlb_table[] = {  	SET_TLB_ENTRY(1, CONFIG_SYS_PCIE3_IO_VIRT, CONFIG_SYS_PCIE3_IO_PHYS,  		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,  		      0, 6, BOOKE_PAGESZ_256K, 1), +#endif  	SET_TLB_ENTRY(1, PIXIS_BASE, PIXIS_BASE_PHYS,  		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,  		      0, 7, BOOKE_PAGESZ_4K, 1), -#ifdef CONFIG_SYS_RAMBOOT -	/* *I*G - eSDHC/eSPI/NAND boot */ +#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_SPL) +	/* **** - eSDHC/eSPI/NAND boot */  	SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,  			MAS3_SX|MAS3_SW|MAS3_SR, 0,  			0, 8, BOOKE_PAGESZ_1G, 1), - -	/* map the second 1G */ +	/* **** - eSDHC/eSPI/NAND boot - second 1GB of memory */  	SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,  			CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000, -			MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, +			MAS3_SX|MAS3_SW|MAS3_SR, 0,  			0, 9, BOOKE_PAGESZ_1G, 1),  #endif -# + +#ifdef CONFIG_SYS_NAND_BASE +	/* *I*G - NAND */ +	SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS, +			MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, +			0, 10, BOOKE_PAGESZ_16K, 1), +#endif +  };  int num_tlb_entries = ARRAY_SIZE(tlb_table); diff --git a/boards.cfg b/boards.cfg index 8b7933ffb..5d7806497 100644 --- a/boards.cfg +++ b/boards.cfg @@ -811,6 +811,8 @@ P1021RDB-PC_NAND             powerpc     mpc85xx     p1_p2_rdb_pc        freesca  P1021RDB-PC_SDCARD           powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1021RDB,SDCARD  P1021RDB-PC_SPIFLASH         powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1021RDB,SPIFLASH  P1022DS                      powerpc     mpc85xx     p1022ds             freescale +P1022DS_NAND                 powerpc     mpc85xx     p1022ds             freescale	-	    P1022DS:NAND +P1022DS_36BIT_NAND           powerpc     mpc85xx     p1022ds             freescale	-	    P1022DS:36BIT,NAND  P1022DS_SPIFLASH             powerpc     mpc85xx     p1022ds             freescale	-	    P1022DS:SPIFLASH  P1022DS_36BIT_SPIFLASH       powerpc     mpc85xx     p1022ds             freescale	-	    P1022DS:36BIT,SPIFLASH  P1022DS_SDCARD               powerpc     mpc85xx     p1022ds             freescale	-	    P1022DS:SDCARD diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index 14d597aad..b282e7bc4 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -34,6 +34,29 @@  #define CONFIG_RESET_VECTOR_ADDRESS	0x1107fffc  #endif +#define CONFIG_NAND_FSL_ELBC + +#ifdef CONFIG_NAND +#define CONFIG_SPL +#define CONFIG_SPL_INIT_MINIMAL +#define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_NAND_SUPPORT +#define CONFIG_SPL_NAND_MINIMAL +#define CONFIG_SPL_FLUSH_IMAGE +#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin" + +#define CONFIG_SYS_TEXT_BASE           0x00201000 +#define CONFIG_SPL_TEXT_BASE           0xfffff000 +#define CONFIG_SPL_MAX_SIZE            (4 * 1024) +#define CONFIG_SPL_RELOC_TEXT_BASE     0x00100000 +#define CONFIG_SPL_RELOC_STACK         0x00100000 +#define CONFIG_SYS_NAND_U_BOOT_SIZE    ((512 << 10) + CONFIG_SPL_MAX_SIZE) +#define CONFIG_SYS_NAND_U_BOOT_DST     (0x00200000 - CONFIG_SPL_MAX_SIZE) +#define CONFIG_SYS_NAND_U_BOOT_START   0x00200000 +#define CONFIG_SYS_NAND_U_BOOT_OFFS    0 +#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot-nand.lds" +#endif +  /* High Level Configuration Options */  #define CONFIG_BOOKE			/* BOOKE */  #define CONFIG_E500			/* BOOKE e500 family */ @@ -84,6 +107,13 @@  #define CONFIG_SYS_CCSRBAR		0xffe00000  #define CONFIG_SYS_CCSRBAR_PHYS_LOW	CONFIG_SYS_CCSRBAR +/* IN case of NAND bootloader relocate CCSRBAR in RAMboot code not in the 4k +       SPL code*/ +#ifdef CONFIG_SPL_BUILD +#define CONFIG_SYS_CCSR_DO_NOT_RELOCATE +#endif + +  /* DDR Setup */  #define CONFIG_DDR_SPD  #define CONFIG_VERY_BIG_RAM @@ -105,6 +135,30 @@  #define CONFIG_SYS_SPD_BUS_NUM		1  #define SPD_EEPROM_ADDRESS		0x51	/* CTLR 0 DIMM 0 */ +/* These are used when DDR doesn't use SPD.  */ +#define CONFIG_SYS_SDRAM_SIZE		2048 +#define CONFIG_SYS_SDRAM_SIZE_LAW	LAW_SIZE_2G +#define CONFIG_SYS_DDR_CS0_BNDS		0x0000003F +#define CONFIG_SYS_DDR_CS0_CONFIG	0x80014202 +#define CONFIG_SYS_DDR_CS1_BNDS		0x0040007F +#define CONFIG_SYS_DDR_CS1_CONFIG	0x80014202 +#define CONFIG_SYS_DDR_TIMING_3		0x00010000 +#define CONFIG_SYS_DDR_TIMING_0		0x40110104 +#define CONFIG_SYS_DDR_TIMING_1		0x5c5bd746 +#define CONFIG_SYS_DDR_TIMING_2		0x0fa8d4ca +#define CONFIG_SYS_DDR_MODE_1		0x00441221 +#define CONFIG_SYS_DDR_MODE_2		0x00000000 +#define CONFIG_SYS_DDR_INTERVAL		0x0a280100 +#define CONFIG_SYS_DDR_DATA_INIT	0xdeadbeef +#define CONFIG_SYS_DDR_CLK_CTRL		0x02800000 +#define CONFIG_SYS_DDR_CONTROL		0xc7000008 +#define CONFIG_SYS_DDR_CONTROL_2	0x24401041 +#define	CONFIG_SYS_DDR_TIMING_4		0x00220001 +#define	CONFIG_SYS_DDR_TIMING_5		0x02401400 +#define	CONFIG_SYS_DDR_ZQ_CONTROL	0x89080600 +#define CONFIG_SYS_DDR_WRLVL_CONTROL	0x8675f608 + +  /*   * Memory map   * @@ -118,6 +172,7 @@   * Localbus non-cacheable   * 0xe000_0000	0xe80f_ffff	Promjet/free		128M non-cacheable   * 0xe800_0000	0xefff_ffff	FLASH			128M non-cacheable + * 0xff80_0000	0xff80_7fff	NAND			32K non-cacheable   * 0xffdf_0000	0xffdf_7fff	PIXIS			32K non-cacheable TLB0   * 0xffd0_0000	0xffd0_3fff	L1 for stack		16K Cacheable TLB0   * 0xffe0_0000	0xffef_ffff	CCSR			1M non-cacheable @@ -126,38 +181,84 @@  /*   * Local Bus Definitions   */ -#define CONFIG_SYS_FLASH_BASE		0xe0000000 /* start of FLASH 128M */ +#define CONFIG_SYS_FLASH_BASE		0xe8000000 /* start of FLASH 128M */  #ifdef CONFIG_PHYS_64BIT -#define CONFIG_SYS_FLASH_BASE_PHYS	0xfe0000000ull +#define CONFIG_SYS_FLASH_BASE_PHYS	0xfe8000000ull  #else  #define CONFIG_SYS_FLASH_BASE_PHYS	CONFIG_SYS_FLASH_BASE  #endif  #define CONFIG_FLASH_BR_PRELIM  \ -	(BR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS + 0x8000000) | BR_PS_16 | BR_V) +	(BR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | BR_PS_16 | BR_V)  #define CONFIG_FLASH_OR_PRELIM	(OR_AM_128MB | 0xff7) +#ifdef CONFIG_NAND +#define CONFIG_SYS_BR1_PRELIM	CONFIG_FLASH_BR_PRELIM	/* NOR Base Address */ +#define CONFIG_SYS_OR1_PRELIM	CONFIG_FLASH_OR_PRELIM	/* NOR Options */ +#else  #define CONFIG_SYS_BR0_PRELIM	CONFIG_FLASH_BR_PRELIM  /* NOR Base Address */  #define CONFIG_SYS_OR0_PRELIM	CONFIG_FLASH_OR_PRELIM  /* NOR Options */ +#endif -#define CONFIG_SYS_BR1_PRELIM	\ -	(BR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | BR_PS_16 | BR_V) -#define CONFIG_SYS_OR1_PRELIM	CONFIG_FLASH_OR_PRELIM - -#define CONFIG_SYS_FLASH_BANKS_LIST	\ -	{CONFIG_SYS_FLASH_BASE_PHYS + 0x8000000, CONFIG_SYS_FLASH_BASE_PHYS} +#define CONFIG_SYS_FLASH_BANKS_LIST	{CONFIG_SYS_FLASH_BASE_PHYS}  #define CONFIG_SYS_FLASH_QUIET_TEST  #define CONFIG_FLASH_SHOW_PROGRESS	45 /* count down from 45/5: 9..1 */ -#define CONFIG_SYS_MAX_FLASH_BANKS	2 +#define CONFIG_SYS_MAX_FLASH_BANKS	1  #define CONFIG_SYS_MAX_FLASH_SECT	1024 +#ifndef CONFIG_SYS_MONITOR_BASE +#ifdef CONFIG_SPL_BUILD +#define CONFIG_SYS_MONITOR_BASE		CONFIG_SPL_TEXT_BASE +#else  #define CONFIG_SYS_MONITOR_BASE		CONFIG_SYS_TEXT_BASE	/* start of monitor */ +#endif +#endif  #define CONFIG_FLASH_CFI_DRIVER  #define CONFIG_SYS_FLASH_CFI  #define CONFIG_SYS_FLASH_EMPTY_INFO +/* Nand Flash */ +#if defined(CONFIG_NAND_FSL_ELBC) +#define CONFIG_SYS_NAND_BASE		0xff800000 +#ifdef CONFIG_PHYS_64BIT +#define CONFIG_SYS_NAND_BASE_PHYS	0xfff800000ull +#else +#define CONFIG_SYS_NAND_BASE_PHYS	CONFIG_SYS_NAND_BASE +#endif + +#define CONFIG_SYS_NAND_BASE_LIST     { CONFIG_SYS_NAND_BASE, } +#define CONFIG_SYS_MAX_NAND_DEVICE	1 +#define CONFIG_MTD_NAND_VERIFY_WRITE +#define CONFIG_CMD_NAND			1 +#define CONFIG_SYS_NAND_BLOCK_SIZE    (256 * 1024) +#define CONFIG_ELBC_NAND_SPL_STATIC_PGSIZE + +/* NAND flash config */ +#define CONFIG_SYS_NAND_BR_PRELIM  (BR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \ +			       | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \ +			       | BR_PS_8	       /* Port Size = 8 bit */ \ +			       | BR_MS_FCM	       /* MSEL = FCM */ \ +			       | BR_V)		       /* valid */ +#define CONFIG_SYS_NAND_OR_PRELIM  (OR_AM_32KB	       /* length 256K */ \ +			       | OR_FCM_PGS	       /* Large Page*/ \ +			       | OR_FCM_CSCT \ +			       | OR_FCM_CST \ +			       | OR_FCM_CHT \ +			       | OR_FCM_SCY_1 \ +			       | OR_FCM_TRLX \ +			       | OR_FCM_EHTR) +#ifdef CONFIG_NAND +#define CONFIG_SYS_BR0_PRELIM	CONFIG_SYS_NAND_BR_PRELIM /* NAND Base Address */ +#define CONFIG_SYS_OR0_PRELIM	CONFIG_SYS_NAND_OR_PRELIM /* NAND Options */ +#else +#define CONFIG_SYS_BR1_PRELIM	CONFIG_SYS_NAND_BR_PRELIM /* NAND Base Address */ +#define CONFIG_SYS_OR1_PRELIM	CONFIG_SYS_NAND_OR_PRELIM /* NAND Options */ +#endif + +#endif /* CONFIG_NAND_FSL_ELBC */ +  #define CONFIG_BOARD_EARLY_INIT_F  #define CONFIG_BOARD_EARLY_INIT_R  #define CONFIG_MISC_INIT_R @@ -177,6 +278,8 @@  #define PIXIS_LBMAP_SWITCH	7  #define PIXIS_LBMAP_MASK	0xF0  #define PIXIS_LBMAP_ALTBANK	0x20 +#define PIXIS_SPD		0x07 +#define PIXIS_SPD_SYSCLK_MASK	0x07  #define PIXIS_ELBC_SPI_MASK	0xc0  #define PIXIS_SPI		0x80 @@ -199,6 +302,9 @@  #define CONFIG_SYS_NS16550_SERIAL  #define CONFIG_SYS_NS16550_REG_SIZE	1  #define CONFIG_SYS_NS16550_CLK		get_bus_freq(0) +#ifdef CONFIG_SPL_BUILD +#define CONFIG_NS16550_MIN_FUNCTIONS +#endif  #define CONFIG_SYS_BAUDRATE_TABLE	\  	{300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200} @@ -419,7 +525,6 @@  /*   * Environment   */ -#ifdef CONFIG_SYS_RAMBOOT  #ifdef CONFIG_RAMBOOT_SPIFLASH  #define CONFIG_ENV_IS_IN_SPI_FLASH  #define CONFIG_ENV_SPI_BUS	0 @@ -433,16 +538,15 @@  #define CONFIG_ENV_IS_IN_MMC  #define CONFIG_ENV_SIZE		0x2000  #define CONFIG_SYS_MMC_ENV_DEV	0 -#elif defined(CONFIG_NAND_U_BOOT) +#elif defined(CONFIG_NAND)  #define CONFIG_ENV_IS_IN_NAND  #define CONFIG_ENV_SIZE		CONFIG_SYS_NAND_BLOCK_SIZE  #define CONFIG_ENV_OFFSET	((512 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE)  #define CONFIG_ENV_RANGE	(3 * CONFIG_ENV_SIZE) -#else +#elif defined(CONFIG_SYS_RAMBOOT)  #define CONFIG_ENV_IS_NOWHERE	/* Store ENV in memory only */  #define CONFIG_ENV_ADDR		(CONFIG_SYS_MONITOR_BASE - 0x1000)  #define CONFIG_ENV_SIZE		0x2000 -#endif  #else  #define CONFIG_ENV_IS_IN_FLASH  #if CONFIG_SYS_MONITOR_BASE > 0xfff80000 |