SceSyscon: Difference between revisions
Jump to navigation
Jump to search
Line 37: | Line 37: | ||
u32 delay; | u32 delay; | ||
u8 reserved[32]; | u8 reserved[32]; | ||
} SceSysconPacket; | } SceSysconPacket; /* size 0x20? */ | ||
</source> | </source> | ||
Revision as of 18:21, 15 February 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
struct SceSysconPacket
typedef struct SceSysconPacket { struct SceSysconPacket *next; u32 status; SceUID semaId; u32 unk; u8 tx[16]; // tx[0..1] = cmd, tx[2] = size u8 rx[16]; // rx[0..1] = cmd?, rx[2] = size? s32 (*callback)(struct SceSysconPacket *, void *argp); u32 gp; void *argp; u32 time; u32 delay; u8 reserved[32]; } SceSysconPacket; /* size 0x20? */
Sync
Version | NID |
---|---|
3.60 (non-secure) | 0x6E517D22 |
int ksceSysconCmdSync(SceSysconPacket *packet, int noWait);
Send command
Version | NID |
---|---|
1.69 (non-secure) | 0xE26488B9 |
int syscon_send_command(uint32_t id, void *args, int size);
Command exec async
Version | NID |
---|---|
3.60 (non-secure) | 0xC2224E82 |
int sceSysconCmdExecAsync(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);
Read command
Version | NID |
---|---|
3.60 (non-secure) | 0x299B1CE7 |
int syscon_read_command(uint32_t id, void *buffer, int size);
Get Baryon?
Version | NID |
---|---|
3.60 (non-secure) | 0xFF86F4C5 |
int SceSysconForDriver_FF86F4C5(void);
Reset device
Version | NID |
---|---|
1.69 (non-secure) | 0x8A95D35C |
int syscon_reset_device(int type, int unk);
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. |
17 | Suspend and immediately resume (soft reset). |
Commands used by function
It seems like the command format is as follows: (direction << 8) | cmd_id
, where direction = 0
means write to syscon, and direction = 1
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 | ?? |
0x892 | 0x596B17B7 | ?? |
0x893 | 0x2A4B0437 | ?? |
0x899 | 0x5CDDA14D | ?? |
0x89A | 0x59DC5938 | ?? |
0x89B | 0x710A7CF0 | ?? |
0x89C | 0xB1F88B11 | ?? |
0x89D | 0x6F586D1A | ?? |
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 | ?? |
0x773B8126 | ?? |
0x80D6E061 | ?? |