linux/drivers/dma/timb_dma.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * timb_dma.c timberdale FPGA DMA driver
 * Copyright (c) 2010 Intel Corporation
 */

/* Supports:
 * Timberdale FPGA DMA engine
 */

#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

/* Global DMA registers */
#define TIMBDMA_ACR
#define TIMBDMA_32BIT_ADDR

#define TIMBDMA_ISR
#define TIMBDMA_IPR
#define TIMBDMA_IER

/* Channel specific registers */
/* RX instances base addresses are 0x00, 0x40, 0x80 ...
 * TX instances base addresses are 0x18, 0x58, 0x98 ...
 */
#define TIMBDMA_INSTANCE_OFFSET
#define TIMBDMA_INSTANCE_TX_OFFSET

/* RX registers, relative the instance base */
#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
/* bytes per Row, video specific register
 * which is placed after the TX registers...
 */
#define TIMBDMA_OFFS_RX_BPRR

/* TX registers, relative the instance base */
#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)
{}

/* Must be called with the spinlock held */
static void __td_enable_chan_irq(struct timb_dma_chan *td_chan)
{}

/* Should be called with the spinlock held */
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)
{}

/* Must be called with the spinlock held */
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();