SceSyscon: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 387: Line 387:
! Version !! NID
! Version !! NID
|-
|-
| 3.60 || 0x7B9B3617
| 0.990-3.60 || 0x7B9B3617
|}
|}
<source lang="C">int sceSysconCommitConfigstorageTransactionForDriver(void);</source>


=== sceSysconEndConfigstorageTransactionForDriver ===
=== sceSysconEndConfigstorageTransactionForDriver ===

Revision as of 09:32, 17 January 2020

System controller

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

sceSysconErnieShutdownForDriver

Version NID
0.931-3.60 0x94AB13CC
#define ERNIE_SHUTDOWN_SHUTDOWN 0
#define ERNIE_SHUTDOWN_REBOOT 1

int sceSysconErnieShutdownForDriver(int mode);

sceSysconPowerCtrlKermitResetForDriver

Version NID
0.931-3.60 0x14B99945
int sceSysconPowerCtrlKermitResetForDriver(void);

sceSysconBatteryExecBLCommandForDriver

Version NID
0.990-3.60 0x74B2AB55
int sceSysconBatteryExecBLCommandForDriver(int ctx);

sceSysconBatteryReadBLCommandForDriver

Version NID
0.990-3.60 0x448DAFF1
int sceSysconBatteryReadBLCommandForDriver(int ctx, int unk1, int unk2, void *buf, SceSize size);

sceSysconBatterySetBLCommandForDriver

Version NID
0.990-3.60 0xE4F29744
int sceSysconBatterySetBLCommandForDriver(int ctx, int unk, void *src, SceSize size);

sceSysconBatteryStartBLModeForDriver

Version NID
0.990-3.60 0x2CEF078E
int sceSysconBatteryStartBLModeForDriver(void);

sceSysconBatteryStopBLModeForDriver

Version NID
0.990-3.60 0xE4AE7852
int sceSysconBatteryStopBLModeForDriver(void);

sceSysconBatterySWResetForDriver

Version NID
0.990-3.60 0x87DA378D
int sceSysconBatterySWResetForDriver(void);

sceSysconIsLowBatteryInhibitUpdateRebootForDriver

Version NID
3.60 0x1A0C140F

used by scePowerIsLowBatteryInhibitUpdateReboot

int sceSysconIsLowBatteryInhibitUpdateRebootForDriver(unk);

sceSysconIsLowBatteryInhibitUpdateDownloadForDriver

Version NID
3.60 0x1E3130EE

used by scePowerIsLowBatteryInhibitUpdateDownload

int sceSysconIsLowBatteryInhibitUpdateDownloadForDriver(unk);

sceSysconGetManualChargeModeForDriver

Version NID
3.60 0x4FEC564C

sceSysconGetLogInfoForDriver

Version NID
3.60 0x701535FC

sceSysconLogStartForDriver

Version NID
3.60 0x4E55CF5E

sceSysconLogStartWaitingForDriver

Version NID
3.60 0x9C0B1E61

sceSysconLogReadDataForDriver

Version NID
3.60 0x487D97F3

sceSysconGetTemperatureLogForDriver

Version NID
3.60 0x3B354824

sceSysconClearTemperatureLogForDriver

Version NID
3.60 0x3843D657

sceSysconGetUsbDetStatusForDriver

Version NID
3.60 0xEF810687

sceSysconCmdReadForDriver

Version NID
3.60 0x299B1CE7

used by SceRtc

int sceSysconCmdReadForDriver(uint32_t id, void *buffer, int size);

sceSysconGetBaryonTimestampForDriver

Version NID
3.60 0x4D588A0A

A temp name was sceSysconGetTimeStampForDriver.

int sceSysconGetBaryonTimestampForDriver(char timeStamp[16]);

sceSysconWaitInitializedForDriver

Version NID
3.60 0x55DF1C9B
int sceSysconWaitInitializedForDriver(void);

sceSysconCtrlHdmiCecPowerForDriver

Version NID
3.60 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 NID
3.60 0x6E517D22
int sceSysconCmdSyncForDriver(SceSysconPacket *packet, int noWait);

sceSysconCtrlRMRPowerForDriver

Version NID
3.60 0x710A7CF0

Temp name was sceSysconCtrlMsPowerForDriver.

int sceSysconCtrlRMRPowerForDriver(int enable_power);

sceSysconSetPowerModeForDriver

Version NID
0.940-3.60 0x8A95D35C

Temp name was sceSysconResetDeviceForDriver.

int sceSysconSetPowerModeForDriver(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.

Real define names are like: "SCE_SYSCON_POWERMODE_MODE_STANDBY".

Type Description Syscon command
0 Power off {0xC0, 0, 5, type, (~mode) & 0xFF, (~mode >> 8) & 0xFF, (mode >> 16) & 0xFF}
1 Suspend (low-power state) {0xC0, 0, 5, type, (~mode) & 0xFF, (~mode >> 8) & 0xFF, (mode >> 16) & 0xFF}
2 Cold reset {0x01, 8, 1, 0}
3 ?Reset to update mode? {0xC1, 0, 2, 0}
4 ?Reset to update mode? {0xC1, 0, 2, 1}
5 Hibernate {0xC2, 0, 2, 0x5A}
16 ?? {0xC0, 0, 5, type, (~mode) & 0xFF, (~mode >> 8) & 0xFF, (mode >> 16) & 0xFF}
17 Soft reset (suspend and immediately resume) {0xC0, 0, 5, type, (~mode) & 0xFF, (~mode >> 8) & 0xFF, (mode >> 16) & 0xFF}

sceSysconEnableHibernateIOForDriver

Version NID
0.990-3.60 0x4946538A

sceSysconCmdExecForDriver

Version NID
3.60 0x9ADDCA4A
int sceSysconCmdExecForDriver(SceSysconPacket *packet, unsigned int flags);

sceSysconCtrlSdPowerForDriver

Version NID
3.60 0xBE1ADE4F
int sceSysconCtrlSdPowerForDriver(int enable_power);

sceSysconCtrlWirelessPowerForDriver

Version NID
0.990 0x4FBDA504
3.60 unk

sceSysconCtrlWirelessPowerDownForDriver

Version NID
0.990 0xDF8C6D2D
3.60 unk

sceSysconCmdExecAsyncForDriver

Version NID
3.60 0xC2224E82
int sceSysconCmdExecAsyncForDriver(SceSysconPacket *packet, u32 flags, int (*callback)(SceSysconPacket *, void *), void *argp);

sceSysconCmdSendForDriver

Version NID
1.69-3.60 0xE26488B9

Used by SceRtc and ScePower.

int sceSysconCmdSendForDriver(uint32_t id, void *args, int size);

sceSysconVerifyConfigstorageScriptForDriver

Version NID
3.60 0xCC6F90A8

sceSysconLoadConfigstorageScriptForDriver

Version NID
3.60 0x89C5CFD6

sceSysconBeginConfigstorageTransactionForDriver

Version NID
0.990-3.60 0xA4968B8C
int sceSysconBeginConfigstorageTransactionForDriver(void);

sceSysconCommitConfigstorageTransactionForDriver

Version NID
0.990-3.60 0x7B9B3617
int sceSysconCommitConfigstorageTransactionForDriver(void);

sceSysconEndConfigstorageTransactionForDriver

Version NID
3.60 0xFCC3E8EE

sceSysconSetDebugHandlersForDriver

Version NID
3.60 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(SceSysconDebugHandlers *debug_handlers);

sceSysconGetBatteryCalibDataForDriver

Version NID
3.60 0x9ADC9936

sceSysconGetTouchpanelDeviceInfoForDriver

Version NID
0.990-3.60 0xF492E69E
typedef struct SceKernelTouchpanelDeviceInfo {
  uint16_t FrontVendorID;
  uint16_t FrontFwVersion;
  uint16_t BackVendorID;
  uint16_t BackFwVersion;
} SceKernelTouchpanelDeviceInfo;

int sceSysconGetTouchpanelDeviceInfoForDriver(SceKernelTouchpanelDeviceInfo *pInfo);

sceSysconGetHardwareInfoForDriver

Version NID
0.931-3.60 0xCBD6D8BC

Return Ernie HW info.

int sceSysconGetHardwareInfoForDriver(void);

sceSysconGetHardwareInfo2ForDriver

Version NID
3.60 0x965C68C3
//"hwinfo = 0x%08x, id = 0x%llx, hwtype = 0x%08x"
typedef struct SceKernelHardwareInfo2 {
  int hwinfo;
  uint64_t id; // unsure
  int hwtype; // unsure
} SceKernelHardwareInfo2;

int sceSysconGetHardwareInfo2ForDriver(SceKernelHardwareInfo2 *pInfo);

sceSysconGetBaryonVersionForDriver

Version NID
0.931-3.60 0xFF86F4C5

On PSVita it is Ernie Version not Baryon Version.

int sceSysconGetBaryonVersionForDriver(void);

SceSysconForDriver_EBE3262C

Version NID
1.03-3.60 0xEBE3262C

In SceSblPostSsMgr, used just after sceSysconGetBaryonVersionForDriver.

sceSysconGetErnieDLVersionForDriver

Version NID
0.990-3.60 0xD2F456DC
void sceSysconGetErnieDLVersionForDriver(int *result);

sceSysconGetBatteryVersionForDriver

Version NID
0.931-3.60 0x68E0031E

Battery IC name: if HWinfo > 7 "Abby" else "Bert".

int sceSysconGetBatteryVersionForDriver(int *HWinfo, int *FWinfo, int *DFinfo);

sceSysconGetManufacturesStatusForDriver

Version NID
3.60 0x3E09A1F4

Unverified name.

SceSysconForDriver_9DA2A5AB

Version NID
3.60 0x9DA2A5AB

Used by scePowerGetBatteryLifeTime and other ScePower functions.

int SceSysconForDriver_9DA2A5AB(void);

sceSysconNvsSetRunModeForDriver

Version NID
0.931-3.60 0x81A6060D

Used by sceSblNvsReadDataForKernel and sceSblNvsWriteDataForKernel.

// mode: 0 before read/write
int sceSysconNvsSetRunModeForDriver(int mode);

sceSysconNvsReadDataForDriver

Version NID
0.931-3.60 0xACAFA2B8

Used by sceSblSsNvsReadDataForKernel and sceSblSsGetNvsDataForDriver.

int sceSysconNvsReadDataForDriver(int offset, char *buffer, int size);

sceSysconNvsWriteDataForDriver

Version NID
0.931-3.60 0x10C9657A

Used by sceSblSsNvsWriteDataForKernel and sceSblSsSetNvsDataForDriver.

int sceSysconNvsWriteDataForDriver(int offset, char *buffer, int size);

sceSysconSetMultiCnPortForDriver

Version NID
0.940-3.60 0x8AAB6308

0: for JIG mode 0x10000: for normal mode

int sceSysconSetMultiCnPortForDriver(int port);

sceSysconCtrlLEDForDriver

Version NID
0.931-3.60 0x04EC7579

example values: a1: 0x40, a2: 0 (OFF), 1 (ON)

int sceSysconCtrlLEDForDriver(int a1, int a2);

?sceSysconConfigLEDForDriver?

Version NID
3.60 0x6F586D1A

sceSysconCtrlAccPowerForDriver

Version NID
0.940-3.60 0x8D1D97E8
int sceSysconCtrlAccPowerForDriver(int a1);

sceSysconCtrlDeviceResetForDriver

Version NID
0.990-3.60 0x40FF3898

sceSysconJigOpenPortForDriver

Version NID
0.940-3.60 0x44A173F5
int sceSysconJigOpenPortForDriver(void);

sceSysconJigClosePortForDriver

Version NID
0.940-3.60 0x483FAE05
int sceSysconJigClosePortForDriver(void);

sceSysconJigSetConfigForDriver

Version NID
0.940-3.60 0xD24BF916
int sceSysconJigSetConfigForDriver(char a1, char a2);

sceSysconCtrlHostOutputViaDongleForDriver

Version NID
0.990-3.60 0xDECCB2B4
int sceSysconCtrlHostOutputViaDongleForDriver(void);

receive_pm_sm_jig_msg_from_syscon

Version NID
0.940-3.60 0x3C80B529
int receive_pm_sm_jig_msg_from_syscon(unsigned int offset, unsigned int size, char *buf);

send_pm_sm_jig_msg_to_syscon

Version NID
0.940-3.60 0x7BFBA09E

send_pm_sm_stop_to_syscon

Version NID
0.990-3.60 0x933D813F

Used just after send_pm_sm_jig_msg_to_syscon or when it fails before.

int send_pm_sm_stop_to_syscon(int a1, int a2, int a3);

sceSysconIduModeSetForDriver

Version NID
3.60 0x956D07CB

sceSysconIduModeClearForDriver

Version NID
3.60 0x34574496

sceSysconShowModeSetForDriver

Version NID
3.60 0x6D65B70F

sceSysconShowModeClearForDriver

Version NID
3.60 0x8D7724C0

sceSysconIsDownLoaderModeForDriver

Version NID
3.60 0x9ADD60D2

sceSysconIsDealDownLoaderModeForDriver

Version NID
0.990-3.60 0xB7BCC638

sceSysconSetAlarmCallbackForDriver

Version NID
3.60 0x32418370

sceSysconSetLowBatteryCallbackForDriver

Version NID
3.60 0x3F0DB7C0

sceSysconSetThermalAlertCallbackForDriver

Version NID
3.60 0x773B8126

sceSysconUpdaterCalcChecksumForDriver

Version NID
0.990-3.60 0xD27C3D80
int sceSysconUpdaterCalcChecksumForDriver(void *segment, SceSize segment_size, int *checksum);

sceSysconUpdaterExecFinalizeForDriver

Version NID
0.990-3.60 0xC7747A63
// size is usually 0x14
int sceSysconUpdaterExecFinalizeForDriver(void *buf, SceSize size);

sceSysconUpdaterExecProgrammingForDriver

Version NID
0.990-3.60 0x69AD76E4
int sceSysconUpdaterExecProgrammingForDriver(int checksum);

sceSysconUpdaterSetRunModeForDriver

Version NID
0.990-3.60 0xB487C2FB
// mode: 0x3665, 0xc5e7, 0x9a54
int sceSysconUpdaterSetRunModeForDriver(int mode);

SceSysconForDriver_CBA836FF

Version NID
3.60 0xCBA836FF
int SceSysconForDriver_CBA836FF(void *buf, SceSize size);

sceSysconUpdaterSetSegmentForDriver

Version NID
0.990-3.60 0x9B00BC7F
int sceSysconUpdaterSetSegmentForDriver(SceUInt32 segment_no);

nvs_read_special

Version NID
1.03-3.60 0xEBDF88B9

Used in SceSblPostSsMgr to read data from NVS with pm_sm command 8. Also used in update_mgr with update_service_sm commands 0xB0002 and 0xC0002.

int nvs_read_special(void *in_buf, SceSize in_size, void *out_buf, SceSize out_size);

nvs_write_special

Version NID
1.03-3.60 0x63683B9B

Used in SceSblPostSsMgr to write data to NVS with pm_sm service 8. Also used in update_mgr with update_service_sm commands 0xB0002 and 0xC0002.

int nvs_write_special(void *in_buf, SceSize in_size, void *out_buf, SceSize out_size);

syscon_update_command_d2

Version NID
3.60 0x4D03754A

Used in update_mgr with update_service_sm command 0xD0002.

int syscon_update_command_d2(void *in_buf, SceSize in_size, void *out_buf, SceSize out_size);

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 sceSysconGetManufacturesStatusForDriver
0x80 module_start ?? used at SysconInit
0xB0 0x058941D7 ??
0xB2 0xDECCB2B4 sceSysconCtrlHostOutputViaDongleForDriver
0xB3 0x33B5CDB3 ??
0xB4 0xF6D4DDC4 ??
0xB7 0x91EF4EC3 ??
0x100 0x145F59A4 ??
0x120 0x76272CB9 ??
0x130 module_start ?? used during SysconInit
0x131 0xF99BC858 ??
0x190 0x8AAB6308 sceSysconSetMultiCnPortForDriver
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 sceSysconCtrlAccPowerForDriver. ?F00D and USB related?
0x88A 0xA2E85DB9 Wlan/Bluetooth related
0x88B 0x5A614349 ??
0x88C 0xB872E904 ??
0x88D 0xDD16ABD9 ??
0x88E 0x7F198FA2 ?? related to Ernie#CMD_0x088E
0x88F 0x40FF3898 sceSysconCtrlDeviceResetForDriver ?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 sceSysconCtrlRMRPowerForDriver
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 sceSysconNvsSetRunModeForDriver
0x1081 02EC6D55D ??
0x1310 0x351946B0 ??
0x1382 0xA4968B8C sceSysconBeginConfigstorageTransactionForDriver
0x1383 0xFCC3E8EE sceSysconEndConfigstorageTransactionForDriver
0x1384 0x7B9B3617 sceSysconCommitConfigstorageTransactionForDriver
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 ?? ??