2 * This confidential and proprietary software may be used only as
3 * authorised by a licensing agreement from ARM Limited
4 * (C) COPYRIGHT 2011-2013 ARM Limited
6 * The entire notice above must be reproduced on all authorised
7 * copies and copies may only be made to the extent permitted
8 * by a licensing agreement from ARM Limited.
11 #include "mali_hw_core.h"
13 #include "mali_kernel_common.h"
14 #include "mali_osk_mali.h"
16 _mali_osk_errcode_t
mali_hw_core_create(struct mali_hw_core
*core
, const _mali_osk_resource_t
*resource
, u32 reg_size
)
18 core
->phys_addr
= resource
->base
;
19 core
->phys_offset
= resource
->base
- _mali_osk_resource_base_address();
20 core
->description
= resource
->description
;
21 core
->size
= reg_size
;
23 MALI_DEBUG_ASSERT(core
->phys_offset
< core
->phys_addr
);
25 if (_MALI_OSK_ERR_OK
== _mali_osk_mem_reqregion(core
->phys_addr
, core
->size
, core
->description
)) {
26 core
->mapped_registers
= _mali_osk_mem_mapioregion(core
->phys_addr
, core
->size
, core
->description
);
27 if (NULL
!= core
->mapped_registers
) {
28 return _MALI_OSK_ERR_OK
;
30 MALI_PRINT_ERROR(("Failed to map memory region for core %s at phys_addr 0x%08X\n", core
->description
, core
->phys_addr
));
32 _mali_osk_mem_unreqregion(core
->phys_addr
, core
->size
);
34 MALI_PRINT_ERROR(("Failed to request memory region for core %s at phys_addr 0x%08X\n", core
->description
, core
->phys_addr
));
37 return _MALI_OSK_ERR_FAULT
;
40 void mali_hw_core_delete(struct mali_hw_core
*core
)
42 _mali_osk_mem_unmapioregion(core
->phys_addr
, core
->size
, core
->mapped_registers
);
43 core
->mapped_registers
= NULL
;
44 _mali_osk_mem_unreqregion(core
->phys_addr
, core
->size
);