1 /* 2 * (C) Copyright 2000-2003 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * Copyright (C) 2004-2008, 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 M5208EVBe\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 #ifdef CONFIG_SYS_SDRAM_BASE1 40 out_be32(&sdram->cs1, CONFIG_SYS_SDRAM_BASE | i); 41 #endif 42 out_be32(&sdram->cfg1, CONFIG_SYS_SDRAM_CFG1); 43 out_be32(&sdram->cfg2, CONFIG_SYS_SDRAM_CFG2); 44 45 udelay(500); 46 47 /* Issue PALL */ 48 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 2); 49 asm("nop"); 50 51 /* Perform two refresh cycles */ 52 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 4); 53 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 4); 54 asm("nop"); 55 56 /* Issue LEMR */ 57 out_be32(&sdram->mode, CONFIG_SYS_SDRAM_MODE); 58 asm("nop"); 59 out_be32(&sdram->mode, CONFIG_SYS_SDRAM_EMOD); 60 asm("nop"); 61 62 out_be32(&sdram->ctrl, CONFIG_SYS_SDRAM_CTRL | 2); 63 asm("nop"); 64 65 out_be32(&sdram->ctrl, 66 (CONFIG_SYS_SDRAM_CTRL & ~0x80000000) | 0x10000F00); 67 asm("nop"); 68 69 udelay(100); 70 71 gd->ram_size = dramsize; 72 73 return 0; 74 }; 75 76 int testdram(void) 77 { 78 /* TODO: XXX XXX XXX */ 79 printf("DRAM test not implemented!\n"); 80 81 return (0); 82 } 83