Dan Malek wrote: > Brendan John Simon wrote: > > > Sorry about my ignornace but why can't I use the address range > > 0x80000000-0xBFFFFFFF for my peripherals ? > > Is 0xC0000000-0xFFFFFFFF ok ? What address range would be recommended ? > > I posted this before.....I hope this matches previous messages :-). > > If you map (i.e. ioremap()) physical memory prior to the > kernel VM initialization, the mapping is 1:1 virtual to physical. > This happens in mm/init.c for things like the IMMR and some > other board control registers. In this case, mapping below > something like 0xd0000000 causes problems with VM collision in > kernel or user process space. > > After the kernel VM is initialized, you can ioremap() any > physical space, as the mapping isn't 1:1.
The memory controller is setup in my boot loader. It knows nothing about VMA, only PMA. I currently have CS0 mapped to 0xFF800000 for flash, CS1/2 mapped to 0x00000000 and CS4 to 0x80000000 for DRAM. Both Dan and Wolfgang have suggested that all peripherals should be at 0xD0000000 and above. I am happy with this but am not sure what the DRAM address should be. Should I map CS1 and CS2 to 0x00000000 or 0xC0000000 ? I have not changed any code in the linux source tree with regards to memory mapping. ie. not use of ioremap as I do not use any of the peripherals yet. I've got a very vague idea of what ioremap() does and will read more on it. I sounds like I will probably need it to access my peripherals from within linux. Is this correct ? > At this stage, nothing beats a simple rom monitor that can display > memory after a processor reset. I'll look into adding this support to my bootloader. Thanks, Brendan Simon. ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
