#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/wait.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/device.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <sound/asound.h>
#include "sst-dsp.h"
#include "sst-dsp-priv.h"
#include "sst-ipc.h"
#define IPC_TIMEOUT_MSECS …
#define IPC_EMPTY_LIST_SIZE …
static struct ipc_message *msg_get_empty(struct sst_generic_ipc *ipc)
{ … }
static int tx_wait_done(struct sst_generic_ipc *ipc,
struct ipc_message *msg, struct sst_ipc_message *reply)
{ … }
static int ipc_tx_message(struct sst_generic_ipc *ipc,
struct sst_ipc_message request,
struct sst_ipc_message *reply, int wait)
{ … }
static int msg_empty_list_init(struct sst_generic_ipc *ipc)
{ … }
static void ipc_tx_msgs(struct work_struct *work)
{ … }
int sst_ipc_tx_message_wait(struct sst_generic_ipc *ipc,
struct sst_ipc_message request, struct sst_ipc_message *reply)
{ … }
EXPORT_SYMBOL_GPL(…);
int sst_ipc_tx_message_nowait(struct sst_generic_ipc *ipc,
struct sst_ipc_message request)
{ … }
EXPORT_SYMBOL_GPL(…);
int sst_ipc_tx_message_nopm(struct sst_generic_ipc *ipc,
struct sst_ipc_message request, struct sst_ipc_message *reply)
{ … }
EXPORT_SYMBOL_GPL(…);
struct ipc_message *sst_ipc_reply_find_msg(struct sst_generic_ipc *ipc,
u64 header)
{ … }
EXPORT_SYMBOL_GPL(…);
void sst_ipc_tx_msg_reply_complete(struct sst_generic_ipc *ipc,
struct ipc_message *msg)
{ … }
EXPORT_SYMBOL_GPL(…);
int sst_ipc_init(struct sst_generic_ipc *ipc)
{ … }
EXPORT_SYMBOL_GPL(…);
void sst_ipc_fini(struct sst_generic_ipc *ipc)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;