rk_v1crypto.h revision 1.1
11.1Sriastrad/* $NetBSD: rk_v1crypto.h,v 1.1 2020/05/17 19:57:25 riastradh Exp $ */ 21.1Sriastrad 31.1Sriastrad/*- 41.1Sriastrad * Copyright (c) 2020 The NetBSD Foundation, Inc. 51.1Sriastrad * All rights reserved. 61.1Sriastrad * 71.1Sriastrad * This code is derived from software contributed to The NetBSD Foundation 81.1Sriastrad * by Taylor R. Campbell. 91.1Sriastrad * 101.1Sriastrad * Redistribution and use in source and binary forms, with or without 111.1Sriastrad * modification, are permitted provided that the following conditions 121.1Sriastrad * are met: 131.1Sriastrad * 1. Redistributions of source code must retain the above copyright 141.1Sriastrad * notice, this list of conditions and the following disclaimer. 151.1Sriastrad * 2. Redistributions in binary form must reproduce the above copyright 161.1Sriastrad * notice, this list of conditions and the following disclaimer in the 171.1Sriastrad * documentation and/or other materials provided with the distribution. 181.1Sriastrad * 191.1Sriastrad * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 201.1Sriastrad * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 211.1Sriastrad * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 221.1Sriastrad * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 231.1Sriastrad * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 241.1Sriastrad * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 251.1Sriastrad * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 261.1Sriastrad * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 271.1Sriastrad * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 281.1Sriastrad * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 291.1Sriastrad * POSSIBILITY OF SUCH DAMAGE. 301.1Sriastrad */ 311.1Sriastrad 321.1Sriastrad#ifndef _ARM_ROCKCHIP_RK_V1CRYPTO_H 331.1Sriastrad#define _ARM_ROCKCHIP_RK_V1CRYPTO_H 341.1Sriastrad 351.1Sriastrad#define RK_V1CRYPTO_INTSTS 0x0000 /* Interrupt Status */ 361.1Sriastrad#define RK_V1CRYPTO_INTSTS_PKA_DONE __BIT(5) 371.1Sriastrad#define RK_V1CRYPTO_INTSTS_HASH_DONE __BIT(4) 381.1Sriastrad#define RK_V1CRYPTO_INTSTS_HRDMA_ERR __BIT(3) 391.1Sriastrad#define RK_V1CRYPTO_INTSTS_HRDMA_DONE __BIT(2) 401.1Sriastrad#define RK_V1CRYPTO_INTSTS_BCDMA_ERR __BIT(1) 411.1Sriastrad#define RK_V1CRYPTO_INTSTS_BCDMA_DONE __BIT(0) 421.1Sriastrad 431.1Sriastrad#define RK_V1CRYPTO_INTENA 0x0004 /* Interrupt Enable */ 441.1Sriastrad#define RK_V1CRYPTO_INTENA_PKA_DONE __BIT(5) 451.1Sriastrad#define RK_V1CRYPTO_INTENA_HASH_DONE __BIT(4) 461.1Sriastrad#define RK_V1CRYPTO_INTENA_HRDMA_ERR __BIT(3) 471.1Sriastrad#define RK_V1CRYPTO_INTENA_HRDMA_DONE __BIT(2) 481.1Sriastrad#define RK_V1CRYPTO_INTENA_BCDMA_ERR __BIT(1) 491.1Sriastrad#define RK_V1CRYPTO_INTENA_BCDMA_DONE __BIT(0) 501.1Sriastrad 511.1Sriastrad#define RK_V1CRYPTO_CTRL 0x0008 /* Control */ 521.1Sriastrad#define RK_V1CRYPTO_CTRL_MASK __BITS(31,16) 531.1Sriastrad#define RK_V1CRYPTO_CTRL_TRNG_FLUSH __BIT(9) 541.1Sriastrad#define RK_V1CRYPTO_CTRL_TRNG_START __BIT(8) 551.1Sriastrad#define RK_V1CRYPTO_CTRL_PKA_FLUSH __BIT(7) 561.1Sriastrad#define RK_V1CRYPTO_CTRL_HASH_FLUSH __BIT(6) 571.1Sriastrad#define RK_V1CRYPTO_CTRL_BLOCK_FLUSH __BIT(5) 581.1Sriastrad#define RK_V1CRYPTO_CTRL_PKA_START __BIT(4) 591.1Sriastrad#define RK_V1CRYPTO_CTRL_HASH_START __BIT(3) 601.1Sriastrad#define RK_V1CRYPTO_CTRL_BLOCK_START __BIT(2) 611.1Sriastrad#define RK_V1CRYPTO_CTRL_TDES_START __BIT(1) 621.1Sriastrad#define RK_V1CRYPTO_CTRL_AES_START __BIT(0) 631.1Sriastrad 641.1Sriastrad#define RK_V1CRYPTO_CONF 0x000c /* ? */ 651.1Sriastrad#define RK_V1CRYPTO_CONF_HR_ADDR_MODE __BIT(8) 661.1Sriastrad#define RK_V1CRYPTO_CONF_BT_ADDR_MODE __BIT(7) 671.1Sriastrad#define RK_V1CRYPTO_CONF_BR_ADDR_MODE __BIT(6) 681.1Sriastrad#define RK_V1CRYPTO_CONF_MODE_FIX 1 691.1Sriastrad#define RK_V1CRYPTO_CONF_MODE_INCR 0 701.1Sriastrad#define RK_V1CRYPTO_CONF_BYTESWAP_HRFIFO __BIT(5) 711.1Sriastrad#define RK_V1CRYPTO_CONF_BYTESWAP_BTFIFO __BIT(4) 721.1Sriastrad#define RK_V1CRYPTO_CONF_BYTESWAP_BRFIFO __BIT(3) 731.1Sriastrad#define RK_V1CRYPTO_CONF_DESSEL __BIT(2) 741.1Sriastrad#define RK_V1CRYPTO_CONF_DESSEL_AES 0 751.1Sriastrad#define RK_V1CRYPTO_CONF_DESSEL_DES 1 /* 3DES? */ 761.1Sriastrad#define RK_V1CRYPTO_CONF_HASHINSEL __BITS(1,0) 771.1Sriastrad#define RK_V1CRYPTO_CONF_HASHINSEL_INDEP 0 781.1Sriastrad#define RK_V1CRYPTO_CONF_HASHINSEL_BLKIN 1 791.1Sriastrad#define RK_V1CRYPTO_CONF_HASHINSEL_BLKOUT 2 801.1Sriastrad 811.1Sriastrad#define RK_V1CRYPTO_BRDMAS 0x0010 /* Block Rx DMA Start */ 821.1Sriastrad#define RK_V1CRYPTO_BTDMAS 0x0014 /* Block Tx DMA Start */ 831.1Sriastrad#define RK_V1CRYPTO_BRDMAL 0x0018 /* Block Rx DMA Length */ 841.1Sriastrad#define RK_V1CRYPTO_BTDMAL 0x0020 /* Block Tx DMA Length */ 851.1Sriastrad#define RK_V1CRYPTO_HRDMAS 0x001c /* Hash Rx DMA Start */ 861.1Sriastrad#define RK_V1CRYPTO_HRDMAL 0x0020 /* Hash Rx DMA Length */ 871.1Sriastrad 881.1Sriastrad#define RK_V1CRYPTO_AES_CTRL 0x0080 /* AES Control */ 891.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_BYTESWAP_CNT __BIT(11) 901.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_BYTESWAP_KEY __BIT(10) 911.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_BYTESWAP_IV __BIT(9) 921.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_BYTESWAP_DO __BIT(8) 931.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_BYTESWAP_DI __BIT(7) 941.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_KEYCHANGE __BIT(6) 951.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_MODE __BITS(5,4) 961.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_MODE_ECB 0 971.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_MODE_CBC 1 981.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_MODE_CTR 2 991.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_KEYSIZE __BITS(3,2) 1001.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_KEYSIZE_128 0 1011.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_KEYSIZE_192 1 1021.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_KEYSIZE_256 2 1031.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_FIFOMODE __BIT(1) 1041.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_DIR __BIT(0) 1051.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_DIR_ENC 0 1061.1Sriastrad#define RK_V1CRYPTO_AES_CTRL_DIR_DEC 1 1071.1Sriastrad 1081.1Sriastrad#define RK_V1CRYPTO_AES_STS 0x0084 /* AES Status */ 1091.1Sriastrad#define RK_V1CRYPTO_AES_STS_DONE __BIT(0) 1101.1Sriastrad 1111.1Sriastrad#define RK_V1CRYPTO_AES_DIN(n) (0x0088 + 4*(n)) /* AES Input */ 1121.1Sriastrad#define RK_V1CRYPTO_AES_DOUT(n) (0x0098 + 4*(n)) /* AES Output */ 1131.1Sriastrad#define RK_V1CRYPTO_AES_IV(n) (0x00a8 + 4*(n)) /* AES IV */ 1141.1Sriastrad#define RK_V1CRYPTO_AES_KEY(n) (0x00b8 + 4*(n)) /* AES Key */ 1151.1Sriastrad#define RK_V1CRYPTO_AES_CNT(n) (0x00d8 + 4*(n)) /* AES Input Counter */ 1161.1Sriastrad 1171.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL 0x0100 /* 3DES Control */ 1181.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_BYTESWAP_KEY __BIT(8) 1191.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_BYTESWAP_IV __BIT(7) 1201.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_BYTESWAP_DO __BIT(6) 1211.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_BYTESWAP_DI __BIT(5) 1221.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_MODE __BIT(4) 1231.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_MODE_ECB 0 1241.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_MODE_CBC 1 1251.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_KEYMODE __BIT(3) 1261.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_KEYMODE_EDE 0 1271.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_KEYMODE_EEE 1 1281.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_SELECT __BIT(2) 1291.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_SELECT_DES 0 1301.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_SELECT_TDES 1 1311.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_FIFOMODE __BIT(1) 1321.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_DIR __BIT(0) 1331.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_DIR_ENC 0 1341.1Sriastrad#define RK_V1CRYPTO_TDES_CTRL_DIR_DEC 1 1351.1Sriastrad 1361.1Sriastrad#define RK_V1CRYPTO_TDES_STS 0x0104 /* 3DES Status */ 1371.1Sriastrad#define RK_V1CRYPTO_TDES_STS_DONE __BIT(0) 1381.1Sriastrad 1391.1Sriastrad#define RK_V1CRYPTO_TDES_DIN(n) (0x0108 + 4*(n)) /* 3DES Input */ 1401.1Sriastrad#define RK_V1CRYPTO_TDES_DOUT(n)(0x0110 + 4*(n)) /* 3DES Output */ 1411.1Sriastrad#define RK_V1CRYPTO_TDES_IV(n) (0x0118 + 4*(n)) /* 3DES IV */ 1421.1Sriastrad#define RK_V1CRYPTO_TDES_KEY(n) (0x0120 + 4*(n)) /* 3DES Key(1,2,3) */ 1431.1Sriastrad 1441.1Sriastrad#define RK_V1CRYPTO_HASH_CTRL 0x0180 /* Hash Control */ 1451.1Sriastrad#define RK_V1CRYPTO_HASH_SWAP_DO __BIT(3) 1461.1Sriastrad#define RK_V1CRYPTO_HASH_SWAP_DI __BIT(2) 1471.1Sriastrad#define RK_V1CRYPTO_HASH_SELECT __BITS(1,0) 1481.1Sriastrad#define RK_V1CRYPTO_HASH_SELECT_SHA1 0 1491.1Sriastrad#define RK_V1CRYPTO_HASH_SELECT_MD5 1 1501.1Sriastrad#define RK_V1CRYPTO_HASH_SELECT_SHA256 2 1511.1Sriastrad#define RK_V1CRYPTO_HASH_SELECT_PRNG 3 /* ??? */ 1521.1Sriastrad 1531.1Sriastrad#define RK_V1CRYPTO_HASH_STS 0x0184 /* Hash Status */ 1541.1Sriastrad#define RK_V1CRYPTO_HASH_STS_DONE __BIT(0) 1551.1Sriastrad 1561.1Sriastrad#define RK_V1CRYPTO_HASH_MSG_LEN 0x0188 /* Hash Message Len */ 1571.1Sriastrad#define RK_V1CRYPTO_HASH_DOUT(n)(0x018c + 4*(n)) /* Hash Result */ 1581.1Sriastrad#define RK_V1CRYPTO_HASH_SEED(n)(0x01ac + 4*(n)) /* HMAC/PRNG key */ 1591.1Sriastrad 1601.1Sriastrad#define RK_V1CRYPTO_TRNG_CTRL 0x0200 /* TRNG Control */ 1611.1Sriastrad#define RK_V1CRYPTO_TRNG_CTRL_OSC_ENABLE __BIT(16) 1621.1Sriastrad#define RK_V1CRYPTO_TRNG_CTRL_CYCLES __BITS(15,0) 1631.1Sriastrad 1641.1Sriastrad#define RK_V1CRYPTO_TRNG_DOUT(n)(0x0204 + 4*(n)) /* TRNG Output */ 1651.1Sriastrad#define RK_V1CRYPTO_TRNG_NOUT 8 /* up to 8 32-bit */ 1661.1Sriastrad 1671.1Sriastrad#define RK_V1CRYPTO_PKA_CTRL 0x0280 /* PKA Control (RSA?) */ 1681.1Sriastrad#define RK_V1CRYPTO_PKA_CTRL_SIZE __BITS(1,0) 1691.1Sriastrad#define RK_V1CRYPTO_PKA_CTRL_SIZE_512 0 1701.1Sriastrad#define RK_V1CRYPTO_PKA_CTRL_SIZE_1024 1 1711.1Sriastrad#define RK_V1CRYPTO_PKA_CTRL_SIZE_2048 2 1721.1Sriastrad 1731.1Sriastrad#define RK_V1CRYPTO_M 0x0400 /* RSA `message' */ 1741.1Sriastrad#define RK_V1CRYPTO_C 0x0500 /* 2^(2 ceil(lg n) + 2) mod n */ 1751.1Sriastrad#define RK_V1CRYPTO_N 0x0600 /* RSA modulus? */ 1761.1Sriastrad#define RK_V1CRYPTO_E 0x0700 /* RSA exponent? */ 1771.1Sriastrad 1781.1Sriastrad#endif /* _ARM_ROCKCHIP_RK_V1CRYPTO_H */ 179