| /* | |
| * 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); |