#include <dt-bindings/dma/at91.h>
#include <linux/dmaengine.h>
#include <linux/dmapool.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_dma.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#define AT_XDMAC_GTYPE 0x00
#define AT_XDMAC_NB_CH(i) (((i) & 0x1F) + 1)
#define AT_XDMAC_FIFO_SZ(i) (((i) >> 5) & 0x7FF)
#define AT_XDMAC_NB_REQ(i) ((((i) >> 16) & 0x3F) + 1)
#define AT_XDMAC_GCFG 0x04
#define AT_XDMAC_GWAC 0x08
#define AT_XDMAC_GIE 0x0C
#define AT_XDMAC_GID 0x10
#define AT_XDMAC_GIM 0x14
#define AT_XDMAC_GIS 0x18
#define AT_XDMAC_GRS 0x28
#define AT_XDMAC_GWS 0x2C
#define AT_XDMAC_GRWS 0x30
#define AT_XDMAC_GRWR 0x34
#define AT_XDMAC_GSWR 0x38
#define AT_XDMAC_GSWS 0x3C
#define AT_XDMAC_GSWF 0x40
#define AT_XDMAC_VERSION 0xFFC
#define AT_XDMAC_CIE 0x00
#define AT_XDMAC_CIE_BIE BIT(0)
#define AT_XDMAC_CIE_LIE BIT(1)
#define AT_XDMAC_CIE_DIE BIT(2)
#define AT_XDMAC_CIE_FIE BIT(3)
#define AT_XDMAC_CIE_RBEIE BIT(4)
#define AT_XDMAC_CIE_WBEIE BIT(5)
#define AT_XDMAC_CIE_ROIE BIT(6)
#define AT_XDMAC_CID 0x04
#define AT_XDMAC_CID_BID BIT(0)
#define AT_XDMAC_CID_LID BIT(1)
#define AT_XDMAC_CID_DID BIT(2)
#define AT_XDMAC_CID_FID BIT(3)
#define AT_XDMAC_CID_RBEID BIT(4)
#define AT_XDMAC_CID_WBEID BIT(5)
#define AT_XDMAC_CID_ROID BIT(6)
#define AT_XDMAC_CIM 0x08
#define AT_XDMAC_CIM_BIM BIT(0)
#define AT_XDMAC_CIM_LIM BIT(1)
#define AT_XDMAC_CIM_DIM BIT(2)
#define AT_XDMAC_CIM_FIM BIT(3)
#define AT_XDMAC_CIM_RBEIM BIT(4)
#define AT_XDMAC_CIM_WBEIM BIT(5)
#define AT_XDMAC_CIM_ROIM BIT(6)
#define AT_XDMAC_CIS 0x0C
#define AT_XDMAC_CIS_BIS BIT(0)
#define AT_XDMAC_CIS_LIS BIT(1)
#define AT_XDMAC_CIS_DIS BIT(2)
#define AT_XDMAC_CIS_FIS BIT(3)
#define AT_XDMAC_CIS_RBEIS BIT(4)
#define AT_XDMAC_CIS_WBEIS BIT(5)