1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * TXx9 SoC DMA Controller
4  */
5 
6 #ifndef __ASM_TXX9_DMAC_H
7 #define __ASM_TXX9_DMAC_H
8 
9 #include <linux/dmaengine.h>
10 
11 #define TXX9_DMA_MAX_NR_CHANNELS	4
12 
13 /**
14  * struct txx9dmac_platform_data - Controller configuration parameters
15  * @memcpy_chan: Channel used for DMA_MEMCPY
16  * @have_64bit_regs: DMAC have 64 bit registers
17  */
18 struct txx9dmac_platform_data {
19 	int	memcpy_chan;
20 	bool	have_64bit_regs;
21 };
22 
23 /**
24  * struct txx9dmac_chan_platform_data - Channel configuration parameters
25  * @dmac_dev: A platform device for DMAC
26  */
27 struct txx9dmac_chan_platform_data {
28 	struct platform_device *dmac_dev;
29 };
30 
31 /**
32  * struct txx9dmac_slave - Controller-specific information about a slave
33  * @tx_reg: physical address of data register used for
34  *	memory-to-peripheral transfers
35  * @rx_reg: physical address of data register used for
36  *	peripheral-to-memory transfers
37  * @reg_width: peripheral register width
38  */
39 struct txx9dmac_slave {
40 	u64		tx_reg;
41 	u64		rx_reg;
42 	unsigned int	reg_width;
43 };
44 
45 void txx9_dmac_init(int id, unsigned long baseaddr, int irq,
46 		    const struct txx9dmac_platform_data *pdata);
47 
48 #endif /* __ASM_TXX9_DMAC_H */
49