#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/dmaengine.h>
#include <linux/dma-mapping.h>
#include <linux/dmapool.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/dma/idma64.h>
#include "idma64.h"
#define IDMA64_NR_CHAN …
static struct device *chan2dev(struct dma_chan *chan)
{ … }
static void idma64_off(struct idma64 *idma64)
{ … }
static void idma64_on(struct idma64 *idma64)
{ … }
static void idma64_chan_init(struct idma64 *idma64, struct idma64_chan *idma64c)
{ … }
static void idma64_chan_stop(struct idma64 *idma64, struct idma64_chan *idma64c)
{ … }
static void idma64_chan_start(struct idma64 *idma64, struct idma64_chan *idma64c)
{ … }
static void idma64_stop_transfer(struct idma64_chan *idma64c)
{ … }
static void idma64_start_transfer(struct idma64_chan *idma64c)
{ … }
static void idma64_chan_irq(struct idma64 *idma64, unsigned short c,
u32 status_err, u32 status_xfer)
{ … }
static irqreturn_t idma64_irq(int irq, void *dev)
{ … }
static struct idma64_desc *idma64_alloc_desc(unsigned int ndesc)
{ … }
static void idma64_desc_free(struct idma64_chan *idma64c,
struct idma64_desc *desc)
{ … }
static void idma64_vdesc_free(struct virt_dma_desc *vdesc)
{ … }
static void idma64_hw_desc_fill(struct idma64_hw_desc *hw,
struct dma_slave_config *config,
enum dma_transfer_direction direction, u64 llp)
{ … }
static void idma64_desc_fill(struct idma64_chan *idma64c,
struct idma64_desc *desc)
{ … }
static struct dma_async_tx_descriptor *idma64_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 void idma64_issue_pending(struct dma_chan *chan)
{ … }
static size_t idma64_active_desc_size(struct idma64_chan *idma64c)
{ … }
static enum dma_status idma64_tx_status(struct dma_chan *chan,
dma_cookie_t cookie, struct dma_tx_state *state)
{ … }
static void convert_burst(u32 *maxburst)
{ … }
static int idma64_slave_config(struct dma_chan *chan,
struct dma_slave_config *config)
{ … }
static void idma64_chan_deactivate(struct idma64_chan *idma64c, bool drain)
{ … }
static void idma64_chan_activate(struct idma64_chan *idma64c)
{ … }
static int idma64_pause(struct dma_chan *chan)
{ … }
static int idma64_resume(struct dma_chan *chan)
{ … }
static int idma64_terminate_all(struct dma_chan *chan)
{ … }
static void idma64_synchronize(struct dma_chan *chan)
{ … }
static int idma64_alloc_chan_resources(struct dma_chan *chan)
{ … }
static void idma64_free_chan_resources(struct dma_chan *chan)
{ … }
#define IDMA64_BUSWIDTHS …
static int idma64_probe(struct idma64_chip *chip)
{ … }
static void idma64_remove(struct idma64_chip *chip)
{ … }
static int idma64_platform_probe(struct platform_device *pdev)
{ … }
static void idma64_platform_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused idma64_pm_suspend(struct device *dev)
{ … }
static int __maybe_unused idma64_pm_resume(struct device *dev)
{ … }
static const struct dev_pm_ops idma64_dev_pm_ops = …;
static struct platform_driver idma64_platform_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS(…) …;