Re: pxa300 - DDRAM base value

From: Mike Rapoport
Date: Tue Jun 08 2010 - 02:22:31 EST


Marek Vasut wrote:
Dne Po 7. Äervna 2010 21:37:16 Mike Rapoport napsal(a):
hi,
Now, I can able to boot after editing following files
arch/arm/mach-pxa/Makefile.boot and
arch/arm/mach/pxa/include/mach/memory.h (0x80000000 changed to
0xa0000000). My doubt is
1.why 0x80000000 (DDR phy address) is aliased to 0xa0000000 in pxa
architecture?
2.In my development board two DDRAMs mapped at 0x80000000-0x88000000 and
0xc0000000-0xc8000000, how can I inform to kernel about this different
bank and size?.
enable CONFIG_HIGHMEM

Mike, that wont help him as he has PHYS_OFFSET=0xa0000000 . Selecting CONFIG_HIGHMEM will only cause the pages for RAM below 0xa0000000 to have incorrectly computated descriptor addresses (or maybe will be ignored).

The page descriptors for RAM at PA 0xa0000000 are at VA 0xc0000000 + some offset (there's an easy linear formula to compute their offset). Now if you feed that formula with 0x80000000, the page descriptors will end below 0xc0000000, which isn't a valid VA, therefore the descriptors will not be valid either (in the better case, but it will hang the kernel at early stage anyway).

Therefore there are two ways -- either use what I suggested earlier or wait until the PHYS_OFFSET is dynamically computated (check Eric's patchset).

Not quite. I have it working with CONFIG_HIGHMEM, I've just forgotten about cm_x300_fixup:

static void __init cm_x300_fixup(struct machine_desc *mdesc, struct tag *tags,
char **cmdline, struct meminfo *mi)
{
/* Make sure that mi->bank[0].start = PHYS_ADDR */
for (; tags->hdr.size; tags = tag_next(tags))
if (tags->hdr.tag == ATAG_MEM &&
tags->u.mem.start == 0x80000000) {
tags->u.mem.start = 0xa0000000;
break;
}
}


Cheers
My Boot loader details,
------------------------------
=>bdi
arch_number = 0x00000B04
env_t = 0x00000000
boot_params = 0x80000100
DRAM bank = 0x00000000
-> start = 0x80000000
-> size = 0x08000000
DRAM bank = 0x00000001
-> start = 0xC0000000
-> size = 0x08000000
ethaddr = 08:00:3e:26:0a:5b
ip_addr = 192.168.0.21
baudrate = 115200 bps
=>ver
U-Boot 2010.03 (Jun 01 2010 - 14:27:43)


With Thanks
J.Balakrishnan
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


--
Sincerely yours,
Mike.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/