cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

delta-ipc.h (2916B)


      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 */
      6
      7#ifndef DELTA_IPC_H
      8#define DELTA_IPC_H
      9
     10int delta_ipc_init(struct delta_dev *delta);
     11void delta_ipc_exit(struct delta_dev *delta);
     12
     13/*
     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.
     36 */
     37
     38int 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);
     41
     42/*
     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
     49 */
     50int delta_ipc_set_stream(void *hdl, struct delta_ipc_param *param);
     51
     52/*
     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.
     66 */
     67int delta_ipc_decode(void *hdl, struct delta_ipc_param *param,
     68		     struct delta_ipc_param *status);
     69
     70/*
     71 * delta_ipc_close - close decoding instance
     72 * @hdl:		(in) handle of decoding instance to close.
     73 */
     74void delta_ipc_close(void *hdl);
     75
     76#endif /* DELTA_IPC_H */