root/include/drm/ttm/ttm_page_alloc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ttm_dma_page_alloc_init
  2. ttm_dma_page_alloc_fini
  3. ttm_dma_page_alloc_debugfs
  4. ttm_dma_populate
  5. ttm_dma_unpopulate

   1 /*
   2  * Copyright (c) Red Hat Inc.
   3 
   4  * Permission is hereby granted, free of charge, to any person obtaining a
   5  * copy of this software and associated documentation files (the "Software"),
   6  * to deal in the Software without restriction, including without limitation
   7  * the rights to use, copy, modify, merge, publish, distribute, sub license,
   8  * and/or sell copies of the Software, and to permit persons to whom the
   9  * Software is furnished to do so, subject to the following conditions:
  10  *
  11  * The above copyright notice and this permission notice (including the
  12  * next paragraph) shall be included in all copies or substantial portions
  13  * of the Software.
  14  *
  15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
  18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  21  * DEALINGS IN THE SOFTWARE.
  22  *
  23  * Authors: Dave Airlie <airlied@redhat.com>
  24  *          Jerome Glisse <jglisse@redhat.com>
  25  */
  26 #ifndef TTM_PAGE_ALLOC
  27 #define TTM_PAGE_ALLOC
  28 
  29 #include <drm/ttm/ttm_bo_driver.h>
  30 #include <drm/ttm/ttm_memory.h>
  31 
  32 struct device;
  33 
  34 /**
  35  * Initialize pool allocator.
  36  */
  37 int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages);
  38 /**
  39  * Free pool allocator.
  40  */
  41 void ttm_page_alloc_fini(void);
  42 
  43 /**
  44  * ttm_pool_populate:
  45  *
  46  * @ttm: The struct ttm_tt to contain the backing pages.
  47  *
  48  * Add backing pages to all of @ttm
  49  */
  50 int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx);
  51 
  52 /**
  53  * ttm_pool_unpopulate:
  54  *
  55  * @ttm: The struct ttm_tt which to free backing pages.
  56  *
  57  * Free all pages of @ttm
  58  */
  59 void ttm_pool_unpopulate(struct ttm_tt *ttm);
  60 
  61 /**
  62  * Populates and DMA maps pages to fullfil a ttm_dma_populate() request
  63  */
  64 int ttm_populate_and_map_pages(struct device *dev, struct ttm_dma_tt *tt,
  65                                 struct ttm_operation_ctx *ctx);
  66 
  67 /**
  68  * Unpopulates and DMA unmaps pages as part of a
  69  * ttm_dma_unpopulate() request */
  70 void ttm_unmap_and_unpopulate_pages(struct device *dev, struct ttm_dma_tt *tt);
  71 
  72 /**
  73  * Output the state of pools to debugfs file
  74  */
  75 int ttm_page_alloc_debugfs(struct seq_file *m, void *data);
  76 
  77 #if defined(CONFIG_SWIOTLB) || defined(CONFIG_INTEL_IOMMU)
  78 /**
  79  * Initialize pool allocator.
  80  */
  81 int ttm_dma_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages);
  82 
  83 /**
  84  * Free pool allocator.
  85  */
  86 void ttm_dma_page_alloc_fini(void);
  87 
  88 /**
  89  * Output the state of pools to debugfs file
  90  */
  91 int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data);
  92 
  93 int ttm_dma_populate(struct ttm_dma_tt *ttm_dma, struct device *dev,
  94                         struct ttm_operation_ctx *ctx);
  95 void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev);
  96 
  97 #else
  98 static inline int ttm_dma_page_alloc_init(struct ttm_mem_global *glob,
  99                                           unsigned max_pages)
 100 {
 101         return -ENODEV;
 102 }
 103 
 104 static inline void ttm_dma_page_alloc_fini(void) { return; }
 105 
 106 static inline int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data)
 107 {
 108         return 0;
 109 }
 110 static inline int ttm_dma_populate(struct ttm_dma_tt *ttm_dma,
 111                                 struct device *dev,
 112                                 struct ttm_operation_ctx *ctx)
 113 {
 114         return -ENOMEM;
 115 }
 116 static inline void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma,
 117                                       struct device *dev)
 118 {
 119 }
 120 #endif
 121 
 122 #endif

/* [<][>][^][v][top][bottom][index][help] */