linux/drivers/media/pci/cx18/cx18-mailbox.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *  cx18 mailbox functions
 *
 *  Copyright (C) 2007  Hans Verkuil <[email protected]>
 *  Copyright (C) 2008  Andy Walls <[email protected]>
 */

#ifndef _CX18_MAILBOX_H_
#define _CX18_MAILBOX_H_

/* mailbox max args */
#define MAX_MB_ARGUMENTS
/* compatibility, should be same as the define in cx2341x.h */
#define CX2341X_MBOX_MAX_DATA

#define MB_RESERVED_HANDLE_0
#define MB_RESERVED_HANDLE_1

#define APU
#define CPU
#define EPU
#define HPU

struct cx18;

/*
 * This structure is used by CPU to provide completed MDL & buffers information.
 * Its structure is dictated by the layout of the SCB, required by the
 * firmware, but its definition needs to be here, instead of in cx18-scb.h,
 * for mailbox work order scheduling
 */
struct cx18_mdl_ack {};

/* The cx18_mailbox struct is the mailbox structure which is used for passing
   messages between processors */
struct cx18_mailbox {};

struct cx18_stream;

int cx18_api(struct cx18 *cx, u32 cmd, int args, u32 data[]);
int cx18_vapi_result(struct cx18 *cx, u32 data[MAX_MB_ARGUMENTS], u32 cmd,
		int args, ...);
int cx18_vapi(struct cx18 *cx, u32 cmd, int args, ...);
int cx18_api_func(void *priv, u32 cmd, int in, int out,
		u32 data[CX2341X_MBOX_MAX_DATA]);

void cx18_api_epu_cmd_irq(struct cx18 *cx, int rpu);

void cx18_in_work_handler(struct work_struct *work);

#endif