blob: dde7794f0825f245f0f89f340f5daf59e348f68b [file] [log] [blame]
/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
* 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 The Linux Foundation 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 "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* 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.
*/
#ifndef __CRYPTO4_ENG_H__
#define __CRYPYO4_ENG_H__
#define CRYPTO_ENG_REG(base, offset) ((base) + offset)
#define IS_ALIGNED(ptr) (!(((unsigned int)ptr) & 0x03))
/* CRYPTO4 registers */
#define CRYPTO_DATA_IN 0x0008
#define CRYPTO_DATA_OUT 0x0010
#define CRYPTO_STATUS 0x0100
#define CRYPTO_CONFIG 0x0500
#define CRYPTO_DEBUG 0x0508
#define CRYPTO_ENCR_SEG_CFG 0x0300
#define CRYPTO_SEG_SIZE 0x0200
#define CRYPTO_GOPROC 0x0204
#define CRYPTO_ENGINES_AVAIL 0x0104
#define CRYPTO_AUTH_SEG_CFG 0x0400
#define CRYPTO_AUTH_SEG_SIZE 0x0404
#define CRYPTO_AUTH_SEG_START 0x0408
#define CRYPTO_AUTH_BYTECNTn(n) (0x04A0 + 4*(n))
#define CRYPTO_AUTH_IVn(n) (0x0450 + 4*(n))
/* Register bit definitions */
#define SW_ERR BIT(0)
#define OPERATION_DONE BIT(1)
#define DIN_RDY BIT(2)
#define DIN_SIZE_AVAIL 0x00380000
/* CRYPTO_CONFIG register bit definitions */
#define AUTO_SHUTDOWN_EN BIT(2)
#define MASK_ERR_INTR BIT(3)
#define MASK_OP_DONE_INTR BIT(4)
#define MASK_DIN_INTR BIT(5)
#define MASK_DOUT_INTR BIT(6)
#define HIGH_SPD_IN_EN_N BIT(13)
#define HIGH_SPD_OUT_EN_N BIT(14)
/* CRYPTO_AUTH_SEG_CFG register bit definitions */
#define SEG_CFG_AUTH_ALG_SHA (1<<0)
#define SEG_CFG_AUTH_SIZE_SHA1 (0<<9)
#define SEG_CFG_AUTH_SIZE_SHA256 (1<<9)
#define SEG_CFG_LAST (1<<14)
#define GOPROC_GO 1
#endif