forked from Minki/linux
fbb20e81bd
This patch adds config() that configures DMA transmit option. This function was originally included in request(). But, Some DMA client driver requires to change the configuration after request(). So, This patch picks up it from request(). Signed-off-by: Boojin Kim <boojin.kim@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
/* arch/arm/plat-samsung/include/plat/dma-ops.h
|
|
*
|
|
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
|
|
* http://www.samsung.com
|
|
*
|
|
* Samsung DMA support
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __SAMSUNG_DMA_OPS_H_
|
|
#define __SAMSUNG_DMA_OPS_H_ __FILE__
|
|
|
|
#include <linux/dmaengine.h>
|
|
#include <mach/dma.h>
|
|
|
|
struct samsung_dma_req {
|
|
enum dma_transaction_type cap;
|
|
struct property *dt_dmach_prop;
|
|
struct s3c2410_dma_client *client;
|
|
};
|
|
|
|
struct samsung_dma_prep {
|
|
enum dma_transaction_type cap;
|
|
enum dma_transfer_direction direction;
|
|
dma_addr_t buf;
|
|
unsigned long period;
|
|
unsigned long len;
|
|
void (*fp)(void *data);
|
|
void *fp_param;
|
|
};
|
|
|
|
struct samsung_dma_config {
|
|
enum dma_transfer_direction direction;
|
|
enum dma_slave_buswidth width;
|
|
dma_addr_t fifo;
|
|
};
|
|
|
|
struct samsung_dma_ops {
|
|
unsigned (*request)(enum dma_ch ch, struct samsung_dma_req *param);
|
|
int (*release)(unsigned ch, void *param);
|
|
int (*config)(unsigned ch, struct samsung_dma_config *param);
|
|
int (*prepare)(unsigned ch, struct samsung_dma_prep *param);
|
|
int (*trigger)(unsigned ch);
|
|
int (*started)(unsigned ch);
|
|
int (*flush)(unsigned ch);
|
|
int (*stop)(unsigned ch);
|
|
};
|
|
|
|
extern void *samsung_dmadev_get_ops(void);
|
|
extern void *s3c_dma_get_ops(void);
|
|
|
|
static inline void *__samsung_dma_get_ops(void)
|
|
{
|
|
if (samsung_dma_is_dmadev())
|
|
return samsung_dmadev_get_ops();
|
|
else
|
|
return s3c_dma_get_ops();
|
|
}
|
|
|
|
/*
|
|
* samsung_dma_get_ops
|
|
* get the set of samsung dma operations
|
|
*/
|
|
#define samsung_dma_get_ops() __samsung_dma_get_ops()
|
|
|
|
#endif /* __SAMSUNG_DMA_OPS_H_ */
|