Difference between revisions of "SceHdmi"

From Vita Development Wiki
Jump to navigation Jump to search
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
== Module ==
 
== Module ==
  
=== Known NIDs ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Version !! Name !! World !! Privilege !! NID
+
! Version !! World !! Privilege
 
|-
 
|-
| 1.69 || SceHdmi || Non-secure || Kernel || 0x930015D0
+
| 0.940-3.740.011 || Non-secure || Kernel
|-
 
| 3.65 || SceHdmi || Non-secure || Kernel || 0x7C2BF963
 
 
|}
 
|}
  
Line 19: Line 16:
 
! Version !! Name !! World !! Visibility !! NID
 
! Version !! Name !! World !! Visibility !! NID
 
|-
 
|-
| 1.69-3.60 || [[SceHdmi#SceHdmiForDriver|SceHdmiForDriver]] || Non-secure || Kernel || 0x58A1A1C5
+
| 0.940-3.740.011 || [[SceHdmi#SceHdmiForDriver|SceHdmiForDriver]] || Non-secure || Kernel || 0x58A1A1C5
 
|}
 
|}
 +
 +
== Types ==
 +
 +
<source lang="C">
 +
typedef SceUInt16 SceHdmiScreenMode; // internal VIC, translated to VIC defined in CEA861D in sceHdmiSetupTx
 +
 +
typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.600.011
 +
    SceHdmiScreenMode screenMode;
 +
    SceUInt16 unk_2;
 +
    SceUInt16 unk_4;
 +
    SceUInt16 unk_6;
 +
    SceUInt16 unk_8;
 +
    SceUInt16 unk_A;
 +
    SceUInt16 unk_C;
 +
    SceUInt16 unk_E;
 +
} SceHdmiSetupTxParam;
 +
 +
typedef struct SceHdmiMonitorInfo { // size is 0xF4 on FW 3.600.011
 +
// 0x0
 +
short manufacturer_id;
 +
short product_code;
 +
int serial_number;
 +
char manufacture_week;
 +
char manufacture_year;
 +
char unk_a;
 +
char name[0x10];
 +
char pad_1b;
 +
int flags_1c;
 +
// 0x20
 +
int unk_20;
 +
int flags_24;
 +
char unk_28[0x38];
 +
// 0x60
 +
int unk_60;
 +
int unk_64;
 +
short unk_68;
 +
char screen_width;              // in centimetre
 +
char screen_height;              // in centimetre
 +
int unk_6c;
 +
// 0x70
 +
char unk_70[0x84];
 +
} SceHdmiMonitorInfo;
 +
</source>
  
 
== SceHdmiForDriver ==
 
== SceHdmiForDriver ==
 +
 +
To find:
 +
<pre>
 +
HdmiSetRgbRangeMode
 +
HdmiSetResolution
 +
</pre>
 +
 +
Note that 3.010.031 FW has not be looked into but seems interesting.
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 28: Line 76:
 
! Version !! NID !! Name
 
! Version !! NID !! Name
 
|-
 
|-
| 3.60 || 0x05174BC2 ||
+
| 0.940-3.010.031 || 0x11CDF06E || sceHdmiCmdSetTMDSCtrlForDriver
 
|-
 
|-
| 3.60 || 0x0686FBD6 ||
+
| 0.940-3.010.031 || 0xB2CD590E || Not implemented on FW 0.940.
 
|-
 
|-
| 0.940-3.60 || 0x08AFFB03 || sceHdmiSetAudioMuteForDriver
+
| 0.940-3.010.031 || 0xCB0D8AF5 || Not implemented on FW 0.940.
 
|-
 
|-
| 3.60 || 0x0F12364A ||
+
| 0.940-3.010.031 || 0x6478E8B6 || Not implemented on FW 0.940.
 
|-
 
|-
| 3.60 || 0x291F000B || sceHdmiDisableCec
+
| 0.940-3.010.031 || 0xD9D29A67 || Not implemented on FW 0.940.
 
|-
 
|-
| 3.60 || 0x3126A070 ||
+
| 0.940-3.010.031 || 0xFBE18ADE || Not implemented on FW 0.940.
 
|-
 
|-
| 3.60 || 0x47894820 ||
+
| 0.940-3.740.011 || 0x08AFFB03 || sceHdmiCmdSetAudioMuteForDriver
 
|-
 
|-
| 3.60 || 0x47B753EB ||
+
| 0.940-3.740.011 || 0x0F12364A || int sceHdmiRegisterEventCallbackForDriver(SceUInt32 slot, (void*)(void) fptr); Sets a callback slot (between 0 and 5).
 
|-
 
|-
| 3.60 || 0x4C31F5E8 || CecOneTouchPlay
+
| 0.940-3.740.011 || 0x5A212BB3 || int sceHdmiSetupTxForDriver(SceHdmiSetupTxParam *pParam);
 
|-
 
|-
| 3.60 || 0x5A212BB3 ||
+
| 0.940-3.740.011 || 0x7AD0F6C9 || int sceHdmiGetChipIdForDriver(void *pBuf, SceSize inBufSize, SceSize *pOutBufSize);
 
|-
 
|-
| 3.60 || 0x6D2D10D8 || sceHdmiCecCmdForcedPollingMsg
+
| 0.940-3.740.011 || 0x854EEB78 || Gets VIC and Audio Config and setups memory.
 
|-
 
|-
| 3.60 || 0x7AD0F6C9 ||
+
| 0.940-3.740.011 || 0x99A3CABE || sceHdmiCmdSetVideoMuteForDriver. Black image functionality.
 
|-
 
|-
| 3.60 || 0x854EEB78 ||
+
| 0.940-3.740.011 || 0xE331EC90 || int sceHdmiUnRegisterEventCallbackForDriver(SceUInt32 slot); Clear callback slot (between 0 and 5).
 
|-
 
|-
| 3.60 || 0x8EB0FD9C ||
+
| 0.940-3.740.011 || 0xE66D5A4D || sceHdmiCmdSetAvMuteForDriver Temp name was sceHdmiSetTxMuteForDriver.
 
|-
 
|-
| 3.60 || 0x93AA48AC ||
+
| 0.940-3.740.011 || 0x0686FBD6 || sceHdmiSetHdcpModeForDriver_0 This is a guessed name.
 
|-
 
|-
| 0.940-3.60 || 0x99A3CABE || sceHdmiSetVideoMuteForDriver. Black image functionality.
+
| 0.940-3.740.011 || 0xFAB3A2E9 || sceHdmiSetHdcpModeForDriver_1 This is a guessed name.
 
|-
 
|-
| 3.60 || 0xB04F5B6A ||
+
| 0.990.000-3.740.011 || 0x8EB0FD9C || int sceHdmiGetMonitorInfoForDriver(void *pBuf); Gets 0xF4 bytes of data for the active id (between 0 and 6). Data is derived from the EDID.
 
|-
 
|-
| 3.60 || 0xD929E4E5 ||
+
| 0.990.000-3.740.011 || 0xF20529CC || int sceHdmiCmdSetEdidModeForDriver(SceBool mode); // mode: 0: Pass, 1: On
 
|-
 
|-
| 3.60 || 0xE331EC90 ||
+
| 0.990.000-3.740.011 || 0xFF5546D8 || sceHdmiCheckAksvForDriver This is a guessed name.
 
|-
 
|-
| 3.60 || 0xE66D5A4D || sceHdmiSetTxMuteForDriver (guessed name)
+
| 2.100.081-3.740.011 || 0x4C31F5E8 || int sceHdmiCecCmdOneTouchPlayForDriver(SceUInt32 cmd); // cmd can be 0, 1 or 2
 
|-
 
|-
| 3.60 || 0xEA486A37 ||
+
| 2.100.081-3.740.011 || 0x6D2D10D8 || sceHdmiCecCmdForcedPollingMsgForDriver
 
|-
 
|-
| 3.60 || 0xF20529CC ||
+
| 2.500.071-3.740.011 || 0xFA30ACFC || int sceHdmiCecEnableForDriver(void);
 
|-
 
|-
| 3.60 || 0xFA30ACFC || sceHdmiEnableCec
+
| 2.500.071-3.740.011 || 0x291F000B || int sceHdmiCecDisableForDriver(void);
 
|-
 
|-
| 3.60 || 0xFAB3A2E9 ||
+
| 2.500.071-3.740.011 || 0x47B753EB || int sceHdmiClearCecInfoForDriver(void);
 
|-
 
|-
| 3.60 || 0xFF5546D8 ||
+
| 2.500.071-3.740.011 || 0x93AA48AC || int sceHdmiGetCecInfoForDriver(SceHdmiCecInfo *pCecInfo); // SceHdmiCecInfo is 0x20 bytes on FW 3.60
 +
|-
 +
| 2.500.071-3.740.011 || 0x3126A070 || sceHdmiCecRegisterEventCallbackForDriver
 +
|-
 +
| 2.500.071-3.740.011 || 0x47894820 || Used to init?
 +
|-
 +
| 2.500.071-3.740.011 || 0x05174BC2 ||
 +
|-
 +
| 2.500.071-3.740.011 || 0xD929E4E5 ||
 +
|-
 +
| 2.500.071-3.740.011 || 0xEA486A37 ||
 +
|-
 +
| 3.100.081-3.740.011 || 0xB04F5B6A || sceHdmiEnableHPDForDriver This is a guessed name
 
|}
 
|}
  
 
+
[[Category:ARM]]
 +
[[Category:Kernel]]
 
[[Category:Modules]]
 
[[Category:Modules]]
[[Category:Kernel]]
+
[[Category:Library]]

Latest revision as of 21:03, 1 May 2023

Module

Version World Privilege
0.940-3.740.011 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.940-3.740.011 SceHdmiForDriver Non-secure Kernel 0x58A1A1C5

Types

typedef SceUInt16 SceHdmiScreenMode; // internal VIC, translated to VIC defined in CEA861D in sceHdmiSetupTx

typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.600.011
    SceHdmiScreenMode screenMode;
    SceUInt16 unk_2;
    SceUInt16 unk_4;
    SceUInt16 unk_6;
    SceUInt16 unk_8;
    SceUInt16 unk_A;
    SceUInt16 unk_C;
    SceUInt16 unk_E;
} SceHdmiSetupTxParam;

typedef struct SceHdmiMonitorInfo { // size is 0xF4 on FW 3.600.011
// 0x0
	short manufacturer_id;
	short product_code;
	int serial_number;
	char manufacture_week;
	char manufacture_year;
	char unk_a;
	char name[0x10];
	char pad_1b;
	int flags_1c;
// 0x20
	int unk_20;
	int flags_24;
	char unk_28[0x38];
// 0x60
	int unk_60;
	int unk_64;
	short unk_68;
	char screen_width;               // in centimetre
	char screen_height;              // in centimetre
	int unk_6c;
// 0x70
	char unk_70[0x84];
} SceHdmiMonitorInfo;

SceHdmiForDriver

To find:

HdmiSetRgbRangeMode
HdmiSetResolution

Note that 3.010.031 FW has not be looked into but seems interesting.

Version NID Name
0.940-3.010.031 0x11CDF06E sceHdmiCmdSetTMDSCtrlForDriver
0.940-3.010.031 0xB2CD590E Not implemented on FW 0.940.
0.940-3.010.031 0xCB0D8AF5 Not implemented on FW 0.940.
0.940-3.010.031 0x6478E8B6 Not implemented on FW 0.940.
0.940-3.010.031 0xD9D29A67 Not implemented on FW 0.940.
0.940-3.010.031 0xFBE18ADE Not implemented on FW 0.940.
0.940-3.740.011 0x08AFFB03 sceHdmiCmdSetAudioMuteForDriver
0.940-3.740.011 0x0F12364A int sceHdmiRegisterEventCallbackForDriver(SceUInt32 slot, (void*)(void) fptr); Sets a callback slot (between 0 and 5).
0.940-3.740.011 0x5A212BB3 int sceHdmiSetupTxForDriver(SceHdmiSetupTxParam *pParam);
0.940-3.740.011 0x7AD0F6C9 int sceHdmiGetChipIdForDriver(void *pBuf, SceSize inBufSize, SceSize *pOutBufSize);
0.940-3.740.011 0x854EEB78 Gets VIC and Audio Config and setups memory.
0.940-3.740.011 0x99A3CABE sceHdmiCmdSetVideoMuteForDriver. Black image functionality.
0.940-3.740.011 0xE331EC90 int sceHdmiUnRegisterEventCallbackForDriver(SceUInt32 slot); Clear callback slot (between 0 and 5).
0.940-3.740.011 0xE66D5A4D sceHdmiCmdSetAvMuteForDriver Temp name was sceHdmiSetTxMuteForDriver.
0.940-3.740.011 0x0686FBD6 sceHdmiSetHdcpModeForDriver_0 This is a guessed name.
0.940-3.740.011 0xFAB3A2E9 sceHdmiSetHdcpModeForDriver_1 This is a guessed name.
0.990.000-3.740.011 0x8EB0FD9C int sceHdmiGetMonitorInfoForDriver(void *pBuf); Gets 0xF4 bytes of data for the active id (between 0 and 6). Data is derived from the EDID.
0.990.000-3.740.011 0xF20529CC int sceHdmiCmdSetEdidModeForDriver(SceBool mode); // mode: 0: Pass, 1: On
0.990.000-3.740.011 0xFF5546D8 sceHdmiCheckAksvForDriver This is a guessed name.
2.100.081-3.740.011 0x4C31F5E8 int sceHdmiCecCmdOneTouchPlayForDriver(SceUInt32 cmd); // cmd can be 0, 1 or 2
2.100.081-3.740.011 0x6D2D10D8 sceHdmiCecCmdForcedPollingMsgForDriver
2.500.071-3.740.011 0xFA30ACFC int sceHdmiCecEnableForDriver(void);
2.500.071-3.740.011 0x291F000B int sceHdmiCecDisableForDriver(void);
2.500.071-3.740.011 0x47B753EB int sceHdmiClearCecInfoForDriver(void);
2.500.071-3.740.011 0x93AA48AC int sceHdmiGetCecInfoForDriver(SceHdmiCecInfo *pCecInfo); // SceHdmiCecInfo is 0x20 bytes on FW 3.60
2.500.071-3.740.011 0x3126A070 sceHdmiCecRegisterEventCallbackForDriver
2.500.071-3.740.011 0x47894820 Used to init?
2.500.071-3.740.011 0x05174BC2
2.500.071-3.740.011 0xD929E4E5
2.500.071-3.740.011 0xEA486A37
3.100.081-3.740.011 0xB04F5B6A sceHdmiEnableHPDForDriver This is a guessed name