ARM: rockchip: rk3228: add grf definition
[firefly-linux-kernel-4.4.55.git] / include / linux / sh_dma.h
index 425450b980b8a8e60ea532b76702d552c3da6857..b64d6bec6f903637617f06f153547295336d4133 100644 (file)
 #ifndef SH_DMA_H
 #define SH_DMA_H
 
-#include <linux/list.h>
 #include <linux/dmaengine.h>
+#include <linux/list.h>
+#include <linux/shdma-base.h>
+#include <linux/types.h>
+
+struct device;
 
 /* Used by slave DMA clients to request DMA to/from a specific peripheral */
 struct sh_dmae_slave {
-       unsigned int                    slave_id; /* Set by the platform */
-       struct device                   *dma_dev; /* Set by the platform */
-       const struct sh_dmae_slave_config       *config;  /* Set by the driver */
-};
-
-struct sh_dmae_regs {
-       u32 sar; /* SAR / source address */
-       u32 dar; /* DAR / destination address */
-       u32 tcr; /* TCR / transfer count */
-};
-
-struct sh_desc {
-       struct sh_dmae_regs hw;
-       struct list_head node;
-       struct dma_async_tx_descriptor async_tx;
-       enum dma_transfer_direction direction;
-       dma_cookie_t cookie;
-       size_t partial;
-       int chunks;
-       int mark;
+       struct shdma_slave              shdma_slave;    /* Set by the platform */
 };
 
+/*
+ * Supplied by platforms to specify, how a DMA channel has to be configured for
+ * a certain peripheral
+ */
 struct sh_dmae_slave_config {
-       unsigned int                    slave_id;
-       dma_addr_t                      addr;
-       u32                             chcr;
-       char                            mid_rid;
+       int             slave_id;
+       dma_addr_t      addr;
+       u32             chcr;
+       char            mid_rid;
 };
 
 struct sh_dmae_channel {
@@ -110,4 +99,6 @@ struct sh_dmae_pdata {
 #define CHCR_TE        0x00000002
 #define CHCR_IE        0x00000004
 
+bool shdma_chan_filter(struct dma_chan *chan, void *arg);
+
 #endif