Example #1
0
unsigned *target_atag_mem(unsigned *ptr)
{
    struct smem_ram_ptable ram_ptable;
    uint8_t i = 0;

	/* Make sure RAM partition table is initialized */
	ASSERT(smem_ram_ptable_init(&ram_ptable));

	for (i = 0; i < ram_ptable.len; i++)
	{
		if (ram_ptable.parts[i].category == SDRAM &&
			(ram_ptable.parts[i].type == SYS_MEMORY) &&
			((ram_ptable.parts[i].start == SDRAM_START_ADDR)||
			(ram_ptable.parts[i].start == SDRAM_SEC_BANK_START_ADDR)))
		{
			ASSERT(ram_ptable.parts[i].size >= SIZE_256M);

			if (ram_ptable.parts[i].start == SDRAM_START_ADDR)
				ptr = target_create_atag(ptr, copper_default_first_256M);
			else
				ptr = target_create_atag(ptr, copper_default_second_256M);

			if (ram_ptable.parts[i].size > SIZE_256M)
			{
				ptr = target_mem_atag_create(ptr,
					(ram_ptable.parts[i].size - SIZE_256M),
					(ram_ptable.parts[i].start + SIZE_256M));
			}
		}

		/* Pass along all other usable memory regions to Linux */
		if (ram_ptable.parts[i].category == SDRAM &&
			(ram_ptable.parts[i].type == SYS_MEMORY) &&
			(ram_ptable.parts[i].start != SDRAM_START_ADDR))
		{
			ptr = target_mem_atag_create(ptr,
				ram_ptable.parts[i].size,
				ram_ptable.parts[i].start);
		}
	}

    return ptr;
}
Example #2
0
unsigned *target_atag_mem(unsigned *ptr)
{
	struct smem_ram_ptable ram_ptable;
	uint8_t i = 0;

	if (smem_ram_ptable_init(&ram_ptable))
	{
		for (i = 0; i < ram_ptable.len; i++)
		{
			if (ram_ptable.parts[i].category == SDRAM &&
				(ram_ptable.parts[i].type == SYS_MEMORY) &&
				(ram_ptable.parts[i].start == PHYS_MEM_START_ADDR))
			{
				ASSERT(ram_ptable.parts[i].size >= SIZE_256M);

				ptr = target_first_256M_atag(ptr);

				if (ram_ptable.parts[i].size > SIZE_256M)
				{
					ptr = target_mem_atag_create(ptr,
							(ram_ptable.parts[i].size - SIZE_256M),
							(ram_ptable.parts[i].start + SIZE_256M));
				}
			}

			/* Pass along all other usable memory regions to Linux */
			if (ram_ptable.parts[i].category == SDRAM &&
				(ram_ptable.parts[i].type == SYS_MEMORY) &&
				(ram_ptable.parts[i].start != PHYS_MEM_START_ADDR))
			{
				ptr = target_mem_atag_create(ptr,
							ram_ptable.parts[i].size,
							ram_ptable.parts[i].start);
			}
		}
	} else {
		dprintf(CRITICAL, "ERROR: Unable to read RAM partition\n");
		ASSERT(0);
	}

	return ptr;
}
Example #3
0
unsigned *target_atag(unsigned *ptr, atag_mem_info usable_mem_map[], unsigned num_regions)
{
	unsigned i;

	dprintf(SPEW, "Number of regions for HLOS in 1st 256MB = %u\n", num_regions);
	for (i=0; i < num_regions; i++)
	{
		ptr = target_mem_atag_create(ptr,
						usable_mem_map[i].size,
						usable_mem_map[i].start_addr);
	}
	return ptr;
}
unsigned *target_atag_create(unsigned *ptr,
	mem_info usable_mem_map[], unsigned num_regions)
{
	unsigned int i;

	ASSERT(num_regions);

	dprintf(SPEW, "Number of HLOS regions in 1st bank = %u\n", num_regions);

	for (i = 0; i < num_regions; i++)
	{
		ptr = target_mem_atag_create(ptr,
			usable_mem_map[i].size,
			usable_mem_map[i].start_addr);
	}
	return ptr;
}