mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-28 07:04:00 +08:00
1fecf8958e
s3c2410 and s3c2442 share the same dma channels while s3c2440 has slight differences. But on all three the reachable sources per dma channel has constraints attached and thus encodes the usable combinations using the S3C24XX_DMA_CHANREQ macro. This also fixes the warning about s3c2410_dma_resource being unused as reported by Olof Johansson. Reported-by: Olof Johansson <olof@lixom.net> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Reviewed-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
/*
|
|
* 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 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
|
|
*/
|
|
struct s3c24xx_dma_platdata {
|
|
int num_phy_channels;
|
|
struct s3c24xx_dma_channel *channels;
|
|
int num_channels;
|
|
};
|
|
|
|
struct dma_chan;
|
|
bool s3c24xx_dma_filter(struct dma_chan *chan, void *param);
|