xref: /rk3399_ARM-atf/plat/intel/soc/common/include/socfpga_sip_svc.h (revision 77902fca8fe7449473b09198e1fe197f7b4765d7)
1 /*
2  * Copyright (c) 2019-2022, Intel Corporation. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef SOCFPGA_SIP_SVC_H
8 #define SOCFPGA_SIP_SVC_H
9 
10 
11 /* SiP status response */
12 #define INTEL_SIP_SMC_STATUS_OK				0
13 #define INTEL_SIP_SMC_STATUS_BUSY			0x1
14 #define INTEL_SIP_SMC_STATUS_REJECTED			0x2
15 #define INTEL_SIP_SMC_STATUS_ERROR			0x4
16 #define INTEL_SIP_SMC_RSU_ERROR				0x7
17 
18 /* SiP mailbox error code */
19 #define GENERIC_RESPONSE_ERROR				0x3FF
20 
21 /* SMC SiP service function identifier */
22 
23 /* FPGA Reconfig */
24 #define INTEL_SIP_SMC_FPGA_CONFIG_START			0xC2000001
25 #define INTEL_SIP_SMC_FPGA_CONFIG_WRITE			0x42000002
26 #define INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE	0xC2000003
27 #define INTEL_SIP_SMC_FPGA_CONFIG_ISDONE		0xC2000004
28 #define INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM		0xC2000005
29 
30 /* Secure Register Access */
31 #define INTEL_SIP_SMC_REG_READ				0xC2000007
32 #define INTEL_SIP_SMC_REG_WRITE				0xC2000008
33 #define INTEL_SIP_SMC_REG_UPDATE			0xC2000009
34 
35 /* Remote System Update */
36 #define INTEL_SIP_SMC_RSU_STATUS			0xC200000B
37 #define INTEL_SIP_SMC_RSU_UPDATE			0xC200000C
38 #define INTEL_SIP_SMC_RSU_NOTIFY			0xC200000E
39 #define INTEL_SIP_SMC_RSU_RETRY_COUNTER			0xC200000F
40 #define INTEL_SIP_SMC_RSU_DCMF_VERSION			0xC2000010
41 #define INTEL_SIP_SMC_RSU_COPY_DCMF_VERSION		0xC2000011
42 
43 
44 /* ECC */
45 #define INTEL_SIP_SMC_ECC_DBE				0xC200000D
46 
47 /* Generic Command */
48 #define INTEL_SIP_SMC_GET_ROM_PATCH_SHA384		0xC2000040
49 
50 /* Send Mailbox Command */
51 #define INTEL_SIP_SMC_MBOX_SEND_CMD			0xC200001E
52 
53 
54 /* SiP Definitions */
55 
56 /* ECC DBE */
57 #define WARM_RESET_WFI_FLAG				BIT(31)
58 #define SYSMGR_ECC_DBE_COLD_RST_MASK		(SYSMGR_ECC_OCRAM_MASK |\
59 							SYSMGR_ECC_DDR0_MASK |\
60 							SYSMGR_ECC_DDR1_MASK)
61 
62 /* SMC function IDs for SiP Service queries */
63 #define SIP_SVC_CALL_COUNT	0x8200ff00
64 #define SIP_SVC_UID		0x8200ff01
65 #define SIP_SVC_VERSION		0x8200ff03
66 
67 /* SiP Service Calls version numbers */
68 #define SIP_SVC_VERSION_MAJOR	0
69 #define SIP_SVC_VERSION_MINOR	1
70 
71 
72 /* Structure Definitions */
73 struct fpga_config_info {
74 	uint32_t addr;
75 	int size;
76 	int size_written;
77 	uint32_t write_requested;
78 	int subblocks_sent;
79 	int block_number;
80 };
81 
82 /* Function Definitions */
83 
84 bool is_address_in_ddr_range(uint64_t addr, uint64_t size);
85 
86 /* ECC DBE */
87 bool cold_reset_for_ecc_dbe(void);
88 uint32_t intel_ecc_dbe_notification(uint64_t dbe_value);
89 
90 #endif /* SOCFPGA_SIP_SVC_H */
91