diff options
Diffstat (limited to 'include/drm/radeon_drm.h')
-rw-r--r-- | include/drm/radeon_drm.h | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h index fe3e3a4b4aed..41862e9a4c20 100644 --- a/include/drm/radeon_drm.h +++ b/include/drm/radeon_drm.h | |||
@@ -496,6 +496,16 @@ typedef struct { | |||
496 | #define DRM_RADEON_SETPARAM 0x19 | 496 | #define DRM_RADEON_SETPARAM 0x19 |
497 | #define DRM_RADEON_SURF_ALLOC 0x1a | 497 | #define DRM_RADEON_SURF_ALLOC 0x1a |
498 | #define DRM_RADEON_SURF_FREE 0x1b | 498 | #define DRM_RADEON_SURF_FREE 0x1b |
499 | /* KMS ioctl */ | ||
500 | #define DRM_RADEON_GEM_INFO 0x1c | ||
501 | #define DRM_RADEON_GEM_CREATE 0x1d | ||
502 | #define DRM_RADEON_GEM_MMAP 0x1e | ||
503 | #define DRM_RADEON_GEM_PREAD 0x21 | ||
504 | #define DRM_RADEON_GEM_PWRITE 0x22 | ||
505 | #define DRM_RADEON_GEM_SET_DOMAIN 0x23 | ||
506 | #define DRM_RADEON_GEM_WAIT_IDLE 0x24 | ||
507 | #define DRM_RADEON_CS 0x26 | ||
508 | #define DRM_RADEON_INFO 0x27 | ||
499 | 509 | ||
500 | #define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t) | 510 | #define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t) |
501 | #define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START) | 511 | #define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START) |
@@ -524,6 +534,17 @@ typedef struct { | |||
524 | #define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t) | 534 | #define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t) |
525 | #define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t) | 535 | #define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t) |
526 | #define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t) | 536 | #define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t) |
537 | /* KMS */ | ||
538 | #define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info) | ||
539 | #define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create) | ||
540 | #define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap) | ||
541 | #define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread) | ||
542 | #define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite) | ||
543 | #define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain) | ||
544 | #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) | ||
546 | #define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info) | ||
547 | |||
527 | 548 | ||
528 | typedef struct drm_radeon_init { | 549 | typedef struct drm_radeon_init { |
529 | enum { | 550 | enum { |
@@ -682,6 +703,7 @@ typedef struct drm_radeon_indirect { | |||
682 | #define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ | 703 | #define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ |
683 | #define RADEON_PARAM_FB_LOCATION 14 /* FB location */ | 704 | #define RADEON_PARAM_FB_LOCATION 14 /* FB location */ |
684 | #define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */ | 705 | #define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */ |
706 | #define RADEON_PARAM_DEVICE_ID 16 | ||
685 | 707 | ||
686 | typedef struct drm_radeon_getparam { | 708 | typedef struct drm_radeon_getparam { |
687 | int param; | 709 | int param; |
@@ -751,4 +773,112 @@ typedef struct drm_radeon_surface_free { | |||
751 | #define DRM_RADEON_VBLANK_CRTC1 1 | 773 | #define DRM_RADEON_VBLANK_CRTC1 1 |
752 | #define DRM_RADEON_VBLANK_CRTC2 2 | 774 | #define DRM_RADEON_VBLANK_CRTC2 2 |
753 | 775 | ||
776 | /* | ||
777 | * Kernel modesetting world below. | ||
778 | */ | ||
779 | #define RADEON_GEM_DOMAIN_CPU 0x1 | ||
780 | #define RADEON_GEM_DOMAIN_GTT 0x2 | ||
781 | #define RADEON_GEM_DOMAIN_VRAM 0x4 | ||
782 | |||
783 | struct drm_radeon_gem_info { | ||
784 | uint64_t gart_size; | ||
785 | uint64_t vram_size; | ||
786 | uint64_t vram_visible; | ||
787 | }; | ||
788 | |||
789 | #define RADEON_GEM_NO_BACKING_STORE 1 | ||
790 | |||
791 | struct drm_radeon_gem_create { | ||
792 | uint64_t size; | ||
793 | uint64_t alignment; | ||
794 | uint32_t handle; | ||
795 | uint32_t initial_domain; | ||
796 | uint32_t flags; | ||
797 | }; | ||
798 | |||
799 | struct drm_radeon_gem_mmap { | ||
800 | uint32_t handle; | ||
801 | uint32_t pad; | ||
802 | uint64_t offset; | ||
803 | uint64_t size; | ||
804 | uint64_t addr_ptr; | ||
805 | }; | ||
806 | |||
807 | struct drm_radeon_gem_set_domain { | ||
808 | uint32_t handle; | ||
809 | uint32_t read_domains; | ||
810 | uint32_t write_domain; | ||
811 | }; | ||
812 | |||
813 | struct drm_radeon_gem_wait_idle { | ||
814 | uint32_t handle; | ||
815 | uint32_t pad; | ||
816 | }; | ||
817 | |||
818 | struct drm_radeon_gem_busy { | ||
819 | uint32_t handle; | ||
820 | uint32_t busy; | ||
821 | }; | ||
822 | |||
823 | struct drm_radeon_gem_pread { | ||
824 | /** Handle for the object being read. */ | ||
825 | uint32_t handle; | ||
826 | uint32_t pad; | ||
827 | /** Offset into the object to read from */ | ||
828 | uint64_t offset; | ||
829 | /** Length of data to read */ | ||
830 | uint64_t size; | ||
831 | /** Pointer to write the data into. */ | ||
832 | /* void *, but pointers are not 32/64 compatible */ | ||
833 | uint64_t data_ptr; | ||
834 | }; | ||
835 | |||
836 | struct drm_radeon_gem_pwrite { | ||
837 | /** Handle for the object being written to. */ | ||
838 | uint32_t handle; | ||
839 | uint32_t pad; | ||
840 | /** Offset into the object to write to */ | ||
841 | uint64_t offset; | ||
842 | /** Length of data to write */ | ||
843 | uint64_t size; | ||
844 | /** Pointer to read the data from. */ | ||
845 | /* void *, but pointers are not 32/64 compatible */ | ||
846 | uint64_t data_ptr; | ||
847 | }; | ||
848 | |||
849 | #define RADEON_CHUNK_ID_RELOCS 0x01 | ||
850 | #define RADEON_CHUNK_ID_IB 0x02 | ||
851 | |||
852 | struct drm_radeon_cs_chunk { | ||
853 | uint32_t chunk_id; | ||
854 | uint32_t length_dw; | ||
855 | uint64_t chunk_data; | ||
856 | }; | ||
857 | |||
858 | struct drm_radeon_cs_reloc { | ||
859 | uint32_t handle; | ||
860 | uint32_t read_domains; | ||
861 | uint32_t write_domain; | ||
862 | uint32_t flags; | ||
863 | }; | ||
864 | |||
865 | struct drm_radeon_cs { | ||
866 | uint32_t num_chunks; | ||
867 | uint32_t cs_id; | ||
868 | /* this points to uint64_t * which point to cs chunks */ | ||
869 | uint64_t chunks; | ||
870 | /* updates to the limits after this CS ioctl */ | ||
871 | uint64_t gart_limit; | ||
872 | uint64_t vram_limit; | ||
873 | }; | ||
874 | |||
875 | #define RADEON_INFO_DEVICE_ID 0x00 | ||
876 | #define RADEON_INFO_NUM_GB_PIPES 0x01 | ||
877 | |||
878 | struct drm_radeon_info { | ||
879 | uint32_t request; | ||
880 | uint32_t pad; | ||
881 | uint64_t value; | ||
882 | }; | ||
883 | |||
754 | #endif | 884 | #endif |