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]] |
| |- | | |- |
| | 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]] |
| |- | | |- |
| | 0x000500C2 | | | 0x000500C2 |
Line 25: |
Line 24: |
| |- | | |- |
| | 0x00070040 | | | 0x00070040 |
− | | [[DSP:WriteReg0x10|WriteReg0x10]] SetSemaphore | + | | [[DSP:SetSemaphore|SetSemaphore]] |
| |- | | |- |
| | 0x00080000 | | | 0x00080000 |
− | | GetSemaphore(unsigned short * pMask) | + | | [[DSP:GetSemaphore|GetSemaphore]] |
| |- | | |- |
| | 0x00090040 | | | 0x00090040 |
− | | ClearSemaphore(unsigned short mask) | + | | [[DSP:ClearSemaphore|ClearSemaphore]] |
| |- | | |- |
| | 0x000A0040 | | | 0x000A0040 |
− | | MaskSemaphore(unsigned short mask) | + | | [[DSP:MaskSemaphore|MaskSemaphore]] |
| |- | | |- |
| | 0x000B0000 | | | 0x000B0000 |
− | | CheckSemaphoreRequest(bool * pIsRequested ) | + | | [[DSP:CheckSemaphoreRequest|CheckSemaphoreRequest]] |
| |- | | |- |
| | 0x000C0040 | | | 0x000C0040 |
Line 46: |
Line 45: |
| |- | | |- |
| | 0x000E00C0 | | | 0x000E00C0 |
− | | ReadPipe(int, int, unsigned char *, unsigned short) | + | | [[DSP:ReadPipe|ReadPipe]] |
| |- | | |- |
| | 0x000F0080 | | | 0x000F0080 |
− | | GetPipeReadableSize(int, int, unsigned short *) | + | | [[DSP:GetPipeReadableSize|GetPipeReadableSize]] |
| |- | | |- |
| | 0x001000C0 | | | 0x001000C0 |
Line 55: |
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 |
− | | [[DSP:InvalidateDCache|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 76: |
Line 75: |
| |- | | |- |
| | 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 97: |
Line 96: |
| |- | | |- |
| | 0x001F0000 | | | 0x001F0000 |
− | | GetHeadphoneStatus(bool *isConnected). Wrapper for cdc:DSP cmd 6 | + | | [[DSP:GetHeadphoneStatus|GetHeadphoneStatus]] |
| |- | | |- |
| | 0x00200040 | | | 0x00200040 |
− | | ForceHeadphoneOut(bool forceout) (Wrapper for cdc:DSP cmd 8) | + | | [[DSP:ForceHeadphoneOut|ForceHeadphoneOut]] |
| |- | | |- |
| | 0x00210000 | | | 0x00210000 |
− | | GetIsDspOccupied(bool *) returns a byte (can be 1 or 0) can be set to 1 in LoadComponent | + | | [[DSP:GetIsDspOccupied|GetIsDspOccupied]] |
| |} | | |} |
| | | |
| 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]] |