diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-29 15:31:59 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-29 15:31:59 -0400 |
| commit | 84210aeb4a6a77de8a3067b121026bad630cd3da (patch) | |
| tree | 1a458ba7dba9955108349a49a4e878ed9ea79755 /include | |
| parent | 7d4dd028b022ddf8631b4530ed8d7777526f545e (diff) | |
| parent | ed8f0d9e708a1a7c9222e7d0a35d97521e904223 (diff) | |
Merge branch 'drm-radeon-kms' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-radeon-kms' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (35 commits)
drm/radeon: set fb aperture sizes for framebuffer handoff.
drm/ttm: fix highuser vs dma32 confusion.
drm/radeon: Fix size used for benchmarking BO copies.
drm/radeon: Add radeon.test parameter for running BO GPU copy tests.
drm/radeon/kms: allow interruptible waits for objects.
drm/ttm: powerpc: Fix Highmem cache flushing.
x86: Export kmap_atomic_prot() needed for TTM.
drm/ttm: Fix ttm in-kernel copying of pages with non-standard caching attributes.
drm/ttm: Fix an oops and sync object leak.
drm/radeon/kms: vram sizing on certain r100 chips needs workaround.
drm/radeon: Pay more attention to object placement requested by userspace.
drm/radeon: Fall back to evicting BOs with memcpy if necessary.
drm/radeon: Don't unreserve twice on failure to validate.
drm/radeon/kms: fix bandwidth computation on avivo hardware
drm/radeon/kms: add initial colortiling support.
drm/radeon/kms: fix hotspot handling on pre-avivo chips
drm/radeon/kms: enable frac fb divs on rs600/rs690/rs740
drm/radeon/kms: add PLL flag to prefer frequencies <= the target freq
drm/radeon/kms: block RN50 from using 3D engine.
drm/radeon/kms: fix VRAM sizing like DDX does it.
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/drm/radeon_drm.h | 23 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_bo_driver.h | 20 | ||||
| -rw-r--r-- | include/drm/ttm/ttm_module.h | 2 |
3 files changed, 42 insertions, 3 deletions
diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h index 41862e9a4c20..af4b4826997e 100644 --- a/include/drm/radeon_drm.h +++ b/include/drm/radeon_drm.h | |||
| @@ -506,6 +506,8 @@ typedef struct { | |||
| 506 | #define DRM_RADEON_GEM_WAIT_IDLE 0x24 | 506 | #define DRM_RADEON_GEM_WAIT_IDLE 0x24 |
| 507 | #define DRM_RADEON_CS 0x26 | 507 | #define DRM_RADEON_CS 0x26 |
| 508 | #define DRM_RADEON_INFO 0x27 | 508 | #define DRM_RADEON_INFO 0x27 |
| 509 | #define DRM_RADEON_GEM_SET_TILING 0x28 | ||
| 510 | #define DRM_RADEON_GEM_GET_TILING 0x29 | ||
| 509 | 511 | ||
| 510 | #define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t) | 512 | #define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t) |
| 511 | #define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START) | 513 | #define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START) |
| @@ -544,7 +546,8 @@ typedef struct { | |||
| 544 | #define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle) | 546 | #define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle) |
| 545 | #define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs) | 547 | #define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs) |
| 546 | #define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info) | 548 | #define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info) |
| 547 | 549 | #define DRM_IOCTL_RADEON_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling) | |
| 550 | #define DRM_IOCTL_RADEON_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling) | ||
| 548 | 551 | ||
| 549 | typedef struct drm_radeon_init { | 552 | typedef struct drm_radeon_init { |
| 550 | enum { | 553 | enum { |
| @@ -796,6 +799,24 @@ struct drm_radeon_gem_create { | |||
| 796 | uint32_t flags; | 799 | uint32_t flags; |
| 797 | }; | 800 | }; |
| 798 | 801 | ||
| 802 | #define RADEON_TILING_MACRO 0x1 | ||
| 803 | #define RADEON_TILING_MICRO 0x2 | ||
| 804 | #define RADEON_TILING_SWAP 0x4 | ||
| 805 | #define RADEON_TILING_SURFACE 0x8 /* this object requires a surface | ||
| 806 | * when mapped - i.e. front buffer */ | ||
| 807 | |||
| 808 | struct drm_radeon_gem_set_tiling { | ||
| 809 | uint32_t handle; | ||
| 810 | uint32_t tiling_flags; | ||
| 811 | uint32_t pitch; | ||
| 812 | }; | ||
| 813 | |||
| 814 | struct drm_radeon_gem_get_tiling { | ||
| 815 | uint32_t handle; | ||
| 816 | uint32_t tiling_flags; | ||
| 817 | uint32_t pitch; | ||
| 818 | }; | ||
| 819 | |||
| 799 | struct drm_radeon_gem_mmap { | 820 | struct drm_radeon_gem_mmap { |
| 800 | uint32_t handle; | 821 | uint32_t handle; |
| 801 | uint32_t pad; | 822 | uint32_t pad; |
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h index 62ed733c52a2..a68829db381a 100644 --- a/include/drm/ttm/ttm_bo_driver.h +++ b/include/drm/ttm/ttm_bo_driver.h | |||
| @@ -121,6 +121,7 @@ struct ttm_backend { | |||
| 121 | #define TTM_PAGE_FLAG_SWAPPED (1 << 4) | 121 | #define TTM_PAGE_FLAG_SWAPPED (1 << 4) |
| 122 | #define TTM_PAGE_FLAG_PERSISTANT_SWAP (1 << 5) | 122 | #define TTM_PAGE_FLAG_PERSISTANT_SWAP (1 << 5) |
| 123 | #define TTM_PAGE_FLAG_ZERO_ALLOC (1 << 6) | 123 | #define TTM_PAGE_FLAG_ZERO_ALLOC (1 << 6) |
| 124 | #define TTM_PAGE_FLAG_DMA32 (1 << 7) | ||
| 124 | 125 | ||
| 125 | enum ttm_caching_state { | 126 | enum ttm_caching_state { |
| 126 | tt_uncached, | 127 | tt_uncached, |
| @@ -353,6 +354,14 @@ struct ttm_bo_driver { | |||
| 353 | int (*sync_obj_flush) (void *sync_obj, void *sync_arg); | 354 | int (*sync_obj_flush) (void *sync_obj, void *sync_arg); |
| 354 | void (*sync_obj_unref) (void **sync_obj); | 355 | void (*sync_obj_unref) (void **sync_obj); |
| 355 | void *(*sync_obj_ref) (void *sync_obj); | 356 | void *(*sync_obj_ref) (void *sync_obj); |
| 357 | |||
| 358 | /* hook to notify driver about a driver move so it | ||
| 359 | * can do tiling things */ | ||
| 360 | void (*move_notify)(struct ttm_buffer_object *bo, | ||
| 361 | struct ttm_mem_reg *new_mem); | ||
| 362 | /* notify the driver we are taking a fault on this BO | ||
| 363 | * and have reserved it */ | ||
| 364 | void (*fault_reserve_notify)(struct ttm_buffer_object *bo); | ||
| 356 | }; | 365 | }; |
| 357 | 366 | ||
| 358 | #define TTM_NUM_MEM_TYPES 8 | 367 | #define TTM_NUM_MEM_TYPES 8 |
| @@ -429,6 +438,8 @@ struct ttm_bo_device { | |||
| 429 | */ | 438 | */ |
| 430 | 439 | ||
| 431 | struct delayed_work wq; | 440 | struct delayed_work wq; |
| 441 | |||
| 442 | bool need_dma32; | ||
| 432 | }; | 443 | }; |
| 433 | 444 | ||
| 434 | /** | 445 | /** |
| @@ -648,7 +659,14 @@ extern int ttm_bo_device_release(struct ttm_bo_device *bdev); | |||
| 648 | extern int ttm_bo_device_init(struct ttm_bo_device *bdev, | 659 | extern int ttm_bo_device_init(struct ttm_bo_device *bdev, |
| 649 | struct ttm_mem_global *mem_glob, | 660 | struct ttm_mem_global *mem_glob, |
| 650 | struct ttm_bo_driver *driver, | 661 | struct ttm_bo_driver *driver, |
| 651 | uint64_t file_page_offset); | 662 | uint64_t file_page_offset, bool need_dma32); |
| 663 | |||
| 664 | /** | ||
| 665 | * ttm_bo_unmap_virtual | ||
| 666 | * | ||
| 667 | * @bo: tear down the virtual mappings for this BO | ||
| 668 | */ | ||
| 669 | extern void ttm_bo_unmap_virtual(struct ttm_buffer_object *bo); | ||
| 652 | 670 | ||
| 653 | /** | 671 | /** |
| 654 | * ttm_bo_reserve: | 672 | * ttm_bo_reserve: |
diff --git a/include/drm/ttm/ttm_module.h b/include/drm/ttm/ttm_module.h index 889a4c7958ae..d1d433834e4f 100644 --- a/include/drm/ttm/ttm_module.h +++ b/include/drm/ttm/ttm_module.h | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | 33 | ||
| 34 | #include <linux/kernel.h> | 34 | #include <linux/kernel.h> |
| 35 | 35 | ||
| 36 | #define TTM_PFX "[TTM]" | 36 | #define TTM_PFX "[TTM] " |
| 37 | 37 | ||
| 38 | enum ttm_global_types { | 38 | enum ttm_global_types { |
| 39 | TTM_GLOBAL_TTM_MEM = 0, | 39 | TTM_GLOBAL_TTM_MEM = 0, |
