linux/drivers/dma/dw/internal.h
<<
>>
Prefs
   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
  77#endif /* _DMA_DW_INTERNAL_H */
  78