/* * Driver for the Atmel AHB DMA Controller (aka HDMA or DMAC on AT91 systems) * * Copyright (C) 2008 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * * This supports the Atmel AHB DMA Controller, * * The driver has currently been tested with the Atmel AT91SAM9RL * and AT91SAM9G45 series. */#include <linux/clk.h>#include <linux/dmaengine.h>#include <linux/dma-mapping.h>#include <linux/dmapool.h>#include <linux/interrupt.h>#include <linux/module.h>#include <linux/platform_device.h>#include <linux/slab.h>#include"at_hdmac_regs.h"/* * Glossary * -------- * * at_hdmac : Name of the ATmel AHB DMA Controller * at_dma_ / atdma : ATmel DMA controller entity related * atc_ / atchan : ATmel DMA Channel entity related */#define ATC_DEFAULT_CFG (ATC_FIFOCFG_HALFFIFO)#define ATC_DEFAULT_CTRLA (0)#define ATC_DEFAULT_CTRLB (ATC_SIF(AT_DMA_MEM_IF) \ |ATC_DIF(AT_DMA_MEM_IF))/* * Initial number of descriptors to allocate for each channel. This could * be increased during dma usage. */static unsigned int init_nr_desc_per_channel =64;module_param<