X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fdrv%2Fdma.c;h=750b180d6f686f4d04b7824a4063152ed3e047bb;hb=1e25b20fd5d119d3b5673d6a31f60b2da676de98;hp=9116703efd7c77ad4941e3e067432f120654c03b;hpb=923a9dc473851ec2bb1c94021bbf139724e7e8a5;p=tpg%2Facess2.git diff --git a/Kernel/drv/dma.c b/Kernel/drv/dma.c index 9116703e..750b180d 100644 --- a/Kernel/drv/dma.c +++ b/Kernel/drv/dma.c @@ -3,6 +3,7 @@ * DMA Driver */ #include +#include #define DMA_SIZE (0x2400) #define DMA_ADDRESS(c) ((c)*DMA_SIZE+0x500) //Save Space for IDT and BDA @@ -11,11 +12,19 @@ #define HIB(x) (((x)>>8)&0xFF) #define HIW(x) (((x)>>16)&0xFFFF) -typedef struct { - int mode; +// === TYPES === +typedef struct +{ + int mode; char *address; } t_dmaChannel; +// === PROTOTYPES === + int DMA_Install(); +void DMA_SetChannel(int Channel, int length, int read); + int DMA_ReadData(int channel, int count, void *buffer); + +// === CONSTANTS === const Uint8 cMASKPORT [8] = { 0x0A, 0x0A, 0x0A, 0x0A, 0xD4, 0xD4, 0xD4, 0xD4 }; const Uint8 cMODEPORT [8] = { 0x0B, 0x0B, 0x0B, 0x0B, 0xD6, 0xD6, 0xD6, 0xD6 }; const Uint8 cCLEARPORT[8] = { 0x0C, 0x0C, 0x0C, 0x0C, 0xD8, 0xD8, 0xD8, 0xD8 }; @@ -23,14 +32,17 @@ const Uint8 cPAGEPORT [8] = { 0x87, 0x83, 0x81, 0x82, 0x8F, 0x8B, 0x89, 0x8A }; const Uint8 cADDRPORT [8] = { 0x00, 0x02, 0x04, 0x06, 0xC0, 0xC4, 0xC8, 0xCC }; const Uint8 cCOUNTPORT[8] = { 0x01, 0x03, 0x05, 0x07, 0xC2, 0xC6, 0xCA, 0xCE }; +// === GLOBALS === +MODULE_DEFINE(0, 0x0100, ISADMA, DMA_Install, NULL, NULL); char *dma_addresses[8]; t_dmaChannel dma_channels[8]; +// === CODE === /** - * \fn void DMA_Install() + * \fn int DMA_Install() * \brief Initialise DMA channels */ -void DMA_Install() +int DMA_Install() { Uint i; for(i=8;i--;) @@ -51,6 +63,7 @@ void DMA_Install() dma_addresses[i] = (char*)DMA_ADDRESS(i); dma_addresses[i] += KERNEL_BASE; } + return MODULE_ERR_OK; } /**