- BLE peripheral applications - dr_piezo and bladder_patch projects Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
66 lines
2.1 KiB
C
66 lines
2.1 KiB
C
/*
|
|
|
|
Copyright (c) 2009-2021 ARM Limited. All rights reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
|
|
Licensed under the Apache License, Version 2.0 (the License); you may
|
|
not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
NOTICE: This file has been modified by Nordic Semiconductor ASA.
|
|
|
|
*/
|
|
|
|
#ifndef SYSTEM_NRF52_APPROTECT_H
|
|
#define SYSTEM_NRF52_APPROTECT_H
|
|
|
|
#include "nrf.h"
|
|
#include "nrf_erratas.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* Function that handles firmware-driven enabling or disabling of APPROTECT on devices where it is supported.
|
|
If ENABLE_APPROTECT is defined, the FW will lock the fw branch of the APPROTECT mechanism,
|
|
preventing it from being opened.
|
|
Otherwise, the fw branch state is loaded from UICR, emulating the legacy APPROTECT behavior.
|
|
|
|
The same mechanism is implemented for SECURE APPROTECT, with the macros
|
|
ENABLE_SECURE_APPROTECT and ENABLE_SECURE_APPROTECT_USER_HANDLING. */
|
|
static inline void nrf52_handle_approtect(void)
|
|
{
|
|
#if NRF52_ERRATA_249_PRESENT
|
|
#if defined (ENABLE_APPROTECT)
|
|
if (nrf52_errata_249())
|
|
{
|
|
/* Prevent processor from unlocking APPROTECT soft branch after this point. */
|
|
NRF_APPROTECT->FORCEPROTECT = APPROTECT_FORCEPROTECT_FORCEPROTECT_Force;
|
|
}
|
|
#else
|
|
if (nrf52_errata_249())
|
|
{
|
|
/* Load APPROTECT soft branch from UICR.
|
|
If UICR->APPROTECT is disabled, POWER->APPROTECT will be disabled. */
|
|
NRF_APPROTECT->DISABLE = NRF_UICR->APPROTECT;
|
|
}
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* SYSTEM_NRF52_APPROTECT_H */
|