dev_err(chan2dev(chan), "BUG: %s caught DWAXIDMAC_IRQ_DMA_TRF, but channel not idle!\n",
#include <linux/bitops.h>
#include <linux/device.h>
#include <linux/dmaengine.h>
#include <linux/dmapool.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/property.h>
#include "../dmaengine.h"
#define AXI_DMA_BUSWIDTHS \
(DMA_SLAVE_BUSWIDTH_1_BYTE | \
DMA_SLAVE_BUSWIDTH_2_BYTES | \
DMA_SLAVE_BUSWIDTH_4_BYTES | \
DMA_SLAVE_BUSWIDTH_8_BYTES | \
DMA_SLAVE_BUSWIDTH_16_BYTES | \
DMA_SLAVE_BUSWIDTH_32_BYTES | \
DMA_SLAVE_BUSWIDTH_64_BYTES)
axi_dma_iowrite32(struct axi_dma_chip *chip, u32 reg, u32 val)
iowrite32(val, chip->regs + reg);
static inline u32 axi_dma_ioread32(struct axi_dma_chip *chip, u32 reg)
return ioread32(chip->regs + reg);
axi_chan_iowrite32(struct axi_dma_chan *chan, u32 reg, u32 val)
iowrite32(val, chan->chan_regs + reg);
static inline u32 axi_chan_ioread32(struct axi_dma_chan *chan, u32 reg)
return ioread32(chan->chan_regs + reg);
axi_chan_iowrite64(struct axi_dma_chan *chan, u32 reg, u64 val)
iowrite32(lower_32_bits(val), chan->chan_regs + reg);
iowrite32(upper_32_bits(val), chan->chan_regs + reg + 4);
static inline void axi_dma_disable(struct axi_dma_chip *chip)
val = axi_dma_ioread32(chip, DMAC_CFG);
axi_dma_iowrite32(chip, DMAC_CFG, val);
static inline void axi_dma_enable(struct axi_dma_chip *chip)
val = axi_dma_ioread32(chip, DMAC_CFG);
axi_dma_iowrite32(chip, DMAC_CFG, val);