[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-arm-kernel
Subject:    Re: Memory mapping on Cirrus EP9315
From:       "Paul Chitescu" <Paul.Chitescu () IMC-Group ! org>
Date:       2004-11-16 13:39:31
Message-ID: 003901c4cbe1$b4634020$e7b9e6c1 () s40 ! icpe ! ro
[Download RAW message or body]

It would help to describe how your memory is mapped in hardware.

Linux knows nothing about chipselects. Your bootloader must initialize them
and the DRAM registers prior to starting the kernel. All the kernel is
interessed in is at which physical addresses the memory blocks are located.

You can declare multiple memory blocks using a tagged list passed from
bootloader to the kernel. You can do that even without discontiguous memory
support - although it will result in allocating nodes even for memory that
is not present.

Note that the EP93xx have some tweaks that can remap the address lines and
reduce the number of blocks. Let's give you some info about our experience.

We have 64MB of memory in a single bank. Because of address lines (A23 and
A25 not decoded) by default it's seen as 8 blocks of 8MB each scattered
across 216MB of address space:

0xC0000000 - 0xC07FFFFF
0xC1000000
0xC4000000
0xC5000000
0xC8000000
0xC9000000
0xCC000000
0xCD000000 - 0xCD7FFFFF

Playing with the mapping of the CPU SDRAM address lines allowed us to create
only 2 x 32MB blocks:
0xC0000000 - 0xC17FFFFF
0xC4000000 - 0xC57FFFFF

Furthermore, because of how the blocks were mirrored we could see the entire
memory in one block and give up the discontiguous memory setting:
1. block 0
2. block 0 (mirror)
3. block 1
4. block 1 (mirror)
We considered 2 and 3 together as a contiguous 64MB block and that solved
our problems.
0xC2000000 - 0xC57FFFFF

Also note the video controller has a bug that makes the framebuffer only
possible in the first 128MB of addressing space of the SDRAM block - the bit
27 in the VidScrnPage register is not decoded. We ran into trouble with that
when we had 8 x 8MB blocks that were scattered beyond that 128MB limit
(0x?C000000) as the kernel allocated the framebuffer high.


Paul Chitescu

----- Original Message -----
From: "Marcin Glogowski" <marcin.glogowski@interia.pl>
To: <linux-arm-kernel@lists.arm.linux.org.uk>
Sent: Tuesday, November 16, 2004 11:34
Subject: Memory mapping on Cirrus EP9315


> Hallo,
> I'm looking for any information how to set up all of my memory banks (or
> only several) under Linux.
> I have the EP9315 motherboard which is similar to Cirrus EP9315
motherboard.
> I noticed that the memory mapping can be done by the mm.c file, but I
> have no idea how to set it up.
> My system is recognize only the memomory which is in the default memory
> bank - nSDCE3 and the nSDCE0 memory bank isn't visible :(.
> There is no possibility to turn on the discontinous memory support in
> LinuxConfig (I though that it could help).
> I would be very grateful for any help.
> Bye.



-------------------------------------------------------------------
Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ:       http://www.arm.linux.org.uk/armlinux/mlfaq.php
Etiquette: http://www.arm.linux.org.uk/armlinux/mletiquette.php
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic