sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
dmaInit.c
1// ____ ___ | / _____ _____
2// | __ | |___/ | |
3// |___| ___| | \ __|__ | gsKit Open Source Project.
4// ----------------------------------------------------------------------
5// Copyright 2004 - Chris "Neovanglist" Gilbert <Neovanglist@LainOS.org>
6// Licenced under Academic Free License version 2.0
7// Review gsKit README & LICENSE files for further details.
8//
9// dmaInit.c - DMA initilization routines.
10//
11
12#include "dmaKit.h"
13#include "dmaArrays.h"
14
15#include <stdio.h>
16#include <kernel.h>
17
18int dmaKit_init(u32 RELE, u32 MFD, u32 STS,
19 u32 STD, u32 RCYC, u16 fastwaitchannels)
20{
21 #ifdef GSKIT_DEBUG
22 printf("Initializing the DMAC: RELE=%i MFD=%i STS=%i STD=%i RCYC=%i\n",
23 RELE, MFD, STS, STD, RCYC);
24 #endif
25
26 *DMA_REG_CTRL = 0x00000000;
27 *DMA_REG_PCR = 0x00000000;
28 *DMA_REG_SQWC = 0x00000000;
29 *DMA_REG_RBSR = 0x00000000;
30 *DMA_REG_RBOR = 0x00000000;
31
32 *DMA_REG_CTRL = DMA_SET_CTRL(1, RELE, MFD, STS, STD, RCYC);
33
34 DMA_SET_CPCOND(fastwaitchannels);
35
36 #ifdef GSKIT_DEBUG
37 printf("DMAC Initialized.\n");
38 #endif
39
40 return 0;
41}
42
43int dmaKit_chan_init(u32 channel)
44{
45 if(channel >= 0 && channel <= 9)
46 {
47 #ifdef GSKIT_DEBUG
48 printf("Initilizating DMA Channel %i - %s\n",channel, DMA_NAME[channel]);
49 #endif
50
51 *(volatile u32 *)DMA_CHCR[channel] = 0x00000000;
52 *(volatile u32 *)DMA_MADR[channel] = 0x00000000;
53 if(DMA_SIZE[channel] > 0)
54 *(volatile u32 *)DMA_SIZE[channel] = 0x00000000;
55 if(DMA_TADR[channel] > 0)
56 *(volatile u32 *)DMA_TADR[channel] = 0x00000000;
57 if(DMA_ASR0[channel] > 0)
58 *(volatile u32 *)DMA_ASR0[channel] = 0x00000000;
59 if(DMA_ASR1[channel] > 0)
60 *(volatile u32 *)DMA_ASR1[channel] = 0x00000000;
61 if(DMA_SADR[channel] > 0)
62 *(volatile u32 *)DMA_SADR[channel] = 0x00000000;
63 if(DMA_QWC[channel] > 0)
64 *(volatile u32 *)DMA_QWC[channel] = 0x00000000;
65 }
66 else
67 {
68 printf("Invalid DMA Channel Specified: %i\n",channel);
69 printf("Failed to Initialize DMA Channel.\n");
70 return -1;
71 }
72
73 #ifdef GSKIT_DEBUG
74 printf("DMA Channel Initialized.\n");
75 #endif
76
77 return 0;
78}
int dmaKit_init(u32 RELE, u32 MFD, u32 STS, u32 STD, u32 RCYC, u16 fastwaitchannels)
DMAC Initilization.
Definition dmaInit.c:18
int dmaKit_chan_init(u32 channel)
DMA Channel Initilization.
Definition dmaInit.c:43