1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Texas Instruments TI-SCI Processor Controller Helper Functions
5 * Copyright (C) 2018-2020 Texas Instruments Incorporated - https://www.ti.com/
6 * Suman Anna <s-anna@ti.com>
9 #ifndef REMOTEPROC_TI_SCI_PROC_H
10 #define REMOTEPROC_TI_SCI_PROC_H
12 #include <linux/soc/ti/ti_sci_protocol.h>
15 * struct ti_sci_proc - structure representing a processor control client
16 * @sci: cached TI-SCI protocol handle
17 * @ops: cached TI-SCI proc ops
18 * @dev: cached client device pointer
19 * @proc_id: processor id for the consumer remoteproc device
20 * @host_id: host id to pass the control over for this consumer remoteproc
24 const struct ti_sci_handle
*sci
;
25 const struct ti_sci_proc_ops
*ops
;
31 static inline int ti_sci_proc_request(struct ti_sci_proc
*tsp
)
35 ret
= tsp
->ops
->request(tsp
->sci
, tsp
->proc_id
);
37 dev_err(tsp
->dev
, "ti-sci processor request failed: %d\n",
42 static inline int ti_sci_proc_release(struct ti_sci_proc
*tsp
)
46 ret
= tsp
->ops
->release(tsp
->sci
, tsp
->proc_id
);
48 dev_err(tsp
->dev
, "ti-sci processor release failed: %d\n",
53 static inline int ti_sci_proc_handover(struct ti_sci_proc
*tsp
)
57 ret
= tsp
->ops
->handover(tsp
->sci
, tsp
->proc_id
, tsp
->host_id
);
59 dev_err(tsp
->dev
, "ti-sci processor handover of %d to %d failed: %d\n",
60 tsp
->proc_id
, tsp
->host_id
, ret
);
64 static inline int ti_sci_proc_set_config(struct ti_sci_proc
*tsp
,
66 u32 cfg_set
, u32 cfg_clr
)
70 ret
= tsp
->ops
->set_config(tsp
->sci
, tsp
->proc_id
, boot_vector
,
73 dev_err(tsp
->dev
, "ti-sci processor set_config failed: %d\n",
78 static inline int ti_sci_proc_set_control(struct ti_sci_proc
*tsp
,
79 u32 ctrl_set
, u32 ctrl_clr
)
83 ret
= tsp
->ops
->set_control(tsp
->sci
, tsp
->proc_id
, ctrl_set
, ctrl_clr
);
85 dev_err(tsp
->dev
, "ti-sci processor set_control failed: %d\n",
90 static inline int ti_sci_proc_get_status(struct ti_sci_proc
*tsp
,
91 u64
*boot_vector
, u32
*cfg_flags
,
92 u32
*ctrl_flags
, u32
*status_flags
)
96 ret
= tsp
->ops
->get_status(tsp
->sci
, tsp
->proc_id
, boot_vector
,
97 cfg_flags
, ctrl_flags
, status_flags
);
99 dev_err(tsp
->dev
, "ti-sci processor get_status failed: %d\n",
104 #endif /* REMOTEPROC_TI_SCI_PROC_H */