#include <linux/bits.h>
#include <linux/clk.h>
#include <linux/dma-mapping.h>
#include <linux/interrupt.h>
#include <linux/iopoll.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/of_dma.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/bitfield.h>
#include "virt-dma.h"
#define MLB_HDMAC_DMACR …
#define MLB_HDMAC_DE …
#define MLB_HDMAC_DS …
#define MLB_HDMAC_PR …
#define MLB_HDMAC_DH …
#define MLB_HDMAC_CH_STRIDE …
#define MLB_HDMAC_DMACA …
#define MLB_HDMAC_EB …
#define MLB_HDMAC_PB …
#define MLB_HDMAC_ST …
#define MLB_HDMAC_IS …
#define MLB_HDMAC_BT …
#define MLB_HDMAC_BC …
#define MLB_HDMAC_TC …
#define MLB_HDMAC_DMACB …
#define MLB_HDMAC_TT …
#define MLB_HDMAC_MS …
#define MLB_HDMAC_TW …
#define MLB_HDMAC_FS …
#define MLB_HDMAC_FD …
#define MLB_HDMAC_RC …
#define MLB_HDMAC_RS …
#define MLB_HDMAC_RD …
#define MLB_HDMAC_EI …
#define MLB_HDMAC_CI …
#define HDMAC_PAUSE …
#define MLB_HDMAC_SS …
#define MLB_HDMAC_SP …
#define MLB_HDMAC_DP …
#define MLB_HDMAC_DMACSA …
#define MLB_HDMAC_DMACDA …
#define MLB_HDMAC_BUSWIDTHS …
struct milbeaut_hdmac_desc { … };
struct milbeaut_hdmac_chan { … };
struct milbeaut_hdmac_device { … };
static struct milbeaut_hdmac_chan *
to_milbeaut_hdmac_chan(struct virt_dma_chan *vc)
{ … }
static struct milbeaut_hdmac_desc *
to_milbeaut_hdmac_desc(struct virt_dma_desc *vd)
{ … }
static struct milbeaut_hdmac_desc *
milbeaut_hdmac_next_desc(struct milbeaut_hdmac_chan *mc)
{ … }
static void milbeaut_chan_start(struct milbeaut_hdmac_chan *mc,
struct milbeaut_hdmac_desc *md)
{ … }
static void milbeaut_hdmac_start(struct milbeaut_hdmac_chan *mc)
{ … }
static irqreturn_t milbeaut_hdmac_interrupt(int irq, void *dev_id)
{ … }
static void milbeaut_hdmac_free_chan_resources(struct dma_chan *chan)
{ … }
static int
milbeaut_hdmac_chan_config(struct dma_chan *chan, struct dma_slave_config *cfg)
{ … }
static int milbeaut_hdmac_chan_pause(struct dma_chan *chan)
{ … }
static int milbeaut_hdmac_chan_resume(struct dma_chan *chan)
{ … }
static struct dma_async_tx_descriptor *
milbeaut_hdmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
unsigned int sg_len,
enum dma_transfer_direction direction,
unsigned long flags, void *context)
{ … }
static int milbeaut_hdmac_terminate_all(struct dma_chan *chan)
{ … }
static void milbeaut_hdmac_synchronize(struct dma_chan *chan)
{ … }
static enum dma_status milbeaut_hdmac_tx_status(struct dma_chan *chan,
dma_cookie_t cookie,
struct dma_tx_state *txstate)
{ … }
static void milbeaut_hdmac_issue_pending(struct dma_chan *chan)
{ … }
static void milbeaut_hdmac_desc_free(struct virt_dma_desc *vd)
{ … }
static struct dma_chan *
milbeaut_hdmac_xlate(struct of_phandle_args *dma_spec, struct of_dma *of_dma)
{ … }
static int milbeaut_hdmac_chan_init(struct platform_device *pdev,
struct milbeaut_hdmac_device *mdev,
int chan_id)
{ … }
static int milbeaut_hdmac_probe(struct platform_device *pdev)
{ … }
static void milbeaut_hdmac_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id milbeaut_hdmac_match[] = …;
MODULE_DEVICE_TABLE(of, milbeaut_hdmac_match);
static struct platform_driver milbeaut_hdmac_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;