uboot/board/freescale/m5208evbe/m5208evbe.c
<<
>>
Prefs
   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
  16DECLARE_GLOBAL_DATA_PTR;
  17
  18int checkboard(void)
  19{
  20        puts("Board: ");
  21        puts("Freescale M5208EVBe\n");
  22        return 0;
  23};
  24
  25phys_size_t initdram(int board_type)
  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        return dramsize;
  72};
  73
  74int testdram(void)
  75{
  76        /* TODO: XXX XXX XXX */
  77        printf("DRAM test not implemented!\n");
  78
  79        return (0);
  80}
  81