From patchwork Fri Jul 3 02:26:30 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulises.Cardenas@freescale.com X-Patchwork-Id: 490910 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 0CB2E140757 for ; Fri, 3 Jul 2015 12:46:06 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5EB584B617; Fri, 3 Jul 2015 04:46:04 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id S2eDyj3qCY7s; Fri, 3 Jul 2015 04:46:04 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EE6F34A039; Fri, 3 Jul 2015 04:46:03 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C7FC64A039 for ; Fri, 3 Jul 2015 04:46:00 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a8ioAhgSAiv9 for ; Fri, 3 Jul 2015 04:46:00 +0200 (CEST) X-Greylist: delayed 313 seconds by postgrey-1.34 at theia; Fri, 03 Jul 2015 04:45:55 CEST X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0101.outbound.protection.outlook.com [65.55.169.101]) by theia.denx.de (Postfix) with ESMTPS id 10BC54A033 for ; Fri, 3 Jul 2015 04:45:55 +0200 (CEST) Received: from CH1PR03CA003.namprd03.prod.outlook.com (10.255.156.148) by BY2PR03MB254.namprd03.prod.outlook.com (10.242.37.17) with Microsoft SMTP Server (TLS) id 15.1.207.12; Fri, 3 Jul 2015 02:30:58 +0000 Received: from BY2FFO11FD045.protection.gbl (10.255.156.132) by CH1PR03CA003.outlook.office365.com (10.255.156.148) with Microsoft SMTP Server (TLS) id 15.1.201.16 via Frontend Transport; Fri, 3 Jul 2015 02:30:57 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BY2FFO11FD045.mail.protection.outlook.com (10.1.15.177) with Microsoft SMTP Server (TLS) id 15.1.190.9 via Frontend Transport; Fri, 3 Jul 2015 02:30:57 +0000 Received: from helix.am.freescale.net (helix.am.freescale.net [10.81.16.42]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t632UuXs025075; Thu, 2 Jul 2015 19:30:56 -0700 From: To: Date: Thu, 2 Jul 2015 21:26:30 -0500 Message-ID: <1435890390-24017-1-git-send-email-Ulises.Cardenas@freescale.com> X-Mailer: git-send-email 2.3.2 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD045; 1:W9eAHzz6Vw7+/Rz7/y69MNTbT+mdQoFpTn7MwhtE+U40E2xKpMXVbRelka9RArHwaWj5PnOroeODPuZYyYVD+FjscDjYPNBtcXunxERIOQJBZwn4EUXtJyXN4iMvz3z37qA9xnDE2VArAzXqfyHAAMT0oWmnnYShSSCELscQBDWXBTDoIRM/+qSzBQRBAXrn48XjwCsEiK6497pfeZlWCtP7fN9jrlzsCCXByGEOlDSrRqjyCeqKERrPOcRcy25mOD4eZyp9p9KpyYense41n9AdSNOnhWCU+wTQ9KFm0R/K8xi8eZdMOgQfFJo/Wp2qo8mldwHUWhIWD3+3XtqL+g== X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(339900001)(189002)(199003)(106466001)(110136002)(2371004)(85426001)(77156002)(92566002)(77096005)(50226001)(50466002)(19580395003)(229853001)(19580405001)(48376002)(104016003)(2351001)(87936001)(5001960100002)(105606002)(107886002)(47776003)(189998001)(86152002)(6806004)(50986999)(86362001)(575784001)(36756003)(46102003)(4001430100001)(4001450100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR03MB254; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:sfv; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB254; 2:ID9muZY/MpOynmsR6fa2rPqGl5txgteZPnDV5xsG1I9DM5bLyfdeAP4iMNp6AeHq; 3:jpmLhr8hBgKe/CrR96TuFoCXIdGJouldCsXytM/TCREMPTYhpSEeTFLcihzRwZoj2zFEFlK15H6v/ua9ok/jHbc2aunP3yC+e1TmO3mqQiohQJ1AdQ7Y0SZ8Yzw6VA6nE76IsIUavoWEnIjnT6xMnNttHTAQ9pI9w5bFJhppHkloLUeqsRSsAHsvoSESu2bIlpyNoYayTxP7UjOmCbZpnc7leNT//dGK3OAquIfG5SE=; 25:0FKdzSxTBa3sQ/NoBIbJTWwVNHY3YZURdLOy7ZF1wWoDFEThnV9WcU79rskJ8aBje6d57P5VVPc29Rs+X4Vt3kp2b0WHcdgQSI5W4PgjMDeatZkD4ENr7fE1+MhzK3mreNUFDDbCXGtolmzOwx1gBebeV/9s3ZoeIhumtS+rpCwMCCdj8uRxmN1MeRDKIfO0lzvpQcbavdqO18uBsq7gr7Elv08fs7tENbMSW4jq7TeLrwMNwNiWx1hDXXY/VzGER4RpoyZdi4HfEgrRj+hjBA==; 20:jMdN3WkeVnO+SBoKeF6LohJ3Hx+TKa3jidoyvtm3FnEB8fk6GXIkD5FO7g5NFBNaRUVHy/iNi9v+ri/pN1AgJjzMLgU5n4GBODkYfqWCZKOkLz7xhAOmTILKXQaN/L6m3gYa6kNCO11wI5TXDIh5jKdSE/H2PnWqQt4TE5ysUqiibo7a07ZJIhTMf+J2J4H4bGyi8Xx/rN9xc3bObQht+WgG4/awJ1HW4WXAHoZbtSBHM1ja+ixfrvxgimt9ypotLomw7iah/7ZC+s+mNtYOLGQy4SCGkq6WKYCpk+Uk6ZS5jwJ1ZlAmcqYaA47f75e7dnlDfidNGzhogaLEq/uMjw2/1gatYd1u4EmDcQGlILA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB254; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BY2PR03MB254; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB254; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB254; 4:u4Ei59A9rASfxPn5TM6nIZV5aMATWVslMsCsVMr92DHr+E95i3/VAuEWq86XgZRkMOc+O/7hrf8bYES5AkkHuUpAh9e9ga7kFn8wGmnh73wtUjawW1gHAfK2OOH4dgBfnlIN/8cDEVZAwvAHiVw+9pmyF61BcUlljSfenfGlQ+M18z4pa4v66WFhSzcGlvE7ev7qTya0WbQjsKw7pRsWJ17ZFOYR2jdc3ff/71Xo9wn0MR0nVTF8y+UWDo1RwhwUoTwyZ2BjJA4EWUzNfQT5/NMMACj7pBTbUuksW0bg8LQ= X-Forefront-PRVS: 0626C21B10 X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB254; 23:EsXgSonNCFQjAnHyyHqJ9rWbqL5Orqnznvt8PeMwXmdyX1xklLUA5j26kROw0d9jBovODMOMlYNevv6jz1NBo+ppiYTa/kUMQnGbOmQIXuEPRi6EInRnCWP3LDYcx6s6hw2JZyi2aqa8Iz7oKQLEj/0tEgSHckTNe/sLQutGYlTNXElN9bpq1mgiRFaFzvRrEh2Yo8o5Gle8nB1U+9sxzsxUxoEjdozIoVVuuFZMfQDJdspslRsyroIvF5tp7S0euGaXlRVlcF3Drx4krIPwGi+97f39PI5CToRqkxUdfv68wXoX/eWNaXl3Uj2QPCIVQIPx3h7LozoNecQN76hEIi2CH4HlVyGcVheTdN8rTMEhBVzsAm//ivjK7CaEIPFgK41blXWhYBhOVmPxhYrcpMi+h1nvO8FbRMZLg4uY7gr/aYvwDCVuL9P/Y8HmSYYmRYXvGgtFlUOZl0MBElygyL2MJ37A6oTgS8jSNptos5tOJxXvRt8uW9Zsu/b4oCmHiKtGhrBRpFyFrfaYyVdj0dtMvinJFlDcsbtFDruVTP9FEqEng5FnhFIEY7ZhKIlL9p6xw5GUdUwtywEJ1Y08M6MUziMAujLk6Z/tUAKWatAo6Mesq1Kv9jNIcx86KWJkvHFzY71J57EUADGOSXz+VPxbgf1Zhsjb9NQzfQGx+O+Sug8XetBKCiJMtKHz31sxqHC9sslszEsbE0LOCeDvyP3ZjglLbygyE4XgPplGD6VH78T31GTH9m9L2pHJZh9i2ljpf1VJHmt2S9NUbWH/9uxVk7wgpqrFJ8w5gmR+L+xaxzP9O9njEPvr3wxQtIQw/QPh245HuyGDXnVYFt7Sk+0T6RZZA6XhvRnMERqjzY1TQ9MNd+4iRA1Go3KsBsjUiKjkSlkodD7AF3AbaF+SsD/Rx1Q7ptbz693Q+Ol08P82TCjP7S1e39fzxFL6xdBm X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB254; 5:1B6zzD9i/2o7ZTkHPBxlwGZ3F7d8oN0FoYNJ/N/C7tV/7gO+6tW99ZoWtP3xRH/X1cWbuYXNaB6cIWm+d6BkBnJLtL1F1cNZhASQUNabntPcqSIOOc0S5a5vNrj7nDPGGJWF91efEekDzn3cWMZUDw==; 24:ntzThvezmc2qLHcwL+C3UTIsQIou7CHc+0QM43UnnvqWKQckONh2OvfsAEYZljBkoc7i34/fLR0BxFtdu3QLPgQ6+HR/GzlJdTJkTc+jQho=; 20:9MZRTuyNq54PDXzTZ1I58Qq1/TuCONX2Qf6Jgre6LLAKGqhZOAe0LmuFzF083ofPssDSzzeiC4EpY7EUfEadaQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2015 02:30:57.4774 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB254 Cc: Ulises Cardenas , u-boot@lists.denx.de Subject: [U-Boot] [PATCH v2] iMX: adding parsing to hab_status command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Ulises Cardenas hab_status command returns a memory dump of the hab event log. But the raw data is not human-readable. Parsing such data into readable event will help to minimize debbuging time. Signed-off-by: Ulises Cardenas --- Changes in v2: -Refactored get_<*>_idx functions as recommended by Michael, to a single generic function to travese the enum. arch/arm/cpu/armv7/mx6/hab.c | 173 +++++++++++++++++++++++++++++++++++- arch/arm/include/asm/arch-mx6/hab.h | 85 +++++++++++++++--- 2 files changed, 245 insertions(+), 13 deletions(-) diff --git a/arch/arm/cpu/armv7/mx6/hab.c b/arch/arm/cpu/armv7/mx6/hab.c index 8dee595..87f422d 100644 --- a/arch/arm/cpu/armv7/mx6/hab.c +++ b/arch/arm/cpu/armv7/mx6/hab.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2014 Freescale Semiconductor, Inc. + * Copyright (C) 2010-2015 Freescale Semiconductor, Inc. * * SPDX-License-Identifier: GPL-2.0+ */ @@ -111,6 +111,153 @@ * +------------+ + CSF_PAD_SIZE */ +#define MAX_RECORD_BYTES (8*1024) /* 4 kbytes */ + +struct record { + uint8_t tag; /* Tag */ + uint8_t len[2]; /* Length */ + uint8_t par; /* Version */ + uint8_t contents[MAX_RECORD_BYTES];/* Record Data */ + bool any_rec_flag; +}; + +char *rsn_str[] = {"RSN = HAB_RSN_ANY (0x00)\n", + "RSN = HAB_ENG_FAIL (0x30)\n", + "RSN = HAB_INV_ADDRESS (0x22)\n", + "RSN = HAB_INV_ASSERTION (0x0C)\n", + "RSN = HAB_INV_CALL (0x28)\n", + "RSN = HAB_INV_CERTIFICATE (0x21)\n", + "RSN = HAB_INV_COMMAND (0x06)\n", + "RSN = HAB_INV_CSF (0x11)\n", + "RSN = HAB_INV_DCD (0x27)\n", + "RSN = HAB_INV_INDEX (0x0F)\n", + "RSN = HAB_INV_IVT (0x05)\n", + "RSN = HAB_INV_KEY (0x1D)\n", + "RSN = HAB_INV_RETURN (0x1E)\n", + "RSN = HAB_INV_SIGNATURE (0x18)\n", + "RSN = HAB_INV_SIZE (0x17)\n", + "RSN = HAB_MEM_FAIL (0x2E)\n", + "RSN = HAB_OVR_COUNT (0x2B)\n", + "RSN = HAB_OVR_STORAGE (0x2D)\n", + "RSN = HAB_UNS_ALGORITHM (0x12)\n", + "RSN = HAB_UNS_COMMAND (0x03)\n", + "RSN = HAB_UNS_ENGINE (0x0A)\n", + "RSN = HAB_UNS_ITEM (0x24)\n", + "RSN = HAB_UNS_KEY (0x1B)\n", + "RSN = HAB_UNS_PROTOCOL (0x14)\n", + "RSN = HAB_UNS_STATE (0x09)\n", + "RSN = INVALID\n", + NULL}; + +char *sts_str[] = {"STS = HAB_SUCCESS (0xF0)\n", + "STS = HAB_FAILURE (0x33)\n", + "STS = HAB_WARNING (0x69)\n", + "STS = INVALID\n", + NULL}; + +char *eng_str[] = {"ENG = HAB_ENG_ANY (0x00)\n", + "ENG = HAB_ENG_SCC (0x03)\n", + "ENG = HAB_ENG_RTIC (0x05)\n", + "ENG = HAB_ENG_SAHARA (0x06)\n", + "ENG = HAB_ENG_CSU (0x0A)\n", + "ENG = HAB_ENG_SRTC (0x0C)\n", + "ENG = HAB_ENG_DCP (0x1B)\n", + "ENG = HAB_ENG_CAAM (0x1D)\n", + "ENG = HAB_ENG_SNVS (0x1E)\n", + "ENG = HAB_ENG_OCOTP (0x21)\n", + "ENG = HAB_ENG_DTCP (0x22)\n", + "ENG = HAB_ENG_ROM (0x36)\n", + "ENG = HAB_ENG_HDCP (0x24)\n", + "ENG = HAB_ENG_RTL (0x77)\n", + "ENG = HAB_ENG_SW (0xFF)\n", + "ENG = INVALID\n", + NULL}; + +char *ctx_str[] = {"CTX = HAB_CTX_ANY(0x00)\n", + "CTX = HAB_CTX_FAB (0xFF)\n", + "CTX = HAB_CTX_ENTRY (0xE1)\n", + "CTX = HAB_CTX_TARGET (0x33)\n", + "CTX = HAB_CTX_AUTHENTICATE (0x0A)\n", + "CTX = HAB_CTX_DCD (0xDD)\n", + "CTX = HAB_CTX_CSF (0xCF)\n", + "CTX = HAB_CTX_COMMAND (0xC0)\n", + "CTX = HAB_CTX_AUT_DAT (0xDB)\n", + "CTX = HAB_CTX_ASSERT (0xA0)\n", + "CTX = HAB_CTX_EXIT (0xEE)\n", + "CTX = INVALID\n", + NULL}; + +uint8_t hab_statuses[5] = { + HAB_STS_ANY, + HAB_FAILURE, + HAB_WARNING, + HAB_SUCCESS, + -1 +}; + +uint8_t hab_reasons[26] = { + HAB_RSN_ANY, + HAB_ENG_FAIL, + HAB_INV_ADDRESS, + HAB_INV_ASSERTION, + HAB_INV_CALL, + HAB_INV_CERTIFICATE, + HAB_INV_COMMAND, + HAB_INV_CSF, + HAB_INV_DCD, + HAB_INV_INDEX, + HAB_INV_IVT, + HAB_INV_KEY, + HAB_INV_RETURN, + HAB_INV_SIGNATURE, + HAB_INV_SIZE, + HAB_MEM_FAIL, + HAB_OVR_COUNT, + HAB_OVR_STORAGE, + HAB_UNS_ALGORITHM, + HAB_UNS_COMMAND, + HAB_UNS_ENGINE, + HAB_UNS_ITEM, + HAB_UNS_KEY, + HAB_UNS_PROTOCOL, + HAB_UNS_STATE, + -1 +}; + +uint8_t hab_contexts[12] = { + HAB_CTX_ANY, + HAB_CTX_FAB, + HAB_CTX_ENTRY, + HAB_CTX_TARGET, + HAB_CTX_AUTHENTICATE, + HAB_CTX_DCD, + HAB_CTX_CSF, + HAB_CTX_COMMAND, + HAB_CTX_AUT_DAT, + HAB_CTX_ASSERT, + HAB_CTX_EXIT, + -1 +}; + +uint8_t hab_engines[16] = { + HAB_ENG_ANY, + HAB_ENG_SCC, + HAB_ENG_RTIC, + HAB_ENG_SAHARA, + HAB_ENG_CSU, + HAB_ENG_SRTC, + HAB_ENG_DCP, + HAB_ENG_CAAM, + HAB_ENG_SNVS, + HAB_ENG_OCOTP, + HAB_ENG_DTCP, + HAB_ENG_ROM, + HAB_ENG_HDCP, + HAB_ENG_RTL, + HAB_ENG_SW, + -1 +}; + bool is_hab_enabled(void) { struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; @@ -122,6 +269,28 @@ bool is_hab_enabled(void) return (reg & 0x2) == 0x2; } +static inline uint8_t get_idx(uint8_t *list, uint8_t tgt) +{ + uint8_t idx = 0; + uint8_t element = list[idx]; + while (element != -1) { + if (element == tgt) + return idx; + element = list[++idx]; + } + return -1; +} + +void process_event_record(uint8_t *event_data, size_t bytes) +{ + struct record *rec = (struct record *)event_data; + + printf("\n\n%s", sts_str[get_idx(hab_statuses, rec->contents[0])]); + printf("%s", rsn_str[get_idx(hab_reasons, rec->contents[1])]); + printf("%s", ctx_str[get_idx(hab_contexts, rec->contents[2])]); + printf("%s", eng_str[get_idx(hab_engines, rec->contents[3])]); +} + void display_event(uint8_t *event_data, size_t bytes) { uint32_t i; @@ -137,6 +306,8 @@ void display_event(uint8_t *event_data, size_t bytes) else printf(" 0x%02x", event_data[i]); } + + process_event_record(event_data, bytes); } int get_hab_status(void) diff --git a/arch/arm/include/asm/arch-mx6/hab.h b/arch/arm/include/asm/arch-mx6/hab.h index c9e5318..d0eaa67 100644 --- a/arch/arm/include/asm/arch-mx6/hab.h +++ b/arch/arm/include/asm/arch-mx6/hab.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright (C) 2012-2015 Freescale Semiconductor, Inc. All Rights Reserved. * * SPDX-License-Identifier: GPL-2.0+ * @@ -23,24 +23,68 @@ enum hab_status { /* Security Configuration definitions */ enum hab_config { - HAB_CFG_RETURN = 0x33, /**< Field Return IC */ - HAB_CFG_OPEN = 0xf0, /**< Non-secure IC */ - HAB_CFG_CLOSED = 0xcc /**< Secure IC */ + HAB_CFG_RETURN = 0x33, /* < Field Return IC */ + HAB_CFG_OPEN = 0xf0, /* < Non-secure IC */ + HAB_CFG_CLOSED = 0xcc /* < Secure IC */ }; /* State definitions */ enum hab_state { - HAB_STATE_INITIAL = 0x33, /**< Initialising state (transitory) */ - HAB_STATE_CHECK = 0x55, /**< Check state (non-secure) */ - HAB_STATE_NONSECURE = 0x66, /**< Non-secure state */ - HAB_STATE_TRUSTED = 0x99, /**< Trusted state */ - HAB_STATE_SECURE = 0xaa, /**< Secure state */ - HAB_STATE_FAIL_SOFT = 0xcc, /**< Soft fail state */ - HAB_STATE_FAIL_HARD = 0xff, /**< Hard fail state (terminal) */ - HAB_STATE_NONE = 0xf0, /**< No security state machine */ + HAB_STATE_INITIAL = 0x33, /* Initialising state (transitory) */ + HAB_STATE_CHECK = 0x55, /* Check state (non-secure) */ + HAB_STATE_NONSECURE = 0x66, /* Non-secure state */ + HAB_STATE_TRUSTED = 0x99, /* Trusted state */ + HAB_STATE_SECURE = 0xaa, /* Secure state */ + HAB_STATE_FAIL_SOFT = 0xcc, /* Soft fail state */ + HAB_STATE_FAIL_HARD = 0xff, /* Hard fail state (terminal) */ + HAB_STATE_NONE = 0xf0, /* No security state machine */ HAB_STATE_MAX }; +enum hab_reason { + HAB_RSN_ANY = 0x00, /* Match any reason */ + HAB_ENG_FAIL = 0x30, /* Engine failure */ + HAB_INV_ADDRESS = 0x22, /* Invalid address: access denied */ + HAB_INV_ASSERTION = 0x0c, /* Invalid assertion */ + HAB_INV_CALL = 0x28, /* Function called out of sequence */ + HAB_INV_CERTIFICATE = 0x21, /* Invalid certificate */ + HAB_INV_COMMAND = 0x06, /* Invalid command: command malformed */ + HAB_INV_CSF = 0x11, /* Invalid csf */ + HAB_INV_DCD = 0x27, /* Invalid dcd */ + HAB_INV_INDEX = 0x0f, /* Invalid index: access denied */ + HAB_INV_IVT = 0x05, /* Invalid ivt */ + HAB_INV_KEY = 0x1d, /* Invalid key */ + HAB_INV_RETURN = 0x1e, /* Failed callback function */ + HAB_INV_SIGNATURE = 0x18, /* Invalid signature */ + HAB_INV_SIZE = 0x17, /* Invalid data size */ + HAB_MEM_FAIL = 0x2e, /* Memory failure */ + HAB_OVR_COUNT = 0x2b, /* Expired poll count */ + HAB_OVR_STORAGE = 0x2d, /* Exhausted storage region */ + HAB_UNS_ALGORITHM = 0x12, /* Unsupported algorithm */ + HAB_UNS_COMMAND = 0x03, /* Unsupported command */ + HAB_UNS_ENGINE = 0x0a, /* Unsupported engine */ + HAB_UNS_ITEM = 0x24, /* Unsupported configuration item */ + HAB_UNS_KEY = 0x1b, /* Unsupported key type/parameters */ + HAB_UNS_PROTOCOL = 0x14, /* Unsupported protocol */ + HAB_UNS_STATE = 0x09, /* Unsuitable state */ + HAB_RSN_MAX +}; + +enum hab_context { + HAB_CTX_ANY = 0x00, /* Match any context */ + HAB_CTX_FAB = 0xff, /* Event logged in hab_fab_test() */ + HAB_CTX_ENTRY = 0xe1, /* Event logged in hab_rvt.entry() */ + HAB_CTX_TARGET = 0x33, /* Event logged in hab_rvt.check_target() */ + HAB_CTX_AUTHENTICATE = 0x0a,/* Logged in hab_rvt.authenticate_image() */ + HAB_CTX_DCD = 0xdd, /* Event logged in hab_rvt.run_dcd() */ + HAB_CTX_CSF = 0xcf, /* Event logged in hab_rvt.run_csf() */ + HAB_CTX_COMMAND = 0xc0, /* Event logged executing csf/dcd command */ + HAB_CTX_AUT_DAT = 0xdb, /* Authenticated data block */ + HAB_CTX_ASSERT = 0xa0, /* Event logged in hab_rvt.assert() */ + HAB_CTX_EXIT = 0xee, /* Event logged in hab_rvt.exit() */ + HAB_CTX_MAX +}; + /*Function prototype description*/ typedef enum hab_status hab_rvt_report_event_t(enum hab_status, uint32_t, uint8_t* , size_t*); @@ -53,6 +97,22 @@ typedef void *hab_rvt_authenticate_image_t(uint8_t, ptrdiff_t, void **, size_t *, hab_loader_callback_f_t); typedef void hapi_clock_init_t(void); +#define HAB_ENG_ANY 0x00 /* Select first compatible engine */ +#define HAB_ENG_SCC 0x03 /* Security controller */ +#define HAB_ENG_RTIC 0x05 /* Run-time integrity checker */ +#define HAB_ENG_SAHARA 0x06 /* Crypto accelerator */ +#define HAB_ENG_CSU 0x0a /* Central Security Unit */ +#define HAB_ENG_SRTC 0x0c /* Secure clock */ +#define HAB_ENG_DCP 0x1b /* Data Co-Processor */ +#define HAB_ENG_CAAM 0x1d /* CAAM */ +#define HAB_ENG_SNVS 0x1e /* Secure Non-Volatile Storage */ +#define HAB_ENG_OCOTP 0x21 /* Fuse controller */ +#define HAB_ENG_DTCP 0x22 /* DTCP co-processor */ +#define HAB_ENG_ROM 0x36 /* Protected ROM area */ +#define HAB_ENG_HDCP 0x24 /* HDCP co-processor */ +#define HAB_ENG_RTL 0x77 /* RTL simulation engine */ +#define HAB_ENG_SW 0xff /* Software engine */ + #ifdef CONFIG_MX6SX #define HAB_RVT_BASE 0x00000100 #else @@ -73,6 +133,7 @@ typedef void hapi_clock_init_t(void); #define HAB_CID_ROM 0 /**< ROM Caller ID */ #define HAB_CID_UBOOT 1 /**< UBOOT Caller ID*/ + /* ----------- end of HAB API updates ------------*/ #endif