irqchip/bcm: Remove hashed address printing
[sfrench/cifs-2.6.git] / drivers / crypto / atmel-ecc.h
1 /*
2  * Copyright (c) 2017, Microchip Technology Inc.
3  * Author: Tudor Ambarus <tudor.ambarus@microchip.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program.  If not, see <http://www.gnu.org/licenses/>.
16  *
17  */
18
19 #ifndef __ATMEL_ECC_H__
20 #define __ATMEL_ECC_H__
21
22 #define ATMEL_ECC_PRIORITY              300
23
24 #define COMMAND                         0x03 /* packet function */
25 #define SLEEP_TOKEN                     0x01
26 #define WAKE_TOKEN_MAX_SIZE             8
27
28 /* Definitions of Data and Command sizes */
29 #define WORD_ADDR_SIZE                  1
30 #define COUNT_SIZE                      1
31 #define CRC_SIZE                        2
32 #define CMD_OVERHEAD_SIZE               (COUNT_SIZE + CRC_SIZE)
33
34 /* size in bytes of the n prime */
35 #define ATMEL_ECC_NIST_P256_N_SIZE      32
36 #define ATMEL_ECC_PUBKEY_SIZE           (2 * ATMEL_ECC_NIST_P256_N_SIZE)
37
38 #define STATUS_RSP_SIZE                 4
39 #define ECDH_RSP_SIZE                   (32 + CMD_OVERHEAD_SIZE)
40 #define GENKEY_RSP_SIZE                 (ATMEL_ECC_PUBKEY_SIZE + \
41                                          CMD_OVERHEAD_SIZE)
42 #define READ_RSP_SIZE                   (4 + CMD_OVERHEAD_SIZE)
43 #define MAX_RSP_SIZE                    GENKEY_RSP_SIZE
44
45 /**
46  * atmel_ecc_cmd - structure used for communicating with the device.
47  * @word_addr: indicates the function of the packet sent to the device. This
48  *             byte should have a value of COMMAND for normal operation.
49  * @count    : number of bytes to be transferred to (or from) the device.
50  * @opcode   : the command code.
51  * @param1   : the first parameter; always present.
52  * @param2   : the second parameter; always present.
53  * @data     : optional remaining input data. Includes a 2-byte CRC.
54  * @rxsize   : size of the data received from i2c client.
55  * @msecs    : command execution time in milliseconds
56  */
57 struct atmel_ecc_cmd {
58         u8 word_addr;
59         u8 count;
60         u8 opcode;
61         u8 param1;
62         u16 param2;
63         u8 data[MAX_RSP_SIZE];
64         u8 msecs;
65         u16 rxsize;
66 } __packed;
67
68 /* Status/Error codes */
69 #define STATUS_SIZE                     0x04
70 #define STATUS_NOERR                    0x00
71 #define STATUS_WAKE_SUCCESSFUL          0x11
72
73 static const struct {
74         u8 value;
75         const char *error_text;
76 } error_list[] = {
77         { 0x01, "CheckMac or Verify miscompare" },
78         { 0x03, "Parse Error" },
79         { 0x05, "ECC Fault" },
80         { 0x0F, "Execution Error" },
81         { 0xEE, "Watchdog about to expire" },
82         { 0xFF, "CRC or other communication error" },
83 };
84
85 /* Definitions for eeprom organization */
86 #define CONFIG_ZONE                     0
87
88 /* Definitions for Indexes common to all commands */
89 #define RSP_DATA_IDX                    1 /* buffer index of data in response */
90 #define DATA_SLOT_2                     2 /* used for ECDH private key */
91
92 /* Definitions for the device lock state */
93 #define DEVICE_LOCK_ADDR                0x15
94 #define LOCK_VALUE_IDX                  (RSP_DATA_IDX + 2)
95 #define LOCK_CONFIG_IDX                 (RSP_DATA_IDX + 3)
96
97 /*
98  * Wake High delay to data communication (microseconds). SDA should be stable
99  * high for this entire duration.
100  */
101 #define TWHI_MIN                        1500
102 #define TWHI_MAX                        1550
103
104 /* Wake Low duration */
105 #define TWLO_USEC                       60
106
107 /* Command execution time (milliseconds) */
108 #define MAX_EXEC_TIME_ECDH              58
109 #define MAX_EXEC_TIME_GENKEY            115
110 #define MAX_EXEC_TIME_READ              1
111
112 /* Command opcode */
113 #define OPCODE_ECDH                     0x43
114 #define OPCODE_GENKEY                   0x40
115 #define OPCODE_READ                     0x02
116
117 /* Definitions for the READ Command */
118 #define READ_COUNT                      7
119
120 /* Definitions for the GenKey Command */
121 #define GENKEY_COUNT                    7
122 #define GENKEY_MODE_PRIVATE             0x04
123
124 /* Definitions for the ECDH Command */
125 #define ECDH_COUNT                      71
126 #define ECDH_PREFIX_MODE                0x00
127
128 #endif /* __ATMEL_ECC_H__ */