summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorVinod Koul <vkoul@kernel.org>2022-12-02 12:41:44 +0100
committerVinod Koul <vkoul@kernel.org>2022-12-02 12:41:50 +0100
commit25483dedd2f5d9bc6928cd790ee59772fb880a79 (patch)
tree96233c2510ab27bb1ab37135ddfedb42a08c1b60 /include
parentdmaengine: tegra: Add support for dma-channel-mask (diff)
downloadlinux-25483dedd2f5d9bc6928cd790ee59772fb880a79.tar.xz
linux-25483dedd2f5d9bc6928cd790ee59772fb880a79.zip
dmaengine: Revert "dmaengine: remove s3c24xx driver"
This reverts cccc46ae3623 ("dmaengine: remove s3c24xx driver") as it causes regression due to missing header Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/platform_data/dma-s3c24xx.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/linux/platform_data/dma-s3c24xx.h b/include/linux/platform_data/dma-s3c24xx.h
new file mode 100644
index 000000000000..96d02dbeea67
--- /dev/null
+++ b/include/linux/platform_data/dma-s3c24xx.h
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * S3C24XX DMA handling
+ *
+ * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
+ */
+
+/* Helper to encode the source selection constraints for early s3c socs. */
+#define S3C24XX_DMA_CHANREQ(src, chan) ((BIT(3) | src) << chan * 4)
+
+enum s3c24xx_dma_bus {
+ S3C24XX_DMA_APB,
+ S3C24XX_DMA_AHB,
+};
+
+/**
+ * @bus: on which bus does the peripheral reside - AHB or APB.
+ * @handshake: is a handshake with the peripheral necessary
+ * @chansel: channel selection information, depending on variant; reqsel for
+ * s3c2443 and later and channel-selection map for earlier SoCs
+ * see CHANSEL doc in s3c2443-dma.c
+ */
+struct s3c24xx_dma_channel {
+ enum s3c24xx_dma_bus bus;
+ bool handshake;
+ u16 chansel;
+};
+
+struct dma_slave_map;
+
+/**
+ * struct s3c24xx_dma_platdata - platform specific settings
+ * @num_phy_channels: number of physical channels
+ * @channels: array of virtual channel descriptions
+ * @num_channels: number of virtual channels
+ * @slave_map: dma slave map matching table
+ * @slavecnt: number of elements in slave_map
+ */
+struct s3c24xx_dma_platdata {
+ int num_phy_channels;
+ struct s3c24xx_dma_channel *channels;
+ int num_channels;
+ const struct dma_slave_map *slave_map;
+ int slavecnt;
+};
+
+struct dma_chan;
+bool s3c24xx_dma_filter(struct dma_chan *chan, void *param);