SceCodec: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
(Rework how hardware is presented)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Driver for the PS Vita Audio CODEC
== Hardware ==
=== WM180xx ===
Fat (and PSTV?) units use the Wolfson Microelectronics WM1803E as Audio CODEC.
Early Slim units (USS-1001) are fitted with a WM1804E instead, but both ICs have the same behavior.
The driver doesn't differentiate between WM1803 and WM1804.
The WM1803 is potentially derived from the [https://statics.cirrus.com/pubs/proDatasheet/WM8962B_Rev4.3.pdf WM8962B] as the pinout and registers seem to match.
=== CX20902 ===
Late Slim models (e.g., USS-1002 from October 2015) use the Conexant CX20902 as Audio CODEC.
== Module ==
== Module ==


Line 4: Line 20:


The module can be found in two versions at the following locations:
The module can be found in two versions at the following locations:
* <code>os0:kd/codec.skprx</code> / <code>bootimage:codec.skprx</code>
* <code>os0:kd/codec.skprx</code> / <code>bootimage:codec.skprx</code> for the WM chip.
* <code>bootimage:codec_cx.skprx</code>
* <code>bootimage:codec_cx.skprx</code> for the Conexant chip.


PSTV (Dolce) always uses the former.
PSTV always uses the former whilst PS Vita uses the latter if [[SceSysStateMgr]]'s <code>AU_CODEC_IC_CONEXANT</code> check evaluates to true.
 
PSVita only uses the latter if [[SceSysStateMgr|SysStateMgr]]'s <code>AU_CODEC_IC_CONEXANT</code> check evaluates to true.


{| class="wikitable"
{| class="wikitable"
|-
|-
! Name !! Version !! World !! Privilege  
! Filename !! Version !! World !! Privilege  
|-
|-
| <code>codec.skprx</code> || 0.931-3.65 || Non-secure || Kernel  
| <code>codec.skprx</code> || 0.931-3.65 || Non-secure || Kernel
|-
|-
| <code>codec_cx.skprx</code> || 3.50-3.60 || Non-secure || Kernel
| <code>codec_cx.skprx</code> || 3.50-3.60 || Non-secure || Kernel
Line 28: Line 42:
! Version !! Name !! World !! Visibility !! NID
! Version !! Name !! World !! Visibility !! NID
|-
|-
| 1.69-3.60 || [[SceCodec#SceCodecForDriver|SceCodecForDriver]] || Non-secure || Kernel || 0x7697DFB4
| 0.931-3.60 || [[SceCodec#SceCodecForDriver|SceCodecForDriver]] || Non-secure || Kernel || 0x7697DFB4
|-
|-
| 1.69 || [[SceCodec#SceCodec|SceCodec]] || Non-secure || User || 0xD0A994AE
| 0.931-1.06 || [[SceCodec#SceCodec|SceCodec]] || Non-secure || User || not present
|-
|-
| 3.60 || [[SceCodec#SceCodec|SceCodec]] || Non-secure || User || not present
| 1.50-1.69 || [[SceCodec#SceCodec|SceCodec]] || Non-secure || User || 0xD0A994AE
|-
| 1.80-3.74 || [[SceCodec#SceCodec|SceCodec]] || Non-secure || User || not present. Removed.
|}
|}


== SceCodecForDriver ==
== SceCodecForDriver ==


          SceCodecForDriver_23BF8884: 0x23BF8884
=== SceCodecForDriver_22C89CBA ===
          SceCodecForDriver_41CFFE48: 0x41CFFE48
{| class="wikitable"
          SceCodecForDriver_4FA36937: 0x4FA36937
|-
          SceCodecForDriver_762BF716: 0x762BF716
! Version !! NID
          sceCodecSetVolumeForDriver: 0x8932F886
|-
          SceCodecForDriver_C1DB7BAF: 0xC1DB7BAF
| 1.80 || 0x22C89CBA
          SceCodecForDriver_CCDE1B04: 0xCCDE1B04
|-
          SceCodecForDriver_CF398D8A: 0xCF398D8A
| 3.60 || not present
          SceCodecForDriver_E483B663: 0xE483B663
|}
 
=== SceCodecForDriver_B21F430C ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80 || 0xB21F430C
|-
| 3.60 || not present
|}
 
=== SceCodecForDriver_EA43A61F ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80 || 0xEA43A61F
|-
| 3.60 || not present
|}
 
=== SceCodecForDriver_F89C5615 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80 || 0xF89C5615
|-
| 3.60 || not present
|}
 
=== sceCodecSetVolumeForDriver ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0x8932F886
|}
 
=== SceCodecForDriver_CCDE1B04 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0xCCDE1B04
|}
 
=== SceCodecForDriver_23BF8884 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0x23BF8884
|}
 
=== SceCodecForDriver_41CFFE48 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0x41CFFE48
|}
 
=== SceCodecForDriver_4FA36937 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0x4FA36937
|}
 
=== SceCodecForDriver_762BF716 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0x762BF716
|}
 
=== SceCodecForDriver_C1DB7BAF ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0xC1DB7BAF
|}
 
=== SceCodecForDriver_CF398D8A ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0xCF398D8A
|}
 
=== SceCodecForDriver_E483B663 ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.80-3.60 || 0xE483B663
|}


== SceCodec ==
== SceCodec ==


Present on 1.69. Not present on 3.60+ (functions were certainly moved to [[SceCodecEngine]], [[SceCodecEngineWrapper]] or [[SceCodecEnginePerf]]).
=== SceCodec_8FA4193D ===
{| class="wikitable"
|-
! Version !! NID
|-
| 1.50-1.69 || 0x8FA4193D
|-
| 1.80-3.74 || not present
|}


Alias of [[#SceCodecForDriver_CCDE1B04]].


[[Category:ARM]]
[[Category:Kernel]]
[[Category:Modules]]
[[Category:Modules]]
[[Category:Kernel]]
[[Category:Library]]

Latest revision as of 12:32, 10 November 2024

Driver for the PS Vita Audio CODEC

Hardware

WM180xx

Fat (and PSTV?) units use the Wolfson Microelectronics WM1803E as Audio CODEC. Early Slim units (USS-1001) are fitted with a WM1804E instead, but both ICs have the same behavior. The driver doesn't differentiate between WM1803 and WM1804.

The WM1803 is potentially derived from the WM8962B as the pinout and registers seem to match.

CX20902

Late Slim models (e.g., USS-1002 from October 2015) use the Conexant CX20902 as Audio CODEC.

Module

This module only exists in Non-Secure world.

The module can be found in two versions at the following locations:

  • os0:kd/codec.skprx / bootimage:codec.skprx for the WM chip.
  • bootimage:codec_cx.skprx for the Conexant chip.

PSTV always uses the former whilst PS Vita uses the latter if SceSysStateMgr's AU_CODEC_IC_CONEXANT check evaluates to true.

Filename Version World Privilege
codec.skprx 0.931-3.65 Non-secure Kernel
codec_cx.skprx 3.50-3.60 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.931-3.60 SceCodecForDriver Non-secure Kernel 0x7697DFB4
0.931-1.06 SceCodec Non-secure User not present
1.50-1.69 SceCodec Non-secure User 0xD0A994AE
1.80-3.74 SceCodec Non-secure User not present. Removed.

SceCodecForDriver

SceCodecForDriver_22C89CBA

Version NID
1.80 0x22C89CBA
3.60 not present

SceCodecForDriver_B21F430C

Version NID
1.80 0xB21F430C
3.60 not present

SceCodecForDriver_EA43A61F

Version NID
1.80 0xEA43A61F
3.60 not present

SceCodecForDriver_F89C5615

Version NID
1.80 0xF89C5615
3.60 not present

sceCodecSetVolumeForDriver

Version NID
1.80-3.60 0x8932F886

SceCodecForDriver_CCDE1B04

Version NID
1.80-3.60 0xCCDE1B04

SceCodecForDriver_23BF8884

Version NID
1.80-3.60 0x23BF8884

SceCodecForDriver_41CFFE48

Version NID
1.80-3.60 0x41CFFE48

SceCodecForDriver_4FA36937

Version NID
1.80-3.60 0x4FA36937

SceCodecForDriver_762BF716

Version NID
1.80-3.60 0x762BF716

SceCodecForDriver_C1DB7BAF

Version NID
1.80-3.60 0xC1DB7BAF

SceCodecForDriver_CF398D8A

Version NID
1.80-3.60 0xCF398D8A

SceCodecForDriver_E483B663

Version NID
1.80-3.60 0xE483B663

SceCodec

SceCodec_8FA4193D

Version NID
1.50-1.69 0x8FA4193D
1.80-3.74 not present

Alias of #SceCodecForDriver_CCDE1B04.