36 строки
1.1 KiB
C
36 строки
1.1 KiB
C
|
#ifndef __ASM_SPARC_EBUS_DMA_H
|
||
|
#define __ASM_SPARC_EBUS_DMA_H
|
||
|
|
||
|
struct ebus_dma_info {
|
||
|
spinlock_t lock;
|
||
|
void __iomem *regs;
|
||
|
|
||
|
unsigned int flags;
|
||
|
#define EBUS_DMA_FLAG_USE_EBDMA_HANDLER 0x00000001
|
||
|
#define EBUS_DMA_FLAG_TCI_DISABLE 0x00000002
|
||
|
|
||
|
/* These are only valid is EBUS_DMA_FLAG_USE_EBDMA_HANDLER is
|
||
|
* set.
|
||
|
*/
|
||
|
void (*callback)(struct ebus_dma_info *p, int event, void *cookie);
|
||
|
void *client_cookie;
|
||
|
unsigned int irq;
|
||
|
#define EBUS_DMA_EVENT_ERROR 1
|
||
|
#define EBUS_DMA_EVENT_DMA 2
|
||
|
#define EBUS_DMA_EVENT_DEVICE 4
|
||
|
|
||
|
unsigned char name[64];
|
||
|
};
|
||
|
|
||
|
extern int ebus_dma_register(struct ebus_dma_info *p);
|
||
|
extern int ebus_dma_irq_enable(struct ebus_dma_info *p, int on);
|
||
|
extern void ebus_dma_unregister(struct ebus_dma_info *p);
|
||
|
extern int ebus_dma_request(struct ebus_dma_info *p, dma_addr_t bus_addr,
|
||
|
size_t len);
|
||
|
extern void ebus_dma_prepare(struct ebus_dma_info *p, int write);
|
||
|
extern unsigned int ebus_dma_residue(struct ebus_dma_info *p);
|
||
|
extern unsigned int ebus_dma_addr(struct ebus_dma_info *p);
|
||
|
extern void ebus_dma_enable(struct ebus_dma_info *p, int on);
|
||
|
|
||
|
#endif /* __ASM_SPARC_EBUS_DMA_H */
|