The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 161:aa5281ff4a02 1 /*
AnnaBridge 170:e95d10626187 2 * The Clear BSD License
AnnaBridge 161:aa5281ff4a02 3 * Copyright 2017 NXP
AnnaBridge 161:aa5281ff4a02 4 * All rights reserved.
AnnaBridge 161:aa5281ff4a02 5 *
AnnaBridge 170:e95d10626187 6 *
AnnaBridge 161:aa5281ff4a02 7 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 170:e95d10626187 8 * are permitted (subject to the limitations in the disclaimer below) provided
AnnaBridge 170:e95d10626187 9 * that the following conditions are met:
AnnaBridge 161:aa5281ff4a02 10 *
AnnaBridge 161:aa5281ff4a02 11 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 161:aa5281ff4a02 12 * of conditions and the following disclaimer.
AnnaBridge 161:aa5281ff4a02 13 *
AnnaBridge 161:aa5281ff4a02 14 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 161:aa5281ff4a02 15 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 161:aa5281ff4a02 16 * other materials provided with the distribution.
AnnaBridge 161:aa5281ff4a02 17 *
AnnaBridge 161:aa5281ff4a02 18 * o Neither the name of the copyright holder nor the names of its
AnnaBridge 161:aa5281ff4a02 19 * contributors may be used to endorse or promote products derived from this
AnnaBridge 161:aa5281ff4a02 20 * software without specific prior written permission.
AnnaBridge 161:aa5281ff4a02 21 *
AnnaBridge 170:e95d10626187 22 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
AnnaBridge 161:aa5281ff4a02 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 161:aa5281ff4a02 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 161:aa5281ff4a02 25 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 161:aa5281ff4a02 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 161:aa5281ff4a02 27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 161:aa5281ff4a02 28 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 161:aa5281ff4a02 29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 161:aa5281ff4a02 30 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 161:aa5281ff4a02 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 161:aa5281ff4a02 32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 161:aa5281ff4a02 33 */
AnnaBridge 161:aa5281ff4a02 34
AnnaBridge 161:aa5281ff4a02 35 #ifndef _FSL_DCP_H_
AnnaBridge 161:aa5281ff4a02 36 #define _FSL_DCP_H_
AnnaBridge 161:aa5281ff4a02 37
AnnaBridge 161:aa5281ff4a02 38 #include "fsl_common.h"
AnnaBridge 161:aa5281ff4a02 39
AnnaBridge 161:aa5281ff4a02 40 /*! @brief DCP status return codes. */
AnnaBridge 161:aa5281ff4a02 41 enum _dcp_status
AnnaBridge 161:aa5281ff4a02 42 {
AnnaBridge 161:aa5281ff4a02 43 kStatus_DCP_Again = MAKE_STATUS(kStatusGroup_DCP, 0), /*!< Non-blocking function shall be called again. */
AnnaBridge 161:aa5281ff4a02 44 };
AnnaBridge 161:aa5281ff4a02 45
AnnaBridge 161:aa5281ff4a02 46 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 47 * Definitions
AnnaBridge 161:aa5281ff4a02 48 *******************************************************************************/
AnnaBridge 161:aa5281ff4a02 49
AnnaBridge 161:aa5281ff4a02 50 /*!
AnnaBridge 161:aa5281ff4a02 51 * @addtogroup dcp_driver
AnnaBridge 161:aa5281ff4a02 52 * @{
AnnaBridge 161:aa5281ff4a02 53 */
AnnaBridge 161:aa5281ff4a02 54 /*! @name Driver version */
AnnaBridge 161:aa5281ff4a02 55 /*@{*/
AnnaBridge 161:aa5281ff4a02 56 /*! @brief DCP driver version. Version 2.0.0.
AnnaBridge 161:aa5281ff4a02 57 *
AnnaBridge 161:aa5281ff4a02 58 * Current version: 2.0.0
AnnaBridge 161:aa5281ff4a02 59 *
AnnaBridge 161:aa5281ff4a02 60 * Change log:
AnnaBridge 161:aa5281ff4a02 61 * - Version 2.0.0
AnnaBridge 161:aa5281ff4a02 62 * - Initial version
AnnaBridge 161:aa5281ff4a02 63 */
AnnaBridge 161:aa5281ff4a02 64 #define FSL_DCP_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
AnnaBridge 161:aa5281ff4a02 65 /*@}*/
AnnaBridge 161:aa5281ff4a02 66
AnnaBridge 161:aa5281ff4a02 67 /*! @brief DCP channel enable.
AnnaBridge 161:aa5281ff4a02 68 *
AnnaBridge 161:aa5281ff4a02 69 */
AnnaBridge 161:aa5281ff4a02 70 typedef enum _dcp_ch_enable
AnnaBridge 161:aa5281ff4a02 71 {
AnnaBridge 161:aa5281ff4a02 72 kDCP_chDisable = 0U, /*!< DCP channel disable */
AnnaBridge 161:aa5281ff4a02 73 kDCP_ch0Enable = 1U, /*!< DCP channel 0 enable */
AnnaBridge 161:aa5281ff4a02 74 kDCP_ch1Enable = 2U, /*!< DCP channel 1 enable */
AnnaBridge 161:aa5281ff4a02 75 kDCP_ch2Enable = 4U, /*!< DCP channel 2 enable */
AnnaBridge 161:aa5281ff4a02 76 kDCP_ch3Enable = 8U, /*!< DCP channel 3 enable */
AnnaBridge 161:aa5281ff4a02 77 kDCP_chEnableAll = 15U, /*!< DCP channel enable all */
AnnaBridge 161:aa5281ff4a02 78 } _dcp_ch_enable_t;
AnnaBridge 161:aa5281ff4a02 79
AnnaBridge 161:aa5281ff4a02 80 /*! @brief DCP interrupt enable.
AnnaBridge 161:aa5281ff4a02 81 *
AnnaBridge 161:aa5281ff4a02 82 */
AnnaBridge 161:aa5281ff4a02 83 typedef enum _dcp_ch_int_enable
AnnaBridge 161:aa5281ff4a02 84 {
AnnaBridge 161:aa5281ff4a02 85 kDCP_chIntDisable = 0U, /*!< DCP interrupts disable */
AnnaBridge 161:aa5281ff4a02 86 kDCP_ch0IntEnable = 1U, /*!< DCP channel 0 interrupt enable */
AnnaBridge 161:aa5281ff4a02 87 kDCP_ch1IntEnable = 2U, /*!< DCP channel 1 interrupt enable */
AnnaBridge 161:aa5281ff4a02 88 kDCP_ch2IntEnable = 4U, /*!< DCP channel 2 interrupt enable */
AnnaBridge 161:aa5281ff4a02 89 kDCP_ch3IntEnable = 8U, /*!< DCP channel 3 interrupt enable */
AnnaBridge 161:aa5281ff4a02 90 } _dcp_ch_int_enable_t;
AnnaBridge 161:aa5281ff4a02 91
AnnaBridge 161:aa5281ff4a02 92 /*! @brief DCP channel selection.
AnnaBridge 161:aa5281ff4a02 93 *
AnnaBridge 161:aa5281ff4a02 94 */
AnnaBridge 161:aa5281ff4a02 95 typedef enum _dcp_channel
AnnaBridge 161:aa5281ff4a02 96 {
AnnaBridge 161:aa5281ff4a02 97 kDCP_Channel0 = (1u << 16), /*!< DCP channel 0. */
AnnaBridge 161:aa5281ff4a02 98 kDCP_Channel1 = (1u << 17), /*!< DCP channel 1. */
AnnaBridge 161:aa5281ff4a02 99 kDCP_Channel2 = (1u << 18), /*!< DCP channel 2. */
AnnaBridge 161:aa5281ff4a02 100 kDCP_Channel3 = (1u << 19), /*!< DCP channel 3. */
AnnaBridge 161:aa5281ff4a02 101 } dcp_channel_t;
AnnaBridge 161:aa5281ff4a02 102
AnnaBridge 161:aa5281ff4a02 103 /*! @brief DCP key slot selection.
AnnaBridge 161:aa5281ff4a02 104 *
AnnaBridge 161:aa5281ff4a02 105 */
AnnaBridge 161:aa5281ff4a02 106 typedef enum _dcp_key_slot
AnnaBridge 161:aa5281ff4a02 107 {
AnnaBridge 161:aa5281ff4a02 108 kDCP_KeySlot0 = 0U, /*!< DCP key slot 0. */
AnnaBridge 161:aa5281ff4a02 109 kDCP_KeySlot1 = 1U, /*!< DCP key slot 1. */
AnnaBridge 161:aa5281ff4a02 110 kDCP_KeySlot2 = 2U, /*!< DCP key slot 2.*/
AnnaBridge 161:aa5281ff4a02 111 kDCP_KeySlot3 = 3U, /*!< DCP key slot 3. */
AnnaBridge 161:aa5281ff4a02 112 kDCP_OtpKey = 4U, /*!< DCP OTP key. */
AnnaBridge 161:aa5281ff4a02 113 kDCP_OtpUniqueKey = 5U, /*!< DCP unique OTP key. */
AnnaBridge 161:aa5281ff4a02 114 kDCP_PayloadKey = 6U, /*!< DCP payload key. */
AnnaBridge 161:aa5281ff4a02 115 } dcp_key_slot_t;
AnnaBridge 161:aa5281ff4a02 116
AnnaBridge 161:aa5281ff4a02 117 /*! @brief DCP's work packet. */
AnnaBridge 161:aa5281ff4a02 118 typedef struct _dcp_work_packet
AnnaBridge 161:aa5281ff4a02 119 {
AnnaBridge 161:aa5281ff4a02 120 uint32_t nextCmdAddress;
AnnaBridge 161:aa5281ff4a02 121 uint32_t control0;
AnnaBridge 161:aa5281ff4a02 122 uint32_t control1;
AnnaBridge 161:aa5281ff4a02 123 uint32_t sourceBufferAddress;
AnnaBridge 161:aa5281ff4a02 124 uint32_t destinationBufferAddress;
AnnaBridge 161:aa5281ff4a02 125 uint32_t bufferSize;
AnnaBridge 161:aa5281ff4a02 126 uint32_t payloadPointer;
AnnaBridge 161:aa5281ff4a02 127 uint32_t status;
AnnaBridge 161:aa5281ff4a02 128 } dcp_work_packet_t;
AnnaBridge 161:aa5281ff4a02 129
AnnaBridge 161:aa5281ff4a02 130 /*! @brief Specify DCP's key resource and DCP channel. */
AnnaBridge 161:aa5281ff4a02 131 typedef struct _dcp_handle
AnnaBridge 161:aa5281ff4a02 132 {
AnnaBridge 161:aa5281ff4a02 133 dcp_channel_t channel; /*!< Specify DCP channel. */
AnnaBridge 161:aa5281ff4a02 134 dcp_key_slot_t keySlot; /*!< For operations with key (such as AES encryption/decryption), specify DCP key slot. */
AnnaBridge 161:aa5281ff4a02 135 uint32_t keyWord[4];
AnnaBridge 161:aa5281ff4a02 136 uint32_t iv[4];
AnnaBridge 161:aa5281ff4a02 137 } dcp_handle_t;
AnnaBridge 161:aa5281ff4a02 138
AnnaBridge 161:aa5281ff4a02 139 /*! @brief DCP's context buffer, used by DCP for context switching between channels. */
AnnaBridge 161:aa5281ff4a02 140 typedef struct _dcp_context
AnnaBridge 161:aa5281ff4a02 141 {
AnnaBridge 161:aa5281ff4a02 142 uint32_t x[208 / sizeof(uint32_t)];
AnnaBridge 161:aa5281ff4a02 143 } dcp_context_t;
AnnaBridge 161:aa5281ff4a02 144
AnnaBridge 161:aa5281ff4a02 145 /*! @brief DCP's configuration structure. */
AnnaBridge 161:aa5281ff4a02 146 typedef struct _dcp_config
AnnaBridge 161:aa5281ff4a02 147 {
AnnaBridge 161:aa5281ff4a02 148 bool gatherResidualWrites; /*!< Enable the ragged writes to the unaligned buffers. */
AnnaBridge 161:aa5281ff4a02 149 bool enableContextCaching; /*!< Enable the caching of contexts between the operations. */
AnnaBridge 161:aa5281ff4a02 150 bool enableContextSwitching; /*!< Enable automatic context switching for the channels. */
AnnaBridge 161:aa5281ff4a02 151 uint8_t enableChannel; /*!< DCP channel enable. */
AnnaBridge 161:aa5281ff4a02 152 uint8_t enableChannelInterrupt; /*!< Per-channel interrupt enable. */
AnnaBridge 161:aa5281ff4a02 153 } dcp_config_t;
AnnaBridge 161:aa5281ff4a02 154
AnnaBridge 161:aa5281ff4a02 155 /*! @} */
AnnaBridge 161:aa5281ff4a02 156
AnnaBridge 161:aa5281ff4a02 157 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 158 * AES Definitions
AnnaBridge 161:aa5281ff4a02 159 *******************************************************************************/
AnnaBridge 161:aa5281ff4a02 160
AnnaBridge 161:aa5281ff4a02 161 /*!
AnnaBridge 161:aa5281ff4a02 162 * @addtogroup dcp_driver_aes
AnnaBridge 161:aa5281ff4a02 163 * @{
AnnaBridge 161:aa5281ff4a02 164 */
AnnaBridge 161:aa5281ff4a02 165
AnnaBridge 161:aa5281ff4a02 166 /*! AES block size in bytes */
AnnaBridge 161:aa5281ff4a02 167 #define DCP_AES_BLOCK_SIZE 16
AnnaBridge 161:aa5281ff4a02 168
AnnaBridge 161:aa5281ff4a02 169 /*!
AnnaBridge 161:aa5281ff4a02 170 *@}
AnnaBridge 161:aa5281ff4a02 171 */ /* end of dcp_driver_aes */
AnnaBridge 161:aa5281ff4a02 172
AnnaBridge 161:aa5281ff4a02 173 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 174 * HASH Definitions
AnnaBridge 161:aa5281ff4a02 175 ******************************************************************************/
AnnaBridge 161:aa5281ff4a02 176 /*!
AnnaBridge 161:aa5281ff4a02 177 * @addtogroup dcp_driver_hash
AnnaBridge 161:aa5281ff4a02 178 * @{
AnnaBridge 161:aa5281ff4a02 179 */
AnnaBridge 161:aa5281ff4a02 180
AnnaBridge 161:aa5281ff4a02 181 /* DCP cannot correctly compute hash for message with zero size. When enabled, driver bypases DCP and returns correct
AnnaBridge 161:aa5281ff4a02 182 * hash value. If you are sure, that the driver will never be called with zero sized message, you can disable this
AnnaBridge 161:aa5281ff4a02 183 * feature to reduce code size */
AnnaBridge 161:aa5281ff4a02 184 #define DCP_HASH_CAVP_COMPATIBLE
AnnaBridge 161:aa5281ff4a02 185
AnnaBridge 161:aa5281ff4a02 186 /*! @brief Supported cryptographic block cipher functions for HASH creation */
AnnaBridge 161:aa5281ff4a02 187 typedef enum _dcp_hash_algo_t
AnnaBridge 161:aa5281ff4a02 188 {
AnnaBridge 161:aa5281ff4a02 189 kDCP_Sha1, /*!< SHA_1 */
AnnaBridge 161:aa5281ff4a02 190 kDCP_Sha256, /*!< SHA_256 */
AnnaBridge 161:aa5281ff4a02 191 kDCP_Crc32, /*!< CRC_32 */
AnnaBridge 161:aa5281ff4a02 192 } dcp_hash_algo_t;
AnnaBridge 161:aa5281ff4a02 193
AnnaBridge 161:aa5281ff4a02 194 /*! @brief DCP HASH Context size. */
AnnaBridge 161:aa5281ff4a02 195 #define DCP_SHA_BLOCK_SIZE 128 /*!< internal buffer block size */
AnnaBridge 161:aa5281ff4a02 196 #define DCP_HASH_BLOCK_SIZE DCP_SHA_BLOCK_SIZE /*!< DCP hash block size */
AnnaBridge 161:aa5281ff4a02 197
AnnaBridge 161:aa5281ff4a02 198 /*! @brief DCP HASH Context size. */
AnnaBridge 161:aa5281ff4a02 199 #define DCP_HASH_CTX_SIZE 58
AnnaBridge 161:aa5281ff4a02 200
AnnaBridge 161:aa5281ff4a02 201 /*! @brief Storage type used to save hash context. */
AnnaBridge 161:aa5281ff4a02 202 typedef struct _dcp_hash_ctx_t
AnnaBridge 161:aa5281ff4a02 203 {
AnnaBridge 161:aa5281ff4a02 204 uint32_t x[DCP_HASH_CTX_SIZE];
AnnaBridge 161:aa5281ff4a02 205 } dcp_hash_ctx_t;
AnnaBridge 161:aa5281ff4a02 206
AnnaBridge 161:aa5281ff4a02 207 /*!
AnnaBridge 161:aa5281ff4a02 208 *@}
AnnaBridge 161:aa5281ff4a02 209 */ /* end of dcp_driver_hash */
AnnaBridge 161:aa5281ff4a02 210
AnnaBridge 161:aa5281ff4a02 211 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 212 * API
AnnaBridge 161:aa5281ff4a02 213 ******************************************************************************/
AnnaBridge 161:aa5281ff4a02 214 #if defined(__cplusplus)
AnnaBridge 161:aa5281ff4a02 215 extern "C" {
AnnaBridge 161:aa5281ff4a02 216 #endif
AnnaBridge 161:aa5281ff4a02 217
AnnaBridge 161:aa5281ff4a02 218 /*!
AnnaBridge 161:aa5281ff4a02 219 * @addtogroup dcp_driver
AnnaBridge 161:aa5281ff4a02 220 * @{
AnnaBridge 161:aa5281ff4a02 221 */
AnnaBridge 161:aa5281ff4a02 222
AnnaBridge 161:aa5281ff4a02 223 /*!
AnnaBridge 161:aa5281ff4a02 224 * @brief Enables clock to and enables DCP
AnnaBridge 161:aa5281ff4a02 225 *
AnnaBridge 161:aa5281ff4a02 226 * Enable DCP clock and configure DCP.
AnnaBridge 161:aa5281ff4a02 227 *
AnnaBridge 161:aa5281ff4a02 228 * @param base DCP base address
AnnaBridge 161:aa5281ff4a02 229 * @param config Pointer to configuration structure.
AnnaBridge 161:aa5281ff4a02 230 */
AnnaBridge 161:aa5281ff4a02 231 void DCP_Init(DCP_Type *base, const dcp_config_t *config);
AnnaBridge 161:aa5281ff4a02 232
AnnaBridge 161:aa5281ff4a02 233 /*!
AnnaBridge 161:aa5281ff4a02 234 * @brief Disable DCP clock
AnnaBridge 161:aa5281ff4a02 235 *
AnnaBridge 161:aa5281ff4a02 236 * Reset DCP and Disable DCP clock.
AnnaBridge 161:aa5281ff4a02 237 *
AnnaBridge 161:aa5281ff4a02 238 * @param base DCP base address
AnnaBridge 161:aa5281ff4a02 239 */
AnnaBridge 161:aa5281ff4a02 240 void DCP_Deinit(DCP_Type *base);
AnnaBridge 161:aa5281ff4a02 241
AnnaBridge 161:aa5281ff4a02 242 /*!
AnnaBridge 161:aa5281ff4a02 243 * @brief Gets the default configuration structure.
AnnaBridge 161:aa5281ff4a02 244 *
AnnaBridge 161:aa5281ff4a02 245 * This function initializes the DCP configuration structure to a default value. The default
AnnaBridge 161:aa5281ff4a02 246 * values are as follows.
AnnaBridge 161:aa5281ff4a02 247 * dcpConfig->gatherResidualWrites = true;
AnnaBridge 161:aa5281ff4a02 248 * dcpConfig->enableContextCaching = true;
AnnaBridge 161:aa5281ff4a02 249 * dcpConfig->enableContextSwitching = true;
AnnaBridge 161:aa5281ff4a02 250 * dcpConfig->enableChannnel = kDCP_chEnableAll;
AnnaBridge 161:aa5281ff4a02 251 * dcpConfig->enableChannelInterrupt = kDCP_chIntDisable;
AnnaBridge 161:aa5281ff4a02 252 *
AnnaBridge 161:aa5281ff4a02 253 * @param[out] config Pointer to configuration structure.
AnnaBridge 161:aa5281ff4a02 254 */
AnnaBridge 161:aa5281ff4a02 255 void DCP_GetDefaultConfig(dcp_config_t *config);
AnnaBridge 161:aa5281ff4a02 256
AnnaBridge 161:aa5281ff4a02 257 /*!
AnnaBridge 161:aa5281ff4a02 258 * @brief Poll and wait on DCP channel.
AnnaBridge 161:aa5281ff4a02 259 *
AnnaBridge 161:aa5281ff4a02 260 * Polls the specified DCP channel until current it completes activity.
AnnaBridge 161:aa5281ff4a02 261 *
AnnaBridge 161:aa5281ff4a02 262 * @param base DCP peripheral base address.
AnnaBridge 161:aa5281ff4a02 263 * @param handle Specifies DCP channel.
AnnaBridge 161:aa5281ff4a02 264 * @return kStatus_Success When data processing completes without error.
AnnaBridge 161:aa5281ff4a02 265 * @return kStatus_Fail When error occurs.
AnnaBridge 161:aa5281ff4a02 266 */
AnnaBridge 161:aa5281ff4a02 267 status_t DCP_WaitForChannelComplete(DCP_Type *base, dcp_handle_t *handle);
AnnaBridge 161:aa5281ff4a02 268
AnnaBridge 161:aa5281ff4a02 269 /*!
AnnaBridge 161:aa5281ff4a02 270 *@}
AnnaBridge 161:aa5281ff4a02 271 */ /* end of dcp_driver */
AnnaBridge 161:aa5281ff4a02 272
AnnaBridge 161:aa5281ff4a02 273 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 274 * AES API
AnnaBridge 161:aa5281ff4a02 275 ******************************************************************************/
AnnaBridge 161:aa5281ff4a02 276
AnnaBridge 161:aa5281ff4a02 277 /*!
AnnaBridge 161:aa5281ff4a02 278 * @addtogroup dcp_driver_aes
AnnaBridge 161:aa5281ff4a02 279 * @{
AnnaBridge 161:aa5281ff4a02 280 */
AnnaBridge 161:aa5281ff4a02 281
AnnaBridge 161:aa5281ff4a02 282 /*!
AnnaBridge 161:aa5281ff4a02 283 * @brief Set AES key to dcp_handle_t struct and optionally to DCP.
AnnaBridge 161:aa5281ff4a02 284 *
AnnaBridge 161:aa5281ff4a02 285 * Sets the AES key for encryption/decryption with the dcp_handle_t structure.
AnnaBridge 161:aa5281ff4a02 286 * The dcp_handle_t input argument specifies keySlot.
AnnaBridge 161:aa5281ff4a02 287 * If the keySlot is kDCP_OtpKey, the function will check the OTP_KEY_READY bit and will return it's ready to use
AnnaBridge 161:aa5281ff4a02 288 * status.
AnnaBridge 161:aa5281ff4a02 289 * For other keySlot selections, the function will copy and hold the key in dcp_handle_t struct.
AnnaBridge 161:aa5281ff4a02 290 * If the keySlot is one of the four DCP SRAM-based keys (one of kDCP_KeySlot0, kDCP_KeySlot1, kDCP_KeySlot2,
AnnaBridge 161:aa5281ff4a02 291 * kDCP_KeySlot3),
AnnaBridge 161:aa5281ff4a02 292 * this function will also load the supplied key to the specified keySlot in DCP.
AnnaBridge 161:aa5281ff4a02 293 *
AnnaBridge 161:aa5281ff4a02 294 * @param base DCP peripheral base address.
AnnaBridge 161:aa5281ff4a02 295 * @param handle Handle used for the request.
AnnaBridge 161:aa5281ff4a02 296 * @param key 0-mod-4 aligned pointer to AES key.
AnnaBridge 161:aa5281ff4a02 297 * @param keySize AES key size in bytes. Shall equal 16.
AnnaBridge 161:aa5281ff4a02 298 * @return status from set key operation
AnnaBridge 161:aa5281ff4a02 299 */
AnnaBridge 161:aa5281ff4a02 300 status_t DCP_AES_SetKey(DCP_Type *base, dcp_handle_t *handle, const uint8_t *key, size_t keySize);
AnnaBridge 161:aa5281ff4a02 301
AnnaBridge 161:aa5281ff4a02 302 /*!
AnnaBridge 161:aa5281ff4a02 303 * @brief Encrypts AES on one or multiple 128-bit block(s).
AnnaBridge 161:aa5281ff4a02 304 *
AnnaBridge 161:aa5281ff4a02 305 * Encrypts AES.
AnnaBridge 161:aa5281ff4a02 306 * The source plaintext and destination ciphertext can overlap in system memory.
AnnaBridge 161:aa5281ff4a02 307 *
AnnaBridge 161:aa5281ff4a02 308 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 309 * @param handle Handle used for this request.
AnnaBridge 161:aa5281ff4a02 310 * @param plaintext Input plain text to encrypt
AnnaBridge 161:aa5281ff4a02 311 * @param[out] ciphertext Output cipher text
AnnaBridge 161:aa5281ff4a02 312 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 313 * @return Status from encrypt operation
AnnaBridge 161:aa5281ff4a02 314 */
AnnaBridge 161:aa5281ff4a02 315 status_t DCP_AES_EncryptEcb(
AnnaBridge 161:aa5281ff4a02 316 DCP_Type *base, dcp_handle_t *handle, const uint8_t *plaintext, uint8_t *ciphertext, size_t size);
AnnaBridge 161:aa5281ff4a02 317
AnnaBridge 161:aa5281ff4a02 318 /*!
AnnaBridge 161:aa5281ff4a02 319 * @brief Decrypts AES on one or multiple 128-bit block(s).
AnnaBridge 161:aa5281ff4a02 320 *
AnnaBridge 161:aa5281ff4a02 321 * Decrypts AES.
AnnaBridge 161:aa5281ff4a02 322 * The source ciphertext and destination plaintext can overlap in system memory.
AnnaBridge 161:aa5281ff4a02 323 *
AnnaBridge 161:aa5281ff4a02 324 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 325 * @param handle Handle used for this request.
AnnaBridge 161:aa5281ff4a02 326 * @param ciphertext Input plain text to encrypt
AnnaBridge 161:aa5281ff4a02 327 * @param[out] plaintext Output cipher text
AnnaBridge 161:aa5281ff4a02 328 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 329 * @return Status from decrypt operation
AnnaBridge 161:aa5281ff4a02 330 */
AnnaBridge 161:aa5281ff4a02 331 status_t DCP_AES_DecryptEcb(
AnnaBridge 161:aa5281ff4a02 332 DCP_Type *base, dcp_handle_t *handle, const uint8_t *ciphertext, uint8_t *plaintext, size_t size);
AnnaBridge 161:aa5281ff4a02 333
AnnaBridge 161:aa5281ff4a02 334 /*!
AnnaBridge 161:aa5281ff4a02 335 * @brief Encrypts AES using CBC block mode.
AnnaBridge 161:aa5281ff4a02 336 *
AnnaBridge 161:aa5281ff4a02 337 * Encrypts AES using CBC block mode.
AnnaBridge 161:aa5281ff4a02 338 * The source plaintext and destination ciphertext can overlap in system memory.
AnnaBridge 161:aa5281ff4a02 339 *
AnnaBridge 161:aa5281ff4a02 340 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 341 * @param handle Handle used for this request.
AnnaBridge 161:aa5281ff4a02 342 * @param plaintext Input plain text to encrypt
AnnaBridge 161:aa5281ff4a02 343 * @param[out] ciphertext Output cipher text
AnnaBridge 161:aa5281ff4a02 344 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 345 * @param iv Input initial vector to combine with the first input block.
AnnaBridge 161:aa5281ff4a02 346 * @return Status from encrypt operation
AnnaBridge 161:aa5281ff4a02 347 */
AnnaBridge 161:aa5281ff4a02 348 status_t DCP_AES_EncryptCbc(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 349 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 350 const uint8_t *plaintext,
AnnaBridge 161:aa5281ff4a02 351 uint8_t *ciphertext,
AnnaBridge 161:aa5281ff4a02 352 size_t size,
AnnaBridge 161:aa5281ff4a02 353 const uint8_t iv[16]);
AnnaBridge 161:aa5281ff4a02 354
AnnaBridge 161:aa5281ff4a02 355 /*!
AnnaBridge 161:aa5281ff4a02 356 * @brief Decrypts AES using CBC block mode.
AnnaBridge 161:aa5281ff4a02 357 *
AnnaBridge 161:aa5281ff4a02 358 * Decrypts AES using CBC block mode.
AnnaBridge 161:aa5281ff4a02 359 * The source ciphertext and destination plaintext can overlap in system memory.
AnnaBridge 161:aa5281ff4a02 360 *
AnnaBridge 161:aa5281ff4a02 361 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 362 * @param handle Handle used for this request.
AnnaBridge 161:aa5281ff4a02 363 * @param ciphertext Input cipher text to decrypt
AnnaBridge 161:aa5281ff4a02 364 * @param[out] plaintext Output plain text
AnnaBridge 161:aa5281ff4a02 365 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 366 * @param iv Input initial vector to combine with the first input block.
AnnaBridge 161:aa5281ff4a02 367 * @return Status from decrypt operation
AnnaBridge 161:aa5281ff4a02 368 */
AnnaBridge 161:aa5281ff4a02 369 status_t DCP_AES_DecryptCbc(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 370 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 371 const uint8_t *ciphertext,
AnnaBridge 161:aa5281ff4a02 372 uint8_t *plaintext,
AnnaBridge 161:aa5281ff4a02 373 size_t size,
AnnaBridge 161:aa5281ff4a02 374 const uint8_t iv[16]);
AnnaBridge 161:aa5281ff4a02 375
AnnaBridge 161:aa5281ff4a02 376 /*!
AnnaBridge 161:aa5281ff4a02 377 *@}
AnnaBridge 161:aa5281ff4a02 378 */ /* end of dcp_driver_aes */
AnnaBridge 161:aa5281ff4a02 379
AnnaBridge 161:aa5281ff4a02 380 /*!
AnnaBridge 161:aa5281ff4a02 381 * @addtogroup dcp_nonblocking_driver_aes
AnnaBridge 161:aa5281ff4a02 382 * @{
AnnaBridge 161:aa5281ff4a02 383 */
AnnaBridge 161:aa5281ff4a02 384 /*!
AnnaBridge 161:aa5281ff4a02 385 * @brief Encrypts AES using the ECB block mode.
AnnaBridge 161:aa5281ff4a02 386 *
AnnaBridge 161:aa5281ff4a02 387 * Puts AES ECB encrypt work packet to DCP channel.
AnnaBridge 161:aa5281ff4a02 388 *
AnnaBridge 161:aa5281ff4a02 389 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 390 * @param handle Handle used for this request.
AnnaBridge 161:aa5281ff4a02 391 * @param[out] dcpPacket Memory for the DCP work packet.
AnnaBridge 161:aa5281ff4a02 392 * @param plaintext Input plain text to encrypt.
AnnaBridge 161:aa5281ff4a02 393 * @param[out] ciphertext Output cipher text
AnnaBridge 161:aa5281ff4a02 394 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 395 * @return kStatus_Success The work packet has been scheduled at DCP channel.
AnnaBridge 161:aa5281ff4a02 396 * @return kStatus_DCP_Again The DCP channel is busy processing previous request.
AnnaBridge 161:aa5281ff4a02 397 */
AnnaBridge 161:aa5281ff4a02 398 status_t DCP_AES_EncryptEcbNonBlocking(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 399 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 400 dcp_work_packet_t *dcpPacket,
AnnaBridge 161:aa5281ff4a02 401 const uint8_t *plaintext,
AnnaBridge 161:aa5281ff4a02 402 uint8_t *ciphertext,
AnnaBridge 161:aa5281ff4a02 403 size_t size);
AnnaBridge 161:aa5281ff4a02 404
AnnaBridge 161:aa5281ff4a02 405 /*!
AnnaBridge 161:aa5281ff4a02 406 * @brief Decrypts AES using ECB block mode.
AnnaBridge 161:aa5281ff4a02 407 *
AnnaBridge 161:aa5281ff4a02 408 * Puts AES ECB decrypt dcpPacket to DCP input job ring.
AnnaBridge 161:aa5281ff4a02 409 *
AnnaBridge 161:aa5281ff4a02 410 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 411 * @param handle Handle used for this request.
AnnaBridge 161:aa5281ff4a02 412 * @param[out] dcpPacket Memory for the DCP work packet.
AnnaBridge 161:aa5281ff4a02 413 * @param ciphertext Input cipher text to decrypt
AnnaBridge 161:aa5281ff4a02 414 * @param[out] plaintext Output plain text
AnnaBridge 161:aa5281ff4a02 415 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 416 * @return kStatus_Success The work packet has been scheduled at DCP channel.
AnnaBridge 161:aa5281ff4a02 417 * @return kStatus_DCP_Again The DCP channel is busy processing previous request.
AnnaBridge 161:aa5281ff4a02 418 */
AnnaBridge 161:aa5281ff4a02 419 status_t DCP_AES_DecryptEcbNonBlocking(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 420 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 421 dcp_work_packet_t *dcpPacket,
AnnaBridge 161:aa5281ff4a02 422 const uint8_t *ciphertext,
AnnaBridge 161:aa5281ff4a02 423 uint8_t *plaintext,
AnnaBridge 161:aa5281ff4a02 424 size_t size);
AnnaBridge 161:aa5281ff4a02 425
AnnaBridge 161:aa5281ff4a02 426 /*!
AnnaBridge 161:aa5281ff4a02 427 * @brief Encrypts AES using CBC block mode.
AnnaBridge 161:aa5281ff4a02 428 *
AnnaBridge 161:aa5281ff4a02 429 * Puts AES CBC encrypt dcpPacket to DCP input job ring.
AnnaBridge 161:aa5281ff4a02 430 *
AnnaBridge 161:aa5281ff4a02 431 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 432 * @param handle Handle used for this request. Specifies jobRing.
AnnaBridge 161:aa5281ff4a02 433 * @param[out] dcpPacket Memory for the DCP work packet.
AnnaBridge 161:aa5281ff4a02 434 * @param plaintext Input plain text to encrypt
AnnaBridge 161:aa5281ff4a02 435 * @param[out] ciphertext Output cipher text
AnnaBridge 161:aa5281ff4a02 436 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 437 * @param iv Input initial vector to combine with the first input block.
AnnaBridge 161:aa5281ff4a02 438 * @return kStatus_Success The work packet has been scheduled at DCP channel.
AnnaBridge 161:aa5281ff4a02 439 * @return kStatus_DCP_Again The DCP channel is busy processing previous request.
AnnaBridge 161:aa5281ff4a02 440 */
AnnaBridge 161:aa5281ff4a02 441 status_t DCP_AES_EncryptCbcNonBlocking(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 442 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 443 dcp_work_packet_t *dcpPacket,
AnnaBridge 161:aa5281ff4a02 444 const uint8_t *plaintext,
AnnaBridge 161:aa5281ff4a02 445 uint8_t *ciphertext,
AnnaBridge 161:aa5281ff4a02 446 size_t size,
AnnaBridge 161:aa5281ff4a02 447 const uint8_t *iv);
AnnaBridge 161:aa5281ff4a02 448
AnnaBridge 161:aa5281ff4a02 449 /*!
AnnaBridge 161:aa5281ff4a02 450 * @brief Decrypts AES using CBC block mode.
AnnaBridge 161:aa5281ff4a02 451 *
AnnaBridge 161:aa5281ff4a02 452 * Puts AES CBC decrypt dcpPacket to DCP input job ring.
AnnaBridge 161:aa5281ff4a02 453 *
AnnaBridge 161:aa5281ff4a02 454 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 455 * @param handle Handle used for this request. Specifies jobRing.
AnnaBridge 161:aa5281ff4a02 456 * @param[out] dcpPacket Memory for the DCP work packet.
AnnaBridge 161:aa5281ff4a02 457 * @param ciphertext Input cipher text to decrypt
AnnaBridge 161:aa5281ff4a02 458 * @param[out] plaintext Output plain text
AnnaBridge 161:aa5281ff4a02 459 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 161:aa5281ff4a02 460 * @param iv Input initial vector to combine with the first input block.
AnnaBridge 161:aa5281ff4a02 461 * @return kStatus_Success The work packet has been scheduled at DCP channel.
AnnaBridge 161:aa5281ff4a02 462 * @return kStatus_DCP_Again The DCP channel is busy processing previous request.
AnnaBridge 161:aa5281ff4a02 463 */
AnnaBridge 161:aa5281ff4a02 464 status_t DCP_AES_DecryptCbcNonBlocking(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 465 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 466 dcp_work_packet_t *dcpPacket,
AnnaBridge 161:aa5281ff4a02 467 const uint8_t *ciphertext,
AnnaBridge 161:aa5281ff4a02 468 uint8_t *plaintext,
AnnaBridge 161:aa5281ff4a02 469 size_t size,
AnnaBridge 161:aa5281ff4a02 470 const uint8_t *iv);
AnnaBridge 161:aa5281ff4a02 471
AnnaBridge 161:aa5281ff4a02 472 /*!
AnnaBridge 161:aa5281ff4a02 473 *@}
AnnaBridge 161:aa5281ff4a02 474 */ /* end of dcp_nonblocking_driver_aes */
AnnaBridge 161:aa5281ff4a02 475
AnnaBridge 161:aa5281ff4a02 476 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 477 * HASH API
AnnaBridge 161:aa5281ff4a02 478 ******************************************************************************/
AnnaBridge 161:aa5281ff4a02 479
AnnaBridge 161:aa5281ff4a02 480 /*!
AnnaBridge 161:aa5281ff4a02 481 * @addtogroup dcp_driver_hash
AnnaBridge 161:aa5281ff4a02 482 * @{
AnnaBridge 161:aa5281ff4a02 483 */
AnnaBridge 161:aa5281ff4a02 484 /*!
AnnaBridge 161:aa5281ff4a02 485 * @brief Initialize HASH context
AnnaBridge 161:aa5281ff4a02 486 *
AnnaBridge 161:aa5281ff4a02 487 * This function initializes the HASH.
AnnaBridge 161:aa5281ff4a02 488 *
AnnaBridge 161:aa5281ff4a02 489 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 490 * @param handle Specifies the DCP channel used for hashing.
AnnaBridge 161:aa5281ff4a02 491 * @param[out] ctx Output hash context
AnnaBridge 161:aa5281ff4a02 492 * @param algo Underlaying algorithm to use for hash computation.
AnnaBridge 161:aa5281ff4a02 493 * @return Status of initialization
AnnaBridge 161:aa5281ff4a02 494 */
AnnaBridge 161:aa5281ff4a02 495 status_t DCP_HASH_Init(DCP_Type *base, dcp_handle_t *handle, dcp_hash_ctx_t *ctx, dcp_hash_algo_t algo);
AnnaBridge 161:aa5281ff4a02 496
AnnaBridge 161:aa5281ff4a02 497 /*!
AnnaBridge 161:aa5281ff4a02 498 * @brief Add data to current HASH
AnnaBridge 161:aa5281ff4a02 499 *
AnnaBridge 161:aa5281ff4a02 500 * Add data to current HASH. This can be called repeatedly with an arbitrary amount of data to be
AnnaBridge 161:aa5281ff4a02 501 * hashed. The functions blocks. If it returns kStatus_Success, the running hash
AnnaBridge 161:aa5281ff4a02 502 * has been updated (DCP has processed the input data), so the memory at @ref input pointer
AnnaBridge 161:aa5281ff4a02 503 * can be released back to system. The DCP context buffer is updated with the running hash
AnnaBridge 161:aa5281ff4a02 504 * and with all necessary information to support possible context switch.
AnnaBridge 161:aa5281ff4a02 505 *
AnnaBridge 161:aa5281ff4a02 506 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 507 * @param[in,out] ctx HASH context
AnnaBridge 161:aa5281ff4a02 508 * @param input Input data
AnnaBridge 161:aa5281ff4a02 509 * @param inputSize Size of input data in bytes
AnnaBridge 161:aa5281ff4a02 510 * @return Status of the hash update operation
AnnaBridge 161:aa5281ff4a02 511 */
AnnaBridge 161:aa5281ff4a02 512 status_t DCP_HASH_Update(DCP_Type *base, dcp_hash_ctx_t *ctx, const uint8_t *input, size_t inputSize);
AnnaBridge 161:aa5281ff4a02 513
AnnaBridge 161:aa5281ff4a02 514 /*!
AnnaBridge 161:aa5281ff4a02 515 * @brief Finalize hashing
AnnaBridge 161:aa5281ff4a02 516 *
AnnaBridge 161:aa5281ff4a02 517 * Outputs the final hash (computed by DCP_HASH_Update()) and erases the context.
AnnaBridge 161:aa5281ff4a02 518 *
AnnaBridge 161:aa5281ff4a02 519 * @param[in,out] ctx Input hash context
AnnaBridge 161:aa5281ff4a02 520 * @param[out] output Output hash data
AnnaBridge 161:aa5281ff4a02 521 * @param[in,out] outputSize Optional parameter (can be passed as NULL). On function entry, it specifies the size of
AnnaBridge 161:aa5281ff4a02 522 * output[] buffer. On function return, it stores the number of updated output bytes.
AnnaBridge 161:aa5281ff4a02 523 * @return Status of the hash finish operation
AnnaBridge 161:aa5281ff4a02 524 */
AnnaBridge 161:aa5281ff4a02 525 status_t DCP_HASH_Finish(DCP_Type *base, dcp_hash_ctx_t *ctx, uint8_t *output, size_t *outputSize);
AnnaBridge 161:aa5281ff4a02 526
AnnaBridge 161:aa5281ff4a02 527 /*!
AnnaBridge 161:aa5281ff4a02 528 * @brief Create HASH on given data
AnnaBridge 161:aa5281ff4a02 529 *
AnnaBridge 161:aa5281ff4a02 530 * Perform the full SHA or CRC32 in one function call. The function is blocking.
AnnaBridge 161:aa5281ff4a02 531 *
AnnaBridge 161:aa5281ff4a02 532 * @param base DCP peripheral base address
AnnaBridge 161:aa5281ff4a02 533 * @param handle Handle used for the request.
AnnaBridge 161:aa5281ff4a02 534 * @param algo Underlaying algorithm to use for hash computation.
AnnaBridge 161:aa5281ff4a02 535 * @param input Input data
AnnaBridge 161:aa5281ff4a02 536 * @param inputSize Size of input data in bytes
AnnaBridge 161:aa5281ff4a02 537 * @param[out] output Output hash data
AnnaBridge 161:aa5281ff4a02 538 * @param[out] outputSize Output parameter storing the size of the output hash in bytes
AnnaBridge 161:aa5281ff4a02 539 * @return Status of the one call hash operation.
AnnaBridge 161:aa5281ff4a02 540 */
AnnaBridge 161:aa5281ff4a02 541 status_t DCP_HASH(DCP_Type *base,
AnnaBridge 161:aa5281ff4a02 542 dcp_handle_t *handle,
AnnaBridge 161:aa5281ff4a02 543 dcp_hash_algo_t algo,
AnnaBridge 161:aa5281ff4a02 544 const uint8_t *input,
AnnaBridge 161:aa5281ff4a02 545 size_t inputSize,
AnnaBridge 161:aa5281ff4a02 546 uint8_t *output,
AnnaBridge 161:aa5281ff4a02 547 size_t *outputSize);
AnnaBridge 161:aa5281ff4a02 548
AnnaBridge 161:aa5281ff4a02 549 /*!
AnnaBridge 161:aa5281ff4a02 550 *@}
AnnaBridge 161:aa5281ff4a02 551 */ /* end of dcp_driver_hash */
AnnaBridge 161:aa5281ff4a02 552
AnnaBridge 161:aa5281ff4a02 553 #if defined(__cplusplus)
AnnaBridge 161:aa5281ff4a02 554 }
AnnaBridge 161:aa5281ff4a02 555 #endif
AnnaBridge 161:aa5281ff4a02 556
AnnaBridge 161:aa5281ff4a02 557 #endif /* _FSL_DCP_H_ */