diff options
Diffstat (limited to 'target/linux/generic/files/crypto/ocf/kirkwood/cesa/mvCesa.h')
-rw-r--r-- | target/linux/generic/files/crypto/ocf/kirkwood/cesa/mvCesa.h | 412 |
1 files changed, 0 insertions, 412 deletions
diff --git a/target/linux/generic/files/crypto/ocf/kirkwood/cesa/mvCesa.h b/target/linux/generic/files/crypto/ocf/kirkwood/cesa/mvCesa.h deleted file mode 100644 index 115274f..0000000 --- a/target/linux/generic/files/crypto/ocf/kirkwood/cesa/mvCesa.h +++ /dev/null @@ -1,412 +0,0 @@ -/******************************************************************************* -Copyright (C) Marvell International Ltd. and its affiliates - -This software file (the "File") is owned and distributed by Marvell -International Ltd. and/or its affiliates ("Marvell") under the following -alternative licensing terms. Once you have made an election to distribute the -File under one of the following license alternatives, please (i) delete this -introductory statement regarding license alternatives, (ii) delete the two -license alternatives that you have not elected to use and (iii) preserve the -Marvell copyright notice above. - -******************************************************************************** -Marvell Commercial License Option - -If you received this File from Marvell and you have entered into a commercial -license agreement (a "Commercial License") with Marvell, the File is licensed -to you under the terms of the applicable Commercial License. - -******************************************************************************** -Marvell GPL License Option - -If you received this File from Marvell, you may opt to use, redistribute and/or -modify this File in accordance with the terms and conditions of the General -Public License Version 2, June 1991 (the "GPL License"), a copy of which is -available along with the File in the license.txt file or by writing to the Free -Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or -on the worldwide web at http://www.gnu.org/licenses/gpl.txt. - -THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED -WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY -DISCLAIMED. The GPL License provides additional details about this warranty -disclaimer. -******************************************************************************** -Marvell BSD License Option - -If you received this File from Marvell, you may opt to use, redistribute and/or -modify this File under the following licensing terms. -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 Marvell 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. - -*******************************************************************************/ - -/******************************************************************************* -* mvCesa.h - Header File for Cryptographic Engines and Security Accelerator -* -* DESCRIPTION: -* This header file contains macros typedefs and function declaration for -* the Marvell Cryptographic Engines and Security Accelerator. -* -*******************************************************************************/ - -#ifndef __mvCesa_h__ -#define __mvCesa_h__ - -#include "mvOs.h" -#include "mvCommon.h" -#include "mvDebug.h" - -#include "ctrlEnv/mvCtrlEnvSpec.h" - -#include "cesa/mvMD5.h" -#include "cesa/mvSHA1.h" - -#include "cesa/mvCesa.h" -#include "cesa/AES/mvAes.h" -#include "mvSysHwConfig.h" - -#ifdef MV_INCLUDE_IDMA -#include "idma/mvIdma.h" -#include "idma/mvIdmaRegs.h" -#else -/* Redefine MV_DMA_DESC structure */ -typedef struct _mvDmaDesc -{ - MV_U32 byteCnt; /* The total number of bytes to transfer */ - MV_U32 phySrcAdd; /* The physical source address */ - MV_U32 phyDestAdd; /* The physical destination address */ - MV_U32 phyNextDescPtr; /* If we are using chain mode DMA transfer, */ - /* then this pointer should point to the */ - /* physical address of the next descriptor, */ - /* otherwise it should be NULL. */ -}MV_DMA_DESC; -#endif /* MV_INCLUDE_IDMA */ - -#include "cesa/mvCesaRegs.h" - -#define MV_CESA_AUTH_BLOCK_SIZE 64 /* bytes */ - -#define MV_CESA_MD5_DIGEST_SIZE 16 /* bytes */ -#define MV_CESA_SHA1_DIGEST_SIZE 20 /* bytes */ - -#define MV_CESA_MAX_DIGEST_SIZE MV_CESA_SHA1_DIGEST_SIZE - -#define MV_CESA_DES_KEY_LENGTH 8 /* bytes = 64 bits */ -#define MV_CESA_3DES_KEY_LENGTH 24 /* bytes = 192 bits */ -#define MV_CESA_AES_128_KEY_LENGTH 16 /* bytes = 128 bits */ -#define MV_CESA_AES_192_KEY_LENGTH 24 /* bytes = 192 bits */ -#define MV_CESA_AES_256_KEY_LENGTH 32 /* bytes = 256 bits */ - -#define MV_CESA_MAX_CRYPTO_KEY_LENGTH MV_CESA_AES_256_KEY_LENGTH - -#define MV_CESA_DES_BLOCK_SIZE 8 /* bytes = 64 bits */ -#define MV_CESA_3DES_BLOCK_SIZE 8 /* bytes = 64 bits */ - -#define MV_CESA_AES_BLOCK_SIZE 16 /* bytes = 128 bits */ - -#define MV_CESA_MAX_IV_LENGTH MV_CESA_AES_BLOCK_SIZE - -#define MV_CESA_MAX_MAC_KEY_LENGTH 64 /* bytes */ - -typedef struct -{ - MV_U8 cryptoKey[MV_CESA_MAX_CRYPTO_KEY_LENGTH]; - MV_U8 macKey[MV_CESA_MAX_MAC_KEY_LENGTH]; - MV_CESA_OPERATION operation; - MV_CESA_DIRECTION direction; - MV_CESA_CRYPTO_ALG cryptoAlgorithm; - MV_CESA_CRYPTO_MODE cryptoMode; - MV_U8 cryptoKeyLength; - MV_CESA_MAC_MODE macMode; - MV_U8 macKeyLength; - MV_U8 digestSize; - -} MV_CESA_OPEN_SESSION; - -typedef struct -{ - MV_BUF_INFO *pFrags; - MV_U16 numFrags; - MV_U16 mbufSize; - -} MV_CESA_MBUF; - -typedef struct -{ - void* pReqPrv; /* instead of reqId */ - MV_U32 retCode; - MV_16 sessionId; - -} MV_CESA_RESULT; - -typedef void (*MV_CESA_CALLBACK) (MV_CESA_RESULT* pResult); - - -typedef struct -{ - void* pReqPrv; /* instead of reqId */ - MV_CESA_MBUF* pSrc; - MV_CESA_MBUF* pDst; - MV_CESA_CALLBACK* pFuncCB; - MV_16 sessionId; - MV_U16 ivFromUser; - MV_U16 ivOffset; - MV_U16 cryptoOffset; - MV_U16 cryptoLength; - MV_U16 digestOffset; - MV_U16 macOffset; - MV_U16 macLength; - MV_BOOL skipFlush; -} MV_CESA_COMMAND; - - - -MV_STATUS mvCesaHalInit (int numOfSession, int queueDepth, char* pSramBase, MV_U32 cryptEngBase, void *osHandle); -MV_STATUS mvCesaFinish (void); -MV_STATUS mvCesaSessionOpen(MV_CESA_OPEN_SESSION *pSession, short* pSid); -MV_STATUS mvCesaSessionClose(short sid); -MV_STATUS mvCesaCryptoIvSet(MV_U8* pIV, int ivSize); - -MV_STATUS mvCesaAction (MV_CESA_COMMAND* pCmd); - -MV_U32 mvCesaInProcessGet(void); -MV_STATUS mvCesaReadyDispatch(void); -MV_STATUS mvCesaReadyGet(MV_CESA_RESULT* pResult); -MV_BOOL mvCesaIsReady(void); - -int mvCesaMbufOffset(MV_CESA_MBUF* pMbuf, int offset, int* pBufOffset); -MV_STATUS mvCesaCopyFromMbuf(MV_U8* pDst, MV_CESA_MBUF* pSrcMbuf, - int offset, int size); -MV_STATUS mvCesaCopyToMbuf(MV_U8* pSrc, MV_CESA_MBUF* pDstMbuf, - int offset, int size); -MV_STATUS mvCesaMbufCopy(MV_CESA_MBUF* pMbufDst, int dstMbufOffset, - MV_CESA_MBUF* pMbufSrc, int srcMbufOffset, int size); - -/********** Debug functions ********/ - -void mvCesaDebugMbuf(const char* str, MV_CESA_MBUF *pMbuf, int offset, int size); -void mvCesaDebugSA(short sid, int mode); -void mvCesaDebugStats(void); -void mvCesaDebugStatsClear(void); -void mvCesaDebugRegs(void); -void mvCesaDebugStatus(void); -void mvCesaDebugQueue(int mode); -void mvCesaDebugSram(int mode); -void mvCesaDebugSAD(int mode); - - -/******** CESA Private definitions ********/ -#if (MV_CESA_VERSION >= 2) -#if (MV_CACHE_COHERENCY == MV_CACHE_COHER_SW) -#define MV_CESA_TDMA_CTRL_VALUE MV_CESA_TDMA_DST_BURST_MASK(MV_CESA_TDMA_BURST_128B) \ - | MV_CESA_TDMA_SRC_BURST_MASK(MV_CESA_TDMA_BURST_128B) \ - | MV_CESA_TDMA_OUTSTAND_READ_EN_MASK \ - | MV_CESA_TDMA_NO_BYTE_SWAP_MASK \ - | MV_CESA_TDMA_ENABLE_MASK -#else -#define MV_CESA_TDMA_CTRL_VALUE MV_CESA_TDMA_DST_BURST_MASK(MV_CESA_TDMA_BURST_32B) \ - | MV_CESA_TDMA_SRC_BURST_MASK(MV_CESA_TDMA_BURST_128B) \ - /*| MV_CESA_TDMA_OUTSTAND_READ_EN_MASK */\ - | MV_CESA_TDMA_ENABLE_MASK - -#endif -#else -#define MV_CESA_IDMA_CTRL_LOW_VALUE ICCLR_DST_BURST_LIM_128BYTE \ - | ICCLR_SRC_BURST_LIM_128BYTE \ - | ICCLR_INT_MODE_MASK \ - | ICCLR_BLOCK_MODE \ - | ICCLR_CHAN_ENABLE \ - | ICCLR_DESC_MODE_16M -#endif /* MV_CESA_VERSION >= 2 */ - -#define MV_CESA_MAX_PKT_SIZE (64 * 1024) -#define MV_CESA_MAX_MBUF_FRAGS 20 - -#define MV_CESA_MAX_REQ_FRAGS ( (MV_CESA_MAX_PKT_SIZE / MV_CESA_MAX_BUF_SIZE) + 1) - -#define MV_CESA_MAX_DMA_DESC (MV_CESA_MAX_MBUF_FRAGS*2 + 5) - -#define MAX_CESA_CHAIN_LENGTH 20 - -typedef enum -{ - MV_CESA_IDLE = 0, - MV_CESA_PENDING, - MV_CESA_PROCESS, - MV_CESA_READY, -#if (MV_CESA_VERSION >= 3) - MV_CESA_CHAIN, -#endif -} MV_CESA_STATE; - - -/* Session database */ - -/* Map of Key materials of the session in SRAM. - * Each field must be 8 byte aligned - * Total size: 32 + 24 + 24 = 80 bytes - */ -typedef struct -{ - MV_U8 cryptoKey[MV_CESA_MAX_CRYPTO_KEY_LENGTH]; - MV_U8 macInnerIV[MV_CESA_MAX_DIGEST_SIZE]; - MV_U8 reservedInner[4]; - MV_U8 macOuterIV[MV_CESA_MAX_DIGEST_SIZE]; - MV_U8 reservedOuter[4]; - -} MV_CESA_SRAM_SA; - -typedef struct -{ - MV_CESA_SRAM_SA* pSramSA; - MV_U32 config; - MV_U8 cryptoKeyLength; - MV_U8 cryptoIvSize; - MV_U8 cryptoBlockSize; - MV_U8 digestSize; - MV_U8 macKeyLength; - MV_U8 valid; - MV_U8 ctrMode; - MV_U32 count; - -} MV_CESA_SA; - -/* DMA list management */ -typedef struct -{ - MV_DMA_DESC* pDmaFirst; - MV_DMA_DESC* pDmaLast; - -} MV_CESA_DMA; - - -typedef struct -{ - MV_U8 numFrag; - MV_U8 nextFrag; - int bufOffset; - int cryptoSize; - int macSize; - int newDigestOffset; - MV_U8 orgDigest[MV_CESA_MAX_DIGEST_SIZE]; - -} MV_CESA_FRAGS; - -/* Request queue */ -typedef struct -{ - MV_U8 state; - MV_U8 fragMode; - MV_U8 fixOffset; - MV_CESA_COMMAND* pCmd; - MV_CESA_COMMAND* pOrgCmd; - MV_BUF_INFO dmaDescBuf; - MV_CESA_DMA dma[MV_CESA_MAX_REQ_FRAGS]; - MV_BUF_INFO cesaDescBuf; - MV_CESA_DESC* pCesaDesc; - MV_CESA_FRAGS frags; - - -} MV_CESA_REQ; - - -/* SRAM map */ -/* Total SRAM size calculation */ -/* SRAM size = - * MV_CESA_MAX_BUF_SIZE + - * sizeof(MV_CESA_DESC) + - * MV_CESA_MAX_IV_LENGTH + - * MV_CESA_MAX_IV_LENGTH + - * MV_CESA_MAX_DIGEST_SIZE + - * sizeof(MV_CESA_SRAM_SA) - * = 1600 + 32 + 16 + 16 + 24 + 80 + 280 (reserved) = 2048 bytes - * = 3200 + 32 + 16 + 16 + 24 + 80 + 728 (reserved) = 4096 bytes - */ -typedef struct -{ - MV_U8 buf[MV_CESA_MAX_BUF_SIZE]; - MV_CESA_DESC desc; - MV_U8 cryptoIV[MV_CESA_MAX_IV_LENGTH]; - MV_U8 tempCryptoIV[MV_CESA_MAX_IV_LENGTH]; - MV_U8 tempDigest[MV_CESA_MAX_DIGEST_SIZE+4]; - MV_CESA_SRAM_SA sramSA; - -} MV_CESA_SRAM_MAP; - - -typedef struct -{ - MV_U32 openedCount; - MV_U32 closedCount; - MV_U32 fragCount; - MV_U32 reqCount; - MV_U32 maxReqCount; - MV_U32 procCount; - MV_U32 readyCount; - MV_U32 notReadyCount; - MV_U32 startCount; -#if (MV_CESA_VERSION >= 3) - MV_U32 maxChainUsage; -#endif - -} MV_CESA_STATS; - - -/* External variables */ - -extern MV_CESA_STATS cesaStats; -extern MV_CESA_FRAGS cesaFrags; - -extern MV_BUF_INFO cesaSramSaBuf; - -extern MV_CESA_SA* pCesaSAD; -extern MV_U16 cesaMaxSA; - -extern MV_CESA_REQ* pCesaReqFirst; -extern MV_CESA_REQ* pCesaReqLast; -extern MV_CESA_REQ* pCesaReqEmpty; -extern MV_CESA_REQ* pCesaReqProcess; -extern int cesaQueueDepth; -extern int cesaReqResources; -#if (MV_CESA_VERSION>= 3) -extern MV_U32 cesaChainLength; -#endif - -extern MV_CESA_SRAM_MAP* cesaSramVirtPtr; -extern MV_U32 cesaSramPhysAddr; - -static INLINE MV_ULONG mvCesaVirtToPhys(MV_BUF_INFO* pBufInfo, void* pVirt) -{ - return (pBufInfo->bufPhysAddr + ((MV_U8*)pVirt - pBufInfo->bufVirtPtr)); -} - -/* Additional DEBUG functions */ -void mvCesaDebugSramSA(MV_CESA_SRAM_SA* pSramSA, int mode); -void mvCesaDebugCmd(MV_CESA_COMMAND* pCmd, int mode); -void mvCesaDebugDescriptor(MV_CESA_DESC* pDesc); - - - -#endif /* __mvCesa_h__ */ |