| /* |
| * Copyright (C) 2010-2013 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_MEMORY_H__ |
| #define __MALI_MEMORY_H__ |
| |
| #include "mali_osk.h" |
| #include "mali_session.h" |
| |
| /** @brief Initialize Mali memory subsystem |
| * |
| * Allocate and initialize internal data structures. Must be called before |
| * allocating Mali memory. |
| * |
| * @return On success _MALI_OSK_ERR_OK, othervise some error code describing the error. |
| */ |
| _mali_osk_errcode_t mali_memory_initialize(void); |
| |
| /** @brief Terminate Mali memory system |
| * |
| * Clean up and release internal data structures. |
| */ |
| void mali_memory_terminate(void); |
| |
| /** @brief Start new Mali memory session |
| * |
| * Allocate and prepare session specific memory allocation data data. The |
| * session page directory, lock, and descriptor map is set up. |
| * |
| * @param mali_session_data pointer to the session data structure |
| */ |
| _mali_osk_errcode_t mali_memory_session_begin(struct mali_session_data *mali_session_data); |
| |
| /** @brief Close a Mali memory session |
| * |
| * Release session specific memory allocation related data. |
| * |
| * @param mali_session_data pointer to the session data structure |
| */ |
| void mali_memory_session_end(struct mali_session_data *mali_session_data); |
| |
| /** @brief Allocate a page table page |
| * |
| * Allocate a page for use as a page directory or page table. The page is |
| * mapped into kernel space. |
| * |
| * @return _MALI_OSK_ERR_OK on success, othervise an error code |
| * @param table_page GPU pointer to the allocated page |
| * @param mapping CPU pointer to the mapping of the allocated page |
| */ |
| _mali_osk_errcode_t mali_mmu_get_table_page(u32 *table_page, mali_io_address *mapping); |
| |
| /** @brief Release a page table page |
| * |
| * Release a page table page allocated through \a mali_mmu_get_table_page |
| * |
| * @param pa the GPU address of the page to release |
| */ |
| void mali_mmu_release_table_page(u32 pa); |
| |
| |
| /** @brief Parse resource and prepare the OS memory allocator |
| * |
| * @param size Maximum size to allocate for Mali GPU. |
| * @return _MALI_OSK_ERR_OK on success, otherwise failure. |
| */ |
| _mali_osk_errcode_t mali_memory_core_resource_os_memory(u32 size); |
| |
| /** @brief Parse resource and prepare the dedicated memory allocator |
| * |
| * @param start Physical start address of dedicated Mali GPU memory. |
| * @param size Size of dedicated Mali GPU memory. |
| * @return _MALI_OSK_ERR_OK on success, otherwise failure. |
| */ |
| _mali_osk_errcode_t mali_memory_core_resource_dedicated_memory(u32 start, u32 size); |
| |
| mali_allocation_engine mali_mem_get_memory_engine(void); |
| |
| #endif /* __MALI_MEMORY_H__ */ |