• Hiroshi DOYU's avatar
    omap iommu: simple virtual address space management · 69d3a84a
    Hiroshi DOYU authored
    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: default avatarHiroshi DOYU <Hiroshi.DOYU@nokia.com>
    69d3a84a
mmu.c 26.8 KB