| /* |
| * S3C24XX DMA handling |
| * |
| * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de> |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License as published by the Free |
| * Software Foundation; either version 2 of the License, or (at your option) |
| * any later version. |
| */ |
| |
| /* 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); |