1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * Driver for the Synopsys DesignWare DMA Controller |
4 | * |
5 | * Copyright (C) 2007 Atmel Corporation |
6 | * Copyright (C) 2010-2011 ST Microelectronics |
7 | * Copyright (C) 2014 Intel Corporation |
8 | */ |
9 | #ifndef _DMA_DW_H |
10 | #define _DMA_DW_H |
11 | |
12 | #include <linux/clk.h> |
13 | #include <linux/device.h> |
14 | #include <linux/dmaengine.h> |
15 | |
16 | #include <linux/platform_data/dma-dw.h> |
17 | |
18 | struct dw_dma; |
19 | |
20 | /** |
21 | * struct dw_dma_chip - representation of DesignWare DMA controller hardware |
22 | * @dev: struct device of the DMA controller |
23 | * @id: instance ID |
24 | * @irq: irq line |
25 | * @regs: memory mapped I/O space |
26 | * @clk: hclk clock |
27 | * @dw: struct dw_dma that is filed by dw_dma_probe() |
28 | * @pdata: pointer to platform data |
29 | */ |
30 | struct dw_dma_chip { |
31 | struct device *dev; |
32 | int id; |
33 | int irq; |
34 | void __iomem *regs; |
35 | struct clk *clk; |
36 | struct dw_dma *dw; |
37 | |
38 | const struct dw_dma_platform_data *pdata; |
39 | }; |
40 | |
41 | /* Export to the platform drivers */ |
42 | #if IS_ENABLED(CONFIG_DW_DMAC_CORE) |
43 | int dw_dma_probe(struct dw_dma_chip *chip); |
44 | int dw_dma_remove(struct dw_dma_chip *chip); |
45 | int idma32_dma_probe(struct dw_dma_chip *chip); |
46 | int idma32_dma_remove(struct dw_dma_chip *chip); |
47 | #else |
48 | static inline int dw_dma_probe(struct dw_dma_chip *chip) { return -ENODEV; } |
49 | static inline int dw_dma_remove(struct dw_dma_chip *chip) { return 0; } |
50 | static inline int idma32_dma_probe(struct dw_dma_chip *chip) { return -ENODEV; } |
51 | static inline int idma32_dma_remove(struct dw_dma_chip *chip) { return 0; } |
52 | #endif /* CONFIG_DW_DMAC_CORE */ |
53 | |
54 | #endif /* _DMA_DW_H */ |
55 | |