1a65b25d1SBin Meng /* 2a65b25d1SBin Meng * Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com> 3a65b25d1SBin Meng * 4a65b25d1SBin Meng * SPDX-License-Identifier: GPL-2.0+ 5a65b25d1SBin Meng */ 6a65b25d1SBin Meng 7a65b25d1SBin Meng #include <common.h> 8a65b25d1SBin Meng #include <asm/post.h> 9a65b25d1SBin Meng #include <asm/arch/qemu.h> 10a65b25d1SBin Meng 11a65b25d1SBin Meng DECLARE_GLOBAL_DATA_PTR; 12a65b25d1SBin Meng dram_init(void)13a65b25d1SBin Mengint dram_init(void) 14a65b25d1SBin Meng { 15a65b25d1SBin Meng u32 ram; 16a65b25d1SBin Meng 17a65b25d1SBin Meng outb(HIGH_RAM_ADDR, CMOS_ADDR_PORT); 18a65b25d1SBin Meng ram = ((u32)inb(CMOS_DATA_PORT)) << 14; 19a65b25d1SBin Meng outb(LOW_RAM_ADDR, CMOS_ADDR_PORT); 20a65b25d1SBin Meng ram |= ((u32)inb(CMOS_DATA_PORT)) << 6; 21a65b25d1SBin Meng ram += 16 * 1024; 22a65b25d1SBin Meng 23a65b25d1SBin Meng gd->ram_size = ram * 1024; 24a65b25d1SBin Meng post_code(POST_DRAM); 25a65b25d1SBin Meng 26a65b25d1SBin Meng return 0; 27a65b25d1SBin Meng } 28a65b25d1SBin Meng dram_init_banksize(void)29*76b00acaSSimon Glassint dram_init_banksize(void) 30a65b25d1SBin Meng { 31a65b25d1SBin Meng gd->bd->bi_dram[0].start = 0; 32a65b25d1SBin Meng gd->bd->bi_dram[0].size = gd->ram_size; 33*76b00acaSSimon Glass 34*76b00acaSSimon Glass return 0; 35a65b25d1SBin Meng } 36a65b25d1SBin Meng 37a65b25d1SBin Meng /* 38a65b25d1SBin Meng * This function looks for the highest region of memory lower than 4GB which 39a65b25d1SBin Meng * has enough space for U-Boot where U-Boot is aligned on a page boundary. 40a65b25d1SBin Meng * It overrides the default implementation found elsewhere which simply 41a65b25d1SBin Meng * picks the end of ram, wherever that may be. The location of the stack, 42a65b25d1SBin Meng * the relocation address, and how far U-Boot is moved by relocation are 43a65b25d1SBin Meng * set in the global data structure. 44a65b25d1SBin Meng */ board_get_usable_ram_top(ulong total_size)45a65b25d1SBin Mengulong board_get_usable_ram_top(ulong total_size) 46a65b25d1SBin Meng { 47a65b25d1SBin Meng return gd->ram_size; 48a65b25d1SBin Meng } 49