52 lines
1.8 KiB
C
52 lines
1.8 KiB
C
/*
|
|
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
|
* Copyright 2016-2017 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include "fsl_aipstz.h"
|
|
|
|
/*******************************************************************************
|
|
* Definitions
|
|
******************************************************************************/
|
|
|
|
/* Component ID definition, used by tools. */
|
|
#ifndef FSL_COMPONENT_ID
|
|
#define FSL_COMPONENT_ID "platform.drivers.aipstz"
|
|
#endif
|
|
|
|
/*******************************************************************************
|
|
* Prototypes
|
|
******************************************************************************/
|
|
/*!
|
|
* brief Configure the privilege level for master.
|
|
*
|
|
* param base AIPSTZ peripheral base pointer
|
|
* param master Masters for AIPSTZ.
|
|
* param privilegeConfig Configuration is ORed from aipstz_master_privilege_level_t.
|
|
*/
|
|
void AIPSTZ_SetMasterPriviledgeLevel(AIPSTZ_Type *base, aipstz_master_t master, uint32_t privilegeConfig)
|
|
{
|
|
uint32_t mask = ((uint32_t)master >> 8) - 1;
|
|
uint32_t shift = (uint32_t)master & 0xFF;
|
|
base->MPR = (base->MPR & (~(mask << shift))) | (privilegeConfig << shift);
|
|
}
|
|
|
|
/*!
|
|
* brief Configure the access for peripheral.
|
|
*
|
|
* param base AIPSTZ peripheral base pointer
|
|
* param master Peripheral for AIPSTZ.
|
|
* param accessControl Configuration is ORed from aipstz_peripheral_access_control_t.
|
|
*/
|
|
void AIPSTZ_SetPeripheralAccessControl(AIPSTZ_Type *base, aipstz_peripheral_t peripheral, uint32_t accessControl)
|
|
{
|
|
volatile uint32_t *reg = (uint32_t *)((uint32_t)base + ((uint32_t)peripheral >> 16));
|
|
uint32_t mask = (((uint32_t)peripheral & 0xFF00U) >> 8) - 1;
|
|
uint32_t shift = (uint32_t)peripheral & 0xFF;
|
|
|
|
*reg = (*reg & (~(mask << shift))) | ((accessControl & mask) << shift);
|
|
}
|