#include <linux/dmaengine.h>
#include <linux/dma-mapping.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/timb_dma.h>
#include "dmaengine.h"
#define DRIVER_NAME …
#define TIMBDMA_ACR …
#define TIMBDMA_32BIT_ADDR …
#define TIMBDMA_ISR …
#define TIMBDMA_IPR …
#define TIMBDMA_IER …
#define TIMBDMA_INSTANCE_OFFSET …
#define TIMBDMA_INSTANCE_TX_OFFSET …
#define TIMBDMA_OFFS_RX_DHAR …
#define TIMBDMA_OFFS_RX_DLAR …
#define TIMBDMA_OFFS_RX_LR …
#define TIMBDMA_OFFS_RX_BLR …
#define TIMBDMA_OFFS_RX_ER …
#define TIMBDMA_RX_EN …
#define TIMBDMA_OFFS_RX_BPRR …
#define TIMBDMA_OFFS_TX_DHAR …
#define TIMBDMA_OFFS_TX_DLAR …
#define TIMBDMA_OFFS_TX_BLR …
#define TIMBDMA_OFFS_TX_LR …
#define TIMB_DMA_DESC_SIZE …
struct timb_dma_desc { … };
struct timb_dma_chan { … };
struct timb_dma { … };
static struct device *chan2dev(struct dma_chan *chan)
{ … }
static struct device *chan2dmadev(struct dma_chan *chan)
{ … }
static struct timb_dma *tdchantotd(struct timb_dma_chan *td_chan)
{ … }
static void __td_enable_chan_irq(struct timb_dma_chan *td_chan)
{ … }
static bool __td_dma_done_ack(struct timb_dma_chan *td_chan)
{ … }
static int td_fill_desc(struct timb_dma_chan *td_chan, u8 *dma_desc,
struct scatterlist *sg, bool last)
{ … }
static void __td_start_dma(struct timb_dma_chan *td_chan)
{ … }
static void __td_finish(struct timb_dma_chan *td_chan)
{ … }
static u32 __td_ier_mask(struct timb_dma *td)
{ … }
static void __td_start_next(struct timb_dma_chan *td_chan)
{ … }
static dma_cookie_t td_tx_submit(struct dma_async_tx_descriptor *txd)
{ … }
static struct timb_dma_desc *td_alloc_init_desc(struct timb_dma_chan *td_chan)
{ … }
static void td_free_desc(struct timb_dma_desc *td_desc)
{ … }
static void td_desc_put(struct timb_dma_chan *td_chan,
struct timb_dma_desc *td_desc)
{ … }
static struct timb_dma_desc *td_desc_get(struct timb_dma_chan *td_chan)
{ … }
static int td_alloc_chan_resources(struct dma_chan *chan)
{ … }
static void td_free_chan_resources(struct dma_chan *chan)
{ … }
static enum dma_status td_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
struct dma_tx_state *txstate)
{ … }
static void td_issue_pending(struct dma_chan *chan)
{ … }
static struct dma_async_tx_descriptor *td_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 td_terminate_all(struct dma_chan *chan)
{ … }
static void td_tasklet(struct tasklet_struct *t)
{ … }
static irqreturn_t td_irq(int irq, void *devid)
{ … }
static int td_probe(struct platform_device *pdev)
{ … }
static void td_remove(struct platform_device *pdev)
{ … }
static struct platform_driver td_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS(…) …;