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

List:       linux-arm-kernel
Subject:    ioremap non-contiguous phys to contiguous virt?
From:       Marc Singer <elf () buici ! com>
Date:       2004-10-18 19:34:45
Message-ID: 20041018193444.GA17235 () buici ! com
[Download RAW message or body]

For the sake of the making it easy on the mtd drivers, I'd like to map
discontiguous physical memory to a contiguous virtual address space.
This hardware layout is an artifact of the design that allows a larger
flash device to be used in later implementations.

I think that my options are

  1) ignore the problem and create a custom maps driver with NO_XIP set.
  2) create a custom maps driver, but use the io_table_init mechanism
     to map the memory contiguously (eeww)
  3) find a clever method to do something like this

     struct memvec mv = { { PHYS0, LEN0 }, {PHYS1, LEN1 } };
     void* virt = ioremapv (memvec, 2);

I can see from the ioremap code that this would be simple to
implement.  The questions are these: is there a better way?, is this a
bad idea?

There is a simple reason why this is desirable.  The jffs2 driver uses
a feature of the MTD driver that grants it access to the flash memory
array using a simple pointer.  Using option 1) above, I can circumvent
the issue by telling MTD that the flash cannot be use for XIP and is,
therefore, not linearly mapped.

Cheers.


-------------------------------------------------------------------
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