luxos/SysCore/hal/dma/dma.h

42 lines
1.6 KiB
C

/***** dma.h *********************************************************
* (c) 2010 CTA Systems Inc. All rights reserved. Glory To God *
* *
* Direct Memory Access (DMA) Routines *
* =================================== *
* *
************************************************************ cta os */
#ifndef __DMA__H__
#define __DMA__H__
enum DMA_MODE_REG_MASK {
DMA_MODE_MASK_SEL = 3,
DMA_MODE_MASK_TRA = 0xc,
DMA_MODE_SELF_TEST = 0,
DMA_MODE_READ_TRANSFER = 4,
DMA_MODE_WRITE_TRANSFER = 8,
DMA_MODE_MASK_AUTO = 0x10,
DMA_MODE_MASK_IDEC = 0x20,
DMA_MODE_MASK = 0xc0,
DMA_MODE_TRANSFER_ON_DEMAND = 0,
DMA_MODE_TRANSFER_SINGLE = 0x40,
DMA_MODE_TRANSFER_BLOCK = 0x80,
DMA_MODE_TRANSFER_CASCADE = 0xC0
};
extern void i86_dma_set_address(unsigned short channel, unsigned char low, unsigned char high);
extern void i86_dma_set_count (unsigned short channel, unsigned char low, unsigned char high);
extern void i86_dma_set_external_page_registers (unsigned char channel, unsigned char val);
extern void i86_dma_mask_channel (unsigned char channel);
extern void i86_dma_unmask_channel (unsigned char channel);
extern void i86_dma_unmask_all();
extern void i86_dma_reset_flipflop (unsigned char dma);
extern void i86_dma_reset ();
extern void i86_dma_set_mode(unsigned char channel, unsigned char mode);
extern void i86_dma_set_read (unsigned char channel);
extern void i86_dma_set_write (unsigned char channel);
#endif