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/errno.h> |
12 | #include <linux/kconfig.h> |
13 | #include <linux/types.h> |
14 | |
15 | #include <linux/platform_data/dma-hsu.h> |
16 | |
17 | struct device; |
18 | struct hsu_dma; |
19 | |
20 | /** |
21 | * struct hsu_dma_chip - representation of HSU DMA hardware |
22 | * @dev: struct device of the DMA controller |
23 | * @irq: irq line |
24 | * @regs: memory mapped I/O space |
25 | * @length: I/O space length |
26 | * @offset: offset of the I/O space where registers are located |
27 | * @hsu: struct hsu_dma that is filed by ->probe() |
28 | * @pdata: platform data for the DMA controller if provided |
29 | */ |
30 | struct hsu_dma_chip { |
31 | struct device *dev; |
32 | int irq; |
33 | void __iomem *regs; |
34 | unsigned int length; |
35 | unsigned int offset; |
36 | struct hsu_dma *hsu; |
37 | }; |
38 | |
39 | #if IS_ENABLED(CONFIG_HSU_DMA) |
40 | /* Export to the internal users */ |
41 | int hsu_dma_get_status(struct hsu_dma_chip *chip, unsigned short nr, |
42 | u32 *status); |
43 | int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, u32 status); |
44 | |
45 | /* Export to the platform drivers */ |
46 | int hsu_dma_probe(struct hsu_dma_chip *chip); |
47 | int hsu_dma_remove(struct hsu_dma_chip *chip); |
48 | #else |
49 | static inline int hsu_dma_get_status(struct hsu_dma_chip *chip, |
50 | unsigned short nr, u32 *status) |
51 | { |
52 | return 0; |
53 | } |
54 | static inline int hsu_dma_do_irq(struct hsu_dma_chip *chip, unsigned short nr, |
55 | u32 status) |
56 | { |
57 | return 0; |
58 | } |
59 | static inline int hsu_dma_probe(struct hsu_dma_chip *chip) { return -ENODEV; } |
60 | static inline int hsu_dma_remove(struct hsu_dma_chip *chip) { return 0; } |
61 | #endif /* CONFIG_HSU_DMA */ |
62 | |
63 | #endif /* _DMA_HSU_H */ |
64 | |