blob: ca6f1f85695a101dfe1f44b3ce0bd93382de74b4 [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
Sieu Mun Tang54064982022-04-28 22:40:58 +080030/* FPGA Bitstream Flag */
31#define FLAG_PARTIAL_CONFIG BIT(0)
32#define FLAG_AUTHENTICATION BIT(1)
33#define CONFIG_TEST_FLAG(_flag, _type) (((flag) & FLAG_##_type) \
34 == FLAG_##_type)
35
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080036/* Secure Register Access */
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080037#define INTEL_SIP_SMC_REG_READ 0xC2000007
38#define INTEL_SIP_SMC_REG_WRITE 0xC2000008
39#define INTEL_SIP_SMC_REG_UPDATE 0xC2000009
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080040
41/* Remote System Update */
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080042#define INTEL_SIP_SMC_RSU_STATUS 0xC200000B
43#define INTEL_SIP_SMC_RSU_UPDATE 0xC200000C
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080044#define INTEL_SIP_SMC_RSU_NOTIFY 0xC200000E
45#define INTEL_SIP_SMC_RSU_RETRY_COUNTER 0xC200000F
Sieu Mun Tang9f22cbf2022-03-02 11:04:09 +080046#define INTEL_SIP_SMC_RSU_DCMF_VERSION 0xC2000010
47#define INTEL_SIP_SMC_RSU_COPY_DCMF_VERSION 0xC2000011
Chee Hong Ang681631b2020-07-01 14:22:25 +080048#define INTEL_SIP_SMC_RSU_MAX_RETRY 0xC2000012
49#define INTEL_SIP_SMC_RSU_COPY_MAX_RETRY 0xC2000013
Sieu Mun Tange6d5de92022-04-28 22:21:01 +080050#define INTEL_SIP_SMC_RSU_DCMF_STATUS 0xC2000014
51#define INTEL_SIP_SMC_RSU_COPY_DCMF_STATUS 0xC2000015
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080052
Kris Chapline768dfa2021-06-25 11:31:52 +010053/* Hardware monitor */
54#define INTEL_SIP_SMC_HWMON_READTEMP 0xC2000020
55#define INTEL_SIP_SMC_HWMON_READVOLT 0xC2000021
56#define TEMP_CHANNEL_MAX (1 << 15)
57#define VOLT_CHANNEL_MAX (1 << 15)
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +080058
59/* ECC */
60#define INTEL_SIP_SMC_ECC_DBE 0xC200000D
61
Sieu Mun Tanga34b8812022-03-17 03:11:55 +080062/* Generic Command */
Sieu Mun Tang82cf5df2022-05-05 17:07:21 +080063#define INTEL_SIP_SMC_HPS_SET_BRIDGES 0xC2000032
Sieu Mun Tanga34b8812022-03-17 03:11:55 +080064#define INTEL_SIP_SMC_GET_ROM_PATCH_SHA384 0xC2000040
65
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080066/* Send Mailbox Command */
Hadi Asyrafia33e8102019-12-17 19:30:41 +080067#define INTEL_SIP_SMC_MBOX_SEND_CMD 0xC200001E
Abdul Halim, Muhammad Hadi Asyrafid9006fc2021-02-05 11:50:58 +080068#define INTEL_SIP_SMC_FIRMWARE_VERSION 0xC200001F
Abdul Halim, Muhammad Hadi Asyrafib30ce3f2020-06-18 16:21:29 +080069#define INTEL_SIP_SMC_HPS_SET_BRIDGES 0xC2000032
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080070
Sieu Mun Tang2b8e0052022-04-27 18:57:29 +080071/* Mailbox Command */
72#define INTEL_SIP_SMC_GET_USERCODE 0xC200003D
Abdul Halim, Muhammad Hadi Asyrafiec164b62020-05-14 14:53:29 +080073
74/* SiP Definitions */
75
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +080076/* ECC DBE */
77#define WARM_RESET_WFI_FLAG BIT(31)
Sieu Mun Tang54064982022-04-28 22:40:58 +080078#define SYSMGR_ECC_DBE_COLD_RST_MASK (SYSMGR_ECC_OCRAM_MASK |\
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +080079 SYSMGR_ECC_DDR0_MASK |\
80 SYSMGR_ECC_DDR1_MASK)
81
Sieu Mun Tangf9cb6572022-04-27 18:24:06 +080082/* Non-mailbox SMC Call */
Sieu Mun Tang54064982022-04-28 22:40:58 +080083#define INTEL_SIP_SMC_SVC_VERSION 0xC2000200
Sieu Mun Tangf9cb6572022-04-27 18:24:06 +080084
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080085/* SMC function IDs for SiP Service queries */
Sieu Mun Tang54064982022-04-28 22:40:58 +080086#define SIP_SVC_CALL_COUNT 0x8200ff00
87#define SIP_SVC_UID 0x8200ff01
88#define SIP_SVC_VERSION 0x8200ff03
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080089
90/* SiP Service Calls version numbers */
Sieu Mun Tang54064982022-04-28 22:40:58 +080091#define SIP_SVC_VERSION_MAJOR 1
92#define SIP_SVC_VERSION_MINOR 0
Hadi Asyrafiab1132f2019-10-22 10:31:45 +080093
Abdul Halim, Muhammad Hadi Asyrafi20a07f32020-05-18 11:16:48 +080094
95/* Structure Definitions */
96struct fpga_config_info {
97 uint32_t addr;
98 int size;
99 int size_written;
100 uint32_t write_requested;
101 int subblocks_sent;
102 int block_number;
103};
104
105/* Function Definitions */
106
107bool is_address_in_ddr_range(uint64_t addr, uint64_t size);
108
Sieu Mun Tangdbcc2cf2022-03-07 12:13:04 +0800109/* ECC DBE */
110bool cold_reset_for_ecc_dbe(void);
111uint32_t intel_ecc_dbe_notification(uint64_t dbe_value);
112
Sieu Mun Tang82cf5df2022-05-05 17:07:21 +0800113/* Miscellaneous HPS services */
114uint32_t intel_hps_set_bridges(uint64_t enable, uint64_t mask);
115
Hadi Asyrafiab1132f2019-10-22 10:31:45 +0800116#endif /* SOCFPGA_SIP_SVC_H */