162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Driver for the Synopsys DesignWare DMA Controller 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2007 Atmel Corporation 662306a36Sopenharmony_ci * Copyright (C) 2010-2011 ST Microelectronics 762306a36Sopenharmony_ci * Copyright (C) 2014 Intel Corporation 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci#ifndef _DMA_DW_H 1062306a36Sopenharmony_ci#define _DMA_DW_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/clk.h> 1362306a36Sopenharmony_ci#include <linux/device.h> 1462306a36Sopenharmony_ci#include <linux/dmaengine.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <linux/platform_data/dma-dw.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct dw_dma; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/** 2162306a36Sopenharmony_ci * struct dw_dma_chip - representation of DesignWare DMA controller hardware 2262306a36Sopenharmony_ci * @dev: struct device of the DMA controller 2362306a36Sopenharmony_ci * @id: instance ID 2462306a36Sopenharmony_ci * @irq: irq line 2562306a36Sopenharmony_ci * @regs: memory mapped I/O space 2662306a36Sopenharmony_ci * @clk: hclk clock 2762306a36Sopenharmony_ci * @dw: struct dw_dma that is filed by dw_dma_probe() 2862306a36Sopenharmony_ci * @pdata: pointer to platform data 2962306a36Sopenharmony_ci */ 3062306a36Sopenharmony_cistruct dw_dma_chip { 3162306a36Sopenharmony_ci struct device *dev; 3262306a36Sopenharmony_ci int id; 3362306a36Sopenharmony_ci int irq; 3462306a36Sopenharmony_ci void __iomem *regs; 3562306a36Sopenharmony_ci struct clk *clk; 3662306a36Sopenharmony_ci struct dw_dma *dw; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci const struct dw_dma_platform_data *pdata; 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci/* Export to the platform drivers */ 4262306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_DW_DMAC_CORE) 4362306a36Sopenharmony_ciint dw_dma_probe(struct dw_dma_chip *chip); 4462306a36Sopenharmony_ciint dw_dma_remove(struct dw_dma_chip *chip); 4562306a36Sopenharmony_ciint idma32_dma_probe(struct dw_dma_chip *chip); 4662306a36Sopenharmony_ciint idma32_dma_remove(struct dw_dma_chip *chip); 4762306a36Sopenharmony_ci#else 4862306a36Sopenharmony_cistatic inline int dw_dma_probe(struct dw_dma_chip *chip) { return -ENODEV; } 4962306a36Sopenharmony_cistatic inline int dw_dma_remove(struct dw_dma_chip *chip) { return 0; } 5062306a36Sopenharmony_cistatic inline int idma32_dma_probe(struct dw_dma_chip *chip) { return -ENODEV; } 5162306a36Sopenharmony_cistatic inline int idma32_dma_remove(struct dw_dma_chip *chip) { return 0; } 5262306a36Sopenharmony_ci#endif /* CONFIG_DW_DMAC_CORE */ 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#endif /* _DMA_DW_H */ 55