1 /* 2 * (C) Copyright 2000-2003 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * Copyright (C) 2004-2007, 2012 Freescale Semiconductor, Inc. 6 * TsiChung Liew (Tsi-Chung.Liew@freescale.com) 7 * 8 * SPDX-License-Identifier: GPL-2.0+ 9 */ 10 11 #include <config.h> 12 #include <common.h> 13 #include <asm/immap.h> 14 #include <asm/io.h> 15 16 DECLARE_GLOBAL_DATA_PTR; 17 18 int checkboard(void) 19 { 20 puts("Board: "); 21 puts("Freescale FireEngine 5373 EVB\n"); 22 return 0; 23 }; 24 25 int dram_init(void) 26 { 27 sdram_t *sdram = (sdram_t *)(MMAP_SDRAM); 28 u32 dramsize, i; 29 30 dramsize = CONFIG_SYS_SDRAM_SIZE * 0x100000; 31 32 for (i = 0x13; i < 0x20; i++) { 33 if (dramsize == (1 << i)) 34 break; 35 } 36 i--; 37 38 out_be32(&sdram->cs0, CONFIG_SYS_SDRAM_BASE | i); 39 out_be32(&sdram->cfg1, CONFIG_SYS_SDRAM_CFG1); 40 out_be32(&sdram->cfg2, CONFIG_SYS_SDRAM_CFG2); 41 42 /* Issue PALL */ 43 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 2); 44 45 /* Issue LEMR */ 46 out_be32(&sdram->mode, CONFIG_SYS_SDRAM_EMOD); 47 out_be32(&sdram->mode, CONFIG_SYS_SDRAM_MODE | 0x04000000); 48 49 udelay(500); 50 51 /* Issue PALL */ 52 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 2); 53 54 /* Perform two refresh cycles */ 55 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 4); 56 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 4); 57 58 out_be32(&sdram->mode, CONFIG_SYS_SDRAM_MODE); 59 60 out_be32(&sdram->ctrl, 61 (CONFIG_SYS_SDRAM_CTRL & ~0x80000000) | 0x10000c00); 62 63 udelay(100); 64 65 gd->ram_size = dramsize; 66 67 return 0; 68 }; 69 70 int testdram(void) 71 { 72 /* TODO: XXX XXX XXX */ 73 printf("DRAM test not implemented!\n"); 74 75 return (0); 76 } 77