diff options
Diffstat (limited to 'include/linux/dma/dw.h')
-rw-r--r-- | include/linux/dma/dw.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/include/linux/dma/dw.h b/include/linux/dma/dw.h new file mode 100644 index 000000000..9752f3745 --- /dev/null +++ b/include/linux/dma/dw.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Driver for the Synopsys DesignWare DMA Controller + * + * Copyright (C) 2007 Atmel Corporation + * Copyright (C) 2010-2011 ST Microelectronics + * Copyright (C) 2014 Intel Corporation + */ +#ifndef _DMA_DW_H +#define _DMA_DW_H + +#include <linux/clk.h> +#include <linux/device.h> +#include <linux/dmaengine.h> + +#include <linux/platform_data/dma-dw.h> + +struct dw_dma; + +/** + * struct dw_dma_chip - representation of DesignWare DMA controller hardware + * @dev: struct device of the DMA controller + * @id: instance ID + * @irq: irq line + * @regs: memory mapped I/O space + * @clk: hclk clock + * @dw: struct dw_dma that is filed by dw_dma_probe() + * @pdata: pointer to platform data + */ +struct dw_dma_chip { + struct device *dev; + int id; + int irq; + void __iomem *regs; + struct clk *clk; + struct dw_dma *dw; + + const struct dw_dma_platform_data *pdata; +}; + +/* Export to the platform drivers */ +#if IS_ENABLED(CONFIG_DW_DMAC_CORE) +int dw_dma_probe(struct dw_dma_chip *chip); +int dw_dma_remove(struct dw_dma_chip *chip); +int idma32_dma_probe(struct dw_dma_chip *chip); +int idma32_dma_remove(struct dw_dma_chip *chip); +#else +static inline int dw_dma_probe(struct dw_dma_chip *chip) { return -ENODEV; } +static inline int dw_dma_remove(struct dw_dma_chip *chip) { return 0; } +static inline int idma32_dma_probe(struct dw_dma_chip *chip) { return -ENODEV; } +static inline int idma32_dma_remove(struct dw_dma_chip *chip) { return 0; } +#endif /* CONFIG_DW_DMAC_CORE */ + +#endif /* _DMA_DW_H */ |