1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2021 NXP
4  */
5 
6 #ifndef __S400_API_H__
7 #define __S400_API_H__
8 
9 #define AHAB_VERSION    0x6
10 #define AHAB_CMD_TAG    0x17
11 #define AHAB_RESP_TAG   0xe1
12 
13 #define AHAB_LOG_CID            0x21
14 #define AHAB_AUTH_OEM_CTNR_CID  0x87
15 #define AHAB_VERIFY_IMG_CID     0x88
16 #define AHAB_RELEASE_CTNR_CID   0x89
17 #define AHAB_WRITE_SECURE_FUSE_REQ_CID	0x91
18 #define AHAB_FWD_LIFECYCLE_UP_REQ_CID   0x95
19 #define AHAB_READ_FUSE_REQ_CID	0x97
20 #define AHAB_RELEASE_RDC_REQ_CID   0xC4
21 #define AHAB_WRITE_FUSE_REQ_CID	0xD6
22 
23 #define S400_MAX_MSG          8U
24 
25 struct imx8ulp_s400_msg {
26 	u8 version;
27 	u8 size;
28 	u8 command;
29 	u8 tag;
30 	u32 data[(S400_MAX_MSG - 1U)];
31 };
32 
33 int ahab_release_rdc(u8 core_id, bool xrdc, u32 *response);
34 int ahab_auth_oem_ctnr(ulong ctnr_addr, u32 *response);
35 int ahab_release_container(u32 *response);
36 int ahab_verify_image(u32 img_id, u32 *response);
37 int ahab_forward_lifecycle(u16 life_cycle, u32 *response);
38 int ahab_write_fuse(u16 fuse_id, u32 fuse_val, bool lock, u32 *response);
39 int ahab_read_common_fuse(u16 fuse_id, u32 *fuse_words, u32 fuse_num, u32 *response);
40 
41 #endif
42