Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * S3C24XX DMA handling
0004  *
0005  * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
0006  */
0007 
0008 /* Helper to encode the source selection constraints for early s3c socs. */
0009 #define S3C24XX_DMA_CHANREQ(src, chan)  ((BIT(3) | src) << chan * 4)
0010 
0011 enum s3c24xx_dma_bus {
0012     S3C24XX_DMA_APB,
0013     S3C24XX_DMA_AHB,
0014 };
0015 
0016 /**
0017  * @bus: on which bus does the peripheral reside - AHB or APB.
0018  * @handshake: is a handshake with the peripheral necessary
0019  * @chansel: channel selection information, depending on variant; reqsel for
0020  *       s3c2443 and later and channel-selection map for earlier SoCs
0021  *       see CHANSEL doc in s3c2443-dma.c
0022  */
0023 struct s3c24xx_dma_channel {
0024     enum s3c24xx_dma_bus bus;
0025     bool handshake;
0026     u16 chansel;
0027 };
0028 
0029 struct dma_slave_map;
0030 
0031 /**
0032  * struct s3c24xx_dma_platdata - platform specific settings
0033  * @num_phy_channels: number of physical channels
0034  * @channels: array of virtual channel descriptions
0035  * @num_channels: number of virtual channels
0036  * @slave_map: dma slave map matching table
0037  * @slavecnt: number of elements in slave_map
0038  */
0039 struct s3c24xx_dma_platdata {
0040     int num_phy_channels;
0041     struct s3c24xx_dma_channel *channels;
0042     int num_channels;
0043     const struct dma_slave_map *slave_map;
0044     int slavecnt;
0045 };
0046 
0047 struct dma_chan;
0048 bool s3c24xx_dma_filter(struct dma_chan *chan, void *param);