blob: 0db71e23b2fea5dab6995a38a00045a26560e5fc [file] [log] [blame]
Hadi Asyrafiab1132f2019-10-22 10:31:45 +08001/*
Sieu Mun Tang9f22cbf2022-03-02 11:04:09 +08002 * Copyright (c) 2019-2022, Intel Corporation. All rights reserved.
Hadi Asyrafiab1132f2019-10-22 10:31:45 +08003 *
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
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080013#define INTEL_SIP_SMC_STATUS_BUSY 0x1
14#define INTEL_SIP_SMC_STATUS_REJECTED 0x2
Abdul Halim, Muhammad Hadi Asyrafi25f623e2020-02-27 10:23:48 +080015#define INTEL_SIP_SMC_STATUS_ERROR 0x4
16#define INTEL_SIP_SMC_RSU_ERROR 0x7
17
Sieu Mun Tang9f22cbf2022-03-02 11:04:09 +080018/* SiP mailbox error code */
19#define GENERIC_RESPONSE_ERROR 0x3FF
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080020
21/* SMC SiP service function identifier */
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080022
23/* FPGA Reconfig */
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080024#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
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080029
30/* Secure Register Access */
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080031#define INTEL_SIP_SMC_REG_READ 0xC2000007
32#define INTEL_SIP_SMC_REG_WRITE 0xC2000008
33#define INTEL_SIP_SMC_REG_UPDATE 0xC2000009
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080034
35/* Remote System Update */
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080036#define INTEL_SIP_SMC_RSU_STATUS 0xC200000B
37#define INTEL_SIP_SMC_RSU_UPDATE 0xC200000C
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080038#define INTEL_SIP_SMC_RSU_NOTIFY 0xC200000E
39#define INTEL_SIP_SMC_RSU_RETRY_COUNTER 0xC200000F
Sieu Mun Tang9f22cbf2022-03-02 11:04:09 +080040#define INTEL_SIP_SMC_RSU_DCMF_VERSION 0xC2000010
41#define INTEL_SIP_SMC_RSU_COPY_DCMF_VERSION 0xC2000011
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080042
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +080043
44/* ECC */
45#define INTEL_SIP_SMC_ECC_DBE 0xC200000D
46
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080047/* Send Mailbox Command */
Hadi Asyrafia33e8102019-12-17 19:30:41 +080048#define INTEL_SIP_SMC_MBOX_SEND_CMD 0xC200001E
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080049
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080050
51/* SiP Definitions */
52
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +080053/* ECC DBE */
54#define WARM_RESET_WFI_FLAG BIT(31)
55#define SYSMGR_ECC_DBE_COLD_RST_MASK (SYSMGR_ECC_OCRAM_MASK |\
56 SYSMGR_ECC_DDR0_MASK |\
57 SYSMGR_ECC_DDR1_MASK)
58
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080059/* SMC function IDs for SiP Service queries */
60#define SIP_SVC_CALL_COUNT 0x8200ff00
61#define SIP_SVC_UID 0x8200ff01
62#define SIP_SVC_VERSION 0x8200ff03
63
64/* SiP Service Calls version numbers */
65#define SIP_SVC_VERSION_MAJOR 0
66#define SIP_SVC_VERSION_MINOR 1
67
Abdul Halim, Muhammad Hadi Asyrafi20a07f32020-05-18 11:16:48 +080068
69/* Structure Definitions */
70struct fpga_config_info {
71 uint32_t addr;
72 int size;
73 int size_written;
74 uint32_t write_requested;
75 int subblocks_sent;
76 int block_number;
77};
78
79/* Function Definitions */
80
81bool is_address_in_ddr_range(uint64_t addr, uint64_t size);
82
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +080083/* ECC DBE */
84bool cold_reset_for_ecc_dbe(void);
85uint32_t intel_ecc_dbe_notification(uint64_t dbe_value);
86
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080087#endif /* SOCFPGA_SIP_SVC_H */