video: tegra: host: Add sparse texture support
[linux-3.10.git] / drivers / video / tegra / host / gk20a / mm_gk20a.h
index e39806c..b0fe0bd 100644 (file)
@@ -3,7 +3,7 @@
  *
  * GK20A memory management
  *
- * Copyright (c) 2011-2013, NVIDIA CORPORATION.  All rights reserved.
+ * Copyright (c) 2011-2014, NVIDIA CORPORATION.  All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms and conditions of the GNU General Public License,
@@ -173,6 +173,8 @@ struct mapped_buffer_node {
        struct vm_gk20a *vm;
        struct rb_node node;
        struct list_head unmap_list;
+       struct list_head va_buffers_list;
+       struct vm_reserved_va_node *va_node;
        u64 addr;
        u64 size;
        struct mem_mgr *memmgr;
@@ -188,6 +190,15 @@ struct mapped_buffer_node {
        bool va_allocated;
 };
 
+struct vm_reserved_va_node {
+       struct list_head reserved_va_list;
+       struct list_head va_buffers_list;
+       u32 pgsz_idx;
+       u64 vaddr_start;
+       u64 size;
+       bool sparse;
+};
+
 struct vm_gk20a {
        struct mm_gk20a *mm;
        struct nvhost_as_share *as_share; /* as_share this represents */
@@ -211,6 +222,11 @@ struct vm_gk20a {
        struct nvhost_allocator vma[gmmu_nr_page_sizes];
        struct rb_root mapped_buffers;
 
+       struct list_head reserved_va_list;
+
+       dma_addr_t zero_page_iova;
+       void *zero_page_cpuva;
+       struct sg_table *zero_page_sgt;
 };
 
 struct gk20a;