internal.h (2599B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Driver for the Synopsys DesignWare DMA Controller 4 * 5 * Copyright (C) 2013 Intel Corporation 6 */ 7 8#ifndef _DMA_DW_INTERNAL_H 9#define _DMA_DW_INTERNAL_H 10 11#include <linux/dma/dw.h> 12 13#include "regs.h" 14 15int do_dma_probe(struct dw_dma_chip *chip); 16int do_dma_remove(struct dw_dma_chip *chip); 17 18void do_dw_dma_on(struct dw_dma *dw); 19void do_dw_dma_off(struct dw_dma *dw); 20 21int do_dw_dma_disable(struct dw_dma_chip *chip); 22int do_dw_dma_enable(struct dw_dma_chip *chip); 23 24extern bool dw_dma_filter(struct dma_chan *chan, void *param); 25 26#ifdef CONFIG_ACPI 27void dw_dma_acpi_controller_register(struct dw_dma *dw); 28void dw_dma_acpi_controller_free(struct dw_dma *dw); 29#else /* !CONFIG_ACPI */ 30static inline void dw_dma_acpi_controller_register(struct dw_dma *dw) {} 31static inline void dw_dma_acpi_controller_free(struct dw_dma *dw) {} 32#endif /* !CONFIG_ACPI */ 33 34struct platform_device; 35 36#ifdef CONFIG_OF 37struct dw_dma_platform_data *dw_dma_parse_dt(struct platform_device *pdev); 38void dw_dma_of_controller_register(struct dw_dma *dw); 39void dw_dma_of_controller_free(struct dw_dma *dw); 40#else 41static inline struct dw_dma_platform_data *dw_dma_parse_dt(struct platform_device *pdev) 42{ 43 return NULL; 44} 45static inline void dw_dma_of_controller_register(struct dw_dma *dw) {} 46static inline void dw_dma_of_controller_free(struct dw_dma *dw) {} 47#endif 48 49struct dw_dma_chip_pdata { 50 const struct dw_dma_platform_data *pdata; 51 int (*probe)(struct dw_dma_chip *chip); 52 int (*remove)(struct dw_dma_chip *chip); 53 struct dw_dma_chip *chip; 54}; 55 56static __maybe_unused const struct dw_dma_chip_pdata dw_dma_chip_pdata = { 57 .probe = dw_dma_probe, 58 .remove = dw_dma_remove, 59}; 60 61static const struct dw_dma_platform_data idma32_pdata = { 62 .nr_channels = 8, 63 .chan_allocation_order = CHAN_ALLOCATION_ASCENDING, 64 .chan_priority = CHAN_PRIORITY_ASCENDING, 65 .block_size = 131071, 66 .nr_masters = 1, 67 .data_width = {4}, 68 .multi_block = {1, 1, 1, 1, 1, 1, 1, 1}, 69}; 70 71static __maybe_unused const struct dw_dma_chip_pdata idma32_chip_pdata = { 72 .pdata = &idma32_pdata, 73 .probe = idma32_dma_probe, 74 .remove = idma32_dma_remove, 75}; 76 77static const struct dw_dma_platform_data xbar_pdata = { 78 .nr_channels = 8, 79 .chan_allocation_order = CHAN_ALLOCATION_ASCENDING, 80 .chan_priority = CHAN_PRIORITY_ASCENDING, 81 .block_size = 131071, 82 .nr_masters = 1, 83 .data_width = {4}, 84 .quirks = DW_DMA_QUIRK_XBAR_PRESENT, 85}; 86 87static __maybe_unused const struct dw_dma_chip_pdata xbar_chip_pdata = { 88 .pdata = &xbar_pdata, 89 .probe = idma32_dma_probe, 90 .remove = idma32_dma_remove, 91}; 92 93#endif /* _DMA_DW_INTERNAL_H */