Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / drivers / media / platform / sti / delta / delta-ipc.h
blob9fba6b5d169a2bf5154821a87303349d5315fec5
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3 * Copyright (C) STMicroelectronics SA 2015
4 * Author: Hugues Fruchet <hugues.fruchet@st.com> for STMicroelectronics.
5 */
7 #ifndef DELTA_IPC_H
8 #define DELTA_IPC_H
10 int delta_ipc_init(struct delta_dev *delta);
11 void delta_ipc_exit(struct delta_dev *delta);
14 * delta_ipc_open - open a decoding instance on firmware side
15 * @ctx: (in) delta context
16 * @name: (in) name of decoder to be used
17 * @param: (in) open command parameters specific to decoder
18 * @param.size: (in) size of parameter
19 * @param.data: (in) virtual address of parameter
20 * @ipc_buf_size: (in) size of IPC shared buffer between host
21 * and copro used to share command data.
22 * Client have to set here the size of the biggest
23 * command parameters (+ status if any).
24 * Allocation will be done in this function which
25 * will give back to client in @ipc_buf the virtual
26 * & physical addresses & size of shared IPC buffer.
27 * All the further command data (parameters + status)
28 * have to be written in this shared IPC buffer
29 * virtual memory. This is done to avoid
30 * unnecessary copies of command data.
31 * @ipc_buf: (out) allocated IPC shared buffer
32 * @ipc_buf.size: (out) allocated size
33 * @ipc_buf.vaddr: (out) virtual address where to copy
34 * further command data
35 * @hdl: (out) handle of decoding instance.
38 int delta_ipc_open(struct delta_ctx *ctx, const char *name,
39 struct delta_ipc_param *param, u32 ipc_buf_size,
40 struct delta_buf **ipc_buf, void **hdl);
43 * delta_ipc_set_stream - set information about stream to decoder
44 * @hdl: (in) handle of decoding instance.
45 * @param: (in) set stream command parameters specific to decoder
46 * @param.size: (in) size of parameter
47 * @param.data: (in) virtual address of parameter. Must be
48 * within IPC shared buffer range
50 int delta_ipc_set_stream(void *hdl, struct delta_ipc_param *param);
53 * delta_ipc_decode - frame decoding synchronous request, returns only
54 * after decoding completion on firmware side.
55 * @hdl: (in) handle of decoding instance.
56 * @param: (in) decode command parameters specific to decoder
57 * @param.size: (in) size of parameter
58 * @param.data: (in) virtual address of parameter. Must be
59 * within IPC shared buffer range
60 * @status: (in/out) decode command status specific to decoder
61 * @status.size: (in) size of status
62 * @status.data: (in/out) virtual address of status. Must be
63 * within IPC shared buffer range.
64 * Status is filled by decoding instance
65 * after decoding completion.
67 int delta_ipc_decode(void *hdl, struct delta_ipc_param *param,
68 struct delta_ipc_param *status);
71 * delta_ipc_close - close decoding instance
72 * @hdl: (in) handle of decoding instance to close.
74 void delta_ipc_close(void *hdl);
76 #endif /* DELTA_IPC_H */