SceSyscon: Difference between revisions
Jump to navigation
Jump to search
CelesteBlue (talk | contribs) |
CelesteBlue (talk | contribs) |
||
Line 24: | Line 24: | ||
|} | |} | ||
== | == Types == | ||
<source lang="c"> | <source lang="c"> | ||
typedef struct SceSysconPacket { | typedef struct SceSysconPacket { | ||
Line 42: | Line 41: | ||
} SceSysconPacket; /* size 0x80 */ | } SceSysconPacket; /* size 0x80 */ | ||
</source> | </source> | ||
== SceSysconForDriver == | |||
=== sceSysconIsLowBatteryInhibitUpdateRebootForDriver === | |||
{| class="wikitable" | |||
! Version !! World !! NID | |||
|- | |||
| 3.60 || non-secure || 0x1A0C140F | |||
|} | |||
used by [[ScePower#scePowerIsLowBatteryInhibitUpdateReboot|scePowerIsLowBatteryInhibitUpdateReboot]] | |||
<source lang="c">int sceSysconIsLowBatteryInhibitUpdateRebootForDriver(unk);</source> | |||
=== sceSysconIsLowBatteryInhibitUpdateDownloadForDriver === | |||
{| class="wikitable" | |||
! Version !! World !! NID | |||
|- | |||
| 3.60 || non-secure || 0x1E3130EE | |||
|} | |||
used by [[ScePower#scePowerIsLowBatteryInhibitUpdateDownload|scePowerIsLowBatteryInhibitUpdateDownload]] | |||
<source lang="c">int sceSysconIsLowBatteryInhibitUpdateDownloadForDriver(unk);</source> | |||
=== sceSysconCmdReadForDriver === | === sceSysconCmdReadForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x299B1CE7 | |||
| 3.60 | |||
| non-secure | |||
| 0x299B1CE7 | |||
|} | |} | ||
<source lang="c"> | |||
used by SceRtc | |||
int sceSysconCmdReadForDriver(uint32_t id, void *buffer, int size);</source> | |||
<source lang="c">int sceSysconCmdReadForDriver(uint32_t id, void *buffer, int size);</source> | |||
=== sceSysconGetTimeStampForDriver === | === sceSysconGetTimeStampForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x4D588A0A | |||
| 3.60 | |||
| non-secure | |||
| 0x4D588A0A | |||
|} | |} | ||
<source lang="c">int sceSysconGetTimeStampForDriver(char timeStamp[16]);</source> | <source lang="c">int sceSysconGetTimeStampForDriver(char timeStamp[16]);</source> | ||
Line 73: | Line 87: | ||
=== sceSysconWaitInitializedForDriver === | === sceSysconWaitInitializedForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x55DF1C9B | |||
| 3.60 | |||
| non-secure | |||
| 0x55DF1C9B | |||
|} | |} | ||
<source lang="c">int sceSysconWaitInitializedForDriver(void);</source> | <source lang="c">int sceSysconWaitInitializedForDriver(void);</source> | ||
Line 86: | Line 95: | ||
=== sceSysconCtrlHdmiCecPowerForDriver === | === sceSysconCtrlHdmiCecPowerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x62155962 | |||
| 3.60 | |||
| non-secure | |||
| 0x62155962 | |||
|} | |} | ||
Line 102: | Line 106: | ||
=== sceSysconCmdSyncForDriver === | === sceSysconCmdSyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x6E517D22 | |||
| 3.60 | |||
| non-secure | |||
| 0x6E517D22 | |||
|} | |} | ||
<source lang="c">int sceSysconCmdSyncForDriver(SceSysconPacket *packet, int noWait);</source> | <source lang="c">int sceSysconCmdSyncForDriver(SceSysconPacket *packet, int noWait);</source> | ||
Line 115: | Line 114: | ||
=== sceSysconCtrlMsPowerForDriver === | === sceSysconCtrlMsPowerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x710A7CF0 | |||
| 3.60 | |||
| non-secure | |||
| 0x710A7CF0 | |||
|} | |} | ||
<source lang="c">int sceSysconCtrlMsPowerForDriver(int enable_power);</source> | <source lang="c">int sceSysconCtrlMsPowerForDriver(int enable_power);</source> | ||
Line 128: | Line 122: | ||
=== sceSysconResetDeviceForDriver === | === sceSysconResetDeviceForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 1.69 || non-secure || 0x8A95D35C | |||
|- | |- | ||
| | | 3.60 || non-secure || 0x8A95D35C | ||
| non-secure | |||
| 0x8A95D35C | |||
|} | |} | ||
Line 147: | Line 138: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type !! Description | ! Type !! Description | ||
|- | |- | ||
| 0 || Power off | | 0 || Power off | ||
|- | |- | ||
| 1 || Suspend (low-power state) | | 1 || Suspend (low-power state) | ||
|- | |- | ||
| 2 || Cold reset | | 2 || Cold reset | ||
|- | |- | ||
| 3 || Reset to update mode? | | 3 || ?Reset to update mode? | ||
|- | |- | ||
| 4 || Reset to update mode? | | 4 || ?Reset to update mode? | ||
|- | |- | ||
| 5 || Hibernate | | 5 || Hibernate | ||
|- | |- | ||
| 16 || ?? | | 16 || ?? | ||
|- | |- | ||
| 17 || Soft reset (suspend and immediately resume) | | 17 || Soft reset (suspend and immediately resume) | ||
|} | |} | ||
=== sceSysconCmdExecForDriver === | === sceSysconCmdExecForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0x9ADDCA4A | |||
| 3.60 | |||
| non-secure | |||
| 0x9ADDCA4A | |||
|} | |} | ||
<source lang="c">int sceSysconCmdExecForDriver(SceSysconPacket *packet, unsigned int flags);</source> | <source lang="c">int sceSysconCmdExecForDriver(SceSysconPacket *packet, unsigned int flags);</source> | ||
Line 183: | Line 167: | ||
=== sceSysconCtrlSdPowerForDriver === | === sceSysconCtrlSdPowerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0xBE1ADE4F | |||
| 3.60 | |||
| non-secure | |||
| 0xBE1ADE4F | |||
|} | |} | ||
<source lang="c">int sceSysconCtrlSdPowerForDriver(int enable_power);</source> | <source lang="c">int sceSysconCtrlSdPowerForDriver(int enable_power);</source> | ||
Line 196: | Line 175: | ||
=== sceSysconCmdExecAsyncForDriver === | === sceSysconCmdExecAsyncForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0xC2224E82 | |||
| 3.60 | |||
| non-secure | |||
| 0xC2224E82 | |||
|} | |} | ||
<source lang="c">int sceSysconCmdExecAsyncForDriver(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);</source> | <source lang="c">int sceSysconCmdExecAsyncForDriver(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);</source> | ||
Line 209: | Line 183: | ||
=== sceSysconCmdSendForDriver === | === sceSysconCmdSendForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 1.69 || non-secure || 0xE26488B9 | |||
| 1.69 | |||
| non-secure | |||
| 0xE26488B9 | |||
|} | |} | ||
<source lang="c"> | |||
used by SceRtc and ScePower | |||
int sceSysconCmdSendForDriver(uint32_t id, void *args, int size);</source> | |||
<source lang="c">int sceSysconCmdSendForDriver(uint32_t id, void *args, int size);</source> | |||
=== sceSysconSetDebugHandlersForDriver === | === sceSysconSetDebugHandlersForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! World !! NID | |||
|- | |- | ||
| 3.60 || non-secure || 0xF245CD6F | |||
| 3.60 | |||
| non-secure | |||
| 0xF245CD6F | |||
|} | |} | ||
Revision as of 15:12, 22 August 2018
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceSyscon | Non-secure | Kernel | 0x250E65E7 |
3.60 | SceSyscon | Non-secure | Kernel | 0x5358BA05 |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69 | SceSysconForDriver | Non-secure | Kernel | 0x60A35F64 |
3.60 | SceSysconForDriver | Non-secure | Kernel | 0x60A35F64 |
Types
typedef struct SceSysconPacket { struct SceSysconPacket *next; u32 status; SceUID semaId; u32 unk; u8 tx[32]; // tx[0..1] = cmd, tx[2] = size u8 rx[32]; // rx[0..1] = cmd?, rx[2] = size? u32 unk1[4]; int (*callback)(SceSysconPacket *packet, void *argp); void *argp; u32 time; u32 unk2[5]; } SceSysconPacket; /* size 0x80 */
SceSysconForDriver
sceSysconIsLowBatteryInhibitUpdateRebootForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x1A0C140F |
used by scePowerIsLowBatteryInhibitUpdateReboot
int sceSysconIsLowBatteryInhibitUpdateRebootForDriver(unk);
sceSysconIsLowBatteryInhibitUpdateDownloadForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x1E3130EE |
used by scePowerIsLowBatteryInhibitUpdateDownload
int sceSysconIsLowBatteryInhibitUpdateDownloadForDriver(unk);
sceSysconCmdReadForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x299B1CE7 |
used by SceRtc
int sceSysconCmdReadForDriver(uint32_t id, void *buffer, int size);
sceSysconGetTimeStampForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x4D588A0A |
int sceSysconGetTimeStampForDriver(char timeStamp[16]);
sceSysconWaitInitializedForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x55DF1C9B |
int sceSysconWaitInitializedForDriver(void);
sceSysconCtrlHdmiCecPowerForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x62155962 |
Sets the pin CDC Hot Plug Detect (HPD) state of the HDMI bridge (ADV7533).
int sceSysconCtrlHdmiCecPowerForDriver(int enable_HDMI_CDC_HPD_pin);
sceSysconCmdSyncForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x6E517D22 |
int sceSysconCmdSyncForDriver(SceSysconPacket *packet, int noWait);
sceSysconCtrlMsPowerForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x710A7CF0 |
int sceSysconCtrlMsPowerForDriver(int enable_power);
sceSysconResetDeviceForDriver
Version | World | NID |
---|---|---|
1.69 | non-secure | 0x8A95D35C |
3.60 | non-secure | 0x8A95D35C |
int sceSysconResetDeviceForDriver(int type, int mode);
It issues SMC #0
with r12 = 0x11A
.
The mode
argument is usually set to 0x2
or sometimes 0x8002
(which seems to correspond to some request by the UDC and BT drivers).
The type
argument determines what to do.
Type | Description |
---|---|
0 | Power off |
1 | Suspend (low-power state) |
2 | Cold reset |
3 | ?Reset to update mode? |
4 | ?Reset to update mode? |
5 | Hibernate |
16 | ?? |
17 | Soft reset (suspend and immediately resume) |
sceSysconCmdExecForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x9ADDCA4A |
int sceSysconCmdExecForDriver(SceSysconPacket *packet, unsigned int flags);
sceSysconCtrlSdPowerForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xBE1ADE4F |
int sceSysconCtrlSdPowerForDriver(int enable_power);
sceSysconCmdExecAsyncForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xC2224E82 |
int sceSysconCmdExecAsyncForDriver(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);
sceSysconCmdSendForDriver
Version | World | NID |
---|---|---|
1.69 | non-secure | 0xE26488B9 |
used by SceRtc and ScePower
int sceSysconCmdSendForDriver(uint32_t id, void *args, int size);
sceSysconSetDebugHandlersForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xF245CD6F |
/** A set of debug handlers for syscon, that you can set in sceSysconSetDebugHandlersForDriver(). */ typedef struct SceSysconDebugHandlers { /** Structure size (probably, unused). */ s32 size; /** Callback ran right before running a packet, with a pointer to it passed as the first argument. */ void (*start)(SceSysconPacket *packet); /** Callback ran right after finishing running a packet, with a pointer to it passed as the first argument. */ void (*end)(SceSysconPacket *packet); } SceSysconDebugHandlers; int sceSysconSetDebugHandlersForDriver(void);
sceSysconGetBaryonVersionForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xFF86F4C5 |
int sceSysconGetBaryonVersionForDriver(void);
sceSysconGetSomeVersionForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xCBD6D8BC |
int sceSysconGetSomeVersionForDriver(void);
?sceSysconIsPowerOnlineForDriver?
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x9DA2A5AB |
int sceSysconIsPowerOnlineForDriver(void);
sceSysconGetDataForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x81A6060D |
sceSysconGetOrSetDataForDriver
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x10C9657A |
Commands used by function
It seems like the command format is as follows: (direction << 8) | cmd_id
, where direction = 1
means write to syscon, and direction = 0
means read from syscon.
Commands used | NID | Description |
---|---|---|
0x1 | 0x270B7B0B and module_start | ?? used during SysconInit |
0x3 | module_start | ?? used during SysconInit |
0x10 | 0xCF5B2F2F | ?? |
0x11 | 0xD7BEFF8B | ?? |
0x13 | 0xBA09F171 | ?? |
0x14 | 0x93075DD1 | ?? |
0x15 | 0x3E09A1F4 | ?? |
0x80 | module_start | ?? used at SysconInit |
0xB0 | 0x058941D7 | ?? |
0xB2 | 0xDECCB2B4 | ?? |
0xB3 | 0x33B5CDB3 | ?? |
0xB4 | 0xF6D4DDC4 | ?? |
0xB7 | 0x91EF4EC3 | ?? |
0x100 | 0x145F59A4 | ?? |
0x120 | 0x76272CB9 | ?? |
0x130 | module_start | ?? used during SysconInit |
0x131 | 0xF99BC858 | ?? |
0x38A | 0xA1F1B973 | ?? |
0x3AC | 0x3664E2C0 | ?? |
0x3BC | 0x2E6D97CD | ?? |
0x480 | 0xD01E64FC | ?? |
0x800 | 0xA2FE9BF9 | ?? related to Ernie#CMD_0x0800 |
0x805 | 0xEF810687 | sceSysconGetUsbDetStatusForDriver |
0x806 | 0xE7F5D3DC | Reboots Vita? |
0x807 | 0x253CC522 | ?? |
0x820 | 0x727F985A | ?? |
0x840 | 0x4FEC564C | sceSysconGetManualChargeModeForDriver |
0x841 | 0x3C3B949C | ?? |
0x842 | 0x1C29C00E | ?? |
0x843 | 0x730E4725 | ?? |
0x880 | 0xA039B563 | ?? |
0x881 | 0x9BF78047 | ?? |
0x884 | 0x3FDD29D6 | ?? |
0x885 | 0x79E6DD8B | ?? |
0x886 | 0x62155962 | sceSysconCtrlHdmiCecPowerForDriver |
0x887 | 0x063425AE | ?? |
0x888 | 0xBE1ADE4F | sceSysconCtrlSdPowerForDriver |
0x889 | 0x8D1D97E8 | F00D and USB related |
0x88A | 0xA2E85DB9 | Wlan/Bluetooth related |
0x88B | 0x5A614349 | ?? |
0x88C | 0xB872E904 | ?? |
0x88D | 0xDD16ABD9 | ?? |
0x88E | 0x7F198FA2 | ?? related to Ernie#CMD_0x088E |
0x88F | 0x40FF3898 | UsbEtherSmsc and WlanBt related |
0x890 | 0x285594F8 | ?? |
0x891 | 0x04EC7579 | sceSysconCtrlLEDForDriver |
0x892 | 0x596B17B7 | ScePower related |
0x893 | 0x2A4B0437 | ScePower related |
0x899 | 0x5CDDA14D | SceHpremote related |
0x89A | 0x59DC5938 | SceUdcd and ScePower related |
0x89B | 0x710A7CF0 | sceSysconCtrlMsPowerForDriver |
0x89C | 0xB1F88B11 | SceUsbServ related |
0x89D | 0x6F586D1A | sceSysconConfigLEDForDriver? |
0x89E | 0x9CA6EB70 | ScePower related |
0x89F | 0xCB41B531 | ?? |
0x8A0 | 0x9070F139 | ScePower related |
0x8A1 | 0x00A65FC1 | ?? |
0x8A2 | 0x0826BA07 | ?? |
0x8C5 | 0x3274A925 | SceUsbServ and SceUsbEtherSmsc related |
0x8C6 | 0xDFB024C4 | SceSblUpdateMgr related |
0x8C7 | 0x87FF8041 | ?? |
0x8C8 | 0x7BFA95DA | ?? |
0x8C9 | 0x451C1662 | ?? |
0x8CA | 0x79074DE4 | ?? |
0x8CB | 0x7D25F6D2 | ?? |
0x8CC | 0xD2ADABCA | ?? |
0x8CE | 0x3B354824 | sceSysconGetTemperatureLog |
0x8CF | 0x3843D657 | sceSysconClearTemperatureLog |
0x8D0 | 0xF87679EE | ?? |
0x900, 0x802 | 0xC562AF3A | ?? |
0x901, 0x803 | 0x03F11220 | ?? |
0x902 | 0xAD0A8275 | ?? |
0x903 | 0x26F9D729 | ?? |
0x981 | 0x9070F139 | ?? |
0x982 | 0x00A65FC1 | ?? |
0x983 | 0x0826BA07 | ?? |
0x984 | 0xB841C141 | ?? |
0x985 | 0x91D3B7A3 | ?? |
0x98A | 0xF93CF833 | ?? |
0x98B | 0xE1885F68 | ?? |
0x98C | 0xCD73079D | ?? |
0xA82 | 0x7BAFE083 | ?? |
0x1080 | 0x81A6060D | ?? |
0x1081 | 02EC6D55D | ?? |
0x1310 | 0x351946B0 | ?? |
0x1382 | 0xA4968B8C | ?? |
0x1383 | 0xFCC3E8EE | ?? |
0x1384 | 0x7B9B3617 | ?? |
0x1392 | 0xFD65FFCB | ?? |
0x1393 | 0x02350352 | ?? |
0x1394 | 0x7DE84CE3 | ?? |
Callbacks
All the following exports have this function prototype: int sceSysconSet*Callback(void (*func)(int enable, void *argp), void *argp);
.
NID | Function | Description |
---|---|---|
0x129EA022 | ?? | ?? |
0x14730196 | ?? | ?? |
0x2D471528 | ?? | ?? |
0x32418370 | sceSysconSetAlarmCallbackForDriver | SYSCON_CB_ALARM |
0x3F0DB7C0 | sceSysconSetLowBatteryCallbackForDriver | SYSCON_CB_LOW_BATTERY |
0x773B8126 | sceSysconSetThermalAlertCallbackForDriver | SYSCON_CB_THERMAL_ALERT |
0x80D6E061 | ?? | ?? |
0x9F8340FF | ?? | ?? |