mmap on 440gx
Ed Goforth
egoforth at gmail.com
Fri Jun 17 13:47:22 EST 2005
On 6/16/05, Matt Porter <mporter at kernel.crashing.org> wrote:
> On Thu, Jun 16, 2005 at 05:33:44PM -0400, Ed Goforth wrote:
Thanks for taking the time to reply.
> > I've been struggling with implementing mmap on a 440gx-based custom
> > board. I have been able to use ioremap(), but we really need a mmap()
> > for our software. The kernel is 2.4.18 (TimeSys 4.0).
>
> There are some special things done for handling [io]_remap_page/pfn_range
> on other vendor kernels and the current mainline kernel. I'm not sure
> if your vendor kernel addressed them since it would be a vendor-specific
> patch in that timeframe. The special things are due to 36-bit
> addressing.
>
> > I'm trying to access one of our FPGA's located at 0x50000000. Offsets
>
> Let's start at the beginning. How do you have FPGA's at 0x50000000?
> that address falls with the fix DDR SDRAM area on the 440GX memory
> map. All peripheral and EBC space is mapped by 4GB. You lost me
> right here. Oh wait, are you referring to the least significant 32-bits
> of the physical mapping. It's not really at 0x50000000.
Of course, you're correct. The 36-bit base address is 0x1_0000_0000.
It is mapped to the 32-bit address 0x5000_0000.
Should I pass the 36-bit address to remap_page_range()?
For what it's worth, __pa(0x5000_0000) returns 0x9000_0000.
>
> You need something like the bigphys_remap patch for 2.4 that can be
> found at ftp://source.mvista.com/pub/linuxppc/
I just checked the source, and that patch has indeed been applied.
>
> It does the same fixup for remap_page_range() that happens for
> ioremap(). In 2.6 this stuff is all in the mainline kernel but
> you use io_rename_[page|pfn]_range() there.
>
> -Matt
>
Thanks,
Ed
More information about the Linuxppc-embedded
mailing list