diff options
Diffstat (limited to 'drivers/media/video/samsung/mali/common/mali_ukk.h')
-rw-r--r-- | drivers/media/video/samsung/mali/common/mali_ukk.h | 184 |
1 files changed, 61 insertions, 123 deletions
diff --git a/drivers/media/video/samsung/mali/common/mali_ukk.h b/drivers/media/video/samsung/mali/common/mali_ukk.h index 94efdf5..8ff2002 100644 --- a/drivers/media/video/samsung/mali/common/mali_ukk.h +++ b/drivers/media/video/samsung/mali/common/mali_ukk.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 ARM Limited. All rights reserved. + * Copyright (C) 2010-2012 ARM Limited. All rights reserved. * * This program is free software and is provided to you under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence. @@ -17,7 +17,7 @@ #define __MALI_UKK_H__ #include "mali_osk.h" -#include "mali_uk_types.h" +#include "../linux/mali_uk_types.h" #ifdef __cplusplus extern "C" @@ -139,14 +139,6 @@ extern "C" * (_mali_osk_mem_mapregion_init()) functions will collaborate on the * meaning of ukk_private member. On other OSs, it may be unused by both * U/K and OSK layers - * - On OS systems (not including direct function call U/K interface - * implementations), _mali_ukk_get_big_block() may succeed, but the subsequent - * copying to user space may fail. - * - A problem scenario exists: some memory has been reserved by - * _mali_ukk_get_big_block(), but the user-mode will be unaware of it (it will - * never receive any information about this memory). In this case, the U/K - * implementation must do everything necessary to 'rollback' the \em atomic - * _mali_ukk_get_big_block() transaction. * - Therefore, on error inside the U/K interface implementation itself, * it will be as though the _mali_ukk function itself had failed, and cleaned * up after itself. @@ -233,7 +225,7 @@ _mali_osk_errcode_t _mali_ukk_close( void **context ); * allocated, and a pointer to this memory written into the system_info member * of _mali_uk_get_system_info_s. * - * @param args see _mali_uk_get_system_info_size_s in "mali_uk_types.h" + * @param args see _mali_uk_get_system_info_size_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_system_info_size( _mali_uk_get_system_info_size_s *args ); @@ -270,7 +262,7 @@ _mali_osk_errcode_t _mali_ukk_get_system_info_size( _mali_uk_get_system_info_siz * destination address for pointer-patching to occur. When NULL, it is unused, an no pointer-patching occurs in the * common code. * - * @param args see _mali_uk_get_system_info_s in "mali_uk_types.h" + * @param args see _mali_uk_get_system_info_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_system_info( _mali_uk_get_system_info_s *args ); @@ -279,24 +271,37 @@ _mali_osk_errcode_t _mali_ukk_get_system_info( _mali_uk_get_system_info_s *args * * Sleeps until notified or a timeout occurs. Returns information about the notification. * - * @param args see _mali_uk_wait_for_notification_s in "mali_uk_types.h" + * @param args see _mali_uk_wait_for_notification_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_wait_for_notification( _mali_uk_wait_for_notification_s *args ); /** @brief Post a notification to the notification queue of this application. * - * @param args see _mali_uk_post_notification_s in "mali_uk_types.h" + * @param args see _mali_uk_post_notification_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_post_notification( _mali_uk_post_notification_s *args ); /** @brief Verifies if the user and kernel side of this API are compatible. * - * @param args see _mali_uk_get_api_version_s in "mali_uk_types.h" + * @param args see _mali_uk_get_api_version_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_api_version( _mali_uk_get_api_version_s *args ); + +/** @brief Get the user space settings applicable for calling process. + * + * @param args see _mali_uk_get_user_settings_s in "mali_utgard_uk_types.h" + */ +_mali_osk_errcode_t _mali_ukk_get_user_settings(_mali_uk_get_user_settings_s *args); + +/** @brief Get a user space setting applicable for calling process. + * + * @param args see _mali_uk_get_user_setting_s in "mali_utgard_uk_types.h" + */ +_mali_osk_errcode_t _mali_ukk_get_user_setting(_mali_uk_get_user_setting_s *args); + /** @} */ /* end group _mali_uk_core */ @@ -324,7 +329,7 @@ _mali_osk_errcode_t _mali_ukk_get_api_version( _mali_uk_get_api_version_s *args * @note This function is for Mali-MMU builds \b only. It should not be called * when the drivers are built without Mali-MMU support. * - * @param args see \ref _mali_uk_init_mem_s in mali_uk_types.h + * @param args see \ref _mali_uk_init_mem_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable * _mali_osk_errcode_t on failure. */ @@ -340,43 +345,18 @@ _mali_osk_errcode_t _mali_ukk_init_mem( _mali_uk_init_mem_s *args ); * @note This function is for Mali-MMU builds \b only. It should not be called * when the drivers are built without Mali-MMU support. * - * @param args see \ref _mali_uk_term_mem_s in mali_uk_types.h + * @param args see \ref _mali_uk_term_mem_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable * _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_term_mem( _mali_uk_term_mem_s *args ); -/** @brief Map a block of memory into the current user process - * - * Allocates a minimum of minimum_size_requested bytes of MALI memory and maps it into the current - * process space. The number of bytes allocated is returned in args->block_size. - * - * This is only used for Mali-nonMMU mode. - * - * @param args see _mali_uk_get_big_block_s in "mali_uk_types.h" - * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. - */ -_mali_osk_errcode_t _mali_ukk_get_big_block( _mali_uk_get_big_block_s *args ); - -/** @brief Unmap a block of memory from the current user process - * - * Frees allocated MALI memory and unmaps it from the current process space. The previously allocated memory - * is indicated by the cookie as returned by _mali_ukk_get_big_block(). - * - * This is only used for Mali-nonMMU mode. - * - * @param args see _mali_uk_free_big_block_s in "mali_uk_types.h" - * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. - */ -_mali_osk_errcode_t _mali_ukk_free_big_block( _mali_uk_free_big_block_s *args ); - /** @brief Map Mali Memory into the current user process * * Maps Mali memory into the current user process in a generic way. * * This function is to be used for Mali-MMU mode. The function is available in both Mali-MMU and Mali-nonMMU modes, - * but should not be called by a user process in Mali-nonMMU mode. In Mali-nonMMU mode, the function is callable - * from the kernel side, and is used to implement _mali_ukk_get_big_block() in this case. + * but should not be called by a user process in Mali-nonMMU mode. * * The implementation and operation of _mali_ukk_mem_mmap() is dependant on whether the driver is built for Mali-MMU * or Mali-nonMMU: @@ -392,9 +372,6 @@ _mali_osk_errcode_t _mali_ukk_free_big_block( _mali_uk_free_big_block_s *args ); * they are unnecsessary; the \em Mali-virtual address range must be used for * programming Mali structures. * - * This means that in the first (nonMMU) case, the caller must manage the physical address allocations. The caller - * in this case is _mali_ukk_get_big_block(), which does indeed manage the Mali physical address ranges. - * * In the second (MMU) case, _mali_ukk_mem_mmap() handles management of * CPU-virtual and CPU-physical ranges, but the \em caller must manage the * \em Mali-virtual address range from the user-side. @@ -403,7 +380,7 @@ _mali_osk_errcode_t _mali_ukk_free_big_block( _mali_uk_free_big_block_s *args ); * It is not possible for a process to accidentally corrupt another process' * \em Mali-virtual address space. * - * @param args see _mali_uk_mem_mmap_s in "mali_uk_types.h" + * @param args see _mali_uk_mem_mmap_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_mem_mmap( _mali_uk_mem_mmap_s *args ); @@ -413,42 +390,42 @@ _mali_osk_errcode_t _mali_ukk_mem_mmap( _mali_uk_mem_mmap_s *args ); * Unmaps Mali memory from the current user process in a generic way. This only operates on Mali memory supplied * from _mali_ukk_mem_mmap(). * - * @param args see _mali_uk_mem_munmap_s in "mali_uk_types.h" + * @param args see _mali_uk_mem_munmap_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_mem_munmap( _mali_uk_mem_munmap_s *args ); /** @brief Determine the buffer size necessary for an MMU page table dump. - * @param args see _mali_uk_query_mmu_page_table_dump_size_s in mali_uk_types.h + * @param args see _mali_uk_query_mmu_page_table_dump_size_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_query_mmu_page_table_dump_size( _mali_uk_query_mmu_page_table_dump_size_s *args ); /** @brief Dump MMU Page tables. - * @param args see _mali_uk_dump_mmu_page_table_s in mali_uk_types.h + * @param args see _mali_uk_dump_mmu_page_table_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_dump_mmu_page_table( _mali_uk_dump_mmu_page_table_s * args ); /** @brief Map a physically contiguous range of memory into Mali - * @param args see _mali_uk_map_external_mem_s in mali_uk_types.h + * @param args see _mali_uk_map_external_mem_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_map_external_mem( _mali_uk_map_external_mem_s *args ); /** @brief Unmap a physically contiguous range of memory from Mali - * @param args see _mali_uk_unmap_external_mem_s in mali_uk_types.h + * @param args see _mali_uk_unmap_external_mem_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_unmap_external_mem( _mali_uk_unmap_external_mem_s *args ); #if MALI_USE_UNIFIED_MEMORY_PROVIDER != 0 /** @brief Map UMP memory into Mali - * @param args see _mali_uk_attach_ump_mem_s in mali_uk_types.h + * @param args see _mali_uk_attach_ump_mem_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_attach_ump_mem( _mali_uk_attach_ump_mem_s *args ); /** @brief Unmap UMP memory from Mali - * @param args see _mali_uk_release_ump_mem_s in mali_uk_types.h + * @param args see _mali_uk_release_ump_mem_s in mali_utgard_uk_types.h * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_release_ump_mem( _mali_uk_release_ump_mem_s *args ); @@ -492,7 +469,7 @@ _mali_osk_errcode_t _mali_ukk_release_ump_mem( _mali_uk_release_ump_mem_s *args * @note if implemented, this function is entirely platform-dependant, and does * not exist in common code. * - * @param args see _mali_uk_va_to_mali_pa_s in "mali_uk_types.h" + * @param args see _mali_uk_va_to_mali_pa_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_va_to_mali_pa( _mali_uk_va_to_mali_pa_s * args ); @@ -519,20 +496,16 @@ _mali_osk_errcode_t _mali_ukk_va_to_mali_pa( _mali_uk_va_to_mali_pa_s * args ); * existing one returned, otherwise the new job is started and the status field args->status is set to * _MALI_UK_START_JOB_STARTED. * - * If an existing lower priority job is returned, args->returned_user_job_ptr contains a - * pointer to the returned job and the status field args->status is set to - * _MALI_UK_START_JOB_STARTED_LOW_PRI_JOB_RETURNED. - * * Job completion can be awaited with _mali_ukk_wait_for_notification(). * - * @param args see _mali_uk_pp_start_job_s in "mali_uk_types.h" + * @param args see _mali_uk_pp_start_job_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_pp_start_job( _mali_uk_pp_start_job_s *args ); /** @brief Returns the number of Fragment Processors in the system * - * @param args see _mali_uk_get_pp_number_of_cores_s in "mali_uk_types.h" + * @param args see _mali_uk_get_pp_number_of_cores_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_pp_number_of_cores( _mali_uk_get_pp_number_of_cores_s *args ); @@ -542,22 +515,18 @@ _mali_osk_errcode_t _mali_ukk_get_pp_number_of_cores( _mali_uk_get_pp_number_of_ * This function may only be called when _mali_ukk_get_pp_number_of_cores() indicated at least one Fragment * Processor core is available. * - * @param args see _mali_uk_get_pp_core_version_s in "mali_uk_types.h" + * @param args see _mali_uk_get_pp_core_version_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_pp_core_version( _mali_uk_get_pp_core_version_s *args ); -/** @brief Abort any PP jobs with the given ID. +/** @brief Disable Write-back unit(s) on specified job * - * Jobs internally queued or currently running on the hardware is to be stopped/aborted. - * Jobs aborted are reported via the normal job completion system. - * Any jobs, running or internally queued should be aborted imediately. - * Normal notifiction procedures to report on the status of these jobs. - * - * - * @param args see _malu_uk_pp_abort_job_s in "mali_uk_types.h" + * @param args see _mali_uk_get_pp_core_version_s in "mali_utgard_uk_types.h" */ -void _mali_ukk_pp_abort_job( _mali_uk_pp_abort_job_s *args ); +void _mali_ukk_pp_job_disable_wb(_mali_uk_pp_disable_wb_s *args); + + /** @} */ /* end group _mali_uk_pp */ @@ -580,20 +549,16 @@ void _mali_ukk_pp_abort_job( _mali_uk_pp_abort_job_s *args ); * existing one returned, otherwise the new job is started and the status field args->status is set to * _MALI_UK_START_JOB_STARTED. * - * If an existing lower priority job is returned, args->returned_user_job_ptr contains a pointer to - * the returned job and the status field args->status is set to - * _MALI_UK_START_JOB_STARTED_LOW_PRI_JOB_RETURNED. - * * Job completion can be awaited with _mali_ukk_wait_for_notification(). * - * @param args see _mali_uk_gp_start_job_s in "mali_uk_types.h" + * @param args see _mali_uk_gp_start_job_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_gp_start_job( _mali_uk_gp_start_job_s *args ); /** @brief Returns the number of Vertex Processors in the system. * - * @param args see _mali_uk_get_gp_number_of_cores_s in "mali_uk_types.h" + * @param args see _mali_uk_get_gp_number_of_cores_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_gp_number_of_cores( _mali_uk_get_gp_number_of_cores_s *args ); @@ -603,7 +568,7 @@ _mali_osk_errcode_t _mali_ukk_get_gp_number_of_cores( _mali_uk_get_gp_number_of_ * This function may only be called when _mali_uk_get_gp_number_of_cores() indicated at least one Vertex * Processor core is available. * - * @param args see _mali_uk_get_gp_core_version_s in "mali_uk_types.h" + * @param args see _mali_uk_get_gp_core_version_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_get_gp_core_version( _mali_uk_get_gp_core_version_s *args ); @@ -613,85 +578,47 @@ _mali_osk_errcode_t _mali_ukk_get_gp_core_version( _mali_uk_get_gp_core_version_ * After receiving notification that a Vertex Processor job was suspended from * _mali_ukk_wait_for_notification() you can use this function to resume or abort the job. * - * @param args see _mali_uk_gp_suspend_response_s in "mali_uk_types.h" + * @param args see _mali_uk_gp_suspend_response_s in "mali_utgard_uk_types.h" * @return _MALI_OSK_ERR_OK on success, otherwise a suitable _mali_osk_errcode_t on failure. */ _mali_osk_errcode_t _mali_ukk_gp_suspend_response( _mali_uk_gp_suspend_response_s *args ); -/** @brief Abort any GP jobs with the given ID. - * - * Jobs internally queued or currently running on the hardware is to be stopped/aborted. - * Jobs aborted are reported via the normal job completion system. - * - * Any jobs, running or internally queued should be aborted imediately. - * Normal notifiction procedures to report on the status of these jobs. - * - * @param args see _mali_uk_gp_abort_job_s in "mali_uk_types.h" - */ -void _mali_ukk_gp_abort_job( _mali_uk_gp_abort_job_s *args ); /** @} */ /* end group _mali_uk_gp */ -#if USING_MALI_PMM -/** @addtogroup _mali_uk_pmm U/K Power Management Module - * @{ */ - -/* @brief Power Management Module event message - * - * @note The event message can fail to be sent due to OOM but this is - * stored in the PMM state machine to be handled later - * - * @param args see _mali_uk_pmm_event_message_s in "mali_uk_types.h" - */ -void _mali_ukk_pmm_event_message( _mali_uk_pmm_message_s *args ); -/** @} */ /* end group _mali_uk_pmm */ -#endif /* USING_MALI_PMM */ - #if MALI_TIMELINE_PROFILING_ENABLED /** @addtogroup _mali_uk_profiling U/K Timeline profiling module * @{ */ /** @brief Start recording profiling events. * - * @param args see _mali_uk_profiling_start_s in "mali_uk_types.h" + * @param args see _mali_uk_profiling_start_s in "mali_utgard_uk_types.h" */ _mali_osk_errcode_t _mali_ukk_profiling_start(_mali_uk_profiling_start_s *args); /** @brief Add event to profiling buffer. * - * @param args see _mali_uk_profiling_add_event_s in "mali_uk_types.h" + * @param args see _mali_uk_profiling_add_event_s in "mali_utgard_uk_types.h" */ _mali_osk_errcode_t _mali_ukk_profiling_add_event(_mali_uk_profiling_add_event_s *args); /** @brief Stop recording profiling events. * - * @param args see _mali_uk_profiling_stop_s in "mali_uk_types.h" + * @param args see _mali_uk_profiling_stop_s in "mali_utgard_uk_types.h" */ _mali_osk_errcode_t _mali_ukk_profiling_stop(_mali_uk_profiling_stop_s *args); /** @brief Retrieve a recorded profiling event. * - * @param args see _mali_uk_profiling_get_event_s in "mali_uk_types.h" + * @param args see _mali_uk_profiling_get_event_s in "mali_utgard_uk_types.h" */ _mali_osk_errcode_t _mali_ukk_profiling_get_event(_mali_uk_profiling_get_event_s *args); /** @brief Clear recorded profiling events. * - * @param args see _mali_uk_profiling_clear_s in "mali_uk_types.h" + * @param args see _mali_uk_profiling_clear_s in "mali_utgard_uk_types.h" */ _mali_osk_errcode_t _mali_ukk_profiling_clear(_mali_uk_profiling_clear_s *args); -/** @brief Get the profiling config applicable for calling process. - * - * @param args see _mali_uk_profiling_get_config_s in "mali_uk_types.h" - */ -_mali_osk_errcode_t _mali_ukk_profiling_get_config(_mali_uk_profiling_get_config_s *args); - -/** @brief Transfer software counters from user to kernel space - * - * @param args see _mali_uk_transfer_sw_counters_s in "mali_uk_types.h" - */ -_mali_osk_errcode_t _mali_ukk_transfer_sw_counters(_mali_uk_sw_counters_s *args); - /** @} */ /* end group _mali_uk_profiling */ #endif @@ -704,12 +631,23 @@ _mali_osk_errcode_t _mali_ukk_transfer_sw_counters(_mali_uk_sw_counters_s *args) * waiting is finished. This information can then be used in kernel space to * complement the GPU utilization metric. * - * @param args see _mali_uk_vsync_event_report_s in "mali_uk_types.h" + * @param args see _mali_uk_vsync_event_report_s in "mali_utgard_uk_types.h" */ _mali_osk_errcode_t _mali_ukk_vsync_event_report(_mali_uk_vsync_event_report_s *args); /** @} */ /* end group _mali_uk_vsync */ +/** @addtogroup _mali_sw_counters_report U/K Software counter reporting + * @{ */ + +/** @brief Report software counters. + * + * @param args see _mali_uk_sw_counters_report_s in "mali_uk_types.h" + */ +_mali_osk_errcode_t _mali_ukk_sw_counters_report(_mali_uk_sw_counters_report_s *args); + +/** @} */ /* end group _mali_sw_counters_report */ + /** @} */ /* end group u_k_api */ /** @} */ /* end group uddapi */ |