#include <linux/bitmap.h>
#include <linux/bitops.h>
#include <linux/dma-mapping.h>
#include <linux/dmaengine.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/of_dma.h>
#include <linux/platform_device.h>
#include <dt-bindings/dma/nbpfaxi.h>
#define NBPF_REG_CHAN_OFFSET 0
#define NBPF_REG_CHAN_SIZE 0x40
#define NBPF_CHAN_CUR_TR_BYTE 0x20
#define NBPF_CHAN_STAT 0x24
#define NBPF_CHAN_STAT_EN 1
#define NBPF_CHAN_STAT_TACT 4
#define NBPF_CHAN_STAT_ERR 0x10
#define NBPF_CHAN_STAT_END 0x20
#define NBPF_CHAN_STAT_TC 0x40
#define NBPF_CHAN_STAT_DER 0x400
#define NBPF_CHAN_CTRL 0x28
#define NBPF_CHAN_CTRL_SETEN 1
#define NBPF_CHAN_CTRL_CLREN 2
#define NBPF_CHAN_CTRL_STG 4
#define NBPF_CHAN_CTRL_SWRST 8
#define NBPF_CHAN_CTRL_CLRRQ 0x10
#define NBPF_CHAN_CTRL_CLREND 0x20
#define NBPF_CHAN_CTRL_CLRTC 0x40
#define NBPF_CHAN_CTRL_SETSUS 0x100
#define NBPF_CHAN_CTRL_CLRSUS 0x200
#define NBPF_CHAN_CFG 0x2c
#define NBPF_CHAN_CFG_SEL 7
#define NBPF_CHAN_CFG_REQD 8
#define NBPF_CHAN_CFG_LOEN 0x10
#define NBPF_CHAN_CFG_HIEN 0x20
#define NBPF_CHAN_CFG_LVL 0x40
#define NBPF_CHAN_CFG_AM 0x700
#define NBPF_CHAN_CFG_SDS 0xf000
#define NBPF_CHAN_CFG_DDS 0xf0000