omap iommu: simple virtual address space management
authorHiroshi DOYU <Hiroshi.DOYU@nokia.com>
Wed, 28 Jan 2009 19:32:08 +0000 (21:32 +0200)
committerHiroshi DOYU <Hiroshi.DOYU@nokia.com>
Tue, 19 May 2009 05:23:49 +0000 (08:23 +0300)
commit69d3a84a646d6ad6cd693a7a3d5b9af414113d2c
tree3fe2ec29cc83ff07ae0d07df6b51c52a59a3944e
parent066aa9c1e3d0af52619fe26f05810990ff381d8c
omap iommu: simple virtual address space management

This patch provides a device drivers, which has a omap iommu, with
address mapping APIs between device virtual address(iommu), physical
address and MPU virtual address.

There are 4 possible patterns for iommu virtual address(iova/da) mapping.

    |iova/   mapping iommu_ page
    | da pa va (d)-(p)-(v) function type
  ---------------------------------------------------------------------------
  1 | c c c  1 - 1 - 1   _kmap() / _kunmap() s
  2 | c c,a c  1 - 1 - 1 _kmalloc()/ _kfree() s
  3 | c d c  1 - n - 1   _vmap() / _vunmap() s
  4 | c d,a c  1 - n - 1 _vmalloc()/ _vfree() n*

    'iova': device iommu virtual address
    'da': alias of 'iova'
    'pa': physical address
    'va': mpu virtual address

    'c': contiguous memory area
    'd': dicontiguous memory area
    'a': anonymous memory allocation
    '()': optional feature

    'n': a normal page(4KB) size is used.
    's': multiple iommu superpage(16MB, 1MB, 64KB, 4KB) size is used.

    '*': not yet, but feasible.

Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
arch/arm/include/asm/mach/map.h
arch/arm/mm/ioremap.c
arch/arm/mm/mmu.c
arch/arm/plat-omap/include/mach/iovmm.h [new file with mode: 0644]
arch/arm/plat-omap/iovmm.c [new file with mode: 0644]