Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: mbed-os/features/mbedtls/targets/TARGET_Silicon_Labs/crypto_management.h
- Revision:
- 0:8fdf9a60065b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os/features/mbedtls/targets/TARGET_Silicon_Labs/crypto_management.h Wed Oct 10 00:33:53 2018 +0000
@@ -0,0 +1,128 @@
+/*
+ * Silicon Labs CRYPTO device management interface.
+ *
+ * Copyright (C) 2016, Silicon Labs, http://www.silabs.com
+ * 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
+ *
+ * http://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.
+ */
+
+#ifndef CRYPTO_MANAGEMENT_H
+#define CRYPTO_MANAGEMENT_H
+
+/***************************************************************************//**
+ * \addtogroup sl_crypto
+ * \{
+ ******************************************************************************/
+
+/***************************************************************************//**
+ * \addtogroup sl_crypto_management CRYPTO peripheral instance management
+ * \brief Management functions for CRYPTO peripherals. These functions take care
+ * of not having two 'owners' simultaneously for the same peripheral,
+ * potentially messing up the internal state of said peripheral.
+ * \{
+ ******************************************************************************/
+
+#if !defined(MBEDTLS_CONFIG_FILE)
+#include "mbedtls/config.h"
+#else
+#include MBEDTLS_CONFIG_FILE
+#endif
+
+#include <stdlib.h>
+
+#include "em_device.h"
+
+#if defined( CRYPTO_PRESENT )
+#include "em_crypto.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Save DDATA0 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_DDATA0 (0x1U << 3)
+/** Save DDATA1 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_DDATA1 (0x1U << 4)
+/** Save DDATA2 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_DDATA2 (0x1U << 5)
+/** Save DDATA3 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_DDATA3 (0x1U << 6)
+/** Save DDATA4 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_DDATA4 (0x1U << 7)
+/** Save SEQ0 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_UPTO_SEQ0 (0x1U)
+/** Save SEQ0 through SEQ1 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_UPTO_SEQ1 (0x2U)
+/** Save SEQ0 through SEQ2 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_UPTO_SEQ2 (0x3U)
+/** Save SEQ0 through SEQ3 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_UPTO_SEQ3 (0x4U)
+/** Save SEQ0 through SEQ4 register when preempting */
+#define CRYPTO_MANAGEMENT_SAVE_UPTO_SEQ4 (0x5U)
+
+/**
+ * \brief Get ownership of a CRYPTO peripheral
+ *
+ * \return Handle of assigned CRYPTO peripheral
+ */
+CRYPTO_TypeDef *crypto_management_acquire( void );
+
+/**
+ * \brief Get ownership of the default CRYPTO peripheral
+ *
+ * \return Handle of default CRYPTO peripheral
+ */
+CRYPTO_TypeDef *crypto_management_acquire_default( void );
+
+/**
+ * \brief Release ownership of a CRYPTO peripheral
+ *
+ * \param device Handle of CRYPTO peripheral to be released
+ */
+void crypto_management_release( CRYPTO_TypeDef *device );
+
+/**
+ * \brief Acquire preempting ownership of a CRYPTO peripheral.
+ * NOTE: this function is not meant for general use, it
+ * is not thread-safe, and must be called form the
+ * highest priority thread/interrupt allowed to use mbed TLS.
+ *
+ * \param regmask Bitmask of CRYPTO_MANAGEMENT_ defines instructing what
+ * parts of the device state will be clobbered during
+ * preemption.
+ *
+ * \return Handle of assigned CRYPTO peripheral
+ */
+CRYPTO_TypeDef *crypto_management_acquire_preemption( uint32_t regmask );
+
+/**
+ * \brief Releasing preempting ownership of a CRYPTO peripheral.
+ * NOTE: this function is not meant for general use, it
+ * is not thread-safe, and must be called form the
+ * highest priority thread/interrupt allowed to use mbed TLS.
+ *
+ * \param device Handle of preempted CRYPTO peripheral to be released
+ */
+void crypto_management_release_preemption( CRYPTO_TypeDef *device );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CRYPTO_PRESENT */
+
+/** \} (end addtogroup sl_crypto_management) */
+/** \} (end addtogroup sl_crypto) */
+
+#endif /* CRYPTO_MANAGEMENT_H */
\ No newline at end of file