xref: /netbsd-src/sys/dev/marvell/mvcesareg.h (revision 602777964f9e67a93d5e7fde2c72a402a234f315)
1*60277796Smsaitoh /*	$NetBSD: mvcesareg.h,v 1.3 2021/12/05 02:41:44 msaitoh Exp $	*/
2068a6eb9Skiyohara /*
3068a6eb9Skiyohara  * Copyright (c) 2008 KIYOHARA Takashi
4068a6eb9Skiyohara  * All rights reserved.
5068a6eb9Skiyohara  *
6068a6eb9Skiyohara  * Redistribution and use in source and binary forms, with or without
7068a6eb9Skiyohara  * modification, are permitted provided that the following conditions
8068a6eb9Skiyohara  * are met:
9068a6eb9Skiyohara  * 1. Redistributions of source code must retain the above copyright
10068a6eb9Skiyohara  *    notice, this list of conditions and the following disclaimer.
11068a6eb9Skiyohara  * 2. Redistributions in binary form must reproduce the above copyright
12068a6eb9Skiyohara  *    notice, this list of conditions and the following disclaimer in the
13068a6eb9Skiyohara  *    documentation and/or other materials provided with the distribution.
14068a6eb9Skiyohara  *
15068a6eb9Skiyohara  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16068a6eb9Skiyohara  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17068a6eb9Skiyohara  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18068a6eb9Skiyohara  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19068a6eb9Skiyohara  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20068a6eb9Skiyohara  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21068a6eb9Skiyohara  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22068a6eb9Skiyohara  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23068a6eb9Skiyohara  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24068a6eb9Skiyohara  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25068a6eb9Skiyohara  * POSSIBILITY OF SUCH DAMAGE.
26068a6eb9Skiyohara  */
27068a6eb9Skiyohara #ifndef _MVCESAREG_H_
28068a6eb9Skiyohara #define _MVCESAREG_H_
29068a6eb9Skiyohara 
3019eccf3fSkiyohara #define MVCESA_SIZE	0x1000
31068a6eb9Skiyohara 
32068a6eb9Skiyohara 
33068a6eb9Skiyohara /*
34068a6eb9Skiyohara  * Cryptographic Engine and Security Accelerator Registers
35068a6eb9Skiyohara  */
36068a6eb9Skiyohara /* DES Engine Registers */
3719eccf3fSkiyohara #define MVCESA_DESE_DOL		0xd78	/* Data Out Low */
3819eccf3fSkiyohara #define MVCESA_DESE_DOH		0xd7c	/* Data Out High */
3919eccf3fSkiyohara #define MVCESA_DESE_DBL		0xd70	/* Data Buffer Low */
4019eccf3fSkiyohara #define MVCESA_DESE_DBH		0xd74	/* Data Buffer High */
4119eccf3fSkiyohara #define MVCESA_DESE_IVL		0xd40	/* Initial Value Low */
4219eccf3fSkiyohara #define MVCESA_DESE_IVH		0xd44	/* Initial Value High */
4319eccf3fSkiyohara #define MVCESA_DESE_K0L		0xd48	/* Key0 Low */
4419eccf3fSkiyohara #define MVCESA_DESE_K0H		0xd4c	/* Key0 High */
4519eccf3fSkiyohara #define MVCESA_DESE_K1L		0xd50	/* Key1 Low */
4619eccf3fSkiyohara #define MVCESA_DESE_K1H		0xd54	/* Key1 High */
4719eccf3fSkiyohara #define MVCESA_DESE_K2L		0xd60	/* Key2 Low */
4819eccf3fSkiyohara #define MVCESA_DESE_K2H		0xd64	/* Key2 High */
4919eccf3fSkiyohara #define MVCESA_DESE_C		0xd58	/* Command */
50068a6eb9Skiyohara #define MVCESA_DESE_C_DIRECTION_ENC	(0 << 0)
51068a6eb9Skiyohara #define MVCESA_DESE_C_DIRECTION_DEC	(1 << 0)
52068a6eb9Skiyohara #define MVCESA_DESE_C_ALGORITHM_DES	(0 << 1)
53068a6eb9Skiyohara #define MVCESA_DESE_C_ALGORITHM_3DES	(1 << 1)
54068a6eb9Skiyohara #define MVCESA_DESE_C_3DESMODE_EEE	(0 << 2)
55068a6eb9Skiyohara #define MVCESA_DESE_C_3DESMODE_EDE	(1 << 2)
56068a6eb9Skiyohara #define MVCESA_DESE_C_DESMODE_ECB	(0 << 3)
57068a6eb9Skiyohara #define MVCESA_DESE_C_DESMODE_CBC	(1 << 3)
58068a6eb9Skiyohara #define MVCESA_DESE_C_DATABYTESWAP	(1 << 4)
59068a6eb9Skiyohara #define MVCESA_DESE_C_IVBYTESWAP	(1 << 6)
60068a6eb9Skiyohara #define MVCESA_DESE_C_OUTBYTESWAP	(1 << 8)
61068a6eb9Skiyohara #define MVCESA_DESE_C_READALLOW		(1 << 29)
62068a6eb9Skiyohara #define MVCESA_DESE_C_ALLTERMINATION	(1 << 30)
63068a6eb9Skiyohara #define MVCESA_DESE_C_TERMINATION	(1 << 31)
64068a6eb9Skiyohara 
65068a6eb9Skiyohara /* SHA-1 and MD5 Interface Registers */
6619eccf3fSkiyohara #define MVCESA_SHA1MD5I_DI	0xd38	/* Data In */
6719eccf3fSkiyohara #define MVCESA_SHA1MD5I_BCL	0xd20	/* Bit Count Low */
6819eccf3fSkiyohara #define MVCESA_SHA1MD5I_BCH	0xd24	/* Bit Count High */
6919eccf3fSkiyohara #define MVCESA_SHA1MD5I_IVDA	0xd00	/* Initial Value/Digest A */
7019eccf3fSkiyohara #define MVCESA_SHA1MD5I_IVDB	0xd04	/* Initial Value/Digest B */
7119eccf3fSkiyohara #define MVCESA_SHA1MD5I_IVDC	0xd08	/* Initial Value/Digest C */
7219eccf3fSkiyohara #define MVCESA_SHA1MD5I_IVDD	0xd0c	/* Initial Value/Digest D */
7319eccf3fSkiyohara #define MVCESA_SHA1MD5I_IVDE	0xd10	/* Initial Value/Digest E */
7419eccf3fSkiyohara #define MVCESA_SHA1MD5I_AC	0xd18	/* Authentication Command */
75068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_ALGORITHM_MD5	(0 << 0)
76068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_ALGORITHM_SHA1	(1 << 0)
77068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_MODE_USEIV		(0 << 1)
78068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_MODE_CONTINUE	(1 << 1)
79068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_DATABYTESWAP		(1 << 2)
80068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_IVBYTESWAP		(1 << 4)
81068a6eb9Skiyohara #define MVCESA_SHA1MD5I_AC_TERMINATION		(1 << 31)
82068a6eb9Skiyohara 
83*60277796Smsaitoh /* AES Encryption/Decryption Interface Registers */
8419eccf3fSkiyohara #define MVCESA_AES_ENCRYPTION	0xd80
8519eccf3fSkiyohara #define MVCESA_AES_DECRYPTION	0xdc0
86068a6eb9Skiyohara #define MVCESA_AES_DIOC_OFF	  0x20	/* Data In/Out Column */
87068a6eb9Skiyohara #define MVCESA_AES_DIOC_MAX	3
88068a6eb9Skiyohara #define MVCESA_AES_KC_OFF	  0x00	/* Key Column */
89068a6eb9Skiyohara #define MVCESA_AES_KC_MAX	7
90068a6eb9Skiyohara #define MVCESA_AES_C		  0x30	/* Command */
91068a6eb9Skiyohara #define MVCESA_AES_C_AESKEYMODE_128		(0 << 0)
92068a6eb9Skiyohara #define MVCESA_AES_C_AESKEYMODE_192		(1 << 0)
93068a6eb9Skiyohara #define MVCESA_AES_C_AESKEYMODE_256		(2 << 0)
94068a6eb9Skiyohara #define MVCESA_AES_C_AESDECMAKEKEY		(1 << 2)
95068a6eb9Skiyohara #define MVCESA_AES_C_DATABYTESWAP		(1 << 4)
96068a6eb9Skiyohara #define MVCESA_AES_C_OUTBYTESWAP		(1 << 8)
97068a6eb9Skiyohara #define MVCESA_AES_C_TERMINATION		(1 << 31)
98068a6eb9Skiyohara 
99068a6eb9Skiyohara #define MVCESA_AES_DIOC(c) \
100068a6eb9Skiyohara 	(MVCESA_AES_DIOC_OFF + ((c) - MVCESA_AES_DIOC_MAX) * 4)
101068a6eb9Skiyohara #define MVCESA_AES_KC(c) \
102068a6eb9Skiyohara 	(MVCESA_AES_KC_OFF + ((c) - MVCESA_AES_KC_MAX) * 4)
103068a6eb9Skiyohara 
104068a6eb9Skiyohara 
105068a6eb9Skiyohara /* Security Accelerator Registers */
10619eccf3fSkiyohara #define MVCESA_SA_C		0xe00	/* Command */
10719eccf3fSkiyohara #define MVCESA_SA_DPS0		0xe04	/* Descriptor Pointer Session 0 */
10819eccf3fSkiyohara #define MVCESA_SA_DPS1		0xe14	/* Descriptor Pointer Session 1 */
10919eccf3fSkiyohara #define MVCESA_SA_CFG		0xe08	/* Configuration */
11019eccf3fSkiyohara #define MVCESA_SA_S		0xe0c	/* Status */
111068a6eb9Skiyohara 
112068a6eb9Skiyohara /* Interrupt Cause Registers */
11319eccf3fSkiyohara #define MVCESA_IC		0xe20	/* Interrupt Cause */
11419eccf3fSkiyohara #define MVCESA_IM		0xe24	/* Interrupt Mask */
115068a6eb9Skiyohara #define MVCESA_I_ZINT0			(1 << 0) /* auth termination */
116068a6eb9Skiyohara #define MVCESA_I_ZINT1			(1 << 1) /* DES */
117068a6eb9Skiyohara #define MVCESA_I_ZINT2			(1 << 2) /* AES encryption */
118068a6eb9Skiyohara #define MVCESA_I_ZINT3			(1 << 3) /* AES decryption */
119068a6eb9Skiyohara #define MVCESA_I_ZINT4			(1 << 4) /* enc termination */
120068a6eb9Skiyohara #define MVCESA_I_ACCINT0		(1 << 5) /* Security accelerator 0 */
121068a6eb9Skiyohara #define MVCESA_I_ACCINT1		(1 << 6) /* Security accelerator 1 */
122068a6eb9Skiyohara #define MVCESA_I_ACCANDIDMAINT0		(1 << 7) /* Acceleration and IDMA 0 */
123068a6eb9Skiyohara #define MVCESA_I_ACCANDIDMAINT1		(1 << 8) /* Acceleration and IDMA 1 */
124068a6eb9Skiyohara 
125068a6eb9Skiyohara #endif	/* _MVCESAREG_H_ */
126