rm.c File Reference
This is the Resource Manager Low Level Driver file.
More...
#include <stdint.h>
#include <stdlib.h>
#include <ti/drv/rm/rm.h>
#include <ti/drv/rm/rm_public_lld.h>
#include <ti/drv/rm/resource_table_defs.h>
#include <ti/drv/rm/include/rm_pvt.h>
#include <rm_osal.h>
#include <string.h>
#include <ti/csl/csl_qm_queue.h>
Detailed Description
This is the Resource Manager Low Level Driver file.
- ============================================================================
(C) Copyright 2012, Texas Instruments, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Function Documentation
Rm_Result Rm_getInitPermissions |
( |
Rm_Perms * |
resourcePermissions |
) |
|
Description
This function extracts the initialization permission for a DSP from a resource permission element.
- Parameters:
-
[in] | resourcePermissions | A permissions structure element to extract the per DSP initialization permission |
- Return values:
-
| Success | - RM_INIT_PERMISSION_APPROVED |
| Failure | - RM_INIT_PERMISSION_DENIED |
Rm_Result Rm_getLinkRamPermissions |
( |
Bool |
isInitCheck, |
|
|
Rm_qmssLinkingRamPerms * |
linkRamPermArray, |
|
|
Rm_ResourceInfo * |
linkRamResData | |
|
) |
| | |
Description
This function searches the list of linking RAM address ranges to find one that has the requested linking RAM address within it. If found the function returns the permissions for this range. Otherwise it returns denied.
- Parameters:
-
[in] | isInitCheck | True - Permissions check is for initialization False - Permissions check is for usage |
[in] | linkRamPermArray | Internal array of linking RAM ranges and their permissions |
[in] | linkRamResData | Linking RAM addresses to check for initialization or usage permissions |
- Return values:
-
| Success | - RM_INIT_PERMISSION_APPROVED |
| Failure | - RM_INIT_PERMISSION_DENIED |
Rm_Result Rm_getUsePermissions |
( |
Rm_Perms * |
resourcePermissions |
) |
|
Description
This function extracts the usage permission for a DSP from a resource permission element.
- Parameters:
-
[in] | resourcePermissions | A permissions structure element to extract the per DSP usage permission |
- Return values:
-
| Success | - RM_INIT_PERMISSION_APPROVED |
| Failure | - RM_INIT_PERMISSION_DENIED |
Description
This function is used by LLDs to check initialization permissions for a resource
- Parameters:
-
[in] | resourceData | Structure containing resource information such as resource type and the resource value to be checked |
- Return values:
-
| Success | - RM_INIT_PERMISSION_APPROVED |
| Failure | - RM_INIT_PERMISSION_DENIED |
void Rm_permissionTableInit |
( |
void |
|
) |
|
Description
Initialize the permission tables. All resources are intialized to deny all initialization and usage permissions.
Description
Takes an application specified resource table as input and transfers all resource permissions specified within into the internal resource permission tables. Upon completion of permission transfer a global synchronization object is written to sync with slave cores.
- Parameters:
-
[in] | rmResourceTable | Application defined resource table containing all resources that should have permissions set for the DSPs |
- Return values:
-
| Success | - RM_OK |
| Failure | - RM_ERROR_PERMISSION_TABLE_POPULATION_FAILED |
void Rm_setTablePermissions |
( |
const Rm_Resource * |
resourceEntry, |
|
|
Rm_Perms * |
rmPermsArray, |
|
|
uint32_t |
len | |
|
) |
| | |
Description
Sets a list of entries in a permissions array to the specified permissions
- Parameters:
-
[in] | resourceEntry | The resource entry from the application defined resource table containing a range of resources and the permissions to assign to them. |
[in] | rmPermsArray | The permissions array for the resource specified in the resourceEntry. |
[in] | len | Full length of permissions array for writeback after the permissions have been transferred. |
void Rm_updatePermissionTables |
( |
void |
|
) |
|
Description
This function is called on slave DSPs after the master DSP has populated the internal permission tables. This function invalidates all internal global permission tables so that no further invalidates are required when LLDs perform resource permission checks
Description
This function is used by LLDs to check usage permissions for a resource
- Parameters:
-
[in] | resourceData | Structure containing resource information such as resource type and the resource value to be checked |
- Return values:
-
| Success | - RM_INIT_PERMISSION_APPROVED |
| Failure | - RM_INIT_PERMISSION_DENIED |