53 lines
1.5 KiB
C
53 lines
1.5 KiB
C
#ifndef __ASM_ARCH_DMA_H
|
|
#define __ASM_ARCH_DMA_H
|
|
|
|
#include <linux/list.h>
|
|
#include <linux/types.h>
|
|
|
|
struct ep93xx_dma_buffer {
|
|
struct list_head list;
|
|
u32 bus_addr;
|
|
u16 size;
|
|
};
|
|
|
|
struct ep93xx_dma_m2p_client {
|
|
char *name;
|
|
u8 flags;
|
|
void *cookie;
|
|
void (*buffer_started)(void *cookie,
|
|
struct ep93xx_dma_buffer *buf);
|
|
void (*buffer_finished)(void *cookie,
|
|
struct ep93xx_dma_buffer *buf,
|
|
int bytes, int error);
|
|
|
|
/* Internal to the DMA code. */
|
|
void *channel;
|
|
};
|
|
|
|
#define EP93XX_DMA_M2P_PORT_I2S1 0x00
|
|
#define EP93XX_DMA_M2P_PORT_I2S2 0x01
|
|
#define EP93XX_DMA_M2P_PORT_AAC1 0x02
|
|
#define EP93XX_DMA_M2P_PORT_AAC2 0x03
|
|
#define EP93XX_DMA_M2P_PORT_AAC3 0x04
|
|
#define EP93XX_DMA_M2P_PORT_I2S3 0x05
|
|
#define EP93XX_DMA_M2P_PORT_UART1 0x06
|
|
#define EP93XX_DMA_M2P_PORT_UART2 0x07
|
|
#define EP93XX_DMA_M2P_PORT_UART3 0x08
|
|
#define EP93XX_DMA_M2P_PORT_IRDA 0x09
|
|
#define EP93XX_DMA_M2P_PORT_MASK 0x0f
|
|
#define EP93XX_DMA_M2P_TX 0x00
|
|
#define EP93XX_DMA_M2P_RX 0x10
|
|
#define EP93XX_DMA_M2P_ABORT_ON_ERROR 0x20
|
|
#define EP93XX_DMA_M2P_IGNORE_ERROR 0x40
|
|
#define EP93XX_DMA_M2P_ERROR_MASK 0x60
|
|
|
|
int ep93xx_dma_m2p_client_register(struct ep93xx_dma_m2p_client *m2p);
|
|
void ep93xx_dma_m2p_client_unregister(struct ep93xx_dma_m2p_client *m2p);
|
|
void ep93xx_dma_m2p_submit(struct ep93xx_dma_m2p_client *m2p,
|
|
struct ep93xx_dma_buffer *buf);
|
|
void ep93xx_dma_m2p_submit_recursive(struct ep93xx_dma_m2p_client *m2p,
|
|
struct ep93xx_dma_buffer *buf);
|
|
void ep93xx_dma_m2p_flush(struct ep93xx_dma_m2p_client *m2p);
|
|
|
|
#endif /* __ASM_ARCH_DMA_H */
|