1*d83cc019SAndroid Build Coastguard Worker #ifndef ION_GEM_H 2*d83cc019SAndroid Build Coastguard Worker #define ION_GEM_H 3*d83cc019SAndroid Build Coastguard Worker 4*d83cc019SAndroid Build Coastguard Worker #include "igt.h" 5*d83cc019SAndroid Build Coastguard Worker #include "gem.h" 6*d83cc019SAndroid Build Coastguard Worker 7*d83cc019SAndroid Build Coastguard Worker /** 8*d83cc019SAndroid Build Coastguard Worker * ion_get_heap_id: 9*d83cc019SAndroid Build Coastguard Worker * @ion_fd: open ion device fd 10*d83cc019SAndroid Build Coastguard Worker * @heap_type: ION_HEAP_TYPE_* constant 11*d83cc019SAndroid Build Coastguard Worker * Returns: the index of the first heap with type matching heap_type, or -1 on 12*d83cc019SAndroid Build Coastguard Worker * failure 13*d83cc019SAndroid Build Coastguard Worker **/ 14*d83cc019SAndroid Build Coastguard Worker int ion_get_heap_id(int ion_fd, uint32_t heap_type); 15*d83cc019SAndroid Build Coastguard Worker 16*d83cc019SAndroid Build Coastguard Worker /** 17*d83cc019SAndroid Build Coastguard Worker * ion_alloc_one_fd 18*d83cc019SAndroid Build Coastguard Worker * @ion_fd: open ion device fd 19*d83cc019SAndroid Build Coastguard Worker * @size: size of the desired ion buffer 20*d83cc019SAndroid Build Coastguard Worker * @heap_id: index of the heap to allocate from 21*d83cc019SAndroid Build Coastguard Worker * @ion_buffer_fd: (out) ion buffer fd 22*d83cc019SAndroid Build Coastguard Worker * Returns: 0 on success; not 0 otherwise 23*d83cc019SAndroid Build Coastguard Worker **/ 24*d83cc019SAndroid Build Coastguard Worker int ion_alloc_one_fd(int ion_fd, size_t size, int heap_id, int *ion_buffer_fd); 25*d83cc019SAndroid Build Coastguard Worker 26*d83cc019SAndroid Build Coastguard Worker /** 27*d83cc019SAndroid Build Coastguard Worker * ion_mmap 28*d83cc019SAndroid Build Coastguard Worker * @ptr: (out) pointer to the buffer in the user process's memory 29*d83cc019SAndroid Build Coastguard Worker * @ion_buffer_fd: ion buffer fd 30*d83cc019SAndroid Build Coastguard Worker * @size: size of the desired mapping 31*d83cc019SAndroid Build Coastguard Worker * Returns: 0 on success; not 0 otherwise 32*d83cc019SAndroid Build Coastguard Worker **/ 33*d83cc019SAndroid Build Coastguard Worker int ion_mmap(void **ptr, int ion_buffer_fd, size_t size); 34*d83cc019SAndroid Build Coastguard Worker 35*d83cc019SAndroid Build Coastguard Worker /** 36*d83cc019SAndroid Build Coastguard Worker * ion_munmap 37*d83cc019SAndroid Build Coastguard Worker * @ptr: pointer to the buffer in the user process's memory 38*d83cc019SAndroid Build Coastguard Worker * @size: exact size of the mapping 39*d83cc019SAndroid Build Coastguard Worker * Returns: 0 on success; not 0 otherwise 40*d83cc019SAndroid Build Coastguard Worker **/ 41*d83cc019SAndroid Build Coastguard Worker int ion_munmap(void *ptr, size_t size); 42*d83cc019SAndroid Build Coastguard Worker 43*d83cc019SAndroid Build Coastguard Worker /** 44*d83cc019SAndroid Build Coastguard Worker * drm_check_prime_caps 45*d83cc019SAndroid Build Coastguard Worker * drm_fd: open DRM device fd 46*d83cc019SAndroid Build Coastguard Worker * Returns: 0 if the device supports Prime import/export; -1 otherwise 47*d83cc019SAndroid Build Coastguard Worker **/ 48*d83cc019SAndroid Build Coastguard Worker int drm_check_prime_caps(int drm_fd); 49*d83cc019SAndroid Build Coastguard Worker 50*d83cc019SAndroid Build Coastguard Worker /** 51*d83cc019SAndroid Build Coastguard Worker * gem_handle_for_ion_buffer 52*d83cc019SAndroid Build Coastguard Worker * drm_fd: open DRM device fd 53*d83cc019SAndroid Build Coastguard Worker * gem_handle: (out) GEM handle 54*d83cc019SAndroid Build Coastguard Worker * ion_fd: ion buffer fd 55*d83cc019SAndroid Build Coastguard Worker * 56*d83cc019SAndroid Build Coastguard Worker * Imports an ion buffer into GEM 57*d83cc019SAndroid Build Coastguard Worker * 58*d83cc019SAndroid Build Coastguard Worker * Returns: 0 if the ion buffer could be imported; -1 otherwise 59*d83cc019SAndroid Build Coastguard Worker **/ 60*d83cc019SAndroid Build Coastguard Worker int gem_handle_for_ion_buffer(int drm_fd, uint32_t *gem_handle, int ion_buffer_fd); 61*d83cc019SAndroid Build Coastguard Worker 62*d83cc019SAndroid Build Coastguard Worker /** 63*d83cc019SAndroid Build Coastguard Worker * ion_fd_for_gem_handle 64*d83cc019SAndroid Build Coastguard Worker * drm_fd: open DRM device fd 65*d83cc019SAndroid Build Coastguard Worker * ion_fd: ion buffer fd 66*d83cc019SAndroid Build Coastguard Worker * 67*d83cc019SAndroid Build Coastguard Worker * Exports a GEM buffer into ion 68*d83cc019SAndroid Build Coastguard Worker * 69*d83cc019SAndroid Build Coastguard Worker * Returns: 0 if the buffer could be exported; -1 otherwise 70*d83cc019SAndroid Build Coastguard Worker **/ 71*d83cc019SAndroid Build Coastguard Worker int ion_fd_for_gem_handle(int drm_fd, int *ion_bufferfd, uint32_t gem_handle); 72*d83cc019SAndroid Build Coastguard Worker 73*d83cc019SAndroid Build Coastguard Worker /** 74*d83cc019SAndroid Build Coastguard Worker * drm_fb_for_ion_buffer 75*d83cc019SAndroid Build Coastguard Worker * drm_fd: open DRM device fd 76*d83cc019SAndroid Build Coastguard Worker * fb_id: (out) id of the DRM KMS fb 77*d83cc019SAndroid Build Coastguard Worker * ion_fd: ion buffer fd 78*d83cc019SAndroid Build Coastguard Worker * fb_config: metadata for the fb 79*d83cc019SAndroid Build Coastguard Worker * 80*d83cc019SAndroid Build Coastguard Worker * Converts an ion buffer into a DRM KMS fb 81*d83cc019SAndroid Build Coastguard Worker * 82*d83cc019SAndroid Build Coastguard Worker * Returns: 0 if the buffer could be exported; -1 otherwise 83*d83cc019SAndroid Build Coastguard Worker **/ 84*d83cc019SAndroid Build Coastguard Worker int drm_fb_for_ion_buffer(int drm_fd, uint32_t *fb_id, int ion_buffer_fd, 85*d83cc019SAndroid Build Coastguard Worker const struct fb_configuration *fb_config); 86*d83cc019SAndroid Build Coastguard Worker 87*d83cc019SAndroid Build Coastguard Worker /** 88*d83cc019SAndroid Build Coastguard Worker * drm_release_fb 89*d83cc019SAndroid Build Coastguard Worker * drm_fd: open DRM device fd 90*d83cc019SAndroid Build Coastguard Worker * fb_id: id of the DRM KMS fb 91*d83cc019SAndroid Build Coastguard Worker * 92*d83cc019SAndroid Build Coastguard Worker * Releases the DRM KMS fb 93*d83cc019SAndroid Build Coastguard Worker **/ 94*d83cc019SAndroid Build Coastguard Worker void drm_release_fb(int drm_fd, uint32_t fb_id); 95*d83cc019SAndroid Build Coastguard Worker 96*d83cc019SAndroid Build Coastguard Worker /** 97*d83cc019SAndroid Build Coastguard Worker * ion_clone_fd_via_gem 98*d83cc019SAndroid Build Coastguard Worker * drm_fd: open DRM device fd 99*d83cc019SAndroid Build Coastguard Worker * cloned_fd: (out) cloned buffer fd 100*d83cc019SAndroid Build Coastguard Worker * ion_fd: ion buffer fd 101*d83cc019SAndroid Build Coastguard Worker * 102*d83cc019SAndroid Build Coastguard Worker * Uses GEM to clone an ion fd by importing and re-exporting it. 103*d83cc019SAndroid Build Coastguard Worker * 104*d83cc019SAndroid Build Coastguard Worker * Returns: 0 if the buffer could be cloned; -1 otherwise 105*d83cc019SAndroid Build Coastguard Worker **/ 106*d83cc019SAndroid Build Coastguard Worker int ion_clone_fd_via_gem(int drm_fd, int *cloned_fd, int ion_buffer_fd); 107*d83cc019SAndroid Build Coastguard Worker 108*d83cc019SAndroid Build Coastguard Worker #endif 109