linux/include/linux/dma/hsu.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Driver for the High Speed UART DMA
   4 *
   5 * Copyright (C) 2015 Intel Corporation
   6 */
   7
   8#ifndef _DMA_HSU_H
   9#define _DMA_HSU_H
  10
  11#include <linux/device.h>
  12#include <linux/interrupt.h>
  13
  14#include <linux/platform_data/dma-hsu.h>
  15
  16struct hsu_dma;
  17
  18/**
  19 * struct hsu_dma_chip - representation of HSU DMA hardware
  20 * @dev:                 struct device of the DMA controller
  21 * @irq:                 irq line
  22 * @regs:                memory mapped I/O space
  23 * @length:              I/O space length
  24 * @offset:              offset of the I/O space where registers are located
  25 * @hsu:                 struct hsu_dma that is filed by ->probe()
  26 * @pdata:               platform data for the DMA controller if provided
  27 */
  28struct hsu_dma_chip {
  29        struct device                   *dev;
  30        int                             irq;
  31        void __iomem                    *regs;
  32        unsigned int                    length;
  33        unsigned int                    offset;
  34        struct hsu_dma                  *hsu;
  35};
  36
  37#if IS_ENABLED(CONFIG_HSU_DMA)
  38/* Export to the internal users */
  39int hsu_dma_get_status(struct hsu_dma_chip *chip, unsigned short nr,
  40                       u32 *status);
  41int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, u32 status);
  42
  43/* Export to the platform drivers */
  44int hsu_dma_probe(struct hsu_dma_chip *chip);
  45int hsu_dma_remove(struct hsu_dma_chip *chip);
  46#else
  47static inline int hsu_dma_get_status(struct hsu_dma_chip *chip,
  48                                     unsigned short nr, u32 *status)
  49{
  50        return 0;
  51}
  52static inline int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr,
  53                                 u32 status)
  54{
  55        return 0;
  56}
  57static inline int hsu_dma_probe(struct hsu_dma_chip *chip) { return -ENODEV; }
  58static inline int hsu_dma_remove(struct hsu_dma_chip *chip) { return 0; }
  59#endif /* CONFIG_HSU_DMA */
  60
  61#endif /* _DMA_HSU_H */
  62