Difference between revisions of "DSP Services"

From 3dbrew
Jump to navigation Jump to search
(Undo revision 12148 by Purpasmart (talk))
m (Category DSP)
 
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Services]]
 
 
= DSP service "dsp::DSP" =
 
= DSP service "dsp::DSP" =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 7: Line 6:
 
|-
 
|-
 
| 0x00010040
 
| 0x00010040
| RecvData(chan 0-3)
+
| [[DSP:RecvData|RecvData]]
|-
 
| 0x00010080
 
| ????
 
|-
 
| 0x00020000
 
| ????
 
 
|-
 
|-
 
| 0x00020040
 
| 0x00020040
| RecvDataIsReady(chan 0-3)
+
| [[DSP:RecvDataIsReady|RecvDataIsReady]]
 
|-
 
|-
 
| 0x00030080
 
| 0x00030080
| SendData(chan 0-3)
+
| [[DSP:SendData|SendData]]
 
|-
 
|-
 
| 0x00040040
 
| 0x00040040
| SendDataIsEmpty(chan 0-3)
+
| [[DSP:SendDataIsEmpty|SendDataIsEmpty]]
 
|-
 
|-
| 0x00050100
+
| 0x000500C2
| ?
+
| SendFifoEx(unsigned short, unsigned short const*, unsigned int, unsigned int)
 
|-
 
|-
| 0x0006...
+
| 0x000600C0
| ?
+
| RecvFifoEx(unsigned short *, unsigned short, unsigned int, unsigned int)
 
|-
 
|-
| 0x0007....
+
| 0x00070040
| [[DSP:WriteReg0x10|WriteReg0x10]] SetSemaphore
+
| [[DSP:SetSemaphore|SetSemaphore]]
 
|-
 
|-
 
| 0x00080000
 
| 0x00080000
| GetSemaphore
+
| [[DSP:GetSemaphore|GetSemaphore]]
|-
 
| 0x00080082
 
| ????
 
 
|-
 
|-
 
| 0x00090040
 
| 0x00090040
| ClearSemaphore
+
| [[DSP:ClearSemaphore|ClearSemaphore]]
 
|-
 
|-
| 0x000A....
+
| 0x000A0040
| WriteReg0x18
+
| [[DSP:MaskSemaphore|MaskSemaphore]]
 
|-
 
|-
 
| 0x000B0000
 
| 0x000B0000
| CheckSemaphoreRequest
+
| [[DSP:CheckSemaphoreRequest|CheckSemaphoreRequest]]
|-
 
| 0x000C0000
 
| ????
 
 
|-
 
|-
 
| 0x000C0040
 
| 0x000C0040
Line 57: Line 44:
 
| [[DSP:WriteProcessPipe|WriteProcessPipe]]
 
| [[DSP:WriteProcessPipe|WriteProcessPipe]]
 
|-
 
|-
| 0x000E0080
+
| 0x000E00C0
| ????
+
| [[DSP:ReadPipe|ReadPipe]]
 +
|-
 +
| 0x000F0080
 +
| [[DSP:GetPipeReadableSize|GetPipeReadableSize]]
 
|-
 
|-
 
| 0x001000C0
 
| 0x001000C0
Line 64: Line 54:
 
|-
 
|-
 
| 0x001100C2
 
| 0x001100C2
| [[DSP:LoadComponent|LoadComponent]]. This requires RSA-signed DSP firmware specified via the input buffer for this command, the firmware data is eventually written to DSPmem+0(0x1FF00000).
+
| [[DSP:LoadComponent|LoadComponent]]
 
|-
 
|-
 
| 0x00120000
 
| 0x00120000
| UnloadComponent
+
| [[DSP:UnloadComponent|UnloadComponent]]
 
|-
 
|-
 
| 0x00130082
 
| 0x00130082
| FlushDataCache (The buffer must be located in the 0x14000000 region)
+
| [[DSP:FlushDataCache|FlushDataCache]]
|  
 
 
|-
 
|-
 
| 0x00140082
 
| 0x00140082
| InvalidateDCache (The buffer must be located in either the 0x14000000 region, or the DSP memory region)
+
| [[DSP:InvalidateDCache|InvalidateDCache]]
 
|-
 
|-
 
| 0x00150082
 
| 0x00150082
| [[DSP:RegisterInterruptEvents|RegisterInterruptEvents(param0, param1, 0, eventhandle)]]
+
| [[DSP:RegisterInterruptEvents|RegisterInterruptEvents]]
 
|-
 
|-
 
| 0x00160000
 
| 0x00160000
Line 84: Line 73:
 
| 0x00170040
 
| 0x00170040
 
| [[DSP:SetSemaphoreMask|SetSemaphoreMask]]
 
| [[DSP:SetSemaphoreMask|SetSemaphoreMask]]
|-
 
| 0x00170042
 
| ????
 
 
|-
 
|-
 
| 0x00180040
 
| 0x00180040
| GetPhysicalAddress (0x14000000+ -> 0x20000000+, 0x1FF00000+ -> 0x1FF00000+, 0x08000000-0x0E000000 -> 0x00000000+, 0 otherwise)
+
| [[DSP:GetPhysicalAddress|GetPhysicalAddress]]
 
|-
 
|-
 
| 0x00190040
 
| 0x00190040
| GetVirtualAddress (0x20000000+ -> 0x14000000+, 0x1FF00000+ -> 0x1FF00000+, 0 otherwise)
+
| [[DSP:GetVirtualAddress|GetVirtualAddress]]
 
|-
 
|-
 
| 0x001A0042
 
| 0x001A0042
Line 98: Line 84:
 
|-
 
|-
 
| 0x001B0042
 
| 0x001B0042
| SetIirFilterI2S1. Wrapper for cdc:DSP cmd 2
+
| SetIirFilterI2S2. Wrapper for cdc:DSP cmd 2
 
|-
 
|-
 
| 0x001C0082
 
| 0x001C0082
 
| SetIirFilterEQ. Wrapper for cdc:DSP cmd 3
 
| SetIirFilterEQ. Wrapper for cdc:DSP cmd 3
 
|-
 
|-
| 0x001D....
+
| 0x001D00C0
| Wrapper for cdc:DSP cmd 4
+
| ReadMultiEx_SPI2(unsigned char, unsigned char, unsigned char *, unsigned char) (Wrapper for cdc:DSP cmd 4)
 
|-
 
|-
| 0x001E....
+
| 0x001E00C2
| Wrapper for cdc:DSP cmd 5
+
| WriteMultiEx_SPI2(unsigned char, unsigned char, unsigned char const*, unsigned char) (Wrapper for cdc:DSP cmd 5)
 
|-
 
|-
 
| 0x001F0000
 
| 0x001F0000
| GetHeadphoneStatus. Wrapper for cdc:DSP cmd 6
+
| [[DSP:GetHeadphoneStatus|GetHeadphoneStatus]]
 
|-
 
|-
| 0x0020....
+
| 0x00200040
| Wrapper for cdc:DSP cmd 8
+
| [[DSP:ForceHeadphoneOut|ForceHeadphoneOut]]
 
|-
 
|-
 
| 0x00210000
 
| 0x00210000
| GetIsDspOccupied returns a byte (can be 1 or 0) can be set to 1 in LoadComponent
+
| [[DSP:GetIsDspOccupied|GetIsDspOccupied]]
|-
 
| 0x080200C2
 
| ????
 
 
|}
 
|}
  
 
This is the main service for playing audio. The [[CSND_Services|CSND]] service can be used for playing audio as well, however most processes use this DSP service for playing audio. The DSP and CSND hardware can play audio simultaneously.
 
This is the main service for playing audio. The [[CSND_Services|CSND]] service can be used for playing audio as well, however most processes use this DSP service for playing audio. The DSP and CSND hardware can play audio simultaneously.
 +
 +
[[Category:Services]]
 +
[[Category:DSP]]

Latest revision as of 14:25, 7 August 2016

DSP service "dsp::DSP"[edit]

Command Header Description
0x00010040 RecvData
0x00020040 RecvDataIsReady
0x00030080 SendData
0x00040040 SendDataIsEmpty
0x000500C2 SendFifoEx(unsigned short, unsigned short const*, unsigned int, unsigned int)
0x000600C0 RecvFifoEx(unsigned short *, unsigned short, unsigned int, unsigned int)
0x00070040 SetSemaphore
0x00080000 GetSemaphore
0x00090040 ClearSemaphore
0x000A0040 MaskSemaphore
0x000B0000 CheckSemaphoreRequest
0x000C0040 ConvertProcessAddressFromDspDram
0x000D0082 WriteProcessPipe
0x000E00C0 ReadPipe
0x000F0080 GetPipeReadableSize
0x001000C0 ReadPipeIfPossible
0x001100C2 LoadComponent
0x00120000 UnloadComponent
0x00130082 FlushDataCache
0x00140082 InvalidateDCache
0x00150082 RegisterInterruptEvents
0x00160000 GetSemaphoreEventHandle
0x00170040 SetSemaphoreMask
0x00180040 GetPhysicalAddress
0x00190040 GetVirtualAddress
0x001A0042 SetIirFilterI2S1. Wrapper for cdc:DSP cmd 1
0x001B0042 SetIirFilterI2S2. Wrapper for cdc:DSP cmd 2
0x001C0082 SetIirFilterEQ. Wrapper for cdc:DSP cmd 3
0x001D00C0 ReadMultiEx_SPI2(unsigned char, unsigned char, unsigned char *, unsigned char) (Wrapper for cdc:DSP cmd 4)
0x001E00C2 WriteMultiEx_SPI2(unsigned char, unsigned char, unsigned char const*, unsigned char) (Wrapper for cdc:DSP cmd 5)
0x001F0000 GetHeadphoneStatus
0x00200040 ForceHeadphoneOut
0x00210000 GetIsDspOccupied

This is the main service for playing audio. The CSND service can be used for playing audio as well, however most processes use this DSP service for playing audio. The DSP and CSND hardware can play audio simultaneously.