SceSyscon: Difference between revisions
Jump to navigation
Jump to search
CelesteBlue (talk | contribs) |
CelesteBlue (talk | contribs) |
||
Line 120: | Line 120: | ||
<source lang="c">int SceSysconForDriver_710A7CF0(int enable_power);</source> | <source lang="c">int SceSysconForDriver_710A7CF0(int enable_power);</source> | ||
=== | === sceSysconResetDeviceForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 132: | Line 132: | ||
|} | |} | ||
<source lang="c">int | <source lang="c">int sceSysconResetDeviceForDriver(int type, int mode);</source> | ||
It issues <code>SMC #0</code> with <code>r12 = 0x11A</code>. | It issues <code>SMC #0</code> with <code>r12 = 0x11A</code>. | ||
The <code> | The <code>mode</code> argument is usually set to <code>0x2</code> or sometimes <code>0x8002</code> (which seems to correspond to some request by the UDC and BT drivers). | ||
The <code>type</code> argument determines what to do. | The <code>type</code> argument determines what to do. | ||
Line 144: | Line 144: | ||
! Type !! Description | ! Type !! Description | ||
|- | |- | ||
| 0 || Power | | 0 || Power off. | ||
|- | |- | ||
| 1 || | | 1 || Suspend (low-power state). | ||
|- | |- | ||
| 2 || Cold reset. | | 2 || Cold reset. | ||
Line 158: | Line 158: | ||
| 16 || ?? | | 16 || ?? | ||
|- | |- | ||
| 17 || | | 17 || Soft reset (suspend and immediately resume). | ||
|- | |- | ||
|} | |} |
Revision as of 13:46, 9 March 2018
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceSyscon | Non-secure | Kernel | 0x250E65E7 |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69 | SceSysconForDriver | Non-secure | Kernel | 0x60A35F64 |
SceSysconForDriver
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 */
Read command, used by SceRtc
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x299B1CE7 |
int syscon_read_command(uint32_t id, void *buffer, int size);
Get syscon timestamp
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x4D588A0A |
int sceSysconGetTimeStamp(char timeStamp[16]);
Wait syscon initialized
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x55DF1C9B |
int sceSysconWaitInitialized(void);
Set ADV7533 CDC HPD pin state
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x62155962 |
Sets the pin CDC Hot Plug Detect (HPD) state of the HDMI bridge (ADV7533).
int SceSysconForDriver_62155962(int enable_HDMI_CDC_HPD_pin);
Sync
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x6E517D22 |
int ksceSysconCmdSync(SceSysconPacket *packet, int noWait);
MSIF (Memory card) power
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x710A7CF0 |
int SceSysconForDriver_710A7CF0(int enable_power);
sceSysconResetDeviceForDriver
Version | World | NID |
---|---|---|
1.69 | 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);
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 |
---|---|---|
0x800 | 0xA2FE9BF9 | ?? |
0x001 | 0x270B7B0B | ?? |
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 | ?? |
0x88A | 0xA2E85DB9 | ?? |
0x88B | 0x5A614349 | ?? |
0x88C | 0xB872E904 | ?? |
0x88D | 0xDD16ABD9 | ?? |
0x88E | 0x7F198FA2 | ?? |
0x88F | 0x40FF3898 | ?? |
0x890 | 0x285594F8 | ?? |
0x891 | 0x04EC7579 | sceSysconCtrlLEDForDriver |
0x892 | 0x596B17B7 | ?? |
0x893 | 0x2A4B0437 | ?? |
0x899 | 0x5CDDA14D | ?? |
0x89A | 0x59DC5938 | ?? |
0x89B | 0x710A7CF0 | sceSysconCtrlMsPowerForDriver |
0x89C | 0xB1F88B11 | ?? |
0x89D | 0x6F586D1A | sceSysconConfigLEDForDriver? |
0x89E | 0x9CA6EB70 | ?? |
0x89F | 0xCB41B531 | ?? |
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 | ?? |
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 | ?? | ?? |