blob: e789880b5ddd068972eca96df44d53f33518f7bd [file] [log] [blame]
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001/*
2 * Copyright (c) 2018, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef __SPRT_SVC_H__
8#define __SPRT_SVC_H__
9
10#include <smccc.h>
11#include <utils_def.h>
12
13/* SPRT_VERSION helpers */
14#define SPRT_VERSION_MAJOR U(0)
15#define SPRT_VERSION_MAJOR_SHIFT 16
16#define SPRT_VERSION_MAJOR_MASK U(0x7FFF)
17/* TODO: Move up minor version to 1 when SPRT is properly supported. */
18#define SPRT_VERSION_MINOR U(0)
19#define SPRT_VERSION_MINOR_SHIFT 0
20#define SPRT_VERSION_MINOR_MASK U(0xFFFF)
21#define SPRT_VERSION_FORM(major, minor) ((((major) & SPRT_VERSION_MAJOR_MASK) << SPRT_VERSION_MAJOR_SHIFT) | \
22 ((minor) & SPRT_VERSION_MINOR_MASK))
23#define SPRT_VERSION_COMPILED SPRT_VERSION_FORM(SPRT_VERSION_MAJOR, SPRT_VERSION_MINOR)
24
25/* TODO: Check all values below are correct when they're specified in SPRT. */
26
27/* SPRT function IDs */
28#define SPRT_FID_VERSION U(0x0)
29#define SPRT_FID_RETURN_RESPONSE U(0x1)
30
31#define SPRT_FID_MASK U(0xFF)
32
33/* Definitions to build the complete SMC ID */
34#define SPRT_SMC_ID(sprt_fid) ((FUNCID_SERV_SPRT << FUNCID_SERV_SHIFT) | \
35 (U(1) << 31) | ((sprt_fid) & SPRT_FID_MASK))
36
37/* Complete SMC IDs */
38#define SPRT_VERSION SPRT_SMC_ID(SPRT_FID_VERSION)
39#define SPRT_RETURN_RESPONSE SPRT_SMC_ID(SPRT_FID_RETURN_RESPONSE)
40
41/* SPRT error codes. */
42#define SPRT_SUCCESS 0
43#define SPRT_NOT_SUPPORTED -1
44#define SPRT_INVALID_PARAMETER -2
45
46#endif /* __SPRT_SVC_H__ */