From a09619acbaf96c36ef3b7bdae9837548ee904439 Mon Sep 17 00:00:00 2001 From: John Fredriksson Date: Thu, 30 Jun 2011 13:27:52 +0200 Subject: mali: Add mali400 kernel module Add mali400ko from tag SNOWBALL_BSP_111012_2.1. Signed-off-by: John Fredriksson Change-Id: I82d24760247f8a5a5b786fc10187f32d9048f9a9 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33811 Reviewed-by: Philippe LANGLAIS --- .../src/devicedrv/mali/common/mali_kernel_core.h | 134 +++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/common/mali_kernel_core.h (limited to 'drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/common/mali_kernel_core.h') diff --git a/drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/common/mali_kernel_core.h b/drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/common/mali_kernel_core.h new file mode 100644 index 00000000000..3819ecc5e1c --- /dev/null +++ b/drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/common/mali_kernel_core.h @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2010-2011 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. + * + * A copy of the licence is included with the program, and can also be obtained from Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __MALI_KERNEL_CORE_H__ +#define __MALI_KERNEL_CORE_H__ + +#include "mali_osk.h" + +#if USING_MALI_PMM +#include "mali_ukk.h" +#include "mali_pmm.h" +#include "mali_pmm_system.h" +#endif + +_mali_osk_errcode_t mali_kernel_constructor( void ); +void mali_kernel_destructor( void ); + +/** + * @brief Tranlate CPU physical to Mali physical addresses. + * + * This function is used to convert CPU physical addresses to Mali Physical + * addresses, such that _mali_ukk_map_external_mem may be used to map them + * into Mali. This will be used by _mali_ukk_va_to_mali_pa. + * + * This function only supports physically contiguous regions. + * + * A default implementation is provided, which uses a registered MEM_VALIDATION + * resource to do a static translation. Only an address range which will lie + * in the range specified by MEM_VALIDATION will be successfully translated. + * + * If a more complex, or non-static translation is required, then the + * implementor has the following options: + * - Rewrite this function to provide such a translation + * - Integrate the provider of the memory with UMP. + * + * @param[in,out] phys_base pointer to the page-aligned base address of the + * physical range to be translated + * + * @param[in] size size of the address range to be translated, which must be a + * multiple of the physical page size. + * + * @return on success, _MALI_OSK_ERR_OK and *phys_base is translated. If the + * cpu physical address range is not in the valid range, then a suitable + * _mali_osk_errcode_t error. + * + */ +_mali_osk_errcode_t mali_kernel_core_translate_cpu_to_mali_phys_range( u32 *phys_base, u32 size ); + + +/** + * @brief Validate a Mali physical address range. + * + * This function is used to ensure that an address range passed to + * _mali_ukk_map_external_mem is allowed to be mapped into Mali. + * + * This function only supports physically contiguous regions. + * + * A default implementation is provided, which uses a registered MEM_VALIDATION + * resource to do a static translation. Only an address range which will lie + * in the range specified by MEM_VALIDATION will be successfully validated. + * + * If a more complex, or non-static validation is required, then the + * implementor has the following options: + * - Rewrite this function to provide such a validation + * - Integrate the provider of the memory with UMP. + * + * @param phys_base page-aligned base address of the Mali physical range to be + * validated. + * + * @param size size of the address range to be validated, which must be a + * multiple of the physical page size. + * + * @return _MALI_OSK_ERR_OK if the Mali physical range is valid. Otherwise, a + * suitable _mali_osk_errcode_t error. + * + */ +_mali_osk_errcode_t mali_kernel_core_validate_mali_phys_range( u32 phys_base, u32 size ); + +#if USING_MALI_PMM +/** + * @brief Signal a power up on a Mali core. + * + * This function flags a core as powered up. + * For PP and GP cores it calls functions that move the core from a power off + * queue into the idle queue ready to run jobs. It also tries to schedule any + * pending jobs to run on it. + * + * This function will fail if the core is not powered off - either running or + * already idle. + * + * @param core The PMM core id to power up. + * @param queue_only When MALI_TRUE only re-queue the core - do not reset. + * + * @return _MALI_OSK_ERR_OK if the core has been powered up. Otherwise a + * suitable _mali_osk_errcode_t error. + */ +_mali_osk_errcode_t mali_core_signal_power_up( mali_pmm_core_id core, mali_bool queue_only ); + +/** + * @brief Signal a power down on a Mali core. + * + * This function flags a core as powered down. + * For PP and GP cores it calls functions that move the core from an idle + * queue into the power off queue. + * + * This function will fail if the core is not idle - either running or + * already powered down. + * + * @param core The PMM core id to power up. + * @param immediate_only Do not set the core to pending power down if it can't + * power down immediately + * + * @return _MALI_OSK_ERR_OK if the core has been powered up. Otherwise a + * suitable _mali_osk_errcode_t error. + */ +_mali_osk_errcode_t mali_core_signal_power_down( mali_pmm_core_id core, mali_bool immediate_only ); + +#endif + +/** + * Flag to indicate whether or not mali_benchmark is turned on. + */ +extern int mali_benchmark; + + +#endif /* __MALI_KERNEL_CORE_H__ */ + -- cgit v1.2.3