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