aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/ttm/ttm_bo_api.h23
-rw-r--r--include/drm/ttm/ttm_bo_driver.h16
2 files changed, 38 insertions, 1 deletions
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
index 8c8005ec4eaf..3e273e0b9417 100644
--- a/include/drm/ttm/ttm_bo_api.h
+++ b/include/drm/ttm/ttm_bo_api.h
@@ -66,6 +66,26 @@ struct ttm_placement {
66 const uint32_t *busy_placement; 66 const uint32_t *busy_placement;
67}; 67};
68 68
69/**
70 * struct ttm_bus_placement
71 *
72 * @addr: mapped virtual address
73 * @base: bus base address
74 * @is_iomem: is this io memory ?
75 * @size: size in byte
76 * @offset: offset from the base address
77 *
78 * Structure indicating the bus placement of an object.
79 */
80struct ttm_bus_placement {
81 void *addr;
82 unsigned long base;
83 unsigned long size;
84 unsigned long offset;
85 bool is_iomem;
86 bool io_reserved;
87};
88
69 89
70/** 90/**
71 * struct ttm_mem_reg 91 * struct ttm_mem_reg
@@ -75,6 +95,7 @@ struct ttm_placement {
75 * @num_pages: Actual size of memory region in pages. 95 * @num_pages: Actual size of memory region in pages.
76 * @page_alignment: Page alignment. 96 * @page_alignment: Page alignment.
77 * @placement: Placement flags. 97 * @placement: Placement flags.
98 * @bus: Placement on io bus accessible to the CPU
78 * 99 *
79 * Structure indicating the placement and space resources used by a 100 * Structure indicating the placement and space resources used by a
80 * buffer object. 101 * buffer object.
@@ -87,6 +108,7 @@ struct ttm_mem_reg {
87 uint32_t page_alignment; 108 uint32_t page_alignment;
88 uint32_t mem_type; 109 uint32_t mem_type;
89 uint32_t placement; 110 uint32_t placement;
111 struct ttm_bus_placement bus;
90}; 112};
91 113
92/** 114/**
@@ -274,6 +296,7 @@ struct ttm_bo_kmap_obj {
274 ttm_bo_map_kmap = 3, 296 ttm_bo_map_kmap = 3,
275 ttm_bo_map_premapped = 4 | TTM_BO_MAP_IOMEM_MASK, 297 ttm_bo_map_premapped = 4 | TTM_BO_MAP_IOMEM_MASK,
276 } bo_kmap_type; 298 } bo_kmap_type;
299 struct ttm_buffer_object *bo;
277}; 300};
278 301
279/** 302/**
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index 69f70e418c2c..da39865d67d8 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -352,12 +352,21 @@ struct ttm_bo_driver {
352 struct ttm_mem_reg *new_mem); 352 struct ttm_mem_reg *new_mem);
353 /* notify the driver we are taking a fault on this BO 353 /* notify the driver we are taking a fault on this BO
354 * and have reserved it */ 354 * and have reserved it */
355 void (*fault_reserve_notify)(struct ttm_buffer_object *bo); 355 int (*fault_reserve_notify)(struct ttm_buffer_object *bo);
356 356
357 /** 357 /**
358 * notify the driver that we're about to swap out this bo 358 * notify the driver that we're about to swap out this bo
359 */ 359 */
360 void (*swap_notify) (struct ttm_buffer_object *bo); 360 void (*swap_notify) (struct ttm_buffer_object *bo);
361
362 /**
363 * Driver callback on when mapping io memory (for bo_move_memcpy
364 * for instance). TTM will take care to call io_mem_free whenever
365 * the mapping is not use anymore. io_mem_reserve & io_mem_free
366 * are balanced.
367 */
368 int (*io_mem_reserve)(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem);
369 void (*io_mem_free)(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem);
361}; 370};
362 371
363/** 372/**
@@ -685,6 +694,11 @@ extern int ttm_bo_pci_offset(struct ttm_bo_device *bdev,
685 unsigned long *bus_offset, 694 unsigned long *bus_offset,
686 unsigned long *bus_size); 695 unsigned long *bus_size);
687 696
697extern int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
698 struct ttm_mem_reg *mem);
699extern void ttm_mem_io_free(struct ttm_bo_device *bdev,
700 struct ttm_mem_reg *mem);
701
688extern void ttm_bo_global_release(struct ttm_global_reference *ref); 702extern void ttm_bo_global_release(struct ttm_global_reference *ref);
689extern int ttm_bo_global_init(struct ttm_global_reference *ref); 703extern int ttm_bo_global_init(struct ttm_global_reference *ref);
690 704