diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon.h')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 7f007185e7f7..af12a2fe3221 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -201,6 +201,14 @@ int radeon_fence_wait_last(struct radeon_device *rdev); | |||
201 | struct radeon_fence *radeon_fence_ref(struct radeon_fence *fence); | 201 | struct radeon_fence *radeon_fence_ref(struct radeon_fence *fence); |
202 | void radeon_fence_unref(struct radeon_fence **fence); | 202 | void radeon_fence_unref(struct radeon_fence **fence); |
203 | 203 | ||
204 | /* | ||
205 | * Tiling registers | ||
206 | */ | ||
207 | struct radeon_surface_reg { | ||
208 | struct radeon_object *robj; | ||
209 | }; | ||
210 | |||
211 | #define RADEON_GEM_MAX_SURFACES 8 | ||
204 | 212 | ||
205 | /* | 213 | /* |
206 | * Radeon buffer. | 214 | * Radeon buffer. |
@@ -213,6 +221,7 @@ struct radeon_object_list { | |||
213 | uint64_t gpu_offset; | 221 | uint64_t gpu_offset; |
214 | unsigned rdomain; | 222 | unsigned rdomain; |
215 | unsigned wdomain; | 223 | unsigned wdomain; |
224 | uint32_t tiling_flags; | ||
216 | }; | 225 | }; |
217 | 226 | ||
218 | int radeon_object_init(struct radeon_device *rdev); | 227 | int radeon_object_init(struct radeon_device *rdev); |
@@ -242,8 +251,15 @@ void radeon_object_list_clean(struct list_head *head); | |||
242 | int radeon_object_fbdev_mmap(struct radeon_object *robj, | 251 | int radeon_object_fbdev_mmap(struct radeon_object *robj, |
243 | struct vm_area_struct *vma); | 252 | struct vm_area_struct *vma); |
244 | unsigned long radeon_object_size(struct radeon_object *robj); | 253 | unsigned long radeon_object_size(struct radeon_object *robj); |
245 | 254 | void radeon_object_clear_surface_reg(struct radeon_object *robj); | |
246 | 255 | int radeon_object_check_tiling(struct radeon_object *robj, bool has_moved, | |
256 | bool force_drop); | ||
257 | void radeon_object_set_tiling_flags(struct radeon_object *robj, | ||
258 | uint32_t tiling_flags, uint32_t pitch); | ||
259 | void radeon_object_get_tiling_flags(struct radeon_object *robj, uint32_t *tiling_flags, uint32_t *pitch); | ||
260 | void radeon_bo_move_notify(struct ttm_buffer_object *bo, | ||
261 | struct ttm_mem_reg *mem); | ||
262 | void radeon_bo_fault_reserve_notify(struct ttm_buffer_object *bo); | ||
247 | /* | 263 | /* |
248 | * GEM objects. | 264 | * GEM objects. |
249 | */ | 265 | */ |
@@ -535,6 +551,11 @@ struct radeon_asic { | |||
535 | void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock); | 551 | void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock); |
536 | void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes); | 552 | void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes); |
537 | void (*set_clock_gating)(struct radeon_device *rdev, int enable); | 553 | void (*set_clock_gating)(struct radeon_device *rdev, int enable); |
554 | |||
555 | int (*set_surface_reg)(struct radeon_device *rdev, int reg, | ||
556 | uint32_t tiling_flags, uint32_t pitch, | ||
557 | uint32_t offset, uint32_t obj_size); | ||
558 | int (*clear_surface_reg)(struct radeon_device *rdev, int reg); | ||
538 | }; | 559 | }; |
539 | 560 | ||
540 | union radeon_asic_config { | 561 | union radeon_asic_config { |
@@ -568,6 +589,10 @@ int radeon_gem_busy_ioctl(struct drm_device *dev, void *data, | |||
568 | int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data, | 589 | int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data, |
569 | struct drm_file *filp); | 590 | struct drm_file *filp); |
570 | int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp); | 591 | int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp); |
592 | int radeon_gem_set_tiling_ioctl(struct drm_device *dev, void *data, | ||
593 | struct drm_file *filp); | ||
594 | int radeon_gem_get_tiling_ioctl(struct drm_device *dev, void *data, | ||
595 | struct drm_file *filp); | ||
571 | 596 | ||
572 | 597 | ||
573 | /* | 598 | /* |
@@ -627,6 +652,7 @@ struct radeon_device { | |||
627 | bool shutdown; | 652 | bool shutdown; |
628 | bool suspend; | 653 | bool suspend; |
629 | bool need_dma32; | 654 | bool need_dma32; |
655 | struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES]; | ||
630 | }; | 656 | }; |
631 | 657 | ||
632 | int radeon_device_init(struct radeon_device *rdev, | 658 | int radeon_device_init(struct radeon_device *rdev, |
@@ -801,5 +827,7 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v) | |||
801 | #define radeon_set_memory_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e)) | 827 | #define radeon_set_memory_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e)) |
802 | #define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->set_pcie_lanes((rdev), (l)) | 828 | #define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->set_pcie_lanes((rdev), (l)) |
803 | #define radeon_set_clock_gating(rdev, e) (rdev)->asic->set_clock_gating((rdev), (e)) | 829 | #define radeon_set_clock_gating(rdev, e) (rdev)->asic->set_clock_gating((rdev), (e)) |
830 | #define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->set_surface_reg((rdev), (r), (f), (p), (o), (s))) | ||
831 | #define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r))) | ||
804 | 832 | ||
805 | #endif | 833 | #endif |