SceHdmi: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(5 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
|}
|}


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 37: Line 35:
} SceHdmiSetupTxParam;
} SceHdmiSetupTxParam;


typedef struct SceHdmiMonitorInfo {
typedef struct SceHdmiMonitorInfo { // size is 0xF4 on FW 3.600.011
// 0x0
// 0x0
short manufacturer_id;
short manufacturer_id;
Line 61: Line 59:
// 0x70
// 0x70
char unk_70[0x84];
char unk_70[0x84];
} SceHdmiMonitorInfo; // 0xF4 in total
} SceHdmiMonitorInfo;
</source>
</source>


Line 71: Line 69:
HdmiSetResolution
HdmiSetResolution
</pre>
</pre>
Note that 3.010.031 FW has not be looked into but seems interesting.


{| class="wikitable"
{| class="wikitable"
Line 76: 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 sceHdmiRegisterSomeCallback(SceUInt32 slot, (void*)(void) fptr); Sets a callback slot (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 sceHdmiUnregisterSomeCallback(SceUInt32 slot); Clear callback slot (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