1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Common SBI related defines and macros to be used by RISC-V kernel, 4 * RISC-V KVM and userspace. 5 * 6 * Copyright (c) 2019 Western Digital Corporation or its affiliates. 7 */ 8 9 #ifndef __RISCV_SBI_H__ 10 #define __RISCV_SBI_H__ 11 12 enum sbi_ext_id { 13 SBI_EXT_0_1_SET_TIMER = 0x0, 14 SBI_EXT_0_1_CONSOLE_PUTCHAR = 0x1, 15 SBI_EXT_0_1_CONSOLE_GETCHAR = 0x2, 16 SBI_EXT_0_1_CLEAR_IPI = 0x3, 17 SBI_EXT_0_1_SEND_IPI = 0x4, 18 SBI_EXT_0_1_REMOTE_FENCE_I = 0x5, 19 SBI_EXT_0_1_REMOTE_SFENCE_VMA = 0x6, 20 SBI_EXT_0_1_REMOTE_SFENCE_VMA_ASID = 0x7, 21 SBI_EXT_0_1_SHUTDOWN = 0x8, 22 SBI_EXT_BASE = 0x10, 23 SBI_EXT_DBCN = 0x4442434E, 24 }; 25 26 enum sbi_ext_base_fid { 27 SBI_BASE_GET_SPEC_VERSION = 0, 28 SBI_BASE_GET_IMP_ID, 29 SBI_BASE_GET_IMP_VERSION, 30 SBI_BASE_PROBE_EXT, 31 SBI_BASE_GET_MVENDORID, 32 SBI_BASE_GET_MARCHID, 33 SBI_BASE_GET_MIMPID, 34 }; 35 36 enum sbi_ext_dbcn_fid { 37 SBI_EXT_DBCN_CONSOLE_WRITE = 0, 38 SBI_EXT_DBCN_CONSOLE_READ = 1, 39 SBI_EXT_DBCN_CONSOLE_WRITE_BYTE = 2, 40 }; 41 42 #define SBI_SPEC_VERSION_DEFAULT 0x1 43 #define SBI_SPEC_VERSION_MAJOR_OFFSET 24 44 #define SBI_SPEC_VERSION_MAJOR_MASK 0x7f 45 #define SBI_SPEC_VERSION_MINOR_MASK 0xffffff 46 47 /* SBI return error codes */ 48 #define SBI_SUCCESS 0 49 #define SBI_ERR_FAILURE -1 50 #define SBI_ERR_NOT_SUPPORTED -2 51 #define SBI_ERR_INVALID_PARAM -3 52 #define SBI_ERR_DENIED -4 53 #define SBI_ERR_INVALID_ADDRESS -5 54 #define SBI_ERR_ALREADY_AVAILABLE -6 55 #define SBI_ERR_ALREADY_STARTED -7 56 #define SBI_ERR_ALREADY_STOPPED -8 57 58 #endif 59