blob: 08e4d59916419b95fd8eb0c10b1be0189d8f9c8b [file] [log] [blame]
Kinson Chik18e36332011-08-15 10:07:28 -07001/* Copyright (c) 2009-2011, Code Aurora Forum. All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 * * Redistributions of source code must retain the above copyright
6 * notice, this list of conditions and the following disclaimer.
7 * * Redistributions in binary form must reproduce the above copyright
8 * notice, this list of conditions and the following disclaimer in the
9 * documentation and/or other materials provided with the distribution.
10 * * Neither the name of Code Aurora nor
11 * the names of its contributors may be used to endorse or promote
12 * products derived from this software without specific prior written
13 * permission.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 *
27 */
28
29#include <reg.h>
30#include <debug.h>
31#include <smem.h>
32#include <stdint.h>
33
34#define SIZE_1M (1024 * 1024)
35#define SIZE_8M (8 * SIZE_1M)
36#define SIZE_10M (10 * SIZE_1M)
37#define SIZE_512M (512 * SIZE_1M)
38
39unsigned* target_atag_mem(unsigned* ptr)
40{
41 struct smem_ram_ptable ram_ptable;
42 uint8_t i = 0;
43
44 if (smem_ram_ptable_init(&ram_ptable))
45 {
46 for (i = 0; i < ram_ptable.len; i++)
47 {
48 if (ram_ptable.parts[i].category == SDRAM &&
49 ram_ptable.parts[i].type == SYS_MEMORY &&
50 ram_ptable.parts[i].start == 0x40000000)
51 {
52 ASSERT(ram_ptable.parts[i].size >= SIZE_10M);
53
54 *ptr++ = 4;
55 *ptr++ = 0x54410002;
56 *ptr++ = SIZE_10M;
57 *ptr++ = ram_ptable.parts[i].start + SIZE_8M;
58 }
59 }
60 }
61 else
62 {
63 dprintf(CRITICAL, "ERROR: Unable to read RAM partition\n");
64 ASSERT(0);
65 }
66
67 return ptr;
68}
69
70unsigned target_get_max_flash_size(void)
71{
72 return (SIZE_512M);
73}