94 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Driver for the Synopsys DesignWare DMA Controller4 *5 * Copyright (C) 2013 Intel Corporation6 */7 8#ifndef _DMA_DW_INTERNAL_H9#define _DMA_DW_INTERNAL_H10 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_ACPI27void 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_OF37struct 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#else41static 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#endif48 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 */94