blob: 182f79b9182d9720b7cd964b445bfd1a013fe508 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0
Paul Burtonad8783c2016-09-08 07:47:39 +01002/*
3 * Copyright (C) 2016 Imagination Technologies
Paul Burtonad8783c2016-09-08 07:47:39 +01004 */
5
6#include <common.h>
Simon Glass67c4e9f2019-11-14 12:57:45 -07007#include <init.h>
Simon Glass401d1c42020-10-30 21:38:53 -06008#include <asm/global_data.h>
Paul Burtonad8783c2016-09-08 07:47:39 +01009
10#include <asm/io.h>
11
12#include "boston-regs.h"
13
Simon Glass088454c2017-03-31 08:40:25 -060014DECLARE_GLOBAL_DATA_PTR;
15
Simon Glassf1683aa2017-04-06 12:47:05 -060016int dram_init(void)
Paul Burtonad8783c2016-09-08 07:47:39 +010017{
18 u32 ddrconf0 = __raw_readl((uint32_t *)BOSTON_PLAT_DDRCONF0);
19
Simon Glass088454c2017-03-31 08:40:25 -060020 gd->ram_size = (phys_size_t)(ddrconf0 & BOSTON_PLAT_DDRCONF0_SIZE) <<
21 30;
22
23 return 0;
Paul Burtonad8783c2016-09-08 07:47:39 +010024}
25
26ulong board_get_usable_ram_top(ulong total_size)
27{
28 DECLARE_GLOBAL_DATA_PTR;
29
30 if (gd->ram_top < CONFIG_SYS_SDRAM_BASE) {
31 /* 2GB wrapped around to 0 */
32 return CKSEG0ADDR(256 << 20);
33 }
34
35 return min_t(unsigned long, gd->ram_top, CKSEG0ADDR(256 << 20));
36}