SceSyscon: Difference between revisions
Jump to navigation
Jump to search
(Only reorder by NID) |
|||
Line 38: | Line 38: | ||
} SceSysconPacket; /* size 0x80 */ | } SceSysconPacket; /* size 0x80 */ | ||
</source> | </source> | ||
=== Read command === | === Read command === | ||
Line 104: | Line 52: | ||
<source lang="c">int syscon_read_command(uint32_t id, void *buffer, int size);</source> | <source lang="c">int syscon_read_command(uint32_t id, void *buffer, int size);</source> | ||
=== Get | === Get syscon timestamp === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 113: | Line 61: | ||
| 3.60 | | 3.60 | ||
| non-secure | | non-secure | ||
| | | 0x4D588A0A | ||
|} | |} | ||
<source lang="c">int | <source lang="c">int sceSysconGetTimeStamp(char timeStamp[16]);</source> | ||
=== | === Sync === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 126: | Line 74: | ||
| 3.60 | | 3.60 | ||
| non-secure | | non-secure | ||
| | | 0x6E517D22 | ||
|} | |} | ||
<source lang="c">int | <source lang="c">int ksceSysconCmdSync(SceSysconPacket *packet, int noWait);</source> | ||
=== Reset device === | === Reset device === | ||
Line 171: | Line 119: | ||
|- | |- | ||
|} | |} | ||
=== Command exec === | |||
{| class="wikitable" | |||
|- | |||
! Version | |||
! World | |||
! NID | |||
|- | |||
| 3.60 | |||
| non-secure | |||
| 0x9ADDCA4A | |||
|} | |||
<source lang="c">int sceSysconCmdExec(SceSysconPacket *packet, unsigned int flags);</source> | |||
=== Command exec async === | |||
{| class="wikitable" | |||
|- | |||
! Version | |||
! World | |||
! NID | |||
|- | |||
| 3.60 | |||
| non-secure | |||
| 0xC2224E82 | |||
|} | |||
<source lang="c">int sceSysconCmdExecAsync(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);</source> | |||
=== Send command === | |||
{| class="wikitable" | |||
|- | |||
! Version | |||
! World | |||
! NID | |||
|- | |||
| 1.69 | |||
| non-secure | |||
| 0xE26488B9 | |||
|} | |||
<source lang="c">int syscon_send_command(uint32_t id, void *args, int size);</source> | |||
=== ksceSysconSetDebugHandlers === | === ksceSysconSetDebugHandlers === | ||
Line 197: | Line 184: | ||
int ksceSysconSetDebugHandlers(void); | int ksceSysconSetDebugHandlers(void); | ||
</source> | </source> | ||
=== Get Baryon? === | |||
{| class="wikitable" | |||
|- | |||
! Version | |||
! World | |||
! NID | |||
|- | |||
| 3.60 | |||
| non-secure | |||
| 0xFF86F4C5 | |||
|} | |||
<source lang="c">int SceSysconForDriver_FF86F4C5(void);</source> | |||
== Commands used by function == | == Commands used by function == |
Revision as of 07:24, 21 July 2017
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
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]);
Sync
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x6E517D22 |
int ksceSysconCmdSync(SceSysconPacket *packet, int noWait);
Reset device
Version | World | NID |
---|---|---|
1.69 | non-secure | 0x8A95D35C |
int syscon_reset_device(int type, int unk);
It issues SMC #0
with r12 = 0x11A
.
The unk
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 of the device. |
1 | Enter low-power (suspend) state. |
2 | Cold reset. |
3 | Reset to update mode? |
4 | Reset to update mode? |
5 | Hibernate. |
16 | ?? |
17 | Suspend and immediately resume (soft reset). |
Command exec
Version | World | NID |
---|---|---|
3.60 | non-secure | 0x9ADDCA4A |
int sceSysconCmdExec(SceSysconPacket *packet, unsigned int flags);
Command exec async
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xC2224E82 |
int sceSysconCmdExecAsync(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);
Send command
Version | World | NID |
---|---|---|
1.69 | non-secure | 0xE26488B9 |
int syscon_send_command(uint32_t id, void *args, int size);
ksceSysconSetDebugHandlers
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xF245CD6F |
/** A set of debug handlers for syscon, that you can set in ksceSysconSetDebugHandlers(). */ 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 ksceSysconSetDebugHandlers(void);
Get Baryon?
Version | World | NID |
---|---|---|
3.60 | non-secure | 0xFF86F4C5 |
int SceSysconForDriver_FF86F4C5(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 | ksceSysconGetUsbDetStatus |
0x806 | 0xE7F5D3DC | ?? |
0x807 | 0x253CC522 | ?? |
0x820 | 0x727F985A | ?? |
0x840 | 0x4FEC564C | ksceSysconGetManualChargeMode |
0x841 | 0x3C3B949C | ?? |
0x842 | 0x1C29C00E | ?? |
0x843 | 0x730E4725 | ?? |
0x880 | 0xA039B563 | ?? |
0x881 | 0x9BF78047 | ?? |
0x884 | 0x3FDD29D6 | ?? |
0x885 | 0x79E6DD8B | ?? |
0x886 | 0x62155962 | ?? |
0x887 | 0x063425AE | ?? |
0x888 | 0xBE1ADE4F | ?? |
0x889 | 0x8D1D97E8 | ?? |
0x88A | 0xA2E85DB9 | ?? |
0x88B | 0x5A614349 | ?? |
0x88C | 0xB872E904 | ?? |
0x88D | 0xDD16ABD9 | ?? |
0x88E | 0x7F198FA2 | ?? |
0x88F | 0x40FF3898 | ?? |
0x890 | 0x285594F8 | ?? |
0x891 | 0x04EC7579 | ksceSysconCtrlLED |
0x892 | 0x596B17B7 | ?? |
0x893 | 0x2A4B0437 | ?? |
0x899 | 0x5CDDA14D | ?? |
0x89A | 0x59DC5938 | ?? |
0x89B | 0x710A7CF0 | ?? |
0x89C | 0xB1F88B11 | ?? |
0x89D | 0x6F586D1A | ksceSysconConfigLED? |
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 | Description |
---|---|
0x129EA022 | ?? |
0x14730196 | ?? |
0x2D471528 | ?? |
0x32418370 | SYSCON_CB_ALARM? |
0x3F0DB7C0 | SYSCON_CB_LOW_BATTERY |
0x773B8126 | SYSCON_CB_THERMAL_ALERT |
0x80D6E061 | ?? |
0x9F8340FF | ?? |