Blame view

arch/arm/include/asm/arch-imx8/sci/sci.h 4.37 KB
bf494d7e9   Peng Fan   imx8: add scfw ma...
1
2
3
4
5
6
7
  /* SPDX-License-Identifier: GPL-2.0+ */
  /*
   * Copyright 2018 NXP
   */
  
  #ifndef _SC_SCI_H
  #define _SC_SCI_H
6c62280d1   Ye Li   MLK-21856 imx8: f...
8
  #include <common.h>
bf494d7e9   Peng Fan   imx8: add scfw ma...
9
10
11
12
13
  #include <asm/arch/sci/types.h>
  #include <asm/arch/sci/svc/misc/api.h>
  #include <asm/arch/sci/svc/pad/api.h>
  #include <asm/arch/sci/svc/pm/api.h>
  #include <asm/arch/sci/svc/rm/api.h>
4d2c578bc   Ye Li   MLK-21831-4 sci_a...
14
  #include <asm/arch/sci/svc/seco/api.h>
71e4d7373   Ye Li   MLK-22757-1 imx8:...
15
16
  #include <asm/arch/sci/svc/irq/api.h>
  #include <asm/arch/sci/svc/timer/api.h>
bf494d7e9   Peng Fan   imx8: add scfw ma...
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  #include <asm/arch/sci/rpc.h>
  #include <dt-bindings/soc/imx_rsrc.h>
  #include <linux/errno.h>
  
  static inline int sc_err_to_linux(sc_err_t err)
  {
  	int ret;
  
  	switch (err) {
  	case SC_ERR_NONE:
  		return 0;
  	case SC_ERR_VERSION:
  	case SC_ERR_CONFIG:
  	case SC_ERR_PARM:
  		ret = -EINVAL;
  		break;
  	case SC_ERR_NOACCESS:
  	case SC_ERR_LOCKED:
  	case SC_ERR_UNAVAILABLE:
  		ret = -EACCES;
  		break;
  	case SC_ERR_NOTFOUND:
  	case SC_ERR_NOPOWER:
  		ret = -ENODEV;
  		break;
  	case SC_ERR_IPC:
  		ret = -EIO;
  		break;
  	case SC_ERR_BUSY:
  		ret = -EBUSY;
  		break;
  	case SC_ERR_FAIL:
  		ret = -EIO;
  		break;
  	default:
  		ret = 0;
  		break;
  	}
  
  	debug("%s %d %d
  ", __func__, err, ret);
  
  	return ret;
  }
ad9d40acb   Peng Fan   misc: imx8: add s...
61
62
63
  /* PM API*/
  int sc_pm_set_resource_power_mode(sc_ipc_t ipc, sc_rsrc_t resource,
  				  sc_pm_power_mode_t mode);
e4a3fcc6f   Ye Li   MLK-14938-9 imx8:...
64
65
  int sc_pm_get_resource_power_mode(sc_ipc_t ipc, sc_rsrc_t resource,
  				sc_pm_power_mode_t *mode);
ad9d40acb   Peng Fan   misc: imx8: add s...
66
67
68
69
70
71
72
73
74
75
  int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
  			 sc_pm_clock_rate_t *rate);
  int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
  			 sc_pm_clock_rate_t *rate);
  int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
  			 sc_pm_clock_rate_t *rate);
  int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
  			 sc_pm_clock_rate_t *rate);
  int sc_pm_clock_enable(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
  		       sc_bool_t enable, sc_bool_t autog);
68cfec5f7   Ye Li   MLK-21831-3 scu_a...
76
77
  int sc_pm_set_clock_parent(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
  			sc_pm_clk_parent_t parent);
e4a3fcc6f   Ye Li   MLK-14938-9 imx8:...
78
79
  int sc_pm_cpu_start(sc_ipc_t ipc, sc_rsrc_t resource, sc_bool_t enable,
  			sc_faddr_t address);
d9bf3bde0   Ye Li   MLK-21831-6 imx8:...
80
  sc_bool_t sc_pm_is_partition_started(sc_ipc_t ipc, sc_rm_pt_t pt);
ad9d40acb   Peng Fan   misc: imx8: add s...
81
82
  
  /* MISC API */
a0ce4383a   Ye Li   MLK-21831 scu_api...
83
84
  int sc_misc_set_control(sc_ipc_t ipc, sc_rsrc_t resource,
  			sc_ctrl_t ctrl, u32 val);
ad9d40acb   Peng Fan   misc: imx8: add s...
85
86
87
88
89
90
  int sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl,
  			u32 *val);
  void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t *boot_dev);
  void sc_misc_boot_status(sc_ipc_t ipc, sc_misc_boot_status_t status);
  void sc_misc_build_info(sc_ipc_t ipc, u32 *build, u32 *commit);
  int sc_misc_otp_fuse_read(sc_ipc_t ipc, u32 word, u32 *val);
c54fe7ae5   Ye Li   MLK-21831-2 scu_a...
91
92
  int sc_misc_get_temp(sc_ipc_t ipc, sc_rsrc_t resource, sc_misc_temp_t temp,
  			s16 *celsius, s8 *tenths);
ad9d40acb   Peng Fan   misc: imx8: add s...
93
94
95
  
  /* RM API */
  sc_bool_t sc_rm_is_memreg_owned(sc_ipc_t ipc, sc_rm_mr_t mr);
4d2c578bc   Ye Li   MLK-21831-4 sci_a...
96
97
98
99
  int sc_rm_find_memreg(sc_ipc_t ipc, sc_rm_mr_t *mr,
  			sc_faddr_t addr_start, sc_faddr_t addr_end);
  int sc_rm_set_memreg_permissions(sc_ipc_t ipc, sc_rm_mr_t mr,
  			sc_rm_pt_t pt, sc_rm_perm_t perm);
ad9d40acb   Peng Fan   misc: imx8: add s...
100
101
102
  int sc_rm_get_memreg_info(sc_ipc_t ipc, sc_rm_mr_t mr, sc_faddr_t *addr_start,
  			  sc_faddr_t *addr_end);
  sc_bool_t sc_rm_is_resource_owned(sc_ipc_t ipc, sc_rsrc_t resource);
74177e884   Ye Li   MLK-21831-5 sci_a...
103
104
105
106
107
108
109
110
111
112
  int sc_rm_partition_alloc(sc_ipc_t ipc, sc_rm_pt_t *pt, sc_bool_t secure,
  			sc_bool_t isolated, sc_bool_t restricted, sc_bool_t grant, sc_bool_t coherent);
  int sc_rm_partition_free(sc_ipc_t ipc, sc_rm_pt_t pt);
  int sc_rm_get_partition(sc_ipc_t ipc, sc_rm_pt_t *pt);
  int sc_rm_set_parent(sc_ipc_t ipc, sc_rm_pt_t pt,
  			sc_rm_pt_t pt_parent);
  int sc_rm_assign_resource(sc_ipc_t ipc, sc_rm_pt_t pt,
  			sc_rsrc_t resource);
  int sc_rm_assign_pad(sc_ipc_t ipc, sc_rm_pt_t pt, sc_pad_t pad);
  sc_bool_t sc_rm_is_pad_owned(sc_ipc_t ipc, sc_pad_t pad);
d9bf3bde0   Ye Li   MLK-21831-6 imx8:...
113
114
  int sc_rm_get_resource_owner(sc_ipc_t ipc, sc_rsrc_t resource,
  			sc_rm_pt_t *pt);
ad9d40acb   Peng Fan   misc: imx8: add s...
115
116
117
  
  /* PAD API */
  int sc_pad_set(sc_ipc_t ipc, sc_pad_t pad, u32 val);
e5515b959   Ye Li   MLK-14938-8 imx8:...
118
119
120
121
  
  /* SMMU API */
  int sc_rm_set_master_sid(sc_ipc_t ipc, sc_rsrc_t resource,
      sc_rm_sid_t sid);
a0ae3c321   Ye Li   MLK-16441 imx8qm/...
122
  /* SECO API */
4d2c578bc   Ye Li   MLK-21831-4 sci_a...
123
124
125
126
127
  int sc_seco_authenticate(sc_ipc_t ipc,
  	sc_seco_auth_cmd_t cmd, sc_faddr_t addr);
  int sc_seco_forward_lifecycle(sc_ipc_t ipc, uint32_t change);
  int sc_seco_chip_info(sc_ipc_t ipc, uint16_t *lc,
  	uint16_t *monotonic, uint32_t *uid_l, uint32_t *uid_h);
a0ae3c321   Ye Li   MLK-16441 imx8qm/...
128
129
  void sc_seco_build_info(sc_ipc_t ipc, uint32_t *version,
  	uint32_t *commit);
4d2c578bc   Ye Li   MLK-21831-4 sci_a...
130
131
  int sc_seco_get_event(sc_ipc_t ipc, uint8_t idx,
  	uint32_t *event);
8de0d8ba5   Ye Li   MLK-21899 imx8: s...
132
133
  int sc_seco_gen_key_blob(sc_ipc_t ipc, uint32_t id,
  	sc_faddr_t load_addr, sc_faddr_t export_addr, uint16_t max_size);
a0ae3c321   Ye Li   MLK-16441 imx8qm/...
134

bf494d7e9   Peng Fan   imx8: add scfw ma...
135
  #endif