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