sdk-world
v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Toggle main menu visibility
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
18
int
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
43
int
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
}
dmaArrays.h
dmaKit_init
int dmaKit_init(u32 RELE, u32 MFD, u32 STS, u32 STD, u32 RCYC, u16 fastwaitchannels)
DMAC Initilization.
Definition
dmaInit.c:18
dmaKit_chan_init
int dmaKit_chan_init(u32 channel)
DMA Channel Initilization.
Definition
dmaInit.c:43
dmaKit.h
dmakit
src
dmaInit.c
Generated by
1.18.0