DSP Registers

DSP Registers

Registers #

Old3DSNamePhysical AddressWidthUsed by
YesDSP_PDATA0x102030002
YesDSP_PADR0x102030042
YesDSP_PCFG0x102030082
YesDSP_PSTS0x1020300C2
YesDSP_PSEM0x102030102
YesDSP_PMASK0x102030142
YesDSP_PCLEAR0x102030182
YesDSP_SEM0x1020301C2
YesDSP_CMD00x102030202
YesDSP_REP00x102030242
YesDSP_CMD10x102030282
YesDSP_REP10x1020302C2
YesDSP_CMD20x102030302
YesDSP_REP20x102030342

DSP_PDATA #

Data (one stage of the 16-stage Read FIFO).

DSP_PADR #

Lower 16bit of Address in DSP Memory. Note: The upper 16bit of Address must be configued in the DMA register (inside of the DSP).

DSP_PCFG - DSP Configuration (R/W) (16bit) #

BitsDescription
0DSP Reset (0=Release, 1=Reset) ;should be held “1” for 8 DSP clks
1Address Auto-Increment (0=Off, 1=On)
2-3DSP Read Data Length (0=1 word, 1=8 words, 2=16 words, 3=Free-Run)
4DSP Read Start Flag (mem transfer via Read FIFO) (1=Start)
5Interrupt Enable Read FIFO Full (0=Off, 1=On)
6Interrupt Enable Read FIFO Not-Empty (0=Off, 1=On)
7Interrupt Enable Write FIFO Full (0=Off, 1=On)
8Interrupt Enable Write FIFO Empty (0=Off, 1=On)
9Interrupt Enable Reply Register 0 (0=Off, 1=On)
10Interrupt Enable Reply Register 1 (0=Off, 1=On)
11Interrupt Enable Reply Register 2 (0=Off, 1=On)
12-15DSP Memory Transfer (0=Data Memory, 1=MMIO Register, 5=Program Memory)

DSP_PSTS #

BitsDescription
0Read Transfer Underway Flag (0=No, 1=Yes/From DSP Memory)
1Write Transfer Underway Flag (0=No, 1=Yes/To DSP Memory)
2Peripheral Reset Flag (0=No/Ready, 1=Reset/Busy)
3-4Unused
5Read FIFO Full Flag (0=No, 1=Yes)
6Read FIFO Not-Empty Flag (0=No, 1=Yes) ;ARM11 may read DSP_PDATA
7Write FIFO Full Flag (0=No, 1=Yes)
8Write FIFO Empty Flag (0=No, 1=Yes)
9Semaphore IRQ Flag (0=None, 1=IRQ)
10Reply Register 0 Update Flag (0=Was Written by DSP, 1=No)
11Reply Register 1 Update Flag (0=Was Written by DSP, 1=No)
12Reply Register 2 Update Flag (0=Was Written by DSP, 1=No)
13Command Register 0 Read Flag (0=Was Read by DSP, 1=No)
14Command Register 1 Read Flag (0=Was Read by DSP, 1=No)
15Command Register 2 Read Flag (0=Was Read by DSP, 1=No)

Unknown if/when bit10-15 get reset… maybe after reading the status?

DSP_PSEM #

DSP-to-ARM11 Semaphore 0..15 Flags (0=Off, 1=On). Reportedly these flags are sent in ARM11-to-DSP direction. Confusingly, the other DSP_Pxxx registers are for opposite direction?

DSP_PMASK #

DSP-to-ARM11 Semaphore 0..15 Interrupt Disable (0=Enable, 1=Disable)

DSP_PCLEAR #

DSP-to-ARM11 Semaphore 0..15 Clear (0=No Change, 1=Clear). Reportedly clears bits in DSP_PSEM. [that’s probably nonsense, clearing bits in DSP_SEM would make more sense]

DSP_SEM #

DSP-to-ARM11 Semaphore 0..15 Flags (0=Off, 1=On). Reportedly these flags are received in DSP-to-ARM11 direction.

DSP_CMDX #

Command/Data to DSP.

DSP_REPX #

Reply/Data from DSP.