1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2018 NXP
4  */
5 
6 #ifndef _SC_SCI_H
7 #define _SC_SCI_H
8 
9 #include <asm/arch/sci/types.h>
10 #include <asm/arch/sci/svc/misc/api.h>
11 #include <asm/arch/sci/svc/pad/api.h>
12 #include <asm/arch/sci/svc/pm/api.h>
13 #include <asm/arch/sci/svc/rm/api.h>
14 #include <asm/arch/sci/rpc.h>
15 #include <dt-bindings/soc/imx_rsrc.h>
16 #include <linux/errno.h>
17 
18 static inline int sc_err_to_linux(sc_err_t err)
19 {
20 	int ret;
21 
22 	switch (err) {
23 	case SC_ERR_NONE:
24 		return 0;
25 	case SC_ERR_VERSION:
26 	case SC_ERR_CONFIG:
27 	case SC_ERR_PARM:
28 		ret = -EINVAL;
29 		break;
30 	case SC_ERR_NOACCESS:
31 	case SC_ERR_LOCKED:
32 	case SC_ERR_UNAVAILABLE:
33 		ret = -EACCES;
34 		break;
35 	case SC_ERR_NOTFOUND:
36 	case SC_ERR_NOPOWER:
37 		ret = -ENODEV;
38 		break;
39 	case SC_ERR_IPC:
40 		ret = -EIO;
41 		break;
42 	case SC_ERR_BUSY:
43 		ret = -EBUSY;
44 		break;
45 	case SC_ERR_FAIL:
46 		ret = -EIO;
47 		break;
48 	default:
49 		ret = 0;
50 		break;
51 	}
52 
53 	debug("%s %d %d\n", __func__, err, ret);
54 
55 	return ret;
56 }
57 
58 #endif
59