Difference between revisions of "SceHdmi"

From Vita Development Wiki
Jump to navigation Jump to search
 
(8 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
 
 
|-
 
|-
| 3.65 || SceHdmi || Non-secure || Kernel || 0x7C2BF963
+
| 0.940-3.740.011 || Non-secure || Kernel
 
|}
 
|}
  
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
 
|}
 
|}
  
Line 27: Line 24:
 
typedef SceUInt16 SceHdmiScreenMode; // internal VIC, translated to VIC defined in CEA861D in sceHdmiSetupTx
 
typedef SceUInt16 SceHdmiScreenMode; // internal VIC, translated to VIC defined in CEA861D in sceHdmiSetupTx
  
typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.60
+
typedef struct SceHdmiSetupTxParam { // size is 0x10 on FW 3.600.011
 
     SceHdmiScreenMode screenMode;
 
     SceHdmiScreenMode screenMode;
 +
    SceUInt16 unk_2;
 
     SceUInt16 unk_4;
 
     SceUInt16 unk_4;
 
     SceUInt16 unk_6;
 
     SceUInt16 unk_6;
Line 36: Line 34:
 
     SceUInt16 unk_E;
 
     SceUInt16 unk_E;
 
} SceHdmiSetupTxParam;
 
} 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>
 
</source>
  
Line 43: Line 67:
 
<pre>
 
<pre>
 
HdmiSetRgbRangeMode
 
HdmiSetRgbRangeMode
HdmiClearCecInfo
 
HdmiGetCecInfo
 
 
HdmiSetResolution
 
HdmiSetResolution
HdmiCecEnable
 
HdmiCecDisable
 
HdmiEnableCec
 
HdmiDisableCec
 
HdmiCecCmdForcedPollingMsg
 
 
</pre>
 
</pre>
 +
 +
Note that 3.010.031 FW has not be looked into but seems interesting.
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 57: Line 76:
 
! Version !! NID !! Name
 
! Version !! NID !! Name
 
|-
 
|-
| 3.60 || 0x05174BC2 ||
+
| 0.940-3.010.031 || 0x11CDF06E || sceHdmiCmdSetTMDSCtrlForDriver
 
|-
 
|-
| 0.940-3.60 || 0x0686FBD6 || sceHdmiSetHdcpModeForDriver_0
+
| 0.940-3.010.031 || 0xB2CD590E || Not implemented on FW 0.940.
 
|-
 
|-
| 0.940-3.60 || 0x08AFFB03 || sceHdmiCmdSetAudioMuteForDriver
+
| 0.940-3.010.031 || 0xCB0D8AF5 || Not implemented on FW 0.940.
 
|-
 
|-
| 0.940-3.60 || 0x0F12364A || int SceHdmiForDriver_0F12364A(SceUInt32 some_id, SceUInt32 value); Sets a global variable to value according to the id (between 0 and 5)
+
| 0.940-3.010.031 || 0x6478E8B6 || Not implemented on FW 0.940.
 
|-
 
|-
| 0.940 || 0x11CDF06E || sceHdmiCmdSetTMDSCtrlForDriver
+
| 0.940-3.010.031 || 0xD9D29A67 || Not implemented on FW 0.940.
 
|-
 
|-
| 3.60 || 0x291F000B || int sceHdmiCecDisableForDriver(void);
+
| 0.940-3.010.031 || 0xFBE18ADE || Not implemented on FW 0.940.
 
|-
 
|-
| 3.60 || 0x3126A070 || Registers a callback
+
| 0.940-3.740.011 || 0x08AFFB03 || sceHdmiCmdSetAudioMuteForDriver
 
|-
 
|-
| 3.60 || 0x47894820 || Used to init ?
+
| 0.940-3.740.011 || 0x0F12364A || int sceHdmiRegisterEventCallbackForDriver(SceUInt32 slot, (void*)(void) fptr); Sets a callback slot (between 0 and 5).
 
|-
 
|-
| 3.60 || 0x47B753EB || int sceHdmiClearCecInfo(void);
+
| 0.940-3.740.011 || 0x5A212BB3 || int sceHdmiSetupTxForDriver(SceHdmiSetupTxParam *pParam);
 
|-
 
|-
| 3.60 || 0x4C31F5E8 || int sceHdmiCecCmdOneTouchPlayForDriver(SceUInt32 cmd); // cmd can be 0, 1 or 2
+
| 0.940-3.740.011 || 0x7AD0F6C9 || int sceHdmiGetChipIdForDriver(void *pBuf, SceSize inBufSize, SceSize *pOutBufSize);
 
|-
 
|-
| 0.940-3.60 || 0x5A212BB3 || int sceHdmiSetupTxForDriver(SceHdmiSetupTxParam *pParam);
+
| 0.940-3.740.011 || 0x854EEB78 || Gets VIC and Audio Config and setups memory.
 
|-
 
|-
| 0.940 || 0x6478E8B6 || not implemented on FW 0.940
+
| 0.940-3.740.011 || 0x99A3CABE || sceHdmiCmdSetVideoMuteForDriver. Black image functionality.
 
|-
 
|-
| 3.60 || 0x6D2D10D8 || sceHdmiCecCmdForcedPollingMsgForDriver
+
| 0.940-3.740.011 || 0xE331EC90 || int sceHdmiUnRegisterEventCallbackForDriver(SceUInt32 slot); Clear callback slot (between 0 and 5).
 
|-
 
|-
| 0.940-3.60 || 0x7AD0F6C9 || int sceHdmiGetChipIdForDriver(void *pBuf, SceSize inBufSize, SceSize *pOutBufSize);
+
| 0.940-3.740.011 || 0xE66D5A4D || sceHdmiCmdSetAvMuteForDriver Temp name was sceHdmiSetTxMuteForDriver.
 
|-
 
|-
| 0.940-3.60 || 0x854EEB78 || gets VIC and Audio Config and setups memory
+
| 0.940-3.740.011 || 0x0686FBD6 || sceHdmiSetHdcpModeForDriver_0 This is a guessed name.
 
|-
 
|-
| 3.60 || 0x8EB0FD9C || int sceHdmiGetMonitorInfo(void *pBuf); Gets 0xF4 bytes of data for the active id (between 0 and 6), data is derived from the EDID.
+
| 0.940-3.740.011 || 0xFAB3A2E9 || sceHdmiSetHdcpModeForDriver_1 This is a guessed name.
 
|-
 
|-
| 3.60 || 0x93AA48AC || int sceHdmiGetCecInfoForDriver(SceHdmiCecInfo *pCecInfo); // SceHdmiCecInfo is 0x20 bytes on FW 3.60
+
| 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.940-3.60 || 0x99A3CABE || sceHdmiCmdSetVideoMuteForDriver. Black image functionality.
+
| 0.990.000-3.740.011 || 0xF20529CC || int sceHdmiCmdSetEdidModeForDriver(SceBool mode); // mode: 0: Pass, 1: On
 
|-
 
|-
| 3.60 || 0xB04F5B6A ||
+
| 0.990.000-3.740.011 || 0xFF5546D8 || sceHdmiCheckAksvForDriver This is a guessed name.
 
|-
 
|-
| 0.940 || 0xB2CD590E || not implemented on FW 0.940
+
| 2.100.081-3.740.011 || 0x4C31F5E8 || int sceHdmiCecCmdOneTouchPlayForDriver(SceUInt32 cmd); // cmd can be 0, 1 or 2
 
|-
 
|-
| 0.940 || 0xCB0D8AF5 || not implemented on FW 0.940
+
| 2.100.081-3.740.011 || 0x6D2D10D8 || sceHdmiCecCmdForcedPollingMsgForDriver
 
|-
 
|-
| 3.60 || 0xD929E4E5 ||
+
| 2.500.071-3.740.011 || 0xFA30ACFC || int sceHdmiCecEnableForDriver(void);
 
|-
 
|-
| 0.940 || 0xD9D29A67 || not implemented on FW 0.940
+
| 2.500.071-3.740.011 || 0x291F000B || int sceHdmiCecDisableForDriver(void);
 
|-
 
|-
| 0.940-3.60 || 0xE331EC90 || int SceHdmiForDriver_E331EC90(SceUInt32 some_id); Sets a global variable to 0 according to the id (between 0 and 5)
+
| 2.500.071-3.740.011 || 0x47B753EB || int sceHdmiClearCecInfoForDriver(void);
 
|-
 
|-
| 0.940-3.60 || 0xE66D5A4D || sceHdmiCmdSetAvMuteForDriver (temp name was sceHdmiSetTxMuteForDriver)
+
| 2.500.071-3.740.011 || 0x93AA48AC || int sceHdmiGetCecInfoForDriver(SceHdmiCecInfo *pCecInfo); // SceHdmiCecInfo is 0x20 bytes on FW 3.60
 
|-
 
|-
| 3.60 || 0xEA486A37 ||
+
| 2.500.071-3.740.011 || 0x3126A070 || sceHdmiCecRegisterEventCallbackForDriver
 
|-
 
|-
| 3.60 || 0xF20529CC || int sceHdmiCmdSetEdidMode(SceBool mode); // mode: 0: Pass, 1: On
+
| 2.500.071-3.740.011 || 0x47894820 || Used to init?
 
|-
 
|-
| 3.60 || 0xFA30ACFC || int sceHdmiCecEnableForDriver(void);
+
| 2.500.071-3.740.011 || 0x05174BC2 ||
 
|-
 
|-
| 0.940-3.60 || 0xFAB3A2E9 || sceHdmiSetHdcpModeForDriver_1
+
| 2.500.071-3.740.011 || 0xD929E4E5 ||
 
|-
 
|-
| 0.940 || 0xFBE18ADE || not implemented on FW 0.940
+
| 2.500.071-3.740.011 || 0xEA486A37 ||
 
|-
 
|-
| 3.60 || 0xFF5546D8 ||
+
| 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