SceSyscon

From Vita Development Wiki
Jump to navigation Jump to search

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[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 0x80 */

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

Version NID
3.60 (non-secure) 0x9ADDCA4A
int sceSysconCmdExec(SceSysconPacket *packet, unsigned int flags);

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);

Get syscon timestamp

Version NID
3.60 (non-secure) 0x4D588A0A
int sceSysconGetTimeStamp(char timeStamp[16]);

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 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 ??
0x773B8126 ??
0x80D6E061 ??