#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/mailbox_client.h>
#include <linux/mfd/syscon.h>
#include <linux/slab.h>
#include <linux/rpmsg.h>
#include <linux/idr.h>
#include <linux/circ_buf.h>
#include <linux/soc/qcom/smem.h>
#include <linux/sizes.h>
#include <linux/delay.h>
#include <linux/regmap.h>
#include <linux/workqueue.h>
#include <linux/list.h>
#include <linux/rpmsg/qcom_glink.h>
#include "qcom_glink_native.h"
#define FIFO_FULL_RESERVE …
#define FIFO_ALIGNMENT …
#define TX_BLOCKED_CMD_RESERVE …
#define SMEM_GLINK_NATIVE_XPRT_DESCRIPTOR …
#define SMEM_GLINK_NATIVE_XPRT_FIFO_0 …
#define SMEM_GLINK_NATIVE_XPRT_FIFO_1 …
struct qcom_glink_smem { … };
struct glink_smem_pipe { … };
#define to_smem_pipe(p) …
static size_t glink_smem_rx_avail(struct qcom_glink_pipe *np)
{ … }
static void glink_smem_rx_peek(struct qcom_glink_pipe *np,
void *data, unsigned int offset, size_t count)
{ … }
static void glink_smem_rx_advance(struct qcom_glink_pipe *np,
size_t count)
{ … }
static size_t glink_smem_tx_avail(struct qcom_glink_pipe *np)
{ … }
static unsigned int glink_smem_tx_write_one(struct glink_smem_pipe *pipe,
unsigned int head,
const void *data, size_t count)
{ … }
static void glink_smem_tx_write(struct qcom_glink_pipe *glink_pipe,
const void *hdr, size_t hlen,
const void *data, size_t dlen)
{ … }
static void glink_smem_tx_kick(struct qcom_glink_pipe *glink_pipe)
{ … }
static irqreturn_t qcom_glink_smem_intr(int irq, void *data)
{ … }
static void qcom_glink_smem_release(struct device *dev)
{ … }
struct qcom_glink_smem *qcom_glink_smem_register(struct device *parent,
struct device_node *node)
{ … }
EXPORT_SYMBOL_GPL(…);
void qcom_glink_smem_unregister(struct qcom_glink_smem *smem)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;