xref: /OK3568_Linux_fs/u-boot/include/fsl_secboot_err.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright 2015 Freescale Semiconductor, Inc.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _FSL_SECBOOT_ERR_H
8*4882a593Smuzhiyun #define _FSL_SECBOOT_ERR_H
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #define ERROR_ESBC_PAMU_INIT					0x100000
11*4882a593Smuzhiyun #define ERROR_ESBC_SEC_RESET					0x200000
12*4882a593Smuzhiyun #define ERROR_ESBC_SEC_INIT					0x400000
13*4882a593Smuzhiyun #define ERROR_ESBC_SEC_DEQ					0x800000
14*4882a593Smuzhiyun #define ERROR_ESBC_SEC_DEQ_TO					0x1000000
15*4882a593Smuzhiyun #define ERROR_ESBC_SEC_ENQ					0x2000000
16*4882a593Smuzhiyun #define ERROR_ESBC_SEC_JOBQ_STATUS				0x4000000
17*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_CPUID_NO_MATCH			0x1
18*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HDR_LOC				0x2
19*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_BARKER				0x4
20*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_KEY_LEN			0x8
21*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_SIG_LEN			0x10
22*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_KEY_REVOKED			0x11
23*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_INVALID_SRK_NUM_ENTRY		0x12
24*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_INVALID_KEY_NUM		0x13
25*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_INV_SRK_ENTRY_KEYLEN		0x14
26*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_IE_KEY_REVOKED			0x15
27*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_INVALID_IE_NUM_ENTRY		0x16
28*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_INVALID_IE_KEY_NUM		0x17
29*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_INV_IE_ENTRY_KEYLEN		0x18
30*4882a593Smuzhiyun #define ERROR_IE_TABLE_NOT_FOUND				0x19
31*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_KEY_LEN_NOT_TWICE_SIG_LEN	0x20
32*4882a593Smuzhiyun #define ERROR_KEY_TABLE_NOT_FOUND				0x21
33*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_KEY_MOD_1			0x40
34*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_KEY_MOD_2			0x80
35*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_SIG_KEY_MOD			0x100
36*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_SG_ESBC_EP			0x200
37*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HASH_COMPARE_KEY			0x400
38*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HASH_COMPARE_EM			0x800
39*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_SSM_TRUSTSTS				0x1000
40*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_BAD_ADDRESS				0x2000
41*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_MISC					0x4000
42*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_SG_ENTIRES_BAD			0x8000
43*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_SG				0x10000
44*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_HEADER_IMG_SIZE			0x20000
45*4882a593Smuzhiyun #define ERROR_ESBC_WRONG_CMD					0x40000
46*4882a593Smuzhiyun #define ERROR_ESBC_MISSING_BOOTM				0x80000
47*4882a593Smuzhiyun #define ERROR_ESBC_CLIENT_MAX					0x0
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun struct fsl_secboot_errcode {
50*4882a593Smuzhiyun 	int errcode;
51*4882a593Smuzhiyun 	const char *name;
52*4882a593Smuzhiyun };
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun static const struct fsl_secboot_errcode fsl_secboot_errcodes[] = {
55*4882a593Smuzhiyun 	{ ERROR_ESBC_PAMU_INIT,
56*4882a593Smuzhiyun 		"Error in initializing PAMU"},
57*4882a593Smuzhiyun 	{ ERROR_ESBC_SEC_RESET,
58*4882a593Smuzhiyun 		"Error in resetting Job ring of SEC"},
59*4882a593Smuzhiyun 	{ ERROR_ESBC_SEC_INIT,
60*4882a593Smuzhiyun 		"Error in initializing SEC"},
61*4882a593Smuzhiyun 	{ ERROR_ESBC_SEC_ENQ,
62*4882a593Smuzhiyun 		"Error in enqueue operation by SEC"},
63*4882a593Smuzhiyun 	{ ERROR_ESBC_SEC_DEQ_TO,
64*4882a593Smuzhiyun 		"Dequeue operation by SEC is timed out"},
65*4882a593Smuzhiyun 	{ ERROR_ESBC_SEC_DEQ,
66*4882a593Smuzhiyun 		"Error in dequeue operation by SEC"},
67*4882a593Smuzhiyun 	{ ERROR_ESBC_SEC_JOBQ_STATUS,
68*4882a593Smuzhiyun 		"Error in status of the job submitted to SEC"},
69*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_CPUID_NO_MATCH,
70*4882a593Smuzhiyun 		"Current core is not boot core i.e core0" },
71*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HDR_LOC,
72*4882a593Smuzhiyun 		"Header address not in allowed memory range" },
73*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_BARKER,
74*4882a593Smuzhiyun 		"Wrong barker code in header" },
75*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_KEY_LEN,
76*4882a593Smuzhiyun 		"Wrong public key length in header" },
77*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_SIG_LEN,
78*4882a593Smuzhiyun 		"Wrong signature length in header" },
79*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_KEY_LEN_NOT_TWICE_SIG_LEN,
80*4882a593Smuzhiyun 		"Public key length not twice of signature length" },
81*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_KEY_MOD_1,
82*4882a593Smuzhiyun 		"Public key Modulus most significant bit not set" },
83*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_KEY_MOD_2,
84*4882a593Smuzhiyun 		"Public key Modulus in header not odd" },
85*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_SIG_KEY_MOD,
86*4882a593Smuzhiyun 		"Signature not less than modulus" },
87*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_SG_ESBC_EP,
88*4882a593Smuzhiyun 		"Entry point not in allowed space or one of the SG entries" },
89*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HASH_COMPARE_KEY,
90*4882a593Smuzhiyun 		"Public key hash comparison failed" },
91*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HASH_COMPARE_EM,
92*4882a593Smuzhiyun 		"RSA verification failed" },
93*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_SSM_TRUSTSTS,
94*4882a593Smuzhiyun 		"SNVS not in TRUSTED state" },
95*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_BAD_ADDRESS,
96*4882a593Smuzhiyun 		"Bad address error" },
97*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_MISC,
98*4882a593Smuzhiyun 		"Miscallaneous error" },
99*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_SG,
100*4882a593Smuzhiyun 		"No SG support"  },
101*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_IMG_SIZE,
102*4882a593Smuzhiyun 		"Invalid Image size"  },
103*4882a593Smuzhiyun 	{ ERROR_ESBC_WRONG_CMD,
104*4882a593Smuzhiyun 		"Unknown cmd/Wrong arguments. Core in infinite loop"},
105*4882a593Smuzhiyun 	{ ERROR_ESBC_MISSING_BOOTM,
106*4882a593Smuzhiyun 		"Bootm command missing from bootscript" },
107*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_KEY_REVOKED,
108*4882a593Smuzhiyun 		"Selected key is revoked" },
109*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_SRK_NUM_ENTRY,
110*4882a593Smuzhiyun 		"Wrong key entry" },
111*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_KEY_NUM,
112*4882a593Smuzhiyun 		"Wrong key is selected" },
113*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_INV_SRK_ENTRY_KEYLEN,
114*4882a593Smuzhiyun 		"Wrong srk public key len in header" },
115*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_IE_KEY_REVOKED,
116*4882a593Smuzhiyun 		"Selected IE key is revoked" },
117*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_IE_NUM_ENTRY,
118*4882a593Smuzhiyun 		"Wrong key entry in IE Table" },
119*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_INVALID_IE_KEY_NUM,
120*4882a593Smuzhiyun 		"Wrong IE key is selected" },
121*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_HEADER_INV_IE_ENTRY_KEYLEN,
122*4882a593Smuzhiyun 		"Wrong IE public key len in header" },
123*4882a593Smuzhiyun 	{ ERROR_IE_TABLE_NOT_FOUND,
124*4882a593Smuzhiyun 		"Information about IE Table missing" },
125*4882a593Smuzhiyun 	{ ERROR_KEY_TABLE_NOT_FOUND,
126*4882a593Smuzhiyun 		"No Key/ Key Table Found in header"},
127*4882a593Smuzhiyun 	{ ERROR_ESBC_CLIENT_MAX, "NULL" }
128*4882a593Smuzhiyun };
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun void fsl_secboot_handle_error(int error);
131*4882a593Smuzhiyun #endif
132